:root{--brand-700:#052545;--brand-300:#b89a62;--brand-paper:#f5f1e8;--brand-white:#ffffff;--bg:#f7f5ef;--panel:#ffffff;--panel-2:#f3efe5;--text:#052545;--muted:#667085;--line:#d9d3c6;--primary:var(--brand-700);--primary-contrast:#ffffff;--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;--motion-fast:150ms;--motion-base:200ms;--ease-out:cubic-bezier(0.16,1,0.3,1);--radius:8px;--radius-lg:14px;--shadow-sm:0 1px 2px rgb(0 0 0/5%),0 2px 8px rgb(0 0 0/4%);--shadow-md:0 6px 20px rgb(0 0 0/10%);--shadow-lg:0 12px 40px rgb(0 0 0/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;--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%);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}: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: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);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%;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}}.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}}