:root{--brand-700:#052545;--brand-300:#b89a62;--brand-paper:#f5f1e8;--brand-white:#ffffff;--bg:#f7f6f2;--panel:#ffffff;--panel-2:#f3f1eb;--text:#052545;--muted:#667382;--line:#dedbd2;--line-strong:#cbc5b8;--primary:var(--brand-700);--primary-contrast:#ffffff;--sidebar:#052545;--sidebar-text:#f5f1e8;--sidebar-muted:#aebbc7;--good:#16803c;--warn:#b45309;--bad:#b42318;--primary-tint:color-mix(in srgb,var(--primary) 12%,var(--panel));--good-tint:color-mix(in srgb,var(--good) 12%,var(--panel));--warn-tint:color-mix(in srgb,var(--warn) 12%,var(--panel));--bad-tint:color-mix(in srgb,var(--bad) 12%,var(--panel));--font-body:"SUIT Winners","Apple SD Gothic Neo",sans-serif;--font-heading:"SUIT Winners","Apple SD Gothic Neo",sans-serif;--font-ja:"Pretendard JP Winners","Hiragino Kaku Gothic ProN",sans-serif;--text-xs:12px;--text-sm:13px;--text-base:15px;--text-lg:17px;--text-xl:20px;--text-2xl:24px;--text-3xl:30px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:32px;--space-8:40px;--motion-fast:150ms;--motion-base:200ms;--ease-out:cubic-bezier(0.16,1,0.3,1);--radius-sm:8px;--radius:12px;--radius-lg:18px;--shadow-sm:0 1px 2px rgb(5 37 69/5%),0 4px 14px rgb(5 37 69/4%);--shadow-md:0 8px 24px rgb(5 37 69/10%);--shadow-lg:0 18px 48px rgb(5 37 69/18%);--z-modal:1000;--overlay:rgb(0 0 0/45%);color-scheme:light}:root[data-theme=dark]{--bg:#09090b;--panel:#111113;--panel-2:#18181b;--text:#f4f4f5;--muted:#a1a1aa;--line:#27272a;--line-strong:#3f3f46;--primary:var(--brand-300);--primary-contrast:#052545;--good:#4ade80;--warn:#f59e0b;--bad:#fb7185;--shadow-sm:0 1px 2px rgb(0 0 0/40%),0 2px 8px rgb(0 0 0/30%);--shadow-md:0 6px 20px rgb(0 0 0/50%);--shadow-lg:0 12px 40px rgb(0 0 0/60%);--overlay:rgb(0 0 0/65%);--sidebar:#070f18;--sidebar-text:#f5f1e8;--sidebar-muted:#9ca8b4;color-scheme:dark}@font-face{font-family:SUIT Winners;src:url(/fonts/SUIT-Regular.woff2) format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:SUIT Winners;src:url(/fonts/SUIT-SemiBold.woff2) format("woff2");font-style:normal;font-weight:600;font-display:swap}@font-face{font-family:Pretendard JP Winners;src:url(/fonts/PretendardJP-Regular.woff2) format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Pretendard JP Winners;src:url(/fonts/PretendardJP-SemiBold.woff2) format("woff2");font-style:normal;font-weight:600;font-display:swap}*{box-sizing:border-box}body,html{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-size:var(--text-base)}body,button,html,input,select,textarea{font-family:var(--font-body)}.brand strong,.metric strong,h1,h2,h3{font-family:var(--font-heading);font-weight:600}.grid.cols-4>.card:not(.metric){display:grid;grid-gap:var(--space-1);gap:var(--space-1)}.grid.cols-4>.card:not(.metric)>strong{display:block;letter-spacing:-.03em}:lang(ja){font-family:var(--font-ja)}a{color:inherit;text-decoration:none}.app-shell{display:grid;grid-template-columns:244px minmax(0,1fr);min-height:100vh}.sidebar{border-right:1px solid var(--line);background:var(--panel);padding:var(--space-5);position:-webkit-sticky;position:sticky;top:0;height:100vh}.brand{display:grid;align-items:start;grid-gap:var(--space-2);gap:var(--space-2);margin-bottom:var(--space-6)}.brand-lockup{display:block;height:49px;position:relative;width:min(194px,100%)}.brand-lockup img{display:block;height:auto;max-height:100%;object-fit:contain;object-position:left center;width:100%}.brand-lockup-dark,:root[data-theme=dark] .brand-lockup-light{display:none!important}:root[data-theme=dark] .brand-lockup{height:76px;width:min(110px,100%)}:root[data-theme=dark] .brand-lockup-dark{display:block!important}.brand-context{color:var(--muted);font-size:var(--text-xs)}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border:1px solid color-mix(in srgb,var(--brand-300) 45%,transparent);border-radius:10px;background:var(--brand-700);overflow:hidden;flex:0 0 auto}.brand-mark img{display:block;height:100%;width:100%}.brand span,.eyebrow,.muted{color:var(--muted)}.nav{display:grid;grid-gap:0;gap:0}.nav-group{display:grid;grid-gap:6px;gap:6px}.nav-group+.nav-group{margin-top:var(--space-3)}.nav-section{display:block;color:var(--muted);font-size:var(--text-xs);letter-spacing:.02em;padding:0 var(--space-3);margin-bottom:2px}.nav a,.segmented button{border:1px solid transparent;border-radius:var(--radius);color:var(--muted);display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3)}.nav a.active,.nav a:hover,.segmented button.active{border-color:var(--line);background:var(--panel-2);color:var(--text)}.main{padding:var(--space-6)}.topbar{display:flex;justify-content:space-between;gap:var(--space-4);align-items:flex-start;margin-bottom:var(--space-5)}.topbar h1{font-size:28px;margin:var(--space-1) 0 var(--space-2);letter-spacing:0}.page-section{margin-top:var(--space-4)}.grid{display:grid;grid-gap:var(--space-4);gap:var(--space-4)}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:var(--space-4)}.card h2,.card h3{margin:0 0 var(--space-3);font-size:16px}.metric{display:flex;justify-content:space-between;align-items:center}.metric strong{font-size:28px}.module-card{display:grid;grid-gap:var(--space-3);min-height:136px}.module-card .button{width:-moz-fit-content;width:fit-content}.action-list{display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.action-item{display:flex;justify-content:space-between;gap:var(--space-3);align-items:center;border:1px solid var(--line);background:var(--panel-2);border-radius:var(--radius);padding:var(--space-3)}.card-list{display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.card-list-item{align-items:center;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);display:flex;flex-wrap:wrap;gap:var(--space-3);justify-content:space-between;padding:var(--space-3)}.card-list-item .item-main{display:grid;grid-gap:var(--space-1);gap:var(--space-1);min-width:0}.card-list-item .item-main span{color:var(--muted);font-size:var(--text-sm)}.card-list-item .item-side{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:flex-end;margin-left:auto}.card-list-item .item-amount{font-size:var(--text-base);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--panel-2);border-radius:999px;padding:var(--space-1) var(--space-2);color:var(--muted);font-size:var(--text-xs);white-space:nowrap}.badge.good,.toast.good{background:var(--good-tint);border-color:transparent;color:var(--good)}.badge.warn,.toast.warn{background:var(--warn-tint);border-color:transparent;color:var(--warn)}.badge.bad,.toast.bad{background:var(--bad-tint);border-color:transparent;color:var(--bad)}.button{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:var(--radius);display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;padding:var(--space-2) var(--space-3);cursor:pointer}.button.primary{border-color:var(--primary);background:var(--primary);color:var(--primary-contrast)}.button.ghost{background:transparent}.button:disabled{opacity:.5;cursor:not-allowed}.bottom-tabs button:focus-visible,.button:focus-visible,.choice-button:focus-visible,.icon-button:focus-visible,.nav a:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);border-top:1px solid var(--line);padding:var(--space-3) 0}.row:first-child{border-top:0;padding-top:0}.stack{display:grid;grid-gap:var(--space-3);gap:var(--space-3)}.field{display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.field label{color:var(--muted);font-size:var(--text-sm)}.input,.select,.textarea{width:100%;min-height:44px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);color:var(--text);padding:var(--space-3)}.textarea{min-height:86px;resize:vertical}.progress{height:8px;border-radius:999px;background:var(--panel-2);overflow:hidden}.progress span{display:block;height:100%;background:var(--primary)}.mobile-frame{max-width:430px;margin:0 auto;padding:var(--space-5)}.mobile-nav{display:flex;justify-content:space-between;gap:var(--space-2);margin:var(--space-4) 0}.mobile-nav.single{justify-content:flex-end}.segmented{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius);display:inline-flex;padding:3px;gap:3px}.segmented button{border:0;background:transparent;cursor:pointer;min-height:44px;min-width:44px}.table{width:100%;border-collapse:collapse}.table td,.table th{border-top:1px solid var(--line);padding:var(--space-3) var(--space-2);text-align:left;vertical-align:top}.table th{color:var(--muted);font-size:var(--text-xs);font-weight:600}.table tr{transition:background .15s ease,outline-color .15s ease}.table tr.selected-row td{background:var(--panel-2)}.table tbody tr:hover td{background:color-mix(in srgb,var(--panel-2) 72%,transparent)}.answer-review-card,.answer-review-list{display:grid;grid-gap:var(--space-3);gap:var(--space-3)}.answer-review-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);padding:var(--space-4)}.answer-review-head{align-items:flex-start;display:flex;gap:var(--space-3);justify-content:space-between}.answer-review-head h3{font-size:16px;margin:var(--space-2) 0 0}.answer-pair{display:grid;grid-gap:var(--space-2);gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr))}.answer-pair>div{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);display:grid;grid-gap:5px;gap:5px;padding:var(--space-3)}.answer-pair span{color:var(--muted);font-size:var(--text-xs)}.answer-pair strong{font-size:18px}.grading-grid{display:grid;grid-gap:var(--space-3);gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr))}.answer-review-actions{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:space-between}.problem{border:1px solid var(--line);border-radius:var(--radius);background:var(--panel-2);padding:var(--space-3)}.problem-head{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-2)}.problem-text{color:var(--text);line-height:1.65;margin:0}.solution .problem-text{color:var(--muted);margin:var(--space-2) 0 0}.graph{width:100%;max-width:330px;margin-top:var(--space-3);border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}.graph line{stroke:var(--muted);stroke-width:1}.graph .tick{stroke:var(--line)}.graph path{fill:none;stroke:var(--primary);stroke-width:3}.graph circle{fill:var(--primary)}.graph text{fill:var(--muted);font-size:11px;text-anchor:middle}.app-mobile{min-height:100vh;max-width:430px;margin:0 auto;background:var(--bg);padding:var(--space-4) var(--space-4) 82px;position:relative}.app-header{align-items:center;display:flex;justify-content:space-between;gap:var(--space-3);padding:var(--space-1) 0 var(--space-3);position:-webkit-sticky;position:sticky;top:0;z-index:5;background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.app-header .brand{margin-bottom:0;min-width:0}.app-header .brand div:last-child{min-width:0}.app-header .brand span,.app-header .brand strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:285px}.icon-button{align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);display:inline-flex;flex:0 0 auto;height:44px;justify-content:center;width:44px}.app-content,.screen-stack{display:grid;grid-gap:var(--space-3);gap:var(--space-3)}.app-hero{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-5)}.app-hero h1,.screen-title{font-size:25px;letter-spacing:0;line-height:1.18;margin:6px 0 var(--space-2)}.app-hero p{color:var(--muted);line-height:1.55;margin:0}.hero-meta{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:var(--space-4)}.panel.compact{padding:var(--space-3)}.panel h1,.panel h2,.panel h3{letter-spacing:0}.section-head{align-items:flex-start;display:flex;gap:var(--space-3);justify-content:space-between}.section-head h2,.section-head p{margin:0}.section-head p{margin-top:var(--space-1)}.checkin-grid{display:grid;grid-gap:var(--space-2);gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr))}.checkin-method{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);display:grid;grid-gap:5px;gap:5px;min-height:104px;padding:var(--space-3)}.checkin-method strong{font-size:var(--text-base)}.checkin-method span{color:var(--muted);font-size:var(--text-xs);line-height:1.35}.data-row{align-items:center;border-top:1px solid var(--line);display:flex;gap:var(--space-3);justify-content:space-between;min-height:42px;padding:var(--space-3) 0}.data-row:first-child{border-top:0;padding-top:0}.data-row span{color:var(--muted)}.data-row span,.data-row strong{font-size:var(--text-sm);line-height:1.35}.data-row strong{text-align:right}.homework-status{display:grid;grid-gap:var(--space-2);gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr))}.homework-status>div{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);display:grid;grid-gap:var(--space-1);gap:var(--space-1);min-height:74px;padding:var(--space-3)}.homework-status span,.question-status span{font-size:var(--text-xs)}.homework-status strong{font-family:var(--font-heading);font-size:22px}.homework-status strong.good{color:var(--good)}.homework-status strong.warn{color:var(--warn)}.question-status,.quick-actions{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:space-between}.quick-actions .button{flex:1 1 140px}.muted-row{opacity:.65}.answer-input{font-size:16px}.segmented.wide{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%}.segmented.wide button{justify-content:center;min-width:0;padding:var(--space-2) var(--space-1);white-space:normal}.empty-state{align-items:center;display:grid;justify-items:center;min-height:260px;text-align:center}.empty-state h1{font-size:var(--text-2xl);margin:6px 0 0}.sticky-submit{bottom:82px;position:-webkit-sticky;position:sticky;z-index:4;box-shadow:var(--shadow-md)}.skill-row{display:grid;grid-gap:var(--space-2);gap:var(--space-2)}.skill-row>div:first-child{display:flex;justify-content:space-between;gap:var(--space-3)}.skill-row span{color:var(--muted)}.skill-row span,.skill-row strong{font-size:var(--text-sm)}.progress.good span{background:var(--good)}.progress.warn span{background:var(--warn)}.status-grid{display:grid;grid-gap:var(--space-2);gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr))}.status-cell{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);display:grid;grid-gap:5px;gap:5px;min-height:104px;padding:var(--space-3)}.status-cell small{color:var(--muted);font-size:var(--text-xs)}.status-cell strong{font-size:var(--text-base);line-height:1.3}.homework-status>div.good,.status-cell.good{background:var(--good-tint);border-color:transparent}.homework-status>div.warn,.status-cell.warn{background:var(--warn-tint);border-color:transparent}.homework-status>div.bad,.status-cell.bad{background:var(--bad-tint);border-color:transparent}.status-cell.good strong{color:var(--good)}.status-cell.warn strong{color:var(--warn)}.status-cell.bad strong{color:var(--bad)}.choice-button{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);cursor:pointer;padding:var(--space-3);text-align:left}.bottom-tabs{background:color-mix(in srgb,var(--panel) 96%,transparent);border:1px solid var(--line);border-radius:var(--radius-lg);bottom:var(--space-3);box-shadow:var(--shadow-lg);display:grid;grid-gap:2px;gap:2px;grid-template-columns:repeat(5,minmax(0,1fr));left:50%;max-width:402px;padding:6px;position:fixed;transform:translateX(-50%);width:calc(100% - 28px);z-index:10}.bottom-tabs button{align-items:center;background:transparent;border:0;border-radius:var(--radius);color:var(--muted);cursor:pointer;display:grid;font-size:var(--text-xs);grid-gap:3px;gap:3px;justify-items:center;min-height:52px;min-width:0;padding:6px 2px}.bottom-tabs button.active{background:var(--panel-2);color:var(--text);box-shadow:inset 0 0 0 1px var(--line)}.bottom-tabs span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}.toast-stack{display:grid;grid-gap:var(--space-2);gap:var(--space-2);justify-items:center;left:50%;max-width:min(402px,calc(100% - var(--space-6)));pointer-events:none;position:fixed;top:var(--space-4);transform:translateX(-50%);width:max-content;z-index:60}.toast{animation:toast-in var(--motion-base) var(--ease-out);background:var(--panel);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow-md);color:var(--text);font-size:var(--text-sm);font-weight:600;max-width:100%;overflow:hidden;padding:var(--space-2) var(--space-4);text-overflow:ellipsis;transition:opacity var(--motion-base) ease,transform var(--motion-base) ease;white-space:nowrap}.toast.leaving{opacity:0;transform:translateY(calc(-1 * var(--space-2)))}.notification-popover{box-shadow:var(--shadow-lg);max-height:min(460px,calc(100dvh - 88px));overflow-y:auto;position:absolute;right:0;top:calc(100% + 8px);width:min(320px,calc(100vw - 24px));z-index:50}@keyframes toast-in{0%{opacity:0;transform:translateY(calc(-1 * var(--space-2)))}to{opacity:1;transform:translateY(0)}}@media (max-width:900px){.app-shell{grid-template-columns:1fr;min-width:0}.sidebar{min-width:0;position:-webkit-sticky;position:sticky;top:0;height:auto;padding:var(--space-3) var(--space-4);z-index:20;box-shadow:var(--shadow-sm)}.nav{display:flex;gap:var(--space-2);overflow-x:auto;padding:2px 2px var(--space-2);scrollbar-width:thin}.sidebar>.brand{margin-bottom:var(--space-3)}.sidebar>.badge{display:none}.nav-group,.nav-group+.nav-group{display:contents;margin-top:0}.nav-section{display:none}.nav a{min-height:44px;min-width:max-content}.sidebar>.card{display:flex;margin-top:var(--space-2)!important;padding:var(--space-2)}.sidebar>.card>.badge{display:none}.sidebar>.card .button{flex:1 1}.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}.topbar{display:grid}.main{min-width:0;padding:var(--space-4)}.card{min-width:0;overflow-x:auto}}@media (max-width:430px){.app-mobile,.mobile-frame{padding-left:var(--space-3);padding-right:var(--space-3)}.main{padding:var(--space-3)}.app-header .brand span,.app-header .brand strong{max-width:180px}.notification-popover{position:fixed;right:12px;top:64px}}.auth-page{display:grid;grid-template-columns:minmax(360px,.88fr) minmax(440px,1.12fr);min-height:100dvh}.auth-brand-panel{background:radial-gradient(circle at 92% 10%,rgb(184 154 98/24%),transparent 22rem),var(--brand-700);color:var(--brand-white);display:flex;flex-direction:column;justify-content:space-between;min-height:100dvh;overflow:hidden;padding:clamp(34px,5vw,72px);position:relative}.auth-brand-panel:after{border:1px solid rgb(184 154 98/35%);border-radius:999px;bottom:-170px;content:"";height:420px;position:absolute;right:-190px;width:420px}.auth-brand-panel .brand{margin:0;position:relative;z-index:1}.auth-brand-panel .brand-lockup{height:76px;width:110px}.auth-brand-panel .brand-lockup-light{display:none!important}.auth-brand-panel .brand-lockup-dark{display:block!important}.auth-brand-panel .brand-context{color:var(--sidebar-muted);font-weight:600;letter-spacing:.08em}.auth-brand-copy{max-width:560px;position:relative;z-index:1}.auth-brand-copy .eyebrow{color:var(--brand-300);font-size:11px;font-weight:600;letter-spacing:.13em}.auth-brand-copy h1{color:var(--brand-white);font-size:clamp(34px,4vw,58px);letter-spacing:-.045em;line-height:1.12;margin:var(--space-4) 0}.auth-brand-copy h1 span{display:block}.auth-brand-copy p{color:rgb(255 255 255/68%);line-height:1.7;margin:0;max-width:440px}.auth-trust-list{display:flex;flex-wrap:wrap;gap:var(--space-4);position:relative;z-index:1}.auth-trust-list span{align-items:center;color:rgb(255 255 255/76%);display:inline-flex;font-size:var(--text-sm);gap:var(--space-2)}.auth-form-panel{align-items:center;display:flex;justify-content:center;padding:var(--space-7)}.auth-form{max-width:430px;width:100%}.auth-form-heading{margin-bottom:var(--space-4)}.auth-form-heading .eyebrow{color:var(--brand-300);font-size:11px;font-weight:600;letter-spacing:.12em}.auth-form-heading h2{font-size:32px;letter-spacing:-.035em;margin:var(--space-2) 0 var(--space-1)}.auth-form-heading p{margin:0}.auth-form .input{background:var(--panel);font-size:16px;min-height:52px;padding:13px var(--space-4)}.auth-submit{justify-content:flex-start;min-height:52px;padding-inline:var(--space-4)}.auth-submit svg:last-child{margin-left:auto}.auth-error{border-radius:var(--radius);white-space:normal}.auth-alternate,.auth-error{justify-content:center;min-height:44px}.auth-alternate{align-items:center;color:var(--primary);display:flex;font-size:var(--text-sm);font-weight:600;gap:var(--space-2)}.auth-help{color:var(--muted);font-size:var(--text-xs);margin:var(--space-2) 0 0;text-align:center}@media (max-width:760px){.auth-page{display:block}.auth-brand-panel{display:block;min-height:238px;padding:var(--space-5) var(--space-5) var(--space-7)}.auth-brand-panel .brand-lockup{height:55px;width:80px}.auth-brand-panel .brand-context{display:none}.auth-brand-copy{margin-top:var(--space-6)}.auth-brand-copy h1{font-size:29px;margin:var(--space-2) 0}.auth-brand-copy p,.auth-trust-list{display:none}.auth-form-panel{background:var(--bg);border-radius:var(--radius-lg) var(--radius-lg) 0 0;margin-top:-18px;min-height:calc(100dvh - 220px);padding:var(--space-7) var(--space-5);position:relative;z-index:2}}@media (max-width:360px){.auth-brand-panel{min-height:210px}.auth-brand-copy h1{font-size:26px}.auth-form-panel{padding-inline:var(--space-4)}}.modal-overlay{position:fixed;inset:0;background:var(--overlay);display:flex;align-items:flex-start;justify-content:center;padding:var(--space-6);overflow-y:auto;z-index:var(--z-modal)}.modal-panel{background:var(--panel);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);width:100%;margin-top:var(--space-6);display:flex;flex-direction:column;max-height:calc(100vh - var(--space-6) * 2);animation:modal-in .16s ease}.modal-panel.sm{max-width:420px}.modal-panel.md{max-width:580px}.modal-panel.lg{max-width:880px}.modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--line)}.modal-title{margin:0}.modal-desc{margin:4px 0 0;color:var(--muted)}.modal-body{padding:var(--space-6);overflow-y:auto}.modal-footer{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-5) var(--space-6);border-top:1px solid var(--line)}@keyframes modal-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}body{background:radial-gradient(circle at 88% 0,color-mix(in srgb,var(--brand-300) 8%,transparent),transparent 28rem),var(--bg);line-height:1.5}a,button,input,select,textarea{transition:background-color var(--motion-fast) ease,border-color var(--motion-fast) ease,color var(--motion-fast) ease,box-shadow var(--motion-fast) ease,transform var(--motion-fast) var(--ease-out)}.app-shell{grid-template-columns:260px minmax(0,1fr)}.sidebar{background:var(--sidebar);border-right:0;color:var(--sidebar-text);display:flex;flex-direction:column;gap:var(--space-4);overflow-y:auto;padding:var(--space-6) var(--space-4) var(--space-4)}.sidebar-brand{border-bottom:1px solid rgb(255 255 255/12%);padding:0 var(--space-2) var(--space-5)}.sidebar .brand{gap:var(--space-2);margin:0}.sidebar .brand-lockup{height:62px;width:90px}.sidebar .brand-lockup-light{display:none!important}.sidebar .brand-lockup-dark{display:block!important}.sidebar .brand-context{color:var(--sidebar-muted);font-size:10px;font-weight:600;letter-spacing:.12em}.sidebar .nav{flex:1 1;gap:var(--space-1)}.sidebar .nav-group{gap:3px}.sidebar .nav-group+.nav-group{margin-top:var(--space-4)}.sidebar .nav-section{font-size:11px;letter-spacing:.08em;margin-bottom:4px;padding:0 var(--space-3)}.sidebar .nav a,.sidebar .nav-section{color:var(--sidebar-muted);font-weight:600}.sidebar .nav a{border:0;border-radius:10px;font-size:var(--text-sm);min-height:42px;padding:9px var(--space-3);position:relative}.sidebar .nav a:hover{background:rgb(255 255 255/7%);color:var(--sidebar-text)}.sidebar .nav a.active{background:rgb(255 255 255/12%);color:var(--brand-white);box-shadow:inset 3px 0 0 var(--brand-300)}.sidebar-footer{border-top:1px solid rgb(255 255 255/12%);display:grid;grid-gap:var(--space-2);gap:var(--space-2);padding-top:var(--space-4)}.sidebar-user{align-items:center;display:flex;gap:var(--space-3);padding:var(--space-2)}.sidebar-user>span:last-child{display:grid;min-width:0}.sidebar-user strong{color:var(--sidebar-text);font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-user small{color:var(--sidebar-muted)}.sidebar-avatar{align-items:center;background:var(--brand-300);border-radius:10px;color:var(--brand-700);display:inline-flex;flex:0 0 auto;font-weight:600;height:36px;justify-content:center;width:36px}.sidebar-footer .button{background:rgb(255 255 255/7%);border-color:rgb(255 255 255/12%);color:var(--sidebar-text);justify-content:flex-start;min-height:40px}.sidebar-footer .button:hover{background:rgb(255 255 255/12%)}.main{min-width:0;padding:var(--space-7)}.main-content{margin:0 auto;max-width:1440px;min-width:0}.topbar{align-items:center;margin-bottom:var(--space-6)}.topbar h1{font-size:clamp(26px,2.6vw,34px);letter-spacing:-.035em;line-height:1.18;margin-top:3px}.app-hero .eyebrow,.topbar .eyebrow{color:var(--brand-300);font-size:11px;font-weight:600;letter-spacing:.11em;text-transform:uppercase}.card,.panel{border-color:color-mix(in srgb,var(--line) 82%,transparent);padding:var(--space-5)}.card:hover,.panel:hover{border-color:var(--line-strong)}.metric{min-height:116px;overflow:hidden;position:relative}.metric>.badge{background:var(--primary-tint);border:0;color:var(--primary);height:38px;justify-content:center;width:38px}.metric strong{display:inline-block;font-size:30px;letter-spacing:-.035em;margin-top:var(--space-2)}.button:hover:not(:disabled),.icon-button:hover:not(:disabled){border-color:var(--line-strong);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.button.primary:hover:not(:disabled){background:color-mix(in srgb,var(--primary) 90%,black)}.admin-bottom-nav,.admin-mobile-drawer,.admin-mobile-header{display:none}.app-mobile{background:transparent;max-width:960px;padding:var(--space-5) var(--space-6) 100px;width:100%}.app-header{background:color-mix(in srgb,var(--bg) 90%,transparent);border-bottom:1px solid color-mix(in srgb,var(--line) 72%,transparent);margin-bottom:var(--space-5);padding:var(--space-2) 0 var(--space-4)}.app-header .brand{align-items:center;display:flex;gap:var(--space-3)}.app-header .brand>div{display:grid}.app-header .brand strong{color:var(--text);font-size:var(--text-base)}.app-header .brand span{font-size:var(--text-xs)}.app-content,.screen-stack{gap:var(--space-4)}.app-hero{background:linear-gradient(125deg,rgb(255 255 255/4%),transparent 50%),var(--brand-700);border:0;border-radius:var(--radius-lg);box-shadow:var(--shadow-md);color:var(--brand-white);min-height:182px;overflow:hidden;padding:clamp(24px,4vw,38px);position:relative}.app-hero:after{border:1px solid rgb(184 154 98/45%);border-radius:999px;content:"";height:96px;position:absolute;right:-32px;top:-34px;width:96px}.app-hero h1{color:var(--brand-white);font-size:clamp(27px,4vw,36px);letter-spacing:-.035em}.app-hero p{color:rgb(255 255 255/72%)}.app-hero .badge{background:rgb(255 255 255/10%);border-color:rgb(255 255 255/16%);color:var(--brand-white)}.app-hero .badge.good{background:rgb(22 128 60/30%)}.app-hero .badge.warn{background:rgb(184 154 98/20%);color:#f2d49a}.bottom-tabs{border-color:color-mix(in srgb,var(--line) 82%,transparent);max-width:520px}.bottom-tabs button.active{background:var(--primary);box-shadow:none;color:var(--primary-contrast)}@media (min-width:760px){.app-mobile .screen-stack{grid-template-columns:repeat(2,minmax(0,1fr))}.app-mobile .screen-stack>.app-hero,.app-mobile .screen-stack>.empty-state,.app-mobile .screen-stack>.panel:first-child:last-child,.app-mobile .screen-stack>.sticky-submit{grid-column:1/-1}.app-mobile .app-hero,.app-mobile .panel{min-width:0}}@media (max-width:900px){.app-shell{display:block;min-height:100dvh;padding-bottom:76px}.sidebar{display:none}.admin-mobile-header{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:color-mix(in srgb,var(--panel) 92%,transparent);border-bottom:1px solid var(--line);justify-content:space-between;min-height:64px;padding:10px var(--space-4);position:-webkit-sticky;position:sticky;top:0;z-index:30}.admin-mobile-actions,.admin-mobile-brand,.admin-mobile-brand>span:last-child,.admin-mobile-header{align-items:center;display:flex}.admin-mobile-brand{gap:10px;min-height:44px}.admin-mobile-brand>span:last-child{align-items:flex-start;flex-direction:column;line-height:1.15}.admin-mobile-brand strong{font-size:var(--text-sm);letter-spacing:.04em}.admin-mobile-brand small,.admin-mobile-user{color:var(--muted);font-size:11px}.admin-mobile-actions{gap:var(--space-2)}.main{padding:var(--space-4)}.main-content{max-width:720px}.grid.cols-2,.grid.cols-3,.grid.cols-4{grid-template-columns:1fr}.topbar{align-items:flex-start;display:flex}.topbar>:last-child:not(:first-child){flex:0 0 auto}.card{overflow-x:auto}.admin-bottom-nav{background:color-mix(in srgb,var(--panel) 96%,transparent);border-top:1px solid var(--line);bottom:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));left:0;padding:5px max(8px,env(safe-area-inset-right)) calc(5px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));position:fixed;right:0;z-index:35}.admin-bottom-nav a,.admin-bottom-nav button{align-items:center;background:transparent;border:0;border-radius:9px;color:var(--muted);cursor:pointer;display:grid;font-size:11px;grid-gap:2px;gap:2px;justify-items:center;min-height:54px;min-width:0;padding:5px 1px}.admin-bottom-nav a.active,.admin-bottom-nav button.active{background:var(--primary-tint);color:var(--primary);font-weight:600}.admin-mobile-drawer{display:block;inset:0;position:fixed;z-index:60}.admin-mobile-backdrop{background:var(--overlay);border:0;inset:0;position:absolute;width:100%}.admin-mobile-sheet{background:var(--panel);border-radius:var(--radius-lg) var(--radius-lg) 0 0;bottom:0;box-shadow:var(--shadow-lg);display:grid;grid-gap:var(--space-5);gap:var(--space-5);left:0;max-height:min(78dvh,640px);overflow-y:auto;padding:var(--space-5) var(--space-4) calc(var(--space-5) + env(safe-area-inset-bottom));position:absolute;right:0}.admin-mobile-sheet h2{margin:3px 0 0}.admin-mobile-sheet-links{display:grid;grid-gap:var(--space-2);gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr))}.admin-mobile-sheet-links a{align-items:center;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);display:flex;gap:var(--space-3);min-height:58px;padding:var(--space-3)}.admin-mobile-sheet-links a.active{background:var(--primary-tint);border-color:var(--primary);color:var(--primary)}.admin-mobile-sheet-footer{display:grid;grid-gap:var(--space-2);gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:430px){.admin-mobile-user{display:none}.main{padding:var(--space-4) var(--space-3)}.topbar h1{font-size:27px}.card,.panel{padding:var(--space-4)}.app-mobile{padding:var(--space-3) var(--space-3) 92px}.app-header{margin-bottom:var(--space-3)}.app-hero{min-height:166px}.notification-popover{top:62px}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}.topbar-actions{align-items:center;display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:flex-end}.admin-page-header>div:first-child{max-width:720px}.dashboard-metrics{gap:var(--space-3)}.dashboard-metrics .metric>div{display:grid}.dashboard-metrics .metric small{color:var(--muted);font-size:var(--text-xs)}.dashboard-workspace{display:grid;grid-gap:var(--space-4);gap:var(--space-4);grid-template-columns:minmax(0,1.8fr) minmax(280px,.8fr)}.attendance-workspace,.dashboard-priority{min-height:280px}.attendance-workspace .section-head h2,.dashboard-priority .section-head h2,.dashboard-section-title h2{font-size:var(--text-xl);margin:3px 0 0}.dashboard-priority .action-list{gap:6px;margin-top:var(--space-4)}.dashboard-priority .action-item{background:transparent;border-color:transparent;display:grid;grid-template-columns:36px minmax(0,1fr) auto auto;min-height:54px;padding:8px}.dashboard-priority .action-item:hover{background:var(--panel-2);border-color:var(--line)}.action-item-icon{align-items:center;background:var(--primary-tint);border-radius:10px;color:var(--primary);display:flex;height:36px;justify-content:center;width:36px}.action-item-copy{font-size:var(--text-sm);font-weight:600}.dashboard-empty{align-content:center;display:grid;grid-gap:var(--space-4);gap:var(--space-4);min-height:190px;padding:var(--space-3) 0}.dashboard-empty p{margin:var(--space-1) 0 0}.dashboard-empty-icon{align-items:center;background:var(--primary-tint);border-radius:12px;color:var(--primary);display:inline-flex;height:44px;justify-content:center;width:44px}.setup-steps{grid-gap:var(--space-2);grid-template-columns:repeat(3,minmax(0,1fr))}.setup-steps,.setup-steps a{display:grid;gap:var(--space-2)}.setup-steps a{align-items:center;background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);font-size:var(--text-sm);grid-gap:var(--space-2);grid-template-columns:auto minmax(0,1fr) auto;min-height:50px;padding:var(--space-2)}.setup-steps a>span:first-child{align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:999px;display:inline-flex;height:28px;justify-content:center;width:28px}.setup-steps a.done{color:var(--good)}.dashboard-shortcuts{display:grid;grid-gap:var(--space-3);gap:var(--space-3);grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-section-title{grid-column:1/-1}.module-card{align-items:center;display:flex;gap:var(--space-3);min-height:90px}.module-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.module-card-arrow,.module-card-icon{align-items:center;display:flex;flex:0 0 auto;justify-content:center}.module-card-icon{background:var(--primary-tint);border-radius:12px;color:var(--primary);height:42px;width:42px}.module-card-copy{display:grid;grid-gap:3px;gap:3px;min-width:0}.module-card-copy small{color:var(--muted);font-size:var(--text-xs);line-height:1.45}.module-card-arrow{color:var(--muted);margin-left:auto}@media (max-width:1180px){.dashboard-metrics,.dashboard-shortcuts{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.admin-page-header,.topbar{display:grid}.topbar>a,.topbar>button,.topbar>div{max-width:100%;min-width:0}.topbar>div:last-child:not(:first-child){justify-content:flex-start;width:100%}.topbar>div:last-child:not(:first-child) .button{flex:1 1 132px}.topbar-actions{justify-content:flex-start}.topbar-actions .button{flex:1 1 130px}.dashboard-workspace,.setup-steps{grid-template-columns:1fr}.mobile-data-table,.mobile-data-table tbody,.mobile-data-table td,.mobile-data-table tr{display:block;width:100%}.mobile-data-table{border-collapse:separate;margin-top:var(--space-4)}.mobile-data-table thead{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.mobile-data-table tbody{display:grid;grid-gap:var(--space-3);gap:var(--space-3)}.mobile-data-table tr{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;padding:var(--space-2) var(--space-3)}.mobile-data-table td{align-items:center;border:0;border-top:1px solid color-mix(in srgb,var(--line) 72%,transparent);display:flex;gap:var(--space-3);justify-content:space-between;min-height:42px;padding:var(--space-2) 0;text-align:right}.mobile-data-table td:first-child{border-top:0}.mobile-data-table td:before{color:var(--muted);content:attr(data-label);flex:0 0 86px;font-size:var(--text-xs);font-weight:600;text-align:left}.mobile-data-table td>div{justify-content:flex-end}}@media (max-width:430px){.dashboard-shortcuts,.grid.dashboard-metrics,.main .grid.cols-3,.main .grid.cols-4{grid-template-columns:1fr 1fr}.topbar>.button,.topbar>a.button{justify-self:stretch;width:100%}.dashboard-metrics .metric{align-items:flex-start;min-height:118px;padding:var(--space-3)}.dashboard-metrics .metric>.badge{display:none}.dashboard-metrics .metric strong{font-size:26px}.module-card{align-items:flex-start;display:grid;min-height:136px}.module-card-arrow{display:none}}