@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.table{display:table}.lowercase{text-transform:lowercase}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}:root{--canvas:#f5f1e9;--surface:#fffdf9;--ink:#17324d;--muted:#526374;--line:#ded6ca;--coral:#c8503c;--coral-dark:#a13d2d;--emerald:#24745a;--nav-width:15.5rem;color:#17324d;background:var(--canvas);font-synthesis:none;text-rendering:optimizelegibility;font-family:Noto Sans JP,Yu Gothic UI,Hiragino Kaku Gothic ProN,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0;overflow-x:hidden}button,input,select,textarea{font:inherit}:focus-visible{outline-offset:3px;outline:3px solid #c8503c}.skip-link{z-index:100;color:#fff;background:#17324d;border-radius:.5rem;padding:.75rem 1rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.app-root{place-items:center;min-height:100vh;padding:1.5rem;display:grid}.welcome-card{background:#fffdf9;border:1px solid #ded6ca;border-radius:.75rem;width:min(100%,42rem);padding:clamp(1.5rem,5vw,3.5rem);box-shadow:0 1.5rem 4rem #17324d14}.welcome-card h1{letter-spacing:-.04em;margin:.5rem 0 .75rem;font-size:clamp(2rem,8vw,3.75rem);line-height:1.1}.welcome-card p:last-child{color:#526477;margin:0;font-size:1.05rem;line-height:1.8}.eyebrow{color:#a13d2d;letter-spacing:.18em;margin:0;font-size:.75rem;font-weight:800}.login-form{gap:.75rem;margin-top:2rem;display:grid}.login-form label{font-weight:700}.login-form input{color:#17324d;background:#fff;border:1px solid #a9b2bb;border-radius:.5rem;width:100%;min-height:3rem;padding:.75rem .875rem}.login-form input[aria-invalid=true]{border-color:#a13d2d}.login-form button{color:#fff;cursor:pointer;background:#17324d;border:0;border-radius:.5rem;min-height:3rem;margin-top:.5rem;font-weight:800}.login-form button:disabled{cursor:wait;opacity:.65}.field-help,.form-error,.privacy-note{margin:0;font-size:.875rem;line-height:1.6}.field-help,.privacy-note{color:#526477}.form-error{color:#8f2f20;font-weight:700}.privacy-note{margin-top:1.5rem}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.button-primary{color:#fff;background:var(--coral-dark);cursor:pointer;border:0;border-radius:.65rem;justify-content:center;align-items:center;min-height:2.875rem;padding:.7rem 1.15rem;font-weight:800;text-decoration:none;display:inline-flex}.button-primary:disabled{cursor:wait;opacity:.65}.button-danger{color:#fff;background:#8f2f20}.onboarding-page{background:linear-gradient(90deg,transparent 0 8%,#c8503c1f 8% calc(8% + 2px),transparent calc(8% + 2px)),var(--canvas);place-items:center;min-height:100vh;padding:clamp(1rem,4vw,3rem);display:grid}.onboarding-card{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;width:min(100%,38rem);padding:clamp(1.5rem,5vw,3rem);box-shadow:0 1.25rem 3.5rem #17324d14}.onboarding-card h1,.dashboard-page h1{letter-spacing:-.035em;margin:.4rem 0 0;font-size:clamp(1.8rem,5vw,2.5rem);line-height:1.25}.onboarding-lead{color:var(--muted);margin:.75rem 0 2rem;line-height:1.8}.onboarding-form,.form-field{display:grid}.onboarding-form{gap:1.4rem}.form-field{gap:.5rem}.form-field label{font-weight:800}.form-field input,.form-field select{width:100%;min-height:3rem;color:var(--ink);background:#fff;border:1px solid #9da8b2;border-radius:.55rem;padding:.75rem}.form-field input[aria-invalid=true]{border-color:var(--coral-dark)}.form-field [role=alert]{color:#8f2f20;margin:0;font-size:.875rem;font-weight:700}.local-data-note{color:var(--muted);margin:1.5rem 0 0;font-size:.85rem;line-height:1.6}.app-shell{min-height:100vh}.app-sidebar{z-index:20;width:var(--nav-width);color:#fff;background:var(--ink);border-right:1px solid #ffffff1f;flex-direction:column;padding:1.5rem 1rem;display:flex;position:fixed;inset:0 auto 0 0}.app-brand{align-items:center;gap:.75rem;padding:0 .5rem 1.75rem;display:flex}.brand-mark{width:2.5rem;height:2.5rem;color:var(--ink);background:#f3cbbb;border-radius:50%;flex:none;place-items:center;font-family:Georgia,serif;font-size:1.3rem;font-weight:800;display:grid}.brand-copy{line-height:1.1;display:grid}.brand-copy small{color:#b9c5cf;letter-spacing:.18em;margin-top:.25rem;font-size:.64rem}.primary-nav{gap:.35rem;display:grid}.nav-link{color:#dce4ea;border-radius:.6rem;align-items:center;gap:.85rem;min-height:3rem;padding:.7rem .85rem;text-decoration:none;display:flex;position:relative}.nav-link:before{content:"";background:0 0;border-radius:2px;width:3px;position:absolute;inset:.55rem auto .55rem -1rem}.nav-link:hover{background:#ffffff14}.nav-link.active{color:#fff;background:#ffffff1c;font-weight:800}.nav-link.active:before{background:#ef8d78}.nav-mark{place-items:center;width:1.5rem;height:1.5rem;font-size:.85rem;font-weight:900;display:grid}.logout-button{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff40;border-radius:.55rem;min-height:2.75rem;margin-top:auto}.app-stage{min-width:0;min-height:100vh;margin-left:var(--nav-width)}.offline-banner{color:#fff;text-align:center;background:#73551f;justify-content:center;align-items:center;gap:.75rem;min-height:2.75rem;padding:.55rem 1rem;font-size:.86rem;display:flex}.app-header{border-bottom:1px solid var(--line);background:#fffdf9eb;justify-content:space-between;align-items:center;gap:1rem;min-height:4.75rem;padding:.85rem clamp(1rem,4vw,2.5rem);display:flex}.app-header>div{gap:.2rem;display:grid}.header-kicker,.page-kicker{color:var(--coral-dark);letter-spacing:.13em;margin:0;font-size:.7rem;font-weight:900}.plan-badge{color:#185b45;white-space:nowrap;background:#e8f3ee;border:1px solid #b9d2c8;border-radius:999px;padding:.35rem .65rem;font-size:.78rem;font-weight:800}.app-content{width:min(100%,78rem);margin:0 auto;padding:clamp(1.25rem,4vw,3rem)}.dashboard-page h1{margin-bottom:2rem}.dashboard-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.summary-card{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;gap:1rem;min-height:9.5rem;padding:1.25rem;display:grid}.summary-card span{color:var(--muted);font-weight:700}.summary-card strong{align-self:end;font-family:Georgia,Yu Mincho,serif;font-size:2.5rem;font-weight:500}.summary-card small{color:var(--muted);font-family:inherit;font-size:.9rem}.accent-card{border-top:3px solid var(--coral)}.first-action,.empty-state{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;margin-top:1rem}.first-action{justify-content:space-between;align-items:center;gap:1.5rem;padding:clamp(1.25rem,4vw,2rem);display:flex}.first-action h2{margin:.35rem 0;font-size:1.25rem}.first-action p:last-child,.empty-state p{color:var(--muted);margin:0;line-height:1.7}.empty-state{text-align:center;align-content:center;place-items:center;min-height:20rem;padding:2rem;display:grid}.empty-state-mark{width:3rem;height:3rem;color:var(--coral-dark);background:#f9e6df;border-radius:50%;place-items:center;font-size:1.3rem;display:grid}.empty-state h2{margin:1rem 0 .5rem}.error-notice{color:#742719;background:#fff1ed;border:1px solid #dfb7af;border-radius:.6rem;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1rem;display:flex}.dialog-backdrop{z-index:100;background:#0919278c;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.confirm-dialog{background:var(--surface);border-radius:.75rem;width:min(100%,28rem);padding:1.5rem;box-shadow:0 1.5rem 4rem #0919273d}.dialog-actions{justify-content:flex-end;gap:.75rem;margin-top:1.5rem;display:flex}.dialog-actions button{cursor:pointer;border-radius:.55rem;min-height:2.75rem;padding:.6rem 1rem}.page-loading{text-align:center;padding:2rem}@media(min-width:768px)and (max-width:1023px){:root{--nav-width:5.25rem}.app-sidebar{align-items:center;padding-inline:.6rem}.brand-copy,.nav-label{clip:rect(0,0,0,0);width:1px;height:1px;position:absolute;overflow:hidden}.app-brand{padding-inline:0}.nav-link{justify-content:center;width:3.5rem;padding-inline:0}.nav-link:before{left:-.6rem}.logout-button{width:3.5rem;font-size:.7rem}}@media(max-width:767px){.app-sidebar{width:100%;height:calc(4.25rem + env(safe-area-inset-bottom));padding:0 0 env(safe-area-inset-bottom);border-top:1px solid #385065;border-right:0;inset:auto 0 0}.app-brand,.logout-button{display:none}.primary-nav{grid-template-columns:repeat(5,minmax(0,1fr));gap:0;height:4.25rem;display:grid}.nav-link{border-radius:0;flex-direction:column;justify-content:center;gap:.15rem;min-width:0;min-height:4.25rem;padding:.35rem .1rem;font-size:.68rem}.nav-link:before{width:50%;height:3px;inset:0 25% auto}.nav-mark{height:1.25rem}.app-stage{padding-bottom:calc(4.25rem + env(safe-area-inset-bottom));margin-left:0}.app-header{min-height:4rem}.offline-banner{text-align:left;flex-direction:column;align-items:flex-start;gap:.1rem}.dashboard-grid{grid-template-columns:1fr}.summary-card{min-height:7rem}.first-action{flex-direction:column;align-items:stretch}.first-action .button-primary{width:100%}.plan-badge{font-size:.68rem}}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}.students-page h1,.student-form-page h1,.student-detail h1,.plan-page h1{letter-spacing:-.035em;margin:.35rem 0 0;font-size:clamp(1.8rem,4vw,2.4rem)}.page-heading-row{justify-content:space-between;align-items:flex-end;gap:1.5rem;display:flex}.student-usage{align-items:center;gap:1rem;display:flex}.student-usage>strong{font-family:Georgia,Yu Mincho,serif;font-size:1.1rem}.student-usage>a:not(.button-primary){color:var(--coral-dark);font-weight:800}.limit-notice{border-left:3px solid var(--coral);color:#6c3a31;background:#fff2ed;margin:1.25rem 0 0;padding:.8rem 1rem}.student-toolbar{justify-content:space-between;align-items:flex-end;gap:1rem;margin:2rem 0 1rem;display:flex}.student-filters{border:1px solid var(--line);background:#ebe6de;border-radius:.65rem;gap:.25rem;padding:.25rem;display:flex}.student-filters a{color:var(--muted);border-radius:.45rem;padding:.5rem .8rem;font-size:.85rem;font-weight:800;text-decoration:none}.student-filters a[aria-current=page]{color:var(--ink);background:var(--surface);box-shadow:0 1px 3px #17324d1a}.search-field{width:min(100%,20rem);color:var(--muted);gap:.3rem;font-size:.75rem;font-weight:800;display:grid}.search-field input{min-height:2.75rem;color:var(--ink);background:#fff;border:1px solid #a8b1b9;border-radius:.55rem;padding:.65rem .8rem}.student-list{gap:.6rem;padding:0;list-style:none;display:grid}.student-list li>a{border:1px solid var(--line);min-height:4.75rem;color:var(--ink);background:var(--surface);border-radius:.65rem;grid-template-columns:.75rem minmax(0,1fr) auto;align-items:center;gap:1rem;padding:.85rem 1rem;text-decoration:none;display:grid}.student-list li>a:hover{border-color:#baa99a;box-shadow:0 .5rem 1.5rem #17324d0f}.student-list li>a>span:nth-child(2){gap:.2rem;display:grid}.student-list small{color:var(--muted)}.student-color{border-radius:999px;width:.65rem;height:2.5rem}.status-chip{border-radius:999px;width:fit-content;padding:.3rem .55rem;font-size:.72rem;font-weight:800;display:inline-flex}.status-chip.active{color:#185b45;background:#e3f2eb}.status-chip.archived{color:#586575;background:#e8ebee}.no-results{color:var(--muted);text-align:center;padding:3rem 1rem}.student-form-page,.student-detail{width:min(100%,52rem);margin:0 auto}.back-link{color:var(--muted);margin-bottom:1.25rem;font-weight:700;text-decoration:none;display:inline-block}.error-summary{color:#742719;background:#fff1ed;border:1px solid #dfb7af;border-radius:.65rem;margin:1.25rem 0;padding:1rem 1.25rem}.error-summary ul{margin:.6rem 0 0;padding-left:1.25rem}.error-summary a{color:inherit}.student-form{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;grid-template-columns:repeat(2,minmax(0,1fr));gap:1.25rem;margin-top:1.5rem;padding:clamp(1rem,4vw,2rem);display:grid}.student-form .form-field:last-of-type,.form-actions{grid-column:1/-1}.student-form textarea{resize:vertical}.form-actions{border-top:1px solid var(--line);justify-content:flex-end;align-items:center;gap:1rem;padding-top:.75rem;display:flex}.form-actions>a{color:var(--muted);font-weight:700}.detail-actions{gap:.75rem;display:flex}.detail-actions a,.detail-actions button{min-height:2.75rem;color:var(--ink);background:var(--surface);cursor:pointer;border:1px solid #9ba7b0;border-radius:.55rem;padding:.6rem .9rem;font-weight:800;text-decoration:none}.student-details-grid{background:var(--line);border-radius:.75rem;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:2rem;padding:1px;display:grid;overflow:hidden}.student-details-grid>div{background:var(--surface);min-height:6.5rem;padding:1.25rem}.student-details-grid .wide{grid-column:1/-1}.student-details-grid dt{color:var(--muted);font-size:.75rem;font-weight:800}.student-details-grid dd{margin:.55rem 0 0;line-height:1.7}.plan-lead{color:var(--muted);line-height:1.7}.plan-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:2rem;display:grid}.plan-card{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;flex-direction:column;min-width:0;padding:1.5rem;display:flex}.plan-card.featured{border-top:3px solid var(--coral)}.plan-card>p{color:var(--coral-dark);letter-spacing:.12em;margin:0;font-size:.7rem;font-weight:900}.plan-card h2{margin:.75rem 0 .35rem;font-family:Georgia,Yu Mincho,serif;font-size:1.75rem;font-weight:500}.plan-card ul{color:var(--muted);gap:.6rem;margin:1.5rem 0;padding-left:1.25rem;display:grid}.plan-card>span{color:var(--emerald);margin-top:auto;font-weight:800}@media(max-width:767px){.page-heading-row,.student-toolbar{flex-direction:column;align-items:stretch}.student-usage{justify-content:space-between}.search-field{width:100%}.student-form{grid-template-columns:1fr}.student-form .form-field,.form-actions{grid-column:1}.student-details-grid,.plan-grid{grid-template-columns:1fr}.student-details-grid .wide{grid-column:1}.student-detail .page-heading-row{align-items:flex-start}.detail-actions{width:100%}.detail-actions>*{text-align:center;flex:1}}@media(min-width:768px)and (max-width:1100px){.plan-grid{grid-template-columns:1fr}}.lesson-notes-panel{border-top:1px solid var(--line);margin-top:2.5rem;padding-top:2rem}.panel-heading,.lesson-note-card>header,.dialog-heading{justify-content:space-between;align-items:center;gap:1rem;display:flex}.panel-heading h2,.dialog-heading h2{margin:.35rem 0 0;font-size:1.45rem}.lesson-empty{color:var(--muted);text-align:center;background:#fffdf98c;border:1px dashed #b9b0a4;border-radius:.75rem;margin-top:1rem;padding:3rem 1rem}.lesson-timeline{gap:1rem;margin-top:1.25rem;padding-left:1.25rem;display:grid;position:relative}.lesson-timeline:before{content:"";background:#dbc8bd;width:2px;position:absolute;inset:.5rem auto .5rem .2rem}.lesson-note-card{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;padding:1.25rem;position:relative}.lesson-note-card:before{border:2px solid var(--canvas);background:var(--coral);content:"";border-radius:50%;width:.7rem;height:.7rem;position:absolute;top:1.4rem;left:-1.55rem}.lesson-note-card time{color:var(--ink);font-family:Georgia,Yu Mincho,serif;font-weight:700}.lesson-note-card header>div{gap:.45rem;display:flex}.lesson-note-card header button,.dialog-heading>button{min-height:2.25rem;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #abb3ba;border-radius:.45rem;padding:.35rem .6rem}.lesson-note-card h3{color:var(--muted);margin:1.1rem 0 .35rem;font-size:.78rem}.lesson-note-card p{white-space:pre-wrap;margin:0;line-height:1.75}.lesson-note-card .next-lesson{border-top:1px solid var(--line);color:var(--emerald);margin-top:1rem;padding-top:.75rem;font-size:.85rem;font-weight:800}.lesson-dialog{width:min(100% - 2rem,42rem);max-height:calc(100vh - 2rem);color:var(--ink);background:var(--surface);border:0;border-radius:.75rem;margin:auto;padding:clamp(1rem,4vw,2rem);overflow:auto;box-shadow:0 1.5rem 4rem #0919273d}.dialog-heading>button{width:2.5rem;height:2.5rem;padding:0;font-size:1.4rem}.lesson-note-form{gap:1.15rem;margin-top:1.5rem;display:grid}.lesson-note-form textarea{resize:vertical}@media(max-width:600px){.panel-heading{flex-direction:column;align-items:stretch}.panel-heading .button-primary{width:100%}.lesson-note-card>header{align-items:flex-start}}.schedule-page h1{letter-spacing:-.035em;margin:.35rem 0 0;font-size:clamp(1.8rem,4vw,2.4rem)}.week-toolbar{grid-template-columns:auto auto minmax(10rem,1fr) auto;align-items:center;gap:.5rem;margin-top:1.75rem;display:grid}.week-toolbar button{min-width:2.75rem;min-height:2.75rem;color:var(--ink);background:var(--surface);cursor:pointer;border:1px solid #a8b1b9;border-radius:.55rem;padding:.5rem .75rem;font-weight:800}.week-toolbar strong{justify-self:center;font-family:Georgia,Yu Mincho,serif;font-size:1.1rem}.schedule-empty{color:var(--muted);text-align:center;margin:1rem 0 0;padding:.75rem 1rem}.schedule-week{background:var(--line);border-radius:.75rem;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;margin:1rem 0 0;padding:1px;list-style:none;display:grid;overflow:hidden}.schedule-week>li{background:#fffdf9c7;min-width:0;min-height:24rem}.schedule-week>li.today{background:#fff7f2}.schedule-week>li>header{border-bottom:1px solid var(--line);text-align:center;align-content:center;gap:.15rem;min-height:4.25rem;padding:.65rem;display:grid}.schedule-week>li.today>header{color:var(--coral-dark);box-shadow:inset 0 3px var(--coral)}.schedule-week time{font-family:Georgia,Yu Mincho,serif;font-weight:800}.schedule-week header span{color:var(--muted);font-size:.7rem}.day-events{gap:.45rem;padding:.45rem;display:grid}.day-events button{min-width:0;color:var(--ink);background:var(--surface);text-align:left;cursor:pointer;border:1px solid #d7ccc1;border-radius:.5rem;grid-template-columns:.3rem minmax(0,1fr);gap:.45rem;padding:.55rem;display:grid}.event-color{border-radius:999px;width:.3rem;height:100%;min-height:2.3rem}.day-events button>span:last-child{gap:.15rem;min-width:0;display:grid}.day-events strong{font-size:.78rem}.day-events small{text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.schedule-dialog{width:min(100% - 2rem,38rem);max-height:calc(100vh - 2rem);color:var(--ink);background:var(--surface);border:0;border-radius:.75rem;margin:auto;padding:clamp(1rem,4vw,2rem);overflow:auto;box-shadow:0 1.5rem 4rem #0919273d}.schedule-form{gap:1.15rem;margin-top:1.5rem;display:grid}.recurrence-options{border:0;gap:1.25rem;margin:0;padding:0;display:flex}.recurrence-options legend{margin-bottom:.55rem;font-weight:800}.recurrence-options label{align-items:center;gap:.4rem;display:flex}.schedule-times,.schedule-bounds{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;display:grid}.schedule-form-error{color:#742719;background:#fff1ed;border:1px solid #dfb7af;border-radius:.55rem;justify-content:space-between;align-items:center;gap:1rem;padding:.8rem 1rem;font-weight:700;display:flex}.schedule-form-error button{color:#742719;white-space:nowrap;cursor:pointer;background:#fff;border:1px solid #a13d2d;border-radius:.45rem;min-height:2.5rem;padding:.5rem .75rem;font-weight:800}@media(max-width:767px){.week-toolbar{grid-template-columns:auto auto 1fr auto}.week-toolbar strong{font-size:.9rem}.schedule-week{background:0 0;grid-template-columns:1fr;gap:.65rem;display:grid;overflow:visible}.schedule-week>li{border:1px solid var(--line);background:var(--surface);border-radius:.65rem;min-height:0}.schedule-week>li>header{text-align:left;justify-content:space-between;align-items:center;min-height:3rem;display:flex}.day-events:empty{display:none}.day-events small{white-space:normal}.schedule-times,.schedule-bounds{grid-template-columns:1fr}.schedule-form-error{flex-direction:column;align-items:stretch}}.attendance-page h1,.makeup-page h1{letter-spacing:-.035em;margin:.35rem 0 0;font-size:clamp(1.8rem,4vw,2.4rem)}.button-secondary{min-height:2.75rem;color:var(--ink);background:var(--surface);border:1px solid #a8b1b9;border-radius:.55rem;justify-content:center;align-items:center;padding:.65rem 1rem;font-weight:800;text-decoration:none;display:inline-flex}.date-toolbar{align-items:end;gap:.55rem;margin-top:1.75rem;display:flex}.date-toolbar button{min-width:2.75rem;min-height:2.75rem;color:var(--ink);background:var(--surface);cursor:pointer;border:1px solid #a8b1b9;border-radius:.55rem;padding:.5rem .75rem;font-weight:800}.date-toolbar label{color:var(--muted);gap:.3rem;font-size:.75rem;font-weight:800;display:grid}.date-toolbar input{min-height:2.75rem;color:var(--ink);background:var(--surface);font:inherit;border:1px solid #a8b1b9;border-radius:.55rem;padding:.5rem .7rem}.attendance-date{margin:1.75rem 0 .8rem;font-family:Georgia,Yu Mincho,serif;font-size:1.2rem}.attendance-roster{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.attendance-roster>li{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;grid-template-columns:minmax(12rem,1fr) minmax(22rem,1.6fr);align-items:center;gap:.85rem 1.25rem;padding:1rem;display:grid}.attendance-person{align-items:center;gap:.75rem;display:flex}.student-color-dot{border-radius:999px;flex:none;width:.7rem;height:2.75rem}.attendance-person div{gap:.2rem;display:grid}.attendance-person span:last-child{color:var(--muted);font-size:.85rem}.attendance-statuses{grid-template-columns:repeat(4,minmax(4.25rem,1fr));gap:.4rem;display:grid}.attendance-statuses button{min-height:2.75rem;color:var(--ink);cursor:pointer;background:#fff;border:1px solid #b8c0c6;border-radius:.5rem;padding:.55rem;font-weight:800}.attendance-statuses button.selected{border-color:var(--emerald);color:#fff;background:var(--emerald);box-shadow:0 0 0 2px #fff,0 0 0 4px #175c5038}.makeup-check{color:var(--muted);grid-column:2;align-items:center;gap:.45rem;font-size:.82rem;font-weight:700;display:flex}.makeup-check input{width:1.15rem;height:1.15rem}.empty-card,.group-empty{color:var(--muted);background:#fffdf999;border:1px dashed #b9b1a7;border-radius:.65rem;padding:1rem}.undo-toast{z-index:30;color:#fff;background:var(--ink);border-radius:.65rem;align-items:center;gap:1rem;padding:.85rem 1rem;display:flex;position:fixed;bottom:1.25rem;right:1.25rem;box-shadow:0 .8rem 2rem #0919273d}.undo-toast button{color:#fff;cursor:pointer;background:0 0;border:0;font-weight:800;text-decoration:underline}.modal-backdrop{z-index:40;background:#0919278a;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.confirm-card{background:var(--surface);border-radius:.75rem;gap:1rem;width:min(100%,34rem);max-height:calc(100vh - 2rem);padding:clamp(1.25rem,4vw,2rem);display:grid;overflow:auto;box-shadow:0 1.5rem 4rem #0919274d}.confirm-card h2,.confirm-card p{margin:0}.confirm-card label{gap:.4rem;font-weight:800;display:grid}.confirm-card input,.confirm-card textarea{min-height:2.75rem;font:inherit;border:1px solid #a8b1b9;border-radius:.5rem;padding:.65rem .75rem}.makeup-groups{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:1.75rem;display:grid}.makeup-groups>section>h2{margin:0 0 .75rem;font-family:Georgia,Yu Mincho,serif;font-size:1.1rem}.makeup-card{border:1px solid var(--line);background:var(--surface);border-radius:.7rem;gap:.65rem;margin-bottom:.75rem;padding:1rem;display:grid}.makeup-card h3,.makeup-card p{margin:.25rem 0 0}.makeup-card p{color:var(--muted);font-size:.86rem}.status-pill{color:#5c3a12;background:#f5e7c9;border-radius:999px;padding:.2rem .5rem;font-size:.72rem;font-weight:900;display:inline-flex}.status-scheduled{color:#164b43;background:#dcefe9}.status-completed{color:#17496b;background:#dfeef7}.status-cancelled{color:#5a6065;background:#e9ecee}.makeup-actions{flex-wrap:wrap;gap:.4rem;padding-top:.35rem;display:flex}.makeup-actions button{min-height:2.5rem;color:var(--ink);cursor:pointer;background:#fff;border:1px solid #a8b1b9;border-radius:.45rem;padding:.5rem .7rem;font-weight:800}@media(max-width:900px){.attendance-roster>li{grid-template-columns:1fr}.makeup-check{grid-column:1}.makeup-groups{grid-template-columns:1fr}}@media(max-width:520px){.date-toolbar{grid-template-columns:auto auto 1fr auto;display:grid}.date-toolbar label{min-width:0}.date-toolbar input{width:100%;min-width:0}.attendance-statuses{grid-template-columns:repeat(2,minmax(0,1fr))}.undo-toast{justify-content:space-between;bottom:5.5rem;left:.75rem;right:.75rem}}.dashboard-page h1{letter-spacing:-.05em;margin:.35rem 0 0;font-size:clamp(2rem,5vw,3.35rem)}.dashboard-hero{border-bottom:1px solid var(--line);justify-content:space-between;align-items:end;gap:2rem;padding-bottom:1.5rem;display:flex}.next-lesson-summary{border-left:3px solid var(--coral);gap:.25rem;margin:0;padding-left:1rem;display:grid}.next-lesson-summary span{color:var(--muted);letter-spacing:.08em;font-size:.72rem;font-weight:900}.next-lesson-summary strong{font-family:Georgia,Yu Mincho,serif;font-size:1.1rem}.dashboard-start{background:linear-gradient(135deg,#fff8f3,#fffdf9);border:1px solid #dfc5b7;border-radius:.8rem;gap:.8rem;margin-top:1.5rem;padding:clamp(1.25rem,4vw,2rem);display:grid}.dashboard-start p,.dashboard-start h2{margin:0}.dashboard-start .dashboard-step{color:var(--coral-dark);letter-spacing:.12em;font-size:.72rem;font-weight:900}.dashboard-start-title{font-family:Georgia,Yu Mincho,serif;font-size:clamp(1.25rem,3vw,1.7rem)}.dashboard-start .button-primary{justify-self:start;text-decoration:none}.dashboard-sections{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:1.5rem;display:grid}.dashboard-sections>section{border:1px solid var(--line);background:var(--surface);border-radius:.75rem;min-width:0;padding:1.1rem}.dashboard-sections>section:first-child{grid-column:1/-1}.dashboard-section-heading{justify-content:space-between;align-items:center;gap:1rem;display:flex}.dashboard-section-heading>div{align-items:baseline;gap:.6rem;display:flex}.dashboard-section-heading span{color:var(--coral-dark);font-family:Georgia,serif;font-size:.75rem;font-weight:800}.dashboard-section-heading h2{margin:0;font-family:Georgia,Yu Mincho,serif;font-size:1.05rem}.dashboard-section-heading a,.dashboard-action{color:var(--emerald);font-size:.82rem;font-weight:900}.today-lesson-list{margin:1rem 0 0;padding:0;list-style:none;display:grid}.today-lesson-list li{border-top:1px solid var(--line);grid-template-columns:4rem auto minmax(0,1fr) auto;align-items:center;gap:.75rem;padding:.75rem 0;display:grid}.today-lesson-list time{font-family:Georgia,serif;font-size:1.05rem;font-weight:900}.today-lesson-list .student-color-dot{width:.35rem;height:1.8rem}.today-lesson-list span:last-child{color:var(--muted);font-size:.8rem}.metric-number{margin:1rem 0 .65rem;font-family:Georgia,serif;font-size:2.65rem;font-weight:900;line-height:1}.metric-number small{color:var(--muted);margin-left:.2rem;font-family:inherit;font-size:.85rem}.dashboard-empty,.dashboard-done{color:var(--muted);margin:1rem 0 0;font-size:.86rem}@media(max-width:780px){.dashboard-sections{grid-template-columns:1fr}.dashboard-sections>section:first-child{grid-column:1}}@media(max-width:520px){.dashboard-hero{flex-direction:column;align-items:stretch;gap:1rem}.today-lesson-list li{grid-template-columns:3.5rem auto 1fr}.today-lesson-list span:last-child{grid-column:3}}.data-settings-page h1{letter-spacing:-.035em;margin:.35rem 0 0;font-size:clamp(1.8rem,4vw,2.4rem)}.backup-reminder{color:#5a3b13;background:#fff7df;border:1px solid #d9bd87;border-radius:.65rem;justify-content:space-between;align-items:center;gap:1rem;margin-top:1.5rem;padding:1rem;display:flex}.backup-reminder p{margin:.2rem 0 0;font-size:.84rem}.backup-reminder button{min-height:2.5rem;color:inherit;white-space:nowrap;cursor:pointer;background:0 0;border:0;font-weight:800;text-decoration:underline}.success-notice{color:#164b43;background:#e9f6f2;border:1px solid #9bc8bb;border-radius:.55rem;margin:1rem 0 0;padding:.8rem 1rem;font-weight:800}.data-setting-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1.5rem;display:grid}.data-setting-card{border:1px solid var(--line);background:var(--surface);border-radius:.8rem;align-content:start;gap:.8rem;min-height:18rem;padding:clamp(1.25rem,4vw,2rem);display:grid}.data-setting-card h2,.data-setting-card p{margin:0}.data-setting-card h2{font-family:Georgia,Yu Mincho,serif;font-size:1.3rem}.data-setting-card p{color:var(--muted);line-height:1.75}.setting-number{color:var(--coral-dark);font-family:Georgia,serif;font-size:.75rem;font-weight:900}.data-setting-card .button-primary,.file-picker{place-self:end start;margin-top:auto}.file-picker{gap:.45rem;font-weight:800;display:grid}.file-picker input{background:#fff;border:1px solid #a8b1b9;border-radius:.5rem;max-width:100%;padding:.65rem}.local-data-note{color:var(--muted);margin:1rem 0 0;font-size:.85rem}.replace-confirmation{gap:.45rem;margin-top:1rem;font-weight:800;display:grid}.replace-confirmation input{min-height:2.75rem;font:inherit;border:1px solid #a8b1b9;border-radius:.5rem;padding:.6rem .75rem}.restore-counts{flex-wrap:wrap;gap:.35rem .75rem;display:flex}.restore-counts span{font-weight:800}@media(max-width:700px){.data-setting-grid{grid-template-columns:1fr}.backup-reminder{flex-direction:column;align-items:stretch}.backup-reminder button{align-self:start}}.pwa-prompt{z-index:80;color:#fff;background:var(--ink);border:1px solid #ffffff29;border-radius:.7rem;justify-content:space-between;align-items:center;gap:1rem;width:min(100% - 2rem,34rem);padding:1rem;display:flex;position:fixed;bottom:1rem;right:1rem;box-shadow:0 1rem 3rem #0919274d}.pwa-prompt>div:first-child{gap:.2rem;display:grid}.pwa-prompt span{color:#ffffffc2;font-size:.8rem}.pwa-prompt-actions{flex:none;gap:.4rem;display:flex}.pwa-prompt button{color:#fff;cursor:pointer;background:0 0;border:1px solid #ffffff61;border-radius:.45rem;min-height:2.6rem;padding:.5rem .75rem;font-weight:800}.pwa-prompt .button-primary{border-color:var(--coral);background:var(--coral)}.pwa-prompt--offline{pointer-events:none}.pwa-prompt--offline button{pointer-events:auto}@media(max-width:600px){.pwa-prompt{flex-direction:column;align-items:stretch;width:auto;bottom:5.5rem;left:.75rem;right:.75rem}.pwa-prompt-actions{justify-content:flex-end}}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
