:root{color-scheme:light;--palette-c1: #0c1226;--palette-c2: #2563eb;--palette-c3: #6d28d9;--palette-c4: #93a5f7;--palette-c5: #e0e7ff;--canvas-base: #f3f4f9;--canvas-secondary: #eeedfb;--ambient-primary-rgb: 109, 40, 217;--ambient-secondary-rgb: 37, 99, 235;--ambient-primary-alpha: .0615;--ambient-secondary-alpha: .0316;--surface-base-rgb: 252, 252, 252;--surface-strong-rgb: 251, 251, 255;--surface-soft-rgb: 243, 243, 253;--surface-opacity: .78;--surface-strong-opacity: .86;--surface-soft-opacity: .62;--border-subtle: rgba(12, 18, 38, .055);--border-default: rgba(12, 18, 38, .085);--border-strong: rgba(12, 18, 38, .13);--text-primary: #101627;--text-secondary: #4b5074;--text-tertiary: #666e92;--text-disabled: #7c84a4;--accent-primary: #2563eb;--accent-primary-rgb: 37, 99, 235;--accent-secondary: #6d28d9;--accent-secondary-rgb: 109, 40, 217;--highlight: #e0e7ff;--highlight-rgb: 224, 231, 255;--accent-glow-alpha: .19;--accent-hover: #235ddb;--accent-active: #2156cb;--accent-strong: #2157cd;--accent-soft: rgba(37, 99, 235, .15);--accent-on: #ffffff;--success: #15803d;--success-soft: rgba(21, 128, 61, .12);--danger: #d01f1f;--danger-soft: rgba(208, 31, 31, .1);--warn: #b45309;--warn-soft: rgba(180, 83, 9, .12);--palette-intensity: .55;--ambient-strength: .42;--surface-tint: .28;--accent-usage: .3;--blur: 18px;--saturate: 132%;--sheen: linear-gradient( 135deg, rgba(255, 255, 255, .42), transparent 22%, transparent 70%, rgba(224, 231, 255, .16) );--inset-light: inset 0 -1px 2px rgba(255, 255, 255, .55);--inset-top: inset 0 1px 1px rgba(255, 255, 255, .28);--shadow-flat: none;--shadow-ring: 0 0 0 1px var(--border-default);--shadow-card: 0 18px 36px rgba(15, 23, 42, .085), inset 0 1px 0 rgba(255, 255, 255, .95);--shadow-panel: 0 24px 70px rgba(15, 23, 42, .1), inset 0 1px 0 rgba(255, 255, 255, .92);--shadow-raised: 0 28px 80px rgba(15, 23, 42, .16), inset 0 1px 0 rgba(255, 255, 255, .95);--font-body: "Inter", "HarmonyOS Sans SC", "MiSans", "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Cascadia Code", Consolas, monospace;--font-feature-numeric: tabular-nums;--text-meta: 12px;--text-body: 13px;--text-body-lg: 14px;--text-section: 17px;--text-page: 24px;--text-value: 34px;--leading-display: 1.02;--leading-tight: 1.2;--leading-snug: 1.4;--leading-normal: 1.5;--leading-body: 1.6;--tracking-display: -.035em;--tracking-tight: -.022em;--tracking-section: -.012em;--tracking-caps: .06em;--tracking-normal: 0;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--radius-control: 14px;--radius-panel: 24px;--radius-card: 30px;--radius-full: 9999px;--sp-1: 6px;--sp-2: 10px;--sp-3: 14px;--sp-4: 18px;--sp-5: 24px;--sp-6: 32px;--focus-ring: 0 0 0 2px rgba(37, 99, 235, .45);--focus-offset: 2px;--motion-fast: .15s;--motion-base: .2s;--motion-slow: .3s;--ease-standard: cubic-bezier(.22, 1, .36, 1);--container-max: 1080px;--container-gutter-mobile: 14px;--container-gutter: 24px;--reading-width: 720px;--sidebar-width: 232px;--topbar-height: 56px;--tabbar-height: 56px;--progress-height: 2px;--touch-target: 44px;--icon-inline: 16px;--icon-button: 20px;--icon-standalone: 24px;--icon-stroke: 1.5;--fluid-a: #7c9bff;--fluid-b: #c4b5fd;--fluid-c: #2563eb;--canvas-tint-rgb: 246, 247, 253;--topglow-rgb: 255, 255, 255;--flu-shade: .28;--flu-topglow: .34;--flu-lift: .34;--fluid-card-height: 144px;--fluid-card-radius: var(--radius-card);--surface-glass: rgba(var(--surface-base-rgb), var(--surface-opacity));--surface-glass-strong: rgba(var(--surface-strong-rgb), var(--surface-strong-opacity));--surface-glass-soft: rgba(var(--surface-soft-rgb), var(--surface-soft-opacity));--dur: var(--motion-slow);--ease: var(--ease-standard);--scrim: rgba(12, 18, 38, .32);--z-sticky: 30;--z-dropdown: 40;--z-backdrop: 50;--z-modal: 60;--z-toast: 70}@media(prefers-reduced-motion:reduce){:root{--motion-fast: 0ms;--motion-base: 0ms;--motion-slow: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;min-height:100%;background:radial-gradient(circle at 52% 34%,rgba(var(--ambient-primary-rgb),var(--ambient-primary-alpha)),transparent 38%),radial-gradient(circle at 88% 6%,rgba(var(--ambient-secondary-rgb),var(--ambient-secondary-alpha)),transparent 30%),linear-gradient(145deg,var(--canvas-base),var(--canvas-secondary));background-attachment:fixed;color:var(--text-primary);font-family:var(--font-body);font-size:var(--text-body-lg);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3,h4,p,figure{margin:0}h1{font-size:var(--text-page);font-weight:var(--weight-semibold);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}h2{font-size:var(--text-section);font-weight:var(--weight-semibold);line-height:var(--leading-snug);letter-spacing:var(--tracking-section)}h3{font-size:var(--text-section);font-weight:var(--weight-medium);line-height:var(--leading-snug)}a{color:var(--accent-primary);text-decoration:none}a:hover{color:var(--accent-hover)}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-control)}.mono,.metric__value,.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.muted{color:var(--text-tertiary)}.fg2{color:var(--text-secondary)}.meta{color:var(--text-tertiary)}.xs{font-size:var(--text-meta)}.sm{font-size:var(--text-body-lg)}.lg{font-size:var(--text-section)}.medium{font-weight:500}.semibold{font-weight:600}.caps{letter-spacing:var(--tracking-caps);text-transform:uppercase}.center{text-align:center}.right{text-align:right}.nowrap{white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.container{width:100%;max-width:var(--container-max);margin:0 auto;padding:0 var(--container-gutter)}.stack{display:flex;flex-direction:column}.stack-4{gap:var(--sp-1)}.stack-8{gap:var(--sp-2)}.stack-12{gap:var(--sp-3)}.stack-16{gap:var(--sp-4)}.stack-24,.stack-32{gap:var(--sp-6)}.row{display:flex;align-items:center}.row-between{display:flex;align-items:center;justify-content:space-between}.row-8{gap:var(--sp-2)}.row-12{gap:var(--sp-3)}.row-16{gap:var(--sp-4)}.row-24{gap:var(--sp-6)}.wrap{flex-wrap:wrap}.grow{flex:1 1 auto;min-width:0}.grid{display:grid;gap:var(--sp-4)}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}@media(max-width:1024px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:640px){.grid-3,.grid-4,.grid-2{grid-template-columns:minmax(0,1fr)}.container{padding:0 var(--sp-4)}}.section{margin-bottom:var(--sp-6)}.section-title{font-size:var(--text-section);font-weight:var(--weight-medium);color:var(--text-primary);letter-spacing:var(--tracking-section);margin-bottom:var(--sp-3)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.glass,.card,.metric{position:relative;isolation:isolate;overflow:hidden;background:linear-gradient(145deg,rgba(var(--surface-base-rgb),var(--surface-opacity)),rgba(var(--surface-strong-rgb),var(--surface-strong-opacity)));border:1px solid var(--border-default);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel);-webkit-backdrop-filter:blur(var(--blur)) saturate(var(--saturate));backdrop-filter:blur(var(--blur)) saturate(var(--saturate));transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-radius var(--dur) var(--ease),transform var(--dur) var(--ease)}.glass:before,.card:before,.metric:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background:var(--sheen)}.glass:after,.card:after,.metric:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;border-radius:inherit;box-shadow:var(--inset-light),var(--inset-top)}.card>:not(.flu-canvas):not(.flu-fallback),.metric>:not(.flu-canvas):not(.flu-fallback),.glass>:not(.flu-canvas):not(.flu-fallback){position:relative;z-index:1}.card,.metric{background:linear-gradient(120deg,rgba(var(--highlight-rgb),.1),rgba(var(--surface-soft-rgb),var(--surface-soft-opacity)));border:1px solid var(--border-strong);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:var(--sp-5) var(--sp-6)}.card--tight{padding:var(--sp-4)}.card--link{display:block;cursor:pointer}.card--link:hover{border-color:rgba(var(--accent-primary-rgb),.34);transform:translateY(-3px);box-shadow:var(--shadow-panel)}.metric__value{font-size:var(--text-value);font-weight:var(--weight-semibold);line-height:var(--leading-display);letter-spacing:var(--tracking-display);color:var(--text-primary)}.metric__label{font-size:var(--text-body-lg);color:var(--text-tertiary)}.metric__hint{font-size:var(--text-meta);color:var(--text-tertiary)}.flu.is-fluid{height:var(--fluid-card-height);border-radius:var(--fluid-card-radius);padding:var(--sp-4) var(--sp-5)}.flu-canvas,.flu-fallback{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border-radius:inherit;pointer-events:none;z-index:0}.flu-canvas{display:none;opacity:.96;transform:scale(1.03);filter:saturate(1.08) contrast(1.02) blur(1.4px)}.flu-fallback{display:none;opacity:0;background:radial-gradient(ellipse at 82% 16%,color-mix(in srgb,var(--fluid-a),transparent 12%) 0 9%,transparent 44%),radial-gradient(ellipse at 62% 88%,color-mix(in srgb,var(--fluid-b),transparent 20%) 0 14%,transparent 54%),radial-gradient(ellipse at 96% 58%,color-mix(in srgb,var(--fluid-c),transparent 16%) 0 11%,transparent 50%);background-size:135% 150%,152% 158%,138% 152%;animation:fluDrift 9s ease-in-out infinite alternate}@keyframes fluDrift{0%{background-position:100% 0,70% 100%,100% 50%;filter:saturate(1) blur(0)}50%{background-position:78% 22%,92% 70%,68% 34%;filter:saturate(1.12) blur(.4px)}to{background-position:100% 32%,56% 86%,94% 70%;filter:saturate(1.04) blur(0)}}.flu.is-fluid:before{z-index:1;background:linear-gradient(180deg,rgba(var(--topglow-rgb),var(--flu-topglow)),rgba(var(--canvas-tint-rgb),calc(var(--flu-shade) * .62)) 40%,rgba(var(--canvas-tint-rgb),calc(var(--flu-shade) * .68)) 62%,rgba(var(--canvas-tint-rgb),calc(var(--flu-shade) * .98)))}.flu.is-fluid .flu-canvas{display:block}.flu.is-fluid.is-fallback .flu-canvas{display:none}.flu.is-fluid.is-fallback .flu-fallback{display:block;opacity:.92}.flu.is-fluid .flu-inner{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;height:100%;z-index:2}.flu.is-fluid .flu-inner .metric__hint{margin-top:auto}.flu.is-fluid .metric__label,.flu.is-fluid .metric__hint{color:var(--text-secondary)}.flu-badge{display:none}@media(prefers-reduced-motion:reduce){.flu-fallback{animation:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--sp-2);min-height:40px;padding:0 var(--sp-4);border:1px solid transparent;border-radius:var(--radius-control);background:transparent;color:var(--text-primary);font-size:var(--text-body-lg);font-weight:500;cursor:pointer;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard)}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--accent-primary);color:var(--accent-on)}.btn--primary:hover:not(:disabled){background:var(--accent-hover)}.btn--primary:active:not(:disabled){background:var(--accent-active)}.btn--outline{border-color:var(--border-default);background:var(--surface-glass)}.btn--outline:hover:not(:disabled){background:var(--surface-glass-soft)}.btn--ghost{color:var(--text-tertiary)}.btn--ghost:hover:not(:disabled){background:var(--surface-glass-soft);color:var(--text-primary)}.btn--danger{border-color:var(--border-default);background:var(--surface-glass);color:var(--danger)}.btn--danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}.btn--lg{min-height:48px;padding:0 var(--sp-6);font-size:var(--text-body-lg)}.btn--sm{min-height:32px;padding:0 var(--sp-3);font-size:var(--text-meta)}.btn--block{width:100%}.field{display:flex;flex-direction:column;gap:6px}.field__label{font-size:var(--text-body-lg);color:var(--text-secondary)}.input{width:100%;min-height:40px;padding:var(--sp-2) var(--sp-3);background:var(--surface-glass);border:1px solid var(--border-default);border-radius:var(--radius-control);transition:border-color var(--motion-fast) var(--ease-standard)}.input:hover{border-color:var(--text-tertiary)}.input:focus{border-color:var(--accent-primary);outline:none;box-shadow:var(--focus-ring)}.input--invalid{border-color:var(--danger)}.field__error{font-size:var(--text-meta);color:var(--danger)}.badge{display:inline-flex;align-items:center;gap:var(--sp-1);padding:2px var(--sp-2);border-radius:var(--radius-full);background:var(--surface-glass-soft);color:var(--text-tertiary);font-size:var(--text-meta);font-weight:500;line-height:1.5}.badge--accent-primary{background:var(--accent-soft);color:var(--accent-primary)}.badge--success{background:var(--success-soft);color:var(--success)}.badge--danger{background:var(--danger-soft);color:var(--danger)}.badge--warn{background:var(--warn-soft);color:var(--warn)}.hr{height:1px;background:var(--border-subtle);border:0;margin:0}.list{border-top:1px solid var(--border-subtle)}.list__row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-3) 0;border-bottom:1px solid var(--border-subtle)}.notice{display:flex;align-items:flex-start;gap:var(--sp-2);padding:10px var(--sp-3);border-radius:var(--radius-control);font-size:var(--text-body-lg)}.notice--warn{background:var(--warn-soft);color:var(--warn)}.notice--danger{background:var(--danger-soft);color:var(--danger)}.notice--success{background:var(--success-soft);color:var(--success)}.notice--accent-primary{background:var(--accent-soft);color:var(--accent-primary)}.notice--text-tertiary{background:var(--surface-glass-soft);color:var(--text-tertiary)}.table{width:100%;border-collapse:collapse;font-size:var(--text-body-lg)}.table th{text-align:left;font-weight:500;color:var(--text-tertiary);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-default);background:var(--surface-glass-soft)}.table td{padding:10px var(--sp-3);border-bottom:1px solid var(--border-subtle)}.table tbody tr:hover{background:var(--surface-glass-soft)}.sortable{list-style:none;margin:0;padding:0;border-top:1px solid var(--border-subtle)}.sortable__row{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);min-height:var(--touch-target);padding:var(--sp-3) var(--sp-2);border-bottom:1px solid var(--border-subtle);transition:background var(--motion-fast) var(--ease-standard)}.sortable__row:hover{background:var(--surface-glass-soft)}.sortable__row[data-dragging]{background:var(--surface-glass-strong);box-shadow:var(--shadow-panel)}.sortable__row[data-over]:before{content:"";position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--accent-primary);border-radius:var(--radius-full)}.sortable__handle{display:inline-flex;align-items:center;justify-content:center;background:none;border:0;padding:0;color:var(--text-tertiary);cursor:grab}.sortable__row[data-dragging] .sortable__handle{cursor:grabbing}.sortable[data-dragging-active] .sortable__row:not([data-dragging]) .sortable__handle{pointer-events:none;opacity:.5}.sortable__handle:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-control)}.sortable__seq{display:inline-flex;align-items:center;justify-content:center;min-width:40px;padding:2px var(--sp-2);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:var(--weight-semibold);color:var(--text-primary);background:var(--surface-glass-soft);border-radius:var(--radius-control)}@media(prefers-reduced-motion:reduce){.sortable__row{transition:none}}.app{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);min-height:100%}.sidebar{border-right:1px solid var(--border-default);background:var(--surface-glass);padding:var(--sp-5) var(--sp-3);position:sticky;top:0;height:100vh;overflow-y:auto}.sidebar__brand{display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-2) var(--sp-5);font-weight:600;font-size:var(--text-body-lg)}.sidebar__nav{display:flex;flex-direction:column;gap:2px}.navlink{display:flex;align-items:center;gap:10px;min-height:40px;padding:0 10px;border-radius:var(--radius-control);color:var(--text-secondary);font-size:var(--text-body-lg);transition:background-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard)}.navlink:hover{background:var(--surface-glass-soft);color:var(--text-primary)}.navlink--active{background:var(--accent-soft);color:var(--accent-primary);font-weight:500}.main{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);height:56px;padding:0 var(--container-gutter);border-bottom:1px solid var(--border-default);background:var(--surface-glass);position:sticky;top:0;z-index:var(--z-sticky)}.page{padding:var(--sp-6) var(--container-gutter) 64px;max-width:var(--container-max);width:100%;margin:0 auto;animation:fade-in var(--motion-fast) var(--ease-standard)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.tabbar{display:none}@media(max-width:768px){.app{grid-template-columns:minmax(0,1fr)}.sidebar{display:none}.page{padding:var(--sp-5) var(--sp-4) 88px}.topbar{padding:0 var(--sp-4)}.tabbar{display:grid;grid-auto-flow:column;position:fixed;bottom:0;left:0;right:0;background:var(--surface-glass);border-top:1px solid var(--border-default);z-index:var(--z-sticky)}.tabbar__item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:var(--sp-2) 0 10px;font-size:10px;color:var(--text-tertiary)}.tabbar__item--active{color:var(--accent-primary)}}.modecard{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-5);background:var(--surface-glass);border:1px solid var(--border-default);border-radius:var(--radius-card);text-align:left;cursor:pointer;transition:border-color var(--motion-fast) var(--ease-standard)}.modecard:hover{border-color:var(--accent-primary)}.modecard--wide{grid-column:1 / -1;background:var(--surface-glass-soft)}.modecard__icon{display:grid;place-items:center;width:40px;height:40px;border-radius:var(--radius-control);background:var(--surface-glass-soft);color:var(--text-secondary);flex:none}.modecard--recommended .modecard__icon{background:var(--accent-soft);color:var(--accent-primary)}.modecard__label{font-size:var(--text-section);font-weight:var(--weight-medium)}.modecard__desc{font-size:var(--text-meta);color:var(--text-tertiary)}.reading{max-width:var(--reading-width);width:100%;margin:0 auto}.stem{font-size:var(--text-section);line-height:1.6;color:var(--text-primary);white-space:pre-wrap}.option{display:flex;align-items:flex-start;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4);background:var(--surface-glass);border:1px solid var(--border-default);border-radius:var(--radius-control);text-align:left;cursor:pointer;transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard)}.option:hover{background:var(--surface-glass-soft)}.option__key{font-family:var(--font-mono);color:var(--text-tertiary);flex:none;width:18px}.option__text{flex:1 1 auto;min-width:0;font-size:var(--text-body-lg);line-height:1.6;white-space:pre-wrap;word-break:break-word}.option--selected{border-color:var(--accent-primary);background:var(--accent-soft)}.option--selected .option__key{color:var(--accent-primary)}.option--correct{border-color:var(--success);background:var(--success-soft)}.option--correct .option__key{color:var(--success)}.option--wrong{border-color:var(--danger);background:var(--danger-soft)}.option--wrong .option__key{color:var(--danger)}.option:disabled{cursor:default}.explanation{border-top:1px solid var(--border-default);padding-top:var(--sp-4);color:var(--text-secondary);font-size:var(--text-body-lg);line-height:1.7}.explanation img{max-width:100%}.explanation table{border-collapse:collapse;width:100%;margin:var(--sp-2) 0;font-size:var(--text-body-lg)}.explanation th,.explanation td{border:1px solid var(--border-default);padding:6px 10px;text-align:left;vertical-align:top}.progress{position:relative;height:4px;border-radius:var(--radius-full);background:var(--surface-glass-soft);overflow:hidden}.progress__fill{position:absolute;inset:0 auto 0 0;background:var(--accent-primary);border-radius:var(--radius-full);transition:width var(--motion-base) var(--ease-standard)}.progress__done{position:absolute;inset:0 auto 0 0;background:var(--success);border-radius:var(--radius-full);transition:width var(--motion-base) var(--ease-standard)}.ring{display:block}.ring__track{stroke:var(--border-default)}.ring__value{stroke:var(--accent-primary);transition:stroke-dashoffset var(--motion-base) var(--ease-standard)}.ring__label{font-family:var(--font-mono);font-weight:600;fill:var(--text-primary)}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spin{animation:none}}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--scrim);z-index:var(--z-backdrop)}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(420px,92vw);background:var(--surface-glass);border-left:1px solid var(--border-default);box-shadow:var(--shadow-panel);z-index:var(--z-modal);display:flex;flex-direction:column}.drawer__head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border-subtle)}.drawer__body{padding:var(--sp-5);overflow-y:auto}.modal-scrim{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:var(--scrim);z-index:var(--z-modal);padding:var(--sp-4)}.modal{width:min(420px,100%);background:var(--surface-glass);border:1px solid var(--border-default);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel);padding:var(--sp-6)}.sheet-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:var(--sp-2)}.sheet-cell{display:grid;place-items:center;min-height:var(--touch-target);border:1px solid var(--border-default);border-radius:var(--radius-control);background:var(--surface-glass);font-family:var(--font-mono);font-size:var(--text-body-lg);cursor:pointer}.sheet-cell--current{border-color:var(--accent-primary);color:var(--accent-primary)}.sheet-cell--correct{background:var(--success-soft);border-color:var(--success);color:var(--success)}.sheet-cell--wrong{background:var(--danger-soft);border-color:var(--danger);color:var(--danger)}.skeleton{background:var(--surface-glass-soft);border-radius:var(--radius-control);animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.empty{display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:56px var(--sp-6);text-align:center;border:1px dashed var(--border-default);border-radius:var(--radius-card);background:var(--surface-glass)}.empty__icon{display:grid;place-items:center;width:48px;height:48px;border-radius:var(--radius-full);background:var(--surface-glass-soft);color:var(--text-tertiary)}.empty__title{font-size:var(--text-section);font-weight:var(--weight-medium)}.empty__hint{font-size:var(--text-body-lg);color:var(--text-tertiary);max-width:46ch}.bar-row{display:grid;grid-template-columns:minmax(96px,160px) minmax(0,1fr) 56px;align-items:center;gap:var(--sp-3);padding:6px 0;font-size:var(--text-body-lg)}.bar{height:10px;border-radius:var(--radius-full);background:var(--surface-glass-soft);overflow:hidden}.bar__fill{height:100%;border-radius:var(--radius-full)}.bar__fill--accent-primary{background:var(--accent-primary)}.bar__fill--danger{background:var(--danger)}.chart-box{width:100%;height:260px}.dropzone{display:flex;flex-direction:column;align-items:center;gap:10px;padding:var(--sp-6) var(--sp-6);border:1px dashed var(--border-default);border-radius:var(--radius-card);background:var(--surface-glass);cursor:pointer;transition:border-color var(--motion-fast) var(--ease-standard)}.dropzone--over{border-color:var(--accent-primary);background:var(--accent-soft)}.stepper{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--text-body-lg);color:var(--text-tertiary)}.stepper__item{display:flex;align-items:center;gap:6px}.stepper__index{display:grid;place-items:center;width:22px;height:22px;border-radius:var(--radius-full);background:var(--surface-glass-soft);font-family:var(--font-mono);font-size:var(--text-meta)}.stepper__item--active{color:var(--accent-primary)}.stepper__item--active .stepper__index{background:var(--accent-soft);color:var(--accent-primary)}.qa-item{border:1px solid var(--border-default);border-radius:var(--radius-card);background:var(--surface-glass);padding:var(--sp-4)}.qa-item__meta{font-size:var(--text-meta);color:var(--text-tertiary)}.toast{position:fixed;left:50%;bottom:var(--sp-6);transform:translate(-50%);z-index:var(--z-toast);width:max-content;max-width:min(420px,calc(100vw - 32px));animation:toast-in var(--motion-base) var(--ease-standard)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.toast .notice{border:1px solid var(--border-default);box-shadow:var(--shadow-panel)}@media(prefers-reduced-motion:reduce){.toast{animation:none}}.rowmenu{position:relative}.rowmenu__panel{position:fixed;z-index:var(--z-dropdown);min-width:168px;max-width:min(240px,calc(100vw - 16px));display:flex;flex-direction:column;padding:var(--sp-1);background:var(--surface-glass-strong);border:1px solid var(--border-default);border-radius:var(--radius-control);box-shadow:var(--shadow-raised);animation:fade-in var(--motion-fast) var(--ease-standard)}.rowmenu__item{display:flex;align-items:center;gap:var(--sp-2);min-height:36px;padding:0 var(--sp-3);border:0;border-radius:var(--radius-control);background:none;color:var(--text-primary);text-align:left;cursor:pointer;transition:background-color var(--motion-fast) var(--ease-standard)}.rowmenu__item:hover:not(:disabled){background:var(--surface-glass-soft)}.rowmenu__item:disabled{opacity:.5;cursor:not-allowed;color:var(--text-disabled)}.rowmenu__item--danger{color:var(--danger)}.chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 var(--sp-3);border:1px solid var(--border-default);border-radius:var(--radius-full);background:transparent;color:var(--text-secondary);font-size:var(--text-body-lg);white-space:nowrap;cursor:pointer;transition:border-color var(--motion-fast) var(--ease-standard),background-color var(--motion-fast) var(--ease-standard),color var(--motion-fast) var(--ease-standard)}.chip:hover{border-color:var(--border-strong)}.chip[data-selected]{background:var(--surface-glass-soft);border-color:var(--border-strong);color:var(--text-primary)}.chip:disabled{opacity:.5;cursor:not-allowed}.chip__count{font-size:var(--text-meta);color:var(--text-tertiary)}.paperlist{display:flex;flex-direction:column}.paperrow{display:flex;align-items:center;gap:var(--sp-4);padding:var(--sp-4) var(--sp-5);border-bottom:1px solid var(--border-subtle);transition:background-color var(--motion-fast) var(--ease-standard)}.paperrow:last-child{border-bottom:0}.paperrow:hover{background:var(--surface-glass-soft)}.paperrow__icon{display:inline-flex;color:var(--text-tertiary);flex:none}.paperrow__body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1 1 auto}.paperrow__actions{display:flex;align-items:center;gap:var(--sp-2);flex:none}.papernew{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--sp-5);align-items:start}.papernew__panel{padding:var(--sp-5)}.papernew__tree{max-height:420px;overflow-y:auto;border-top:1px solid var(--border-subtle);padding-top:var(--sp-2)}.papernew__block{padding-bottom:var(--sp-4);margin-bottom:var(--sp-4);border-bottom:1px solid var(--border-subtle)}.papernew__submit{width:100%}@media(max-width:1024px){.papernew{grid-template-columns:minmax(0,1fr)}}.tree,.tree__group{list-style:none;margin:0;padding:0}.tree__group{padding-left:var(--sp-5)}.tree__row{display:flex;align-items:center;gap:var(--sp-2);min-height:36px;padding:0 var(--sp-2);border-radius:var(--radius-control);transition:background-color var(--motion-fast) var(--ease-standard)}.tree__row:hover{background:var(--surface-glass-soft)}.tree__row--disabled .tree__label{color:var(--text-disabled)}.tree__caret{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex:none;border:0;border-radius:4px;background:none;color:var(--text-tertiary);cursor:pointer}.tree__caret--leaf{cursor:default;pointer-events:none}.tree__check{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;flex:none;padding:0;border:0;background:none;cursor:pointer}.tree__check:disabled{opacity:.5;cursor:not-allowed}.tree__box{position:relative;width:14px;height:14px;border:1.5px solid var(--border-strong);border-radius:4px;background:var(--surface-glass);transition:background-color var(--motion-fast) var(--ease-standard),border-color var(--motion-fast) var(--ease-standard)}.tree__box[data-state=checked],.tree__box[data-state=mixed]{background:var(--accent-primary);border-color:var(--accent-primary)}.tree__box[data-state=checked]:after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid var(--accent-on);border-width:0 1.5px 1.5px 0;transform:rotate(45deg)}.tree__box[data-state=mixed]:after{content:"";position:absolute;left:2px;top:5px;width:8px;height:2px;border-radius:var(--radius-full);background:var(--accent-on)}.tree__icon{color:var(--text-tertiary);flex:none}.tree__label{flex:1 1 auto;min-width:0;font-size:var(--text-body);color:var(--text-primary)}.tree__count{flex:none;font-size:var(--text-meta);color:var(--text-tertiary)}.comp{display:flex;flex-direction:column;gap:var(--sp-2)}.comp__list{list-style:none;margin:0;padding:0;max-height:320px;overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-2)}.comp__row{display:grid;grid-template-columns:minmax(0,1fr) 110px 36px;align-items:center;gap:var(--sp-3)}.comp__label{font-size:var(--text-body);color:var(--text-primary)}.comp__track{height:6px;border-radius:var(--radius-full);background:var(--surface-glass-soft);overflow:hidden}.comp__fill{display:block;height:100%;border-radius:var(--radius-full);background:var(--text-tertiary);transition:width var(--motion-base) var(--ease-standard)}.comp__count{text-align:right;font-size:var(--text-body);font-weight:var(--weight-semibold);color:var(--text-primary)}.comp__count--zero{color:var(--text-disabled)}.paperentry{display:flex;align-items:center;gap:var(--sp-4);width:100%;min-height:96px;padding:var(--sp-4) var(--sp-6);text-align:left;background:var(--surface-glass);border:1px solid var(--border-default);border-radius:var(--radius-card);box-shadow:var(--shadow-card);cursor:pointer;transition:border-color var(--motion-fast) var(--ease-standard),box-shadow var(--motion-fast) var(--ease-standard),transform var(--motion-fast) var(--ease-standard)}.paperentry:hover:not(:disabled){border-color:var(--border-strong);box-shadow:var(--shadow-panel);transform:translateY(-2px)}.paperentry:disabled{opacity:.5;cursor:not-allowed}.paperentry__icon{display:inline-flex;color:var(--text-secondary);flex:none}.paperentry__chevron{display:inline-flex;margin-left:auto;color:var(--text-tertiary);flex:none;transition:color var(--motion-fast) var(--ease-standard)}.paperentry:hover:not(:disabled) .paperentry__chevron{color:var(--accent-primary)}.paperentry__link{color:var(--text-secondary)}.paperentry__link:hover{color:var(--accent-primary);text-decoration:underline}.subjectfilter{display:flex;gap:var(--sp-2);overflow-x:auto;padding-bottom:var(--sp-2);margin-bottom:var(--sp-2)}.subjectgroup{border-top:1px solid var(--border-subtle)}.subjectgroup:first-child{border-top:0}.subjectgroup__head{display:flex;align-items:center;gap:var(--sp-3);width:100%;padding:var(--sp-3) var(--sp-4);border:0;background:none;cursor:pointer;text-align:left;transition:background-color var(--motion-fast) var(--ease-standard)}.subjectgroup__head:hover{background:var(--surface-glass-soft)}.subjectgroup__name{font-size:var(--text-section);font-weight:var(--weight-medium);color:var(--text-primary)}.subjectgroup__stats{margin-left:auto;font-size:var(--text-meta);color:var(--text-tertiary)}.subjectgroup__body{display:flex;flex-direction:column;gap:var(--sp-4);padding-bottom:var(--sp-5)}.folderempty{display:flex;flex-direction:column;align-items:flex-start;gap:var(--sp-3);padding:var(--sp-4);border:1px dashed var(--border-default);border-radius:var(--radius-control)}.chapters{border-top:1px solid var(--border-subtle);margin-top:var(--sp-3)}.chapters__toggle{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-2) 0;border:0;background:none;color:var(--text-secondary);font-size:var(--text-body-lg);cursor:pointer}.chapters__scroll{max-height:420px;overflow-y:auto;border-top:1px solid var(--border-subtle)}.chapterrow{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--border-subtle)}.chapterrow:last-child{border-bottom:0}.chapterrow__meta{display:flex;align-items:center;gap:var(--sp-4);font-size:var(--text-meta);color:var(--text-tertiary)}
