:root{color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,sans-serif;background:var(--tg-theme-bg-color, #fff);color:var(--tg-theme-text-color, #111);--app-radius: 12px;--app-radius-sm: 10px;--app-border: color-mix(in srgb, var(--tg-theme-hint-color, #888) 22%, transparent);--app-shadow: 0 1px 3px rgba(0, 0, 0, .08);--app-touch-min: 44px}@supports not (color: color-mix(in lab,red,red)){:root{--app-border: rgba(127, 127, 127, .22)}}*{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100dvh;-webkit-tap-highlight-color:transparent}#root{max-width:480px;margin:0 auto;padding:calc(12px + env(safe-area-inset-top,0px)) calc(14px + env(safe-area-inset-right,0px)) calc(24px + env(safe-area-inset-bottom,0px)) calc(14px + env(safe-area-inset-left,0px))}.app-header{margin-bottom:14px}.app-header h1{font-size:1.25rem;font-weight:700;letter-spacing:-.02em;margin:0 0 4px;line-height:1.25}.app-header .tagline{margin:0;font-size:.875rem;line-height:1.35;color:var(--tg-theme-hint-color, #666)}.welcome-card .welcome-list{margin:10px 0 14px;padding-left:18px;font-size:.875rem;line-height:1.45}.welcome-card .welcome-list li{margin-bottom:6px}.welcome-shortcut-block{margin-top:12px;padding-top:12px;border-top:1px solid var(--app-border)}.welcome-shortcut-title{margin:0 0 6px;font-size:.9375rem;font-weight:600}.welcome-hint-ok{margin-top:10px;margin-bottom:0}.welcome-manual{margin-top:10px}.btn-linklike{width:auto;min-height:auto;padding:8px 0;margin-bottom:0;background:none;color:var(--tg-theme-link-color, var(--tg-theme-button-color, #2481cc));font-weight:600;font-size:.875rem;text-align:left}.welcome-manual-body{margin-top:8px}.welcome-manual-body p{margin:0 0 10px}.welcome-manual-body p:last-child{margin-bottom:0}.welcome-start-btn{margin-top:14px}.preview-banner{background:color-mix(in srgb,var(--tg-theme-warning-hint-color, #f5a623) 18%,transparent);border:1px solid color-mix(in srgb,var(--tg-theme-warning-hint-color, #e65100) 35%,transparent);border-radius:var(--app-radius);padding:12px 14px;font-size:.8125rem;line-height:1.4;margin-bottom:14px;color:var(--tg-theme-text-color, #111)}.card{background:var(--tg-theme-secondary-bg-color, #f4f4f5);border-radius:var(--app-radius);padding:14px 14px 16px;margin-bottom:14px;border:1px solid var(--app-border)}.card-title{display:block;font-size:1rem;font-weight:700;margin:0 0 6px;letter-spacing:-.01em}.card-title+.muted.small{margin-top:0;margin-bottom:10px}label{display:block;font-size:.8125rem;font-weight:500;margin-bottom:6px;color:var(--tg-theme-hint-color, #666)}input:not([type=checkbox]){width:100%;min-height:var(--app-touch-min);padding:10px 14px;border-radius:var(--app-radius-sm);border:1px solid var(--app-border);background:var(--tg-theme-bg-color, #fff);color:var(--tg-theme-text-color, #111);font-size:1rem;margin-bottom:12px}input:not([type=checkbox]):focus-visible{outline:2px solid var(--tg-theme-link-color, var(--tg-theme-button-color, #2481cc));outline-offset:1px}input[type=date],input[type=month]{margin-bottom:0}.row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.row-add-student{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end;margin-bottom:12px}.row-add-student button{width:auto;min-width:120px}.toolbar{margin-bottom:12px}.toolbar-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px}.toolbar-row .btn-secondary{flex:0 0 auto}button{width:100%;min-height:var(--app-touch-min);padding:12px 16px;border:none;border-radius:var(--app-radius-sm);font-size:1rem;font-weight:600;background:var(--tg-theme-button-color, #2481cc);color:var(--tg-theme-button-text-color, #fff);cursor:pointer}button:focus-visible{outline:2px solid var(--tg-theme-link-color, #2481cc);outline-offset:2px}button:disabled{opacity:.55;cursor:not-allowed}.muted{font-size:.8125rem;line-height:1.4;color:var(--tg-theme-hint-color, #666)}.feedback{border-radius:var(--app-radius-sm);padding:10px 12px;margin:0 0 12px;font-size:.875rem;line-height:1.4}.feedback-err{background:color-mix(in srgb,#c62828 12%,transparent);color:#b71c1c;border:1px solid color-mix(in srgb,#c62828 28%,transparent)}.feedback-ok{background:color-mix(in srgb,#2e7d32 12%,transparent);color:#1b5e20;border:1px solid color-mix(in srgb,#2e7d32 28%,transparent)}@supports not (color: color-mix(in lab,red,red)){.feedback-err{background:#c628281a;border:1px solid rgba(198,40,40,.25)}.feedback-ok{background:#2e7d321a;border:1px solid rgba(46,125,50,.25)}}.err,.ok{margin:8px 0}.btn-secondary{width:auto;min-width:96px;min-height:var(--app-touch-min);padding:10px 14px;font-size:.875rem;font-weight:600;background:var(--tg-theme-secondary-bg-color, #e8e8e8);color:var(--tg-theme-text-color, #111);border:1px solid var(--app-border);box-shadow:none}.btn-secondary.tab-active,.tab-nav button.tab-active{background:var(--tg-theme-bg-color, #fff);color:var(--tg-theme-text-color, #111);border-color:transparent;box-shadow:var(--app-shadow)}.tab-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;padding:4px;margin-bottom:14px;background:var(--tg-theme-secondary-bg-color, #e8e8ea);border-radius:var(--app-radius);border:1px solid var(--app-border)}.tab-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-width:0;min-height:48px;padding:6px 2px;font-size:.6875rem;font-weight:600;line-height:1.2;text-align:center;-webkit-hyphens:none;hyphens:none;word-break:keep-all;overflow-wrap:anywhere;background:transparent;color:var(--tg-theme-hint-color, #666);border:none;border-radius:var(--app-radius-sm);box-shadow:none}.tab-nav button.tab-active{color:var(--tg-theme-text-color, #111)}.small{font-size:.8125rem;margin:4px 0 0}.stat-inline{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:8px 12px;border-radius:var(--app-radius-sm);background:var(--tg-theme-bg-color, #fff);border:1px solid var(--app-border);font-size:.875rem}.stat-inline strong{font-variant-numeric:tabular-nums}.card-collapsible .collapsible-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:4px}.card-title--inline{margin:0;flex:1;min-width:0}.collapsible-toggle{flex-shrink:0;text-align:right;white-space:nowrap}.collapsible-hint{margin:4px 0 0}.audit{font-size:.8125rem;line-height:1.4;border-top:1px solid var(--app-border);padding-top:10px;margin-top:10px}.audit-item{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid var(--app-border)}.audit-item:last-child{border-bottom:none;margin-bottom:0;padding-bottom:0}.audit-meta{font-size:.75rem;margin-bottom:6px;color:var(--tg-theme-hint-color, #666)}.audit-lines{margin:0;padding-left:1.15rem;font-size:.8125rem}.audit-lines li{margin-bottom:4px}.select-field{width:100%;min-height:var(--app-touch-min);padding:10px 12px;border-radius:var(--app-radius-sm);border:1px solid var(--app-border);background:var(--tg-theme-bg-color, #fff);color:var(--tg-theme-text-color, #111);font-size:.9375rem;margin-bottom:12px}.select-field:focus-visible{outline:2px solid var(--tg-theme-link-color, var(--tg-theme-button-color, #2481cc));outline-offset:1px}.select-field--row{width:auto;min-width:108px;max-width:140px;margin-bottom:0;flex-shrink:0}.btn-primary-after-list{margin-top:14px}.spacing-top-12,.list-block-top{margin-top:12px}.student-list-toolbar__label{display:block;margin:12px 0 6px;font-size:.75rem;color:var(--tg-theme-hint-color, #666)}.student-group-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}.student-group-filter{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:8px 12px;border-radius:999px;border:1px solid var(--app-border);background:var(--tg-theme-bg-color, #fff);color:var(--tg-theme-text-color, #111);font-size:.8125rem;cursor:pointer}.student-group-filter:disabled{opacity:.6;cursor:not-allowed}.student-group-filter--active{border-color:var(--tg-theme-button-color, #2481cc);background:color-mix(in srgb,var(--tg-theme-button-color, #2481cc) 14%,var(--tg-theme-bg-color, #fff));color:var(--tg-theme-button-color, #2481cc);font-weight:600}.student-group-filter__count{min-width:1.25rem;padding:0 6px;border-radius:999px;font-size:.75rem;font-variant-numeric:tabular-nums;background:color-mix(in srgb,var(--tg-theme-hint-color, #888) 18%,transparent)}.student-group-filter--active .student-group-filter__count{background:color-mix(in srgb,var(--tg-theme-button-color, #2481cc) 22%,transparent)}.student-list-section{margin-bottom:4px}.student-list-section__title{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:14px 0 8px;padding:0 2px;font-size:.8125rem;font-weight:600;color:var(--tg-theme-hint-color, #666);text-transform:uppercase;letter-spacing:.03em}.student-list-section:first-child .student-list-section__title{margin-top:4px}.student-list-section__count{font-size:.75rem;font-weight:500;font-variant-numeric:tabular-nums;color:var(--tg-theme-hint-color, #888);text-transform:none;letter-spacing:normal}.student-card{padding:10px 12px;margin-bottom:8px;border-radius:var(--app-radius-sm);background:var(--tg-theme-bg-color, #fff);border:1px solid var(--app-border)}.student-card:last-child{margin-bottom:0}.student-card__header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:0}.student-card--editing .student-card__header{margin-bottom:10px}.student-card__intro{flex:1 1 auto;min-width:0}.student-card__name{font-size:.9375rem;font-weight:600;line-height:1.35;margin-bottom:0;word-break:break-word}.student-card__summary{margin:4px 0 0;line-height:1.35}.student-card__edit-toggle{flex-shrink:0;padding-top:2px}.student-card__edit{margin-top:8px}.student-card__remove{width:100%;margin-top:10px;margin-bottom:0}.student-card__header .btn-secondary--compact{flex-shrink:0}.student-card__row{display:flex;align-items:center;gap:8px}.select-field--inline{width:auto;min-width:0;flex:1 1 0;max-width:none;margin-bottom:0;padding:8px 10px;font-size:.875rem}.student-card__amount{width:100%;margin-top:8px;min-width:0}.input-with-suffix{position:relative;width:100%}.input-with-suffix input{width:100%;min-height:44px;padding:8px 4.5rem 8px 12px;border-radius:var(--app-radius-sm);border:1px solid var(--app-border);background:var(--tg-theme-bg-color, #fff);color:var(--tg-theme-text-color, #111);font-size:.9375rem;font-variant-numeric:tabular-nums}.input-with-suffix__label{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-size:.8125rem;color:var(--tg-theme-hint-color, #888);white-space:nowrap;pointer-events:none}.btn-secondary--compact{flex:0 0 auto;min-height:40px;padding:8px 12px;font-size:.8125rem}.fee-badge-free{font-size:.8125rem;color:var(--tg-theme-hint-color, #888);font-style:italic}.fee-month-summary{display:flex;flex-wrap:wrap;align-items:center;gap:4px 6px;width:100%;margin:0 0 12px;padding:10px 12px;border-radius:var(--app-radius-sm);font-size:.875rem;background:color-mix(in srgb,var(--tg-theme-button-color, #2481cc) 10%,var(--tg-theme-bg-color, #fff));border:1px solid var(--app-border)}.fee-month-summary strong{font-variant-numeric:tabular-nums}.row-check--static{cursor:default;opacity:.92;padding-left:46px}.row-check__body{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.row-check__title{font-size:.9375rem;line-height:1.3}.row-check__meta{font-size:.8125rem;color:var(--tg-theme-hint-color, #888);line-height:1.25}.date-nav{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.date-nav__main{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:stretch}.date-nav .btn-secondary{min-width:48px;min-height:44px;padding-left:12px;padding-right:12px}.date-nav__picker{position:relative;display:flex;align-items:center;justify-content:center;min-height:44px;padding:8px 10px;border:1px solid var(--app-border);border-radius:var(--app-radius-sm);background:var(--tg-theme-bg-color, #fff)}.date-nav__display{font-size:.9375rem;font-weight:500;text-align:center;line-height:1.25;font-variant-numeric:tabular-nums;pointer-events:none}.date-nav__input{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;border:0;background:transparent}.date-nav__today{width:100%;min-height:44px;font-size:.875rem}.row-check{display:flex;align-items:center;gap:12px;min-height:var(--app-touch-min);padding:10px 12px;margin-bottom:8px;border-radius:var(--app-radius-sm);background:var(--tg-theme-bg-color, #fff);border:1px solid var(--app-border);cursor:pointer}.row-check:last-of-type{margin-bottom:12px}.row-check:has(input:disabled){opacity:.65;cursor:not-allowed}.row-check input[type=checkbox]{width:22px;height:22px;margin:0;flex-shrink:0;accent-color:var(--tg-theme-button-color, #2481cc)}.row-check>span:not(.row-check__body){flex:1;margin:0;font-size:.9375rem;line-height:1.3}.chart-section-title{font-size:.8125rem;font-weight:600;margin:12px 0 8px;color:var(--tg-theme-text-color, #111)}.chart-row{display:grid;grid-template-columns:minmax(3.25rem,2.85rem) minmax(0,1fr) minmax(1.5rem,2rem);align-items:center;gap:8px 10px;margin-bottom:10px;font-size:.8125rem}.chart-row--month{grid-template-columns:minmax(4.25rem,3.25rem) minmax(0,1fr) minmax(1.5rem,2rem)}.chart-row__label,.chart-row>span:first-child{color:var(--tg-theme-hint-color, #666);font-variant-numeric:tabular-nums;line-height:1.25;min-width:0;text-align:center;white-space:nowrap}.chart-row>span:last-child{font-weight:600;text-align:right;font-variant-numeric:tabular-nums;justify-self:end;min-width:0}.chart-legend{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px;margin:10px 0 12px;font-size:.75rem;color:var(--tg-theme-hint-color, #666)}.chart-legend-item{display:inline-flex;align-items:center;gap:6px}.chart-legend-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0}.chart-bar-wrap{height:12px;background:color-mix(in srgb,var(--tg-theme-hint-color, #888) 16%,transparent);border-radius:6px;overflow:hidden}.chart-bar-stack{display:flex;height:100%;min-width:3px;border-radius:6px;overflow:hidden}.chart-seg{height:100%;min-width:0;flex-shrink:0}.chart-seg--junior{background:linear-gradient(90deg,#42a5f5,#1565c0)}.chart-seg--middle{background:linear-gradient(90deg,#ab47bc,#6a1b9a)}.chart-seg--adult{background:linear-gradient(90deg,#ff9800,#e65100)}.chart-seg--fee-standard{background:linear-gradient(90deg,color-mix(in srgb,var(--tg-theme-button-color, #2481cc) 75%,#fff),var(--tg-theme-button-color, #2481cc))}.chart-seg--fee-custom{background:linear-gradient(90deg,#ab47bc,#6a1b9a)}.chart-seg--fee-onetime{background:linear-gradient(90deg,#ffb74d,#e65100)}.chart-bar{height:100%;background:linear-gradient(90deg,color-mix(in srgb,var(--tg-theme-button-color, #2481cc) 85%,#fff),var(--tg-theme-button-color, #2481cc));border-radius:6px;min-width:3px;transition:width .25s ease}.chart-bar--fees{background:linear-gradient(90deg,color-mix(in srgb,#2e7d32 75%,#fff),#2e7d32)}.chart-table{width:100%;font-size:.8125rem;border-collapse:collapse;margin-top:8px}.chart-table th,.chart-table td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--app-border)}.chart-table th{font-weight:600;font-size:.75rem;color:var(--tg-theme-hint-color, #666)}.chart-table th:not(:first-child),.chart-table td:not(:first-child){text-align:right;font-variant-numeric:tabular-nums}.loading-dots{color:var(--tg-theme-hint-color, #666);font-size:.875rem}.empty-hint{text-align:center;padding:20px 12px;color:var(--tg-theme-hint-color, #666);font-size:.875rem;line-height:1.45}.ledger-range{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px 16px;margin:12px 0 8px}.ledger-range>div{flex:1 1 120px;min-width:0;display:flex;flex-direction:column;gap:4px}.ledger-range label{font-size:.75rem;color:var(--tg-theme-hint-color, #666)}.ledger-range--dates input[type=date]{width:100%;min-height:44px;font-variant-numeric:tabular-nums}.ledger-range button{width:auto;min-width:100px;flex:0 0 auto;align-self:flex-end}@media(max-width:420px){.ledger-range--dates{flex-direction:column;align-items:stretch}.ledger-range--dates>div{flex:1 1 auto;width:100%}.ledger-range--dates button{width:100%;align-self:stretch}}.fee-ledger-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin-top:4px}.fee-ledger-table th:nth-child(2),.fee-ledger-table td:nth-child(2),.fee-ledger-table th:nth-child(3),.fee-ledger-table td:nth-child(3){text-align:left}.fee-ledger-table th:nth-child(4),.fee-ledger-table td:nth-child(4),.fee-ledger-table th:nth-child(5),.fee-ledger-table td:nth-child(5){text-align:right;font-variant-numeric:tabular-nums}.fee-ledger-table .ledger-cell-date,.chart-table .ledger-cell-date{text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums;min-width:6.5rem}
