:root{--color-bg: #f6f7f9;--color-surface: #ffffff;--color-border: #e2e5ea;--color-text: #1f2937;--color-muted: #6b7280;--color-primary: #2f6fed;--color-primary-dark: #2258c7;--color-success: #16a34a;--color-success-soft: #dcfce7;--color-warning: #d97706;--color-warning-soft: #fef3c7;--color-danger: #dc2626;--color-danger-soft: #fee2e2;--color-neutral-soft: #eef0f3;--radius: 10px;--shadow: 0 1px 3px rgba(15, 23, 42, .08);--tab-bar-height: 3.5rem}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Apple SD Gothic Neo,Noto Sans KR,sans-serif;background:var(--color-bg);color:var(--color-text);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}h1{font-size:1.4rem;margin:0 0 .5rem}h2{font-size:1.1rem;margin:0}h3{font-size:1rem;margin:0}p{margin:.25rem 0}a{color:var(--color-primary);text-decoration:none}.muted{color:var(--color-muted);font-size:.875rem}.app-shell{min-height:100dvh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:.65rem 1rem;background:var(--color-surface);border-bottom:1px solid var(--color-border)}.app-brand{font-weight:700;font-size:1.05rem;color:var(--color-text);letter-spacing:.02em}.app-main{flex:1;padding-bottom:calc(var(--tab-bar-height) + env(safe-area-inset-bottom) + 1rem)}.page{max-width:60rem;margin:0 auto;padding:1rem;display:flex;flex-direction:column;gap:.9rem}.page-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.section-title{margin-top:.5rem;font-size:.95rem;text-transform:uppercase;letter-spacing:.05em;color:var(--color-muted)}.back-link{align-self:flex-start}.tab-bar{position:fixed;bottom:0;left:0;right:0;z-index:10;display:flex;height:calc(var(--tab-bar-height) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--color-surface);border-top:1px solid var(--color-border)}.tab-link{flex:1;display:flex;align-items:center;justify-content:center;font-size:.85rem;color:var(--color-muted);font-weight:500}.tab-link-active{color:var(--color-primary);font-weight:700}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;border:1px solid transparent;border-radius:var(--radius);padding:.55rem .95rem;font-size:.95rem;font-weight:600;font-family:inherit;cursor:pointer;text-align:center;transition:background-color .15s ease;white-space:nowrap}.btn:disabled{opacity:.55;cursor:default}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:not(:disabled):hover{background:var(--color-primary-dark)}.btn-secondary{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}.btn-ghost{background:transparent;color:var(--color-muted);padding:.35rem .6rem}.btn-block{width:100%}.btn-danger{background:var(--color-surface);color:var(--color-danger);border-color:var(--color-danger)}.btn-danger:not(:disabled):hover{background:var(--color-danger-soft)}.btn-sm{padding:.35rem .7rem;font-size:.85rem}.header-actions{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.title-with-badge{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.enrolment-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.25rem}.input{width:100%;border:1px solid var(--color-border);border-radius:var(--radius);padding:.6rem .75rem;font-size:1rem;font-family:inherit;background:var(--color-surface);color:var(--color-text)}.input:focus{outline:2px solid var(--color-primary);outline-offset:1px;border-color:var(--color-primary)}.input-compact{width:auto;padding:.4rem .6rem}.field{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;font-weight:500;flex:1}.field-row{display:flex;gap:.75rem}.form-stack{display:flex;flex-direction:column;gap:.85rem}.form-section-title{font-size:.95rem;margin-top:.25rem}.form-error{color:var(--color-danger);font-size:.9rem;margin:0}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.9rem 1rem;box-shadow:var(--shadow)}.card-button{display:block;width:100%;text-align:left;font-family:inherit;font-size:inherit;color:inherit;cursor:pointer}.guardian-row{flex-direction:row;justify-content:space-between;align-items:center;gap:.75rem}.guardian-info{display:flex;flex-direction:column;gap:.15rem;min-width:0}.list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.list-row{display:flex;flex-direction:column;gap:.15rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.75rem 1rem;color:var(--color-text)}.list-row-title{font-weight:600;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.list-row-inactive{opacity:.6}.badge{border-radius:999px;padding:.15rem .6rem;font-size:.75rem;font-weight:600;background:var(--color-neutral-soft);color:var(--color-muted)}.badge-active{background:var(--color-success-soft);color:var(--color-success)}.badge-paused{background:var(--color-warning-soft);color:var(--color-warning)}.badge-ended{background:var(--color-danger-soft);color:var(--color-danger)}.feedback{padding:1.25rem 1rem;text-align:center;color:var(--color-muted);background:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius)}.feedback-error{border-color:var(--color-danger);color:var(--color-danger);display:flex;flex-direction:column;gap:.5rem;align-items:center}.toast-stack{position:fixed;top:.75rem;left:50%;transform:translate(-50%);z-index:100;display:flex;flex-direction:column;gap:.5rem;width:min(92vw,26rem);pointer-events:none}.toast{background:var(--color-text);color:#fff;border-radius:var(--radius);padding:.7rem 1rem;font-size:.9rem;box-shadow:0 4px 12px #0f172a40;animation:toast-in .2s ease}@keyframes toast-in{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:none}}.auth-page{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:1rem}.auth-card{width:100%;max-width:24rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:14px;box-shadow:var(--shadow);padding:1.75rem 1.5rem;display:flex;flex-direction:column;gap:.75rem;text-align:center}.auth-brand{font-size:1.6rem;letter-spacing:.03em;margin-bottom:.25rem}.locale-switch{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:.75rem}.pay-icon{width:3.25rem;height:3.25rem;margin:0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.75rem;font-weight:700;color:#fff}.pay-icon-success{background:var(--color-success)}.pay-icon-cancelled{background:var(--color-muted)}.week-nav{display:flex;align-items:center;justify-content:space-between;gap:.5rem}.week-label{display:flex;flex-direction:column;align-items:center;line-height:1.25}.calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.75rem}.segmented{display:inline-flex;border:1px solid var(--color-border);border-radius:999px;background:var(--color-surface);padding:2px}.segmented-btn{border:none;background:transparent;color:var(--color-muted);font-family:inherit;font-size:.85rem;font-weight:600;padding:.35rem .85rem;border-radius:999px;cursor:pointer}.segmented-btn-active{background:var(--color-primary);color:#fff}.calendar-scroll{margin:0 -1rem;padding:0 1rem}.calendar-scroll[data-mode="7"]{overflow-x:auto;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}.calendar-scroll[data-mode="7"] .calendar-day{scroll-snap-align:start}.calendar-grid{display:grid;gap:.5rem}.calendar-grid[data-mode="1"]{grid-template-columns:minmax(0,1fr)}.calendar-grid[data-mode="3"]{grid-template-columns:repeat(3,minmax(0,1fr))}.calendar-grid[data-mode="7"]{grid-template-columns:repeat(7,minmax(4.5rem,1fr));gap:.3rem}.calendar-grid[data-mode="7"] .calendar-day{padding:.35rem .3rem}.calendar-grid[data-mode="7"] .lesson-card{padding:.35rem .4rem;font-size:.78rem}.calendar-day{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.5rem;display:flex;flex-direction:column;gap:.4rem;min-height:8rem;container-type:inline-size}@container (max-width: 6rem){.lesson-status,.pending-badge{display:none}}@container (max-width: 8rem){.calendar-grid[data-mode="7"] .calendar-day-header{flex-direction:column;align-items:flex-start;gap:.05rem}}.calendar-day-today{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.calendar-day-header{display:flex;justify-content:space-between;align-items:baseline;font-weight:600;font-size:.85rem;padding-bottom:.25rem;border-bottom:1px solid var(--color-border)}.lesson-card{display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;width:100%;min-width:0;border:none;border-left:4px solid var(--color-primary);border-radius:6px;background:var(--color-neutral-soft);padding:.45rem .6rem;font-family:inherit;font-size:.85rem;text-align:left;cursor:pointer;overflow-wrap:anywhere}.lesson-card>span{max-width:100%}.lesson-time{font-weight:700}.lesson-name{font-weight:500}.lesson-status{font-size:.72rem;color:var(--color-muted);text-transform:uppercase;letter-spacing:.04em}.lesson-scheduled{border-left-color:var(--color-primary);background:#e8effd}.lesson-done{border-left-color:var(--color-success);background:var(--color-success-soft)}.lesson-missed{border-left-color:var(--color-warning);background:var(--color-warning-soft)}.lesson-cancelled{border-left-color:var(--color-muted);background:var(--color-neutral-soft);opacity:.75}.lesson-rescheduled{border-left-color:#7c3aed;background:#ede9fe}.lesson-pending{border:1px dashed var(--color-muted);border-left:4px dashed var(--color-muted);background:transparent;color:var(--color-muted);opacity:.85}.lesson-pending .lesson-time,.lesson-pending .lesson-name{color:var(--color-muted)}.pending-badge{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--color-warning)}.chip-row{display:flex;flex-wrap:wrap;gap:.5rem}.chip{border:1px solid var(--color-primary);border-radius:999px;background:var(--color-surface);color:var(--color-primary);padding:.4rem .85rem;font-size:.9rem;font-weight:600;font-family:inherit;cursor:pointer}.chip:disabled{opacity:.55;cursor:default}.swap-option{white-space:normal;text-align:left;justify-content:flex-start}.suggest-btn{align-self:flex-start}.availability-row{flex-direction:row;justify-content:space-between;align-items:baseline;gap:.75rem}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:#0f172a73;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:30rem;background:var(--color-surface);border-radius:16px 16px 0 0;padding:1rem 1rem calc(1rem + env(safe-area-inset-bottom));box-shadow:0 -6px 24px #0f172a33}.sheet-header{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.sheet-title{font-size:1rem}.sheet-action-done{background:var(--color-success);color:#fff}.sheet-action-missed{background:var(--color-warning);color:#fff}.sheet-action-cancelled{background:var(--color-danger);color:#fff}.sheet-action-scheduled{background:var(--color-surface);color:var(--color-text);border-color:var(--color-border)}@media (min-width: 640px){.sheet-overlay{align-items:center;padding:1rem}.sheet{border-radius:16px}}.pay-buttons{display:flex;flex-direction:column;gap:.5rem}.bank-row{display:flex;align-items:center;gap:.6rem}.bank-row-label{flex:0 0 7rem}.bank-row-value{flex:1;font-weight:600;font-variant-numeric:tabular-nums;word-break:break-all}.btn-copy{padding:.3rem .55rem;font-size:1rem;line-height:1}.bank-reference{background:var(--color-warning-soft);border:1px solid var(--color-warning);border-radius:var(--radius);padding:.6rem .75rem;display:flex;flex-direction:column;gap:.35rem}.bank-reference .bank-row-value{font-size:1.05rem}.bank-reference-hint{margin:0;font-size:.85rem;font-weight:600;color:var(--color-warning)}.billing-section{display:flex;flex-direction:column;gap:.5rem}.invoice-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.invoice-info{display:flex;flex-direction:column;gap:.1rem}.invoice-amount{font-weight:700;font-size:1.05rem;margin:0}.invoice-actions{display:flex;gap:.5rem}.student-card{display:flex;flex-direction:column;gap:.6rem}.invoice-cta{display:flex;align-items:center;justify-content:space-between;gap:.75rem;background:var(--color-warning-soft);border:1px solid var(--color-warning);border-radius:var(--radius);padding:.75rem 1rem;flex-wrap:wrap}.progress{display:flex;flex-direction:column;gap:.25rem}.progress-track{height:.55rem;border-radius:999px;background:var(--color-neutral-soft);overflow:hidden}.progress-fill{height:100%;border-radius:999px;background:var(--color-success);transition:width .25s ease}.progress-label{font-size:.82rem;color:var(--color-muted)}.availability-grid{display:grid;gap:3px;touch-action:none;user-select:none;-webkit-user-select:none;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:.6rem}.grid-row-contents{display:contents}.grid-corner{min-width:3rem}.grid-day-header{text-align:center;font-weight:600;font-size:.82rem;padding:.25rem 0}.grid-time-label{font-size:.75rem;color:var(--color-muted);display:flex;align-items:center;justify-content:flex-end;padding-right:.4rem;min-width:3rem}.grid-cell{height:2.1rem;border-radius:6px;background:var(--color-neutral-soft);border:1px solid var(--color-border);cursor:pointer}.grid-cell-selected{background:var(--color-success);border-color:var(--color-success)}.enrolment-card{display:flex;flex-direction:column;gap:.35rem}.enrolment-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem}@media (min-width: 768px){h1{font-size:1.6rem}}
