:root{
  --bg:#f3f7f5;--surface:#ffffff;--surface-2:#e9f1ef;--ink:#152629;--muted:#708084;--line:#d8e3e0;
  --teal:#0f5c5d;--teal-2:#2d8581;--mint:#d8efea;--gold:#dfaa45;--red:#c94d43;--shadow:0 18px 50px rgba(24,69,68,.09);
  font-family:Inter,"Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;color:var(--ink);background:var(--bg)
}
*{box-sizing:border-box}body{margin:0;background:var(--bg);min-height:100vh}button,input,textarea,select{font:inherit}
button{cursor:pointer}.app-shell{display:grid;grid-template-columns:250px 1fr;min-height:100vh}.sidebar{background:#0e3d3e;color:#dff0ed;padding:28px 18px 18px;display:flex;flex-direction:column;gap:30px;position:sticky;top:0;height:100vh}
.brand{display:flex;gap:12px;align-items:center;color:#fff;text-decoration:none;padding:2px 10px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(255,255,255,.35);border-radius:14px;font-family:serif;font-size:24px;background:#196b69}.brand strong{display:block;font-size:17px;letter-spacing:.04em}.brand small{display:block;color:#9bc3be;font-size:11px;margin-top:3px}
.primary-nav{display:grid;gap:6px}.nav-item{border:0;background:transparent;color:#add0cb;text-align:left;padding:11px 12px;border-radius:12px;display:flex;align-items:center;gap:11px;font-size:14px}.nav-item span{width:22px;text-align:center;color:#83b7b1;font-size:13px}.nav-item:hover,.nav-item.active{background:rgba(255,255,255,.12);color:#fff}.nav-item.active span{color:#f2c97b}.sidebar-card{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.1);padding:16px;border-radius:17px;display:grid;gap:7px}.sidebar-card strong{font-size:31px;color:#fff}.sidebar-card span:not(.eyebrow){font-size:12px;color:#a9cbc6}.progress-track{height:6px;background:rgba(255,255,255,.15);border-radius:99px;overflow:hidden}.progress-track i{display:block;width:0;height:100%;background:#e8be6a;border-radius:inherit}.mini-link{border:0;background:none;padding:4px 0 0;color:#f3d99e;text-align:left;font-size:12px}.sidebar-bottom{margin-top:auto;display:grid;gap:6px}
.main{min-width:0;padding:34px clamp(22px,4vw,70px) 60px}.topbar{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:28px}.topbar h1{font-size:clamp(25px,3vw,40px);margin:8px 0 0;letter-spacing:-.04em}.eyebrow{font-size:10px;letter-spacing:.16em;color:var(--teal-2);font-weight:800}.top-actions{display:flex;gap:9px;align-items:center}.icon-button,.avatar{width:40px;height:40px;border-radius:13px;border:1px solid var(--line);background:var(--surface);color:var(--teal);box-shadow:0 3px 12px rgba(0,0,0,.04)}.avatar{background:var(--teal);color:#fff;border-color:var(--teal);font-weight:800}
.hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(260px,.75fr);gap:18px;margin-bottom:20px}.hero-card{border-radius:24px;padding:28px;background:linear-gradient(135deg,#0e5556,#277d78);color:#f2faf8;min-height:225px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:var(--shadow)}.hero-card h2{font-size:clamp(26px,3vw,42px);line-height:1.12;margin:12px 0 10px;max-width:620px;letter-spacing:-.04em}.hero-card p{color:#c8e5df;max-width:580px;margin:0;line-height:1.75}.hero-card .eyebrow{color:#b4dbd2}.hero-side{background:var(--surface);border:1px solid var(--line);border-radius:24px;padding:22px;display:flex;flex-direction:column;justify-content:space-between}.hero-side strong{font-size:38px;color:var(--teal)}.hero-side p{margin:4px 0;color:var(--muted);font-size:13px;line-height:1.6}.button{border:1px solid transparent;border-radius:11px;padding:10px 15px;font-weight:700;display:inline-flex;justify-content:center;align-items:center;gap:6px}.button.primary{background:#f2cc83;color:#143b3b}.button.primary:hover{background:#f6d895}.button.teal{background:var(--teal);color:#fff}.button.ghost{background:var(--surface);color:var(--teal);border-color:var(--line)}.button.ghost:hover{border-color:var(--teal-2);background:var(--surface-2)}.button.small{padding:8px 11px;font-size:12px}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:24px}.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:17px}.stat-card strong{font-size:25px;display:block}.stat-card span{font-size:12px;color:var(--muted);display:block;margin-top:3px}.stat-card .stat-icon{float:right;font-size:19px;color:var(--teal-2)}
.section-head{display:flex;justify-content:space-between;align-items:end;gap:12px;margin:26px 0 13px}.section-head h2{margin:0;font-size:20px;letter-spacing:-.02em}.section-head p{margin:4px 0 0;color:var(--muted);font-size:13px}.link-button,.text-button{border:0;background:none;color:var(--teal);font-weight:700;padding:5px}.muted{color:var(--muted);font-size:13px;line-height:1.7}
.chapter-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.chapter-card{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:17px;display:grid;gap:9px}.chapter-card:hover{border-color:#91bbb5;transform:translateY(-1px)}.chapter-card h3{margin:0;font-size:15px}.chapter-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}.chapter-card .progress-track{background:#e3ece9}.chapter-card .progress-track i{background:var(--teal-2)}
.callout{background:#f8f1df;border:1px solid #efdfb6;color:#735a2b;border-radius:16px;padding:14px 16px;font-size:13px;line-height:1.65}.callout strong{color:#6c4d1c}
.practice-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:18px;align-items:start}.filter-panel,.practice-card,.report-card,.exam-card{background:var(--surface);border:1px solid var(--line);border-radius:20px}.filter-panel{padding:16px;position:sticky;top:20px}.filter-panel h3{margin:0 0 13px;font-size:15px}.filter-panel label{display:block;font-size:12px;color:var(--muted);margin:12px 0 5px}.select,.search{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 11px;background:#fbfdfc;color:var(--ink)}.check-row{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted);margin-top:12px}.queue{display:flex;flex-wrap:wrap;gap:6px;max-height:260px;overflow:auto;margin-top:14px}.queue button{border:1px solid var(--line);background:var(--bg);color:var(--muted);padding:6px 8px;border-radius:8px;font-size:11px}.queue button.active{background:var(--teal);color:#fff;border-color:var(--teal)}.practice-main{min-width:0}.practice-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.practice-toolbar .count{font-size:12px;color:var(--muted)}.practice-card{padding:25px;min-height:425px}.question-top{display:flex;gap:10px;align-items:center;color:var(--teal-2);font-size:12px;font-weight:800}.question-top .source{margin-left:auto;color:var(--muted);font-weight:500}.high-badge{background:#fff1d4;color:#9b671c;padding:4px 7px;border-radius:6px;font-size:10px}.practice-card h2{font-size:clamp(23px,3vw,34px);line-height:1.28;margin:18px 0 16px;letter-spacing:-.035em}.answer-box{background:#f8fbfa;border:1px solid #dbe9e6;border-radius:15px;padding:17px;margin-top:16px}.answer-box h4{margin:0 0 9px;color:var(--teal);font-size:12px;letter-spacing:.05em}.answer-text{line-height:1.85;font-size:15px;white-space:pre-wrap}.answer-list{margin:0;padding-left:20px;line-height:1.8;font-size:14px}.memory-line{font-size:13px;color:#7d6a42;background:#fff9e9;border-left:3px solid #e5bb62;border-radius:7px;padding:9px 12px;margin:13px 0}.answer-input{width:100%;border:1px solid var(--line);border-radius:13px;background:#fff;padding:13px;resize:vertical;min-height:125px;line-height:1.7}.answer-input:focus,.search:focus,.select:focus,.sync-box:focus{outline:2px solid rgba(45,133,129,.25);border-color:var(--teal-2)}.practice-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.practice-actions .spacer{flex:1}.score-line{display:flex;align-items:center;gap:10px;background:#edf7f3;border:1px solid #cfe8df;padding:10px 12px;border-radius:11px;font-size:13px;color:#2e6e64;margin-top:12px}.score-line strong{font-size:21px;color:var(--teal)}.score-line.warn{background:#fff5e7;border-color:#f2dfb7;color:#8d6a2f}.score-line.bad{background:#fff0ef;border-color:#f0cecb;color:#934038}
.rubric{display:grid;gap:7px;margin-top:12px}.rubric-item{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;background:#fbfdfc;border:1px solid var(--line);border-radius:9px;font-size:12px;color:var(--muted)}.rubric-item.hit{border-color:#9ecdc0;color:#286d64;background:#f2fbf7}.rubric-item::before{content:"○";color:#a2b8b3}.rubric-item.hit::before{content:"✓";color:var(--teal);font-weight:800}
.report-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.report-card{padding:18px}.report-card h3{margin:0 0 12px;font-size:15px}.report-bar{height:9px;border-radius:99px;background:#e5efed;overflow:hidden}.report-bar i{display:block;height:100%;background:var(--teal-2)}.report-stats{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;margin-top:8px}.history-table{width:100%;border-collapse:collapse;font-size:13px}.history-table th,.history-table td{padding:10px 8px;border-bottom:1px solid var(--line);text-align:left}.history-table th{color:var(--muted);font-size:11px;font-weight:700}
.exam-intro{background:linear-gradient(135deg,#f5e9cc,#fffaf0);border:1px solid #ecdcae;border-radius:20px;padding:24px;margin-bottom:17px}.exam-intro h2{margin:0 0 8px;font-size:25px}.exam-intro p{margin:0;color:#756344;line-height:1.7;font-size:13px}.exam-grid{display:grid;gap:13px}.exam-question{padding:18px}.exam-question h3{font-size:16px;margin:8px 0 13px}.exam-question .answer-input{min-height:95px}.exam-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:17px}.timer{font-variant-numeric:tabular-nums;color:#9b671c;font-weight:800}.result-banner{background:#eaf6f1;border:1px solid #c8e4d8;padding:18px;border-radius:16px;margin-bottom:15px}.result-banner strong{font-size:31px;color:var(--teal)}.empty{padding:44px;text-align:center;color:var(--muted);background:var(--surface);border:1px dashed var(--line);border-radius:18px}.empty strong{display:block;color:var(--ink);font-size:18px;margin-bottom:6px}
.dialog-card{border:0;border-radius:20px;padding:26px;max-width:520px;width:min(92vw,520px);box-shadow:var(--shadow);color:var(--ink)}dialog::backdrop{background:rgba(7,36,36,.45)}.dialog-close{float:right;border:0;background:none;font-size:24px;color:var(--muted)}.dialog-card h2{margin:9px 0 7px}.data-actions{display:flex;gap:8px;flex-wrap:wrap;margin:15px 0}.field-label{display:block;color:var(--muted);font-size:12px;margin:12px 0 5px}.sync-box{width:100%;border:1px solid var(--line);border-radius:11px;padding:10px;resize:vertical;font-family:ui-monospace,monospace;font-size:11px}.danger-zone{display:flex;justify-content:space-between;align-items:center;padding-top:16px;margin-top:15px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.danger{color:var(--red)}.toast{position:fixed;right:24px;bottom:24px;background:#153d3d;color:#fff;padding:12px 15px;border-radius:10px;opacity:0;transform:translateY(8px);pointer-events:none;transition:.25s;z-index:5;font-size:13px}.toast.show{opacity:1;transform:none}
body.dark{--bg:#102122;--surface:#182d2e;--surface-2:#223b3b;--ink:#e6f1ee;--muted:#9db4b0;--line:#2d4949;--shadow:0 18px 50px rgba(0,0,0,.22)}body.dark .answer-box,body.dark .answer-input,body.dark .select,body.dark .search{background:#142526}body.dark .hero-side,body.dark .chapter-card,body.dark .practice-card,body.dark .filter-panel,body.dark .report-card,body.dark .exam-card{background:var(--surface)}
@media(max-width:980px){.app-shell{grid-template-columns:76px 1fr}.sidebar{padding:22px 10px;align-items:center}.brand{padding:0}.brand span:not(.brand-mark),.nav-item:not(.nav-item span),.sidebar-card,.sidebar-bottom .nav-item:not(:first-child){display:none}.primary-nav{width:100%}.nav-item{justify-content:center;padding:12px}.nav-item span{font-size:16px}.main{padding:28px}.hero{grid-template-columns:1fr}.chapter-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.app-shell{display:block}.sidebar{height:auto;position:sticky;top:0;z-index:4;display:flex;flex-direction:row;padding:10px 12px;gap:9px;overflow:auto}.brand{margin-right:auto}.brand strong{font-size:14px}.brand small{font-size:9px}.brand-mark{width:34px;height:34px;font-size:18px}.primary-nav{display:flex;width:auto}.nav-item{padding:8px 10px}.nav-item span{width:auto}.sidebar-bottom{display:none}.main{padding:22px 15px 50px}.topbar{margin-bottom:20px}.topbar h1{font-size:26px}.stats-grid{grid-template-columns:repeat(2,1fr)}.chapter-grid,.report-grid{grid-template-columns:1fr}.practice-layout{grid-template-columns:1fr}.filter-panel{position:static}.filter-panel .queue{max-height:110px}.practice-card{padding:18px}.practice-card h2{font-size:25px}.practice-toolbar{align-items:flex-start}.hero-card{padding:22px;min-height:210px}}


.quick-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.chapter-card{text-align:left;color:var(--ink);font:inherit;cursor:pointer}
.hero-card{position:relative;overflow:hidden;gap:22px}.hero-card:after{content:"";width:180px;height:180px;border:24px solid #ffffff08;border-radius:50%;position:absolute;right:-60px;top:-70px;pointer-events:none}
.hero-card h2{font-size:clamp(28px,3.2vw,44px)}
.self-grade{padding:16px 0;display:flex;flex-wrap:wrap;align-items:center;gap:12px}.self-grade p{width:100%;margin:0}.score-input{width:85px;border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--surface);color:var(--ink)}
.rubric-item{color:var(--ink);font-size:14px;line-height:1.8;cursor:pointer}.rubric-item:before{display:none}.rubric-item input{margin-top:6px;accent-color:var(--teal)}.rubric-item:has(input:checked){border-color:#70b7a5;background:var(--surface-2)}
.activity{display:flex;justify-content:space-around;align-items:flex-end;min-height:135px}.activity div{display:flex;align-items:center;flex-direction:column;gap:7px}.activity i{display:block;width:22px;background:var(--teal-2);border-radius:7px 7px 2px 2px}.activity small{color:var(--muted)}.activity strong{font-size:13px}
.history-row{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;padding:14px 0;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);text-align:left;line-height:1.6}.history-row b{white-space:nowrap;color:var(--red);font-size:12px}
.exam-sticky{position:sticky;top:0;z-index:2;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:13px;display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px}
dialog{border:0;border-radius:20px;padding:0;background:var(--surface);color:var(--ink)}.dialog-card{background:var(--surface)}
.sync-box{background:var(--surface);color:var(--ink)}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible{outline:3px solid var(--gold);outline-offset:3px}
body.dark .answer-box,body.dark .answer-input,body.dark .select,body.dark .search{color:var(--ink)}body.dark .memory-line{background:#3d3421;color:#efd094}body.dark .exam-intro{background:#373122;color:#f4dfb1}body.dark .exam-intro p{color:#dfcda7}body.dark .result-banner{background:var(--surface)}
@media(min-width:681px) and (max-width:980px){.sidebar{align-items:stretch}.brand>span:last-child{display:none}.nav-item{font-size:0;display:flex!important}.nav-item span{display:block!important}.sidebar-bottom{display:block}.sidebar-bottom .nav-item{width:100%}.sidebar-card{display:none}}
@media(max-width:680px){.sidebar{position:static;align-items:center;flex-wrap:wrap}.brand>span:last-child{display:block!important}.primary-nav{width:100%;overflow:auto}.primary-nav .nav-item{font-size:12px;display:flex!important;white-space:nowrap;padding:9px}.primary-nav .nav-item span{display:none}.brand strong,.brand small{display:block}.topbar h1{line-height:1.3}.quick-grid{grid-template-columns:1fr}.exam-sticky{flex-wrap:wrap;font-size:12px}.practice-toolbar{flex-direction:column}.question-top{flex-wrap:wrap}.question-top .source{margin-left:0}.chapter-card:hover{transform:none}}

.filter-toggle{display:none}
@media(max-width:680px){.filter-toggle{display:block;width:100%;text-align:left;border:0;background:transparent;color:var(--teal-2);font-weight:700;padding:0}.filter-panel:not(.expanded)>*:not(.filter-toggle){display:none}.filter-panel.expanded>h3{display:none}}
