:root{--bg:#111112;--bg-deep:#070708;--glow-a:#21c6b733;--glow-b:#a879ff2e;--fg:#f7f4ec;--muted:#aaa59a;--muted-2:#777267;--border:#ffffff1a;--card:#1c1c1f;--card-2:#252528;--surface:#ffffff0f;--surface-2:#ffffff17;--surface-3:#ffffff0b;--text-soft:#d6d1c6;--card-glint-a:#ffffff14;--card-glint-b:#ffffff05;--tile-stripe:#ffffff38;--accent:#ff5a2c;--accent-2:#21c6b7;--accent-3:#a879ff;--accent-4:#f4c84f;--highlight-core:#21c6b7;--highlight-term:#4aa3ff;--highlight-caution:#ff6fae;--accent-soft:#ff5a2c29;--new:#73706a;--learning:#ff8a2a;--mastered:#37d67a;--danger:#ff5f6d;--shadow:0 22px 60px #00000059;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f4f0e8;--bg-deep:#fffaf1;--glow-a:#21c6b729;--glow-b:#ff5a2c1f;--fg:#1f2326;--muted:#6f6b63;--muted-2:#918a7d;--border:#24231f1f;--card:#fffdfa;--card-2:#f2ece2;--surface:#24231f0e;--surface-2:#24231f16;--surface-3:#24231f0b;--text-soft:#504a40;--card-glint-a:#ffffffc7;--card-glint-b:#fffaf175;--tile-stripe:#24231f24;--highlight-core:#008c80;--highlight-term:#126fe3;--highlight-caution:#c8236f;--accent-soft:#ff5a2c21;--new:#8a8376;--shadow:0 18px 42px #4436241f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{background:radial-gradient(circle at 15% -10%, var(--glow-a), transparent 30%), radial-gradient(circle at 90% 10%, var(--glow-b), transparent 28%), linear-gradient(180deg, var(--bg) 0%, var(--bg-deep) 100%);min-height:100%;color:var(--fg);margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;line-height:1.65}.container{width:min(100%,860px);margin:0 auto;padding:28px 18px 88px}.theme-toggle{z-index:200;border:1px solid var(--border);background:color-mix(in srgb, var(--card) 88%, transparent);min-height:38px;color:var(--fg);box-shadow:var(--shadow);cursor:pointer;border-radius:999px;align-items:center;gap:7px;padding:7px 12px;font-size:13px;font-weight:800;display:inline-flex;position:fixed;top:16px;right:16px}.theme-toggle:hover{color:var(--accent);border-color:#ff5a2c8c}.theme-toggle:active{transform:translateY(1px)}.theme-icon{justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}main{min-height:calc(100vh - 116px)}a{color:inherit;text-decoration:none}h1{letter-spacing:0;margin:0 0 8px;font-size:34px;line-height:1.05}.subtitle{color:var(--muted);margin:0 0 28px;font-size:15px}.catalog{grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:14px;margin-top:18px;display:grid}.course-section{border:1px solid var(--border);background:linear-gradient(145deg, var(--surface), transparent), color-mix(in srgb, var(--card) 92%, transparent);box-shadow:var(--shadow);border-radius:18px;margin-top:16px;overflow:hidden}.course-section:first-of-type{margin-top:18px}.course-section[open]{padding-bottom:18px}.course-summary{cursor:pointer;justify-content:space-between;align-items:center;gap:18px;min-height:86px;padding:18px 20px;list-style:none;display:flex}.course-summary::-webkit-details-marker{display:none}.course-summary:after{content:"›";border:1px solid var(--border);background:var(--surface);width:34px;height:34px;color:var(--muted);border-radius:999px;flex:none;justify-content:center;align-items:center;font-size:24px;line-height:1;transition:transform .16s,color .16s,border-color .16s;display:inline-flex;transform:rotate(90deg)}.course-section[open] .course-summary:after{color:var(--accent);border-color:#ff5a2c73;transform:rotate(-90deg)}.course-title-wrap{flex-direction:column;gap:4px;min-width:0;display:flex}.course-head{letter-spacing:0;margin:0;font-size:22px;font-weight:800}.course-sub{color:var(--muted);font-size:13px}.course-meta{background:var(--accent-soft);color:var(--accent);white-space:nowrap;border:1px solid #ff5a2c33;border-radius:999px;flex:none;margin-left:auto;padding:4px 10px;font-size:12px;font-weight:800}.course-section .catalog{margin:0 18px}.cat-link{min-width:0;display:block}.cat-card{background:linear-gradient(145deg, var(--card-glint-a), var(--card-glint-b)), var(--card);border:1px solid var(--border);height:100%;min-height:180px;box-shadow:var(--shadow);border-radius:18px;padding:18px;transition:transform .16s,border-color .16s,background .16s;position:relative;overflow:hidden}.cat-card:before{content:"";background:var(--cat-color,var(--accent-2));clip-path:polygon(25% 6%,75% 6%,100% 50%,75% 94%,25% 94%,0 50%);opacity:.18;width:140px;height:140px;position:absolute;inset:auto -34px -48px auto;transform:rotate(16deg)}.cat-card:after{content:"";background:linear-gradient(90deg, var(--cat-color,var(--accent-2)) 0 10px, transparent 10px 14px), linear-gradient(90deg, var(--tile-stripe) 0 10px, transparent 10px 14px);opacity:.75;clip-path:polygon(25% 0,75% 0,100% 50%,75% 100%,25% 100%,0 50%);background-position:0 0,7px 18px;background-size:14px 18px,14px 18px;width:44px;height:38px;position:absolute;bottom:18px;left:18px}.cat-link:nth-child(4n+1) .cat-card{--cat-color:var(--accent-2)}.cat-link:nth-child(4n+2) .cat-card{--cat-color:var(--accent-3)}.cat-link:nth-child(4n+3) .cat-card{--cat-color:var(--accent-4)}.cat-link:nth-child(4n+4) .cat-card{--cat-color:#4aa3ff}.cat-link:hover .cat-card:not(.planned){border-color:color-mix(in srgb, var(--cat-color,var(--accent-2)) 68%, var(--fg));transform:translateY(-3px)}.cat-card.planned{opacity:.52}.cat-head{z-index:1;justify-content:space-between;align-items:flex-start;gap:10px;display:flex;position:relative}.cat-subject{font-size:20px;font-weight:800;line-height:1.2}.cat-badge{white-space:nowrap;border-radius:999px;flex:none;padding:3px 10px;font-size:12px;font-weight:700}.cat-badge.on{background:color-mix(in srgb, var(--cat-color,var(--accent-2)) 18%, transparent);color:color-mix(in srgb, var(--cat-color,var(--accent-2)) 78%, var(--fg));border:1px solid color-mix(in srgb, var(--cat-color,var(--accent-2)) 28%, transparent)}.cat-badge.soon{background:var(--surface);color:var(--muted)}.cat-en{z-index:1;color:var(--muted);margin:5px 0 10px;font-size:12px;position:relative}.cat-blurb{z-index:1;color:var(--text-soft);margin:0 0 42px;font-size:14px;line-height:1.58;position:relative}.cat-foot{z-index:1;justify-content:flex-end;align-items:center;gap:10px;display:flex;position:absolute;bottom:16px;left:18px;right:18px}.cat-source{display:none}.cat-go{background:var(--accent);color:#fff;white-space:nowrap;border-radius:999px;justify-content:center;align-items:center;min-height:38px;padding:8px 14px;font-size:13px;font-weight:800;display:inline-flex;box-shadow:0 10px 24px #ff5a2c47}.book-grid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px;margin-top:22px;display:grid}.home-books{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.book-link{min-width:0;display:block}.book-cover{--book-a:#245c73;--book-b:#1f9a8a;border:1px solid color-mix(in srgb, var(--book-b) 42%, var(--border));background:linear-gradient(135deg, #ffffff2e, transparent 34%), linear-gradient(160deg, var(--book-a), var(--book-b));color:#fff;border-radius:8px;height:100%;min-height:320px;padding:24px 20px 20px 34px;transition:transform .16s,box-shadow .16s;position:relative;overflow:hidden;box-shadow:0 22px 48px #00000052}.book-cover.real-cover{aspect-ratio:.72;background:var(--card);border-color:#ffffff29;min-height:0;padding:0}.book-cover.real-cover img{object-fit:cover;width:100%;height:100%;display:block}.book-cover.real-cover:after{border-color:#ffffff29;inset:0}.book-overlay{z-index:2;background:linear-gradient(#00000014,#0000 34%),linear-gradient(#0000 42%,#000000d1);flex-direction:column;justify-content:flex-end;gap:14px;padding:18px 18px 62px;display:flex;position:absolute;inset:0}.book-cover-copy{text-shadow:0 2px 14px #0000009e;gap:6px;display:grid}.book-cover-copy span{color:#ffffffeb;background:#0000003d;border:1px solid #ffffff57;border-radius:999px;justify-self:start;padding:4px 9px;font-size:12px;font-weight:900}.book-cover-copy h2{color:#fff;letter-spacing:0;max-width:100%;margin:0;font-size:24px;line-height:1.12}.book-cover-copy p{color:#ffffffdb;margin:0;font-size:13px;line-height:1.4}.book-link:hover .book-cover{transform:translateY(-4px);box-shadow:0 28px 58px #00000061}.book-cover.tone-1{--book-a:#174a5a;--book-b:#18a999}.book-cover.tone-2{--book-a:#563a84;--book-b:#b25c8d}.book-cover.tone-3{--book-a:#6a3b23;--book-b:#d98b33}.book-cover.tone-4{--book-a:#243d72;--book-b:#4aa3ff}.book-cover.tone-5{--book-a:#2f5d3f;--book-b:#b4b84f}.book-cover.tone-6{--book-a:#57313b;--book-b:#ff6f61}.book-cover:after{content:"";pointer-events:none;border:1px solid #ffffff3d;border-radius:5px;position:absolute;inset:16px 14px}.book-spine{background:linear-gradient(90deg,#0000003d,#0000),#ffffff1f;width:18px;position:absolute;inset:0 auto 0 0}.book-kicker{z-index:1;background:#00000029;border:1px solid #ffffff57;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:900;display:inline-flex;position:relative}.book-cover h2{z-index:1;letter-spacing:0;margin:54px 0 12px;font-size:28px;line-height:1.12;position:relative}.book-cover p{z-index:1;color:#fffc;margin:0;font-size:13px;line-height:1.55;position:relative}.book-meta{z-index:1;flex-wrap:wrap;gap:8px;display:flex;position:absolute;bottom:22px;left:34px;right:20px}.real-cover .book-meta{bottom:14px;left:14px;right:14px}.book-meta span{color:#ffffffe0;background:#0003;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:800}.shelf-foot{margin-top:24px}.topic-head{align-items:center;gap:8px;margin:28px 0 12px;font-size:18px;font-weight:800;display:inline-flex}.topic-head:before{content:"";background:var(--accent-2);width:11px;height:11px;box-shadow:14px 0 0 var(--accent-3), 28px 0 0 var(--accent-4);border-radius:999px}.chapter{margin-bottom:28px}.chapter-stack{flex-direction:column;gap:10px;display:flex}.chapter-panel{border:1px solid var(--border);background:var(--surface);border-radius:14px;scroll-margin-top:16px;overflow:hidden}.chapter-panel summary{cursor:pointer;justify-content:space-between;align-items:center;gap:14px;min-height:58px;padding:13px 15px;list-style:none;display:flex}.chapter-panel summary::-webkit-details-marker{display:none}.chapter-panel summary span:first-child{min-width:0;color:var(--text-soft);align-items:baseline;gap:9px;font-size:14px;line-height:1.45;display:flex}.chapter-panel summary strong{color:var(--accent-2);flex:none;font-size:13px}.chapter-panel summary span:last-child{color:var(--muted);flex:none;font-size:12px;font-weight:800}.chapter-panel .concept-list{padding:0 12px 12px}.chapter-title{color:var(--muted);margin:0 0 10px;font-size:14px;font-weight:700}.concept-list{flex-direction:column;gap:9px;display:flex}.concept-item{background:var(--surface);border:1px solid var(--border);border-radius:14px;justify-content:space-between;align-items:center;gap:12px;min-width:0;padding:14px 16px;transition:transform .14s,border-color .14s,background .14s;display:flex}.concept-item:hover{background:var(--surface-2);border-color:#ff5a2cb3;transform:translateY(-1px)}.concept-name{font-size:16px;font-weight:700;display:block}.concept-en{color:var(--muted);margin-top:1px;margin-left:0;font-size:12px;display:block}.badge{white-space:nowrap;color:#111;border-radius:999px;flex:none;padding:3px 10px;font-size:12px;font-weight:800}.badge.new{background:#918c83}.badge.learning{background:var(--learning)}.badge.mastered{background:var(--mastered)}.back{color:var(--muted);align-items:center;margin-bottom:20px;font-size:14px;display:inline-flex}.back:hover{color:var(--accent)}.section{background:var(--surface-3);border:1px solid var(--border);border-radius:14px;margin-bottom:14px;padding:16px}.section h3{color:var(--accent-2);margin:0 0 6px;font-size:13px}.section p{margin:0}.card{background:linear-gradient(180deg, var(--card-glint-a), var(--card-glint-b)), var(--card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:22px;padding:20px}.btn{background:var(--accent);color:#fff;cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:10px 18px;font-size:15px;font-weight:800;display:inline-flex;box-shadow:0 12px 28px #ff5a2c47}.btn:disabled{opacity:.6;cursor:default}.notice{color:color-mix(in srgb, var(--accent-2) 72%, var(--fg));background:#21c6b71f;border:1px solid #21c6b74d;border-radius:14px;padding:14px 16px;font-size:14px}.error{color:color-mix(in srgb, var(--danger) 72%, var(--fg));background:#ff5f6d1f;border:1px solid #ff5f6d59;border-radius:14px;padding:14px 16px;font-size:14px}.misconception{border-left:4px solid var(--accent-4);background:#f4c84f1f;border-radius:12px;padding:13px 15px}.study-header{color:var(--muted);justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;font-size:14px;display:flex}.link-btn{background:var(--surface);border:1px solid var(--border);color:var(--fg);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;padding:8px 12px;font-size:14px;font-weight:700;display:inline-flex}.link-btn:hover{color:var(--accent);border-color:#ff5a2c99}.q-tag{color:#111;border-radius:999px;margin-bottom:12px;padding:3px 11px;font-size:12px;font-weight:900;display:inline-flex}.q-tag.learn{background:var(--accent-2)}.q-tag.quiz{background:var(--learning)}.q-tag.review{background:var(--mastered)}.q-tag.redo{background:var(--danger);color:#fff}.q-meta{color:var(--muted);margin-bottom:8px;font-size:13px}.q-question{margin-bottom:20px;font-size:22px;font-weight:800;line-height:1.38}.options{flex-direction:column;gap:12px;display:flex}.option-btn{text-align:left;background:var(--surface);border:1px solid var(--border);min-height:58px;color:var(--fg);cursor:pointer;border-radius:16px;padding:14px 16px;font-size:15px;transition:transform .12s,border-color .12s,background .12s}.option-btn:hover:not(:disabled){border-color:#ff5a2cb8;transform:translateY(-1px)}.option-btn.selected{border-color:var(--accent);background:var(--accent-soft)}.option-btn.correct{color:color-mix(in srgb, var(--mastered) 62%, var(--fg));background:#37d67a29;border-color:#37d67aa6;font-weight:800}.option-btn.wrong{color:color-mix(in srgb, var(--danger) 68%, var(--fg));background:#ff5f6d24;border-color:#ff5f6db3}.option-btn:disabled{cursor:default}.cloze-reveal{flex-direction:column;align-items:flex-start;gap:14px;display:flex}.cloze-hint{color:var(--muted);margin:0;font-size:14px}.cloze-filled{font-size:16px}.cloze-rating{flex-wrap:wrap}.feedback{border-radius:14px;margin-top:16px;padding:13px 15px;font-size:14px;line-height:1.6}.feedback.ok{color:color-mix(in srgb, var(--mastered) 58%, var(--fg));background:#37d67a24;border:1px solid #37d67a59}.feedback.no{color:color-mix(in srgb, var(--danger) 62%, var(--fg));background:#ff5f6d1f;border:1px solid #ff5f6d59}.q-explain{color:var(--muted);margin-top:6px}.rating-row{gap:12px;margin-top:16px;display:flex}.btn.ghost{background:var(--surface);color:var(--fg);border:1px solid var(--border);box-shadow:none}.btn.ghost:hover{color:var(--accent);border-color:#ff5a2cb3}.done-card{text-align:center;padding-top:42px;position:relative;overflow:hidden}.done-card:before{content:"";background:radial-gradient(circle at 24px 20px, var(--mastered) 0 13px, transparent 14px), radial-gradient(circle at 72px 18px, var(--mastered) 0 16px, transparent 17px), radial-gradient(circle at 92px 54px, var(--mastered) 0 12px, transparent 13px), linear-gradient(135deg, transparent 42%, #ffffff38 42% 58%, transparent 58%);opacity:.9;width:112px;height:84px;margin:0 auto 18px;display:block}.done-card .btn{text-decoration:none}.moving-card{min-height:220px}.moving-card h1{margin-top:8px}.hl{color:var(--highlight-core);font-weight:800}.hl2{color:var(--highlight-term);font-weight:800}.hl3{color:var(--highlight-caution);font-weight:800}.figures{flex-direction:column;gap:16px;margin:4px 0 14px;display:flex}.figure{border:1px solid var(--border);color:#26231e;background:#f8f6ee;border-radius:16px;margin:0;padding:16px 16px 10px}.figure-svg{width:100%;overflow-x:auto}.figure-svg svg{width:100%;max-width:560px;height:auto;margin:0 auto;display:block}.figure-img{object-fit:contain;background:#efe9dc;border-radius:10px;width:100%;max-width:620px;max-height:360px;margin:0 auto;display:block}.figure figcaption{color:#5f5a50;text-align:center;margin-top:10px;font-size:13px;line-height:1.5}.figure-credit{color:#7a7367;text-align:center;margin-top:4px;font-size:11px;line-height:1.4}.figure-credit a{text-underline-offset:2px;text-decoration:underline}.source-case{border:1px solid var(--border);background:var(--surface-3);border-radius:14px;margin-top:14px;overflow:hidden}.source-case summary{color:var(--text-soft);cursor:pointer;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;font-size:14px;font-weight:800;list-style:none;display:flex}.source-case summary::-webkit-details-marker{display:none}.source-case summary:after{content:"›";color:var(--muted);font-size:20px;line-height:1;transition:transform .16s,color .16s;transform:rotate(90deg)}.source-case[open] summary:after{color:var(--accent);transform:rotate(-90deg)}.source-case-body{border-top:1px solid var(--border);padding:0 14px 14px}.source-case-meta{color:var(--muted);flex-wrap:wrap;gap:8px;margin-top:12px;font-size:12px;display:flex}.source-case-meta span{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:3px 8px}.source-case h4{margin:12px 0 6px;font-size:16px}.source-case-block{margin-top:10px}.source-case-label{color:var(--muted);margin-top:12px;font-size:12px;font-weight:800}.source-case-clues{flex-wrap:wrap;gap:8px;margin-top:7px;display:flex}.source-case-clues span{border:1px solid color-mix(in srgb, var(--accent) 34%, var(--border));background:var(--surface);color:var(--fg);border-radius:10px;padding:6px 9px;font-size:13px;font-weight:800;line-height:1.35}.source-case p{color:var(--text-soft);margin:8px 0 0;font-size:14px}.source-case-tags{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.source-case-tags span{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:4px 9px;font-size:12px;font-weight:800}.progress{background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-bottom:24px;padding:12px 14px}.progress-head{color:var(--muted);justify-content:space-between;margin-bottom:8px;font-size:13px;display:flex}.progress-track{background:var(--surface-2);border-radius:999px;height:9px;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:999px;height:100%;transition:width .3s}.source-note{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:14px;margin-top:14px;padding:12px 14px;font-size:12px;line-height:1.6}.source-note a{color:var(--accent-2)}.source-note a:hover{text-decoration:underline}.nav-controls{justify-content:space-between;align-items:center;gap:12px;margin-top:24px;display:flex}.nav-btn{background:var(--surface);border:1px solid var(--border);min-height:44px;color:var(--fg);border-radius:999px;justify-content:center;align-items:center;padding:10px 16px;font-size:15px;font-weight:800;transition:border-color .15s,color .15s;display:inline-flex}.nav-btn:hover{color:var(--accent);border-color:#ff5a2cb3}.nav-btn.disabled{opacity:.4;cursor:default}.nav-btn.quiz-next{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 12px 28px #ff5a2c47}.nav-btn.quiz-next:hover{color:#fff;opacity:.94}.nav-hint{color:var(--muted-2);font-size:12px}@media (max-width:640px){.container{padding:22px 14px 72px}h1{font-size:30px}.subtitle{font-size:14px}.catalog{grid-template-columns:1fr}.book-grid,.home-books{grid-template-columns:1fr;gap:14px}.book-cover{min-height:250px;padding:20px 18px 18px 32px}.book-cover h2{margin-top:38px;font-size:24px}.book-meta{bottom:18px;left:32px;right:18px}.course-summary{flex-wrap:wrap;align-items:flex-start;min-height:0;padding:16px}.course-summary:after{margin-left:auto}.course-meta{order:3;margin-left:0}.course-section .catalog{margin:0 14px}.cat-card{min-height:168px}.card{border-radius:20px;padding:16px}.section{padding:14px}.chapter-panel summary{align-items:flex-start}.chapter-panel summary span:first-child{flex-direction:column;gap:2px}.study-header,.nav-controls,.rating-row{flex-direction:column;align-items:stretch}.nav-hint{text-align:center;order:-1}.btn,.nav-btn,.link-btn{width:100%}.q-question{font-size:20px}.concept-item{align-items:flex-start}}
