:root{color-scheme:dark;--bg: #05060e;--ink: #f2f4fa;--ink-dim: rgba(226, 232, 248, .55);--ink-faint: rgba(226, 232, 248, .34);--card: rgba(13, 16, 30, .86);--card-line: rgba(148, 163, 210, .16);--serif: "Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", serif;--sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--spin-track: rgba(148, 163, 210, .2);--spin-head: rgba(226, 232, 248, .8);--accent-dot: #ff4f8e;--btn-bg: rgba(148, 163, 210, .14);--btn-bg-hover: rgba(148, 163, 210, .3);--pill-bg: rgba(148, 163, 210, .1);--pill-bg-hover: rgba(148, 163, 210, .24);--auth-bg: rgba(148, 163, 210, .08);--auth-line: rgba(148, 163, 210, .32);--auth-bg-hover: rgba(148, 163, 210, .22);--auth-line-hover: rgba(148, 163, 210, .55);--shadow-pop: 0 12px 40px rgba(0, 0, 0, .5);--shadow-panel: 0 20px 60px rgba(0, 0, 0, .55);--scroll-thumb: rgba(148, 163, 210, .25);--bullet: rgba(148, 163, 210, .5);--prompt-line: rgba(148, 163, 210, .35);--err-ink: #ff8080}html[data-theme=light]{color-scheme:light;--bg: #f5f6f8;--ink: #101323;--ink-dim: rgba(16, 19, 35, .62);--ink-faint: rgba(16, 19, 35, .4);--card: rgba(255, 255, 255, .92);--card-line: rgba(16, 19, 35, .12);--spin-track: rgba(16, 19, 35, .12);--spin-head: rgba(16, 19, 35, .8);--btn-bg: rgba(16, 19, 35, .06);--btn-bg-hover: rgba(16, 19, 35, .14);--pill-bg: rgba(16, 19, 35, .05);--pill-bg-hover: rgba(16, 19, 35, .1);--auth-bg: rgba(16, 19, 35, .04);--auth-line: rgba(16, 19, 35, .22);--auth-bg-hover: rgba(16, 19, 35, .1);--auth-line-hover: rgba(16, 19, 35, .4);--shadow-pop: 0 12px 40px rgba(16, 19, 35, .14);--shadow-panel: 0 20px 60px rgba(16, 19, 35, .16);--scroll-thumb: rgba(16, 19, 35, .22);--bullet: rgba(16, 19, 35, .38);--prompt-line: rgba(16, 19, 35, .28);--err-ink: #c0392b}@media(prefers-color-scheme:light){html:not([data-theme]){color-scheme:light;--bg: #f5f6f8;--ink: #101323;--ink-dim: rgba(16, 19, 35, .62);--ink-faint: rgba(16, 19, 35, .4);--card: rgba(255, 255, 255, .92);--card-line: rgba(16, 19, 35, .12);--spin-track: rgba(16, 19, 35, .12);--spin-head: rgba(16, 19, 35, .8);--btn-bg: rgba(16, 19, 35, .06);--btn-bg-hover: rgba(16, 19, 35, .14);--pill-bg: rgba(16, 19, 35, .05);--pill-bg-hover: rgba(16, 19, 35, .1);--auth-bg: rgba(16, 19, 35, .04);--auth-line: rgba(16, 19, 35, .22);--auth-bg-hover: rgba(16, 19, 35, .1);--auth-line-hover: rgba(16, 19, 35, .4);--shadow-pop: 0 12px 40px rgba(16, 19, 35, .14);--shadow-panel: 0 20px 60px rgba(16, 19, 35, .16);--scroll-thumb: rgba(16, 19, 35, .22);--bullet: rgba(16, 19, 35, .38);--prompt-line: rgba(16, 19, 35, .28);--err-ink: #c0392b}}*{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;overflow:hidden}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased}.hidden{display:none!important}#scene{position:fixed;inset:0;width:100%;height:100%;display:block}#loading{position:fixed;inset:0;z-index:40;display:flex;flex-direction:column;gap:14px;align-items:center;justify-content:center;background:var(--bg);color:var(--ink-dim);font-size:13px;letter-spacing:.12em;transition:opacity .6s ease}#loading.done{opacity:0;pointer-events:none}#loading .spinner{width:26px;height:26px;border-radius:50%;border:2px solid var(--spin-track);border-top-color:var(--spin-head);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}#brand{position:fixed;top:22px;left:32px;z-index:10;font-size:17px;font-weight:800;letter-spacing:.18em;color:var(--ink);display:flex;align-items:center;gap:10px}#brand .brand-mark{height:30px;width:auto;display:block}#brand .brand-domain{font-size:10px;font-weight:500;letter-spacing:.22em;color:var(--ink-faint);align-self:flex-end;padding-bottom:3px}#leftcol{position:fixed;left:48px;top:64px;bottom:40px;z-index:5;display:flex;flex-direction:column;gap:26px;pointer-events:none;max-width:min(46vw,480px)}#hero{margin:auto 0;max-width:460px;pointer-events:none}#hero .eyebrow{font-size:11px;letter-spacing:.22em;color:var(--ink-faint);text-transform:uppercase;margin-bottom:18px;display:flex;align-items:center;gap:8px}#hero .eyebrow:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent-dot);display:inline-block}#hero h1{font-family:var(--serif);font-size:clamp(40px,5.2vw,68px);font-weight:700;line-height:1.14;letter-spacing:.01em;margin-bottom:22px}#hero .sub{font-size:13.5px;line-height:1.8;color:var(--ink-dim)}#hero .sub strong{color:var(--ink);font-weight:600}#legend{align-self:flex-start;pointer-events:auto;background:var(--card);border:1px solid var(--card-line);border-radius:14px;padding:14px 18px 12px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);min-width:210px}.legend-title{font-size:10px;letter-spacing:.2em;color:var(--ink-faint);margin-bottom:8px}#legendList{list-style:none}#legendList.multi{display:inline-grid;grid-auto-flow:column;grid-template-rows:repeat(var(--legend-rows, 6),auto);column-gap:22px;justify-items:start}#legendList li{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--ink-dim);padding:3.5px 2px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:opacity .25s ease,color .25s ease;break-inside:avoid}#legendList li:hover{color:var(--ink)}#legendList li.off{opacity:.28}#legendList li .dot{width:8px;height:8px;border-radius:50%;flex:none}#legendList li .name{flex:1}#legendList li .count{font-variant-numeric:tabular-nums;color:var(--ink-faint);font-size:11.5px}#hints{position:fixed;right:32px;bottom:40px;z-index:5;font-size:11px;letter-spacing:.14em;color:var(--ink-faint);pointer-events:none}#resetView{position:fixed;left:50%;bottom:38px;transform:translate(-50%);z-index:10;width:34px;height:20px;border-radius:999px;background:var(--btn-bg);border:1px solid var(--card-line);color:var(--ink-dim);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .25s ease,color .25s ease}#resetView:hover{background:var(--btn-bg-hover);color:var(--ink)}#langToggle,#themeToggle{background:var(--pill-bg);border:1px solid var(--card-line);color:var(--ink-dim);font-size:11px;letter-spacing:.12em;padding:6px 12px;border-radius:999px;cursor:pointer;font-family:var(--sans);transition:background .25s ease,color .25s ease}#langToggle:hover,#themeToggle:hover{color:var(--ink);background:var(--pill-bg-hover)}#topbar{position:fixed;top:22px;right:32px;z-index:10;display:flex;align-items:center;gap:10px}#authBtn{background:var(--auth-bg);border:1px solid var(--auth-line);color:var(--ink);font-size:12px;letter-spacing:.1em;padding:7px 20px;border-radius:999px;cursor:pointer;font-family:var(--sans);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:background .25s ease,border-color .25s ease}#authBtn:hover{background:var(--auth-bg-hover);border-color:var(--auth-line-hover)}#toast{position:fixed;top:62px;right:32px;z-index:30;background:var(--card);border:1px solid var(--card-line);border-radius:10px;color:var(--ink-dim);font-size:12px;padding:8px 14px;opacity:0;transition:opacity .3s ease;pointer-events:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}#toast.show{opacity:1}#tooltip{position:fixed;z-index:20;max-width:300px;background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:12px 15px;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);pointer-events:none;box-shadow:var(--shadow-pop)}#tooltip .tip-eyebrow{font-size:9.5px;letter-spacing:.16em;color:var(--ink-faint);text-transform:uppercase;margin-bottom:5px;display:flex;align-items:center;gap:6px}#tooltip .tip-eyebrow i{width:6px;height:6px;border-radius:50%;display:inline-block;flex:none}#tooltip .tip-name{font-size:14px;font-weight:600;margin-bottom:5px;line-height:1.45}#tooltip .tip-prompt{font-size:12px;line-height:1.65;color:var(--ink-dim)}#panel{position:fixed;top:24px;right:24px;z-index:15;width:min(380px,calc(100vw - 48px));max-height:calc(100vh - 48px);display:flex;flex-direction:column;background:var(--card);border:1px solid var(--card-line);border-radius:16px;padding:20px 22px;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:var(--shadow-panel);animation:panelIn .35s cubic-bezier(.2,.9,.25,1)}@keyframes panelIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:none}}#panelClose{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--ink-faint);font-size:20px;cursor:pointer;line-height:1;padding:4px;transition:color .2s ease}#panelClose:hover{color:var(--ink)}#panel .panel-eyebrow{font-size:10px;letter-spacing:.18em;color:var(--ink-faint);text-transform:uppercase;margin-bottom:8px;display:flex;align-items:center;gap:7px}#panel .panel-eyebrow i{width:7px;height:7px;border-radius:50%;display:inline-block;flex:none}#panel .panel-title{font-size:19px;font-weight:700;line-height:1.4;margin-bottom:14px;padding-right:20px}#panel .panel-count{display:flex;align-items:baseline;gap:8px}#panel .panel-count .num{font-size:44px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}#panel .panel-count .label{font-size:12.5px;color:var(--ink-dim)}#panel .panel-sub{font-size:11.5px;line-height:1.7;color:var(--ink-faint);margin:6px 0 12px}#panel .panel-body{overflow-y:auto;min-height:0;padding-right:4px}#panel .panel-body::-webkit-scrollbar{width:4px}#panel .panel-body::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:4px}.psec{border-top:1px solid var(--card-line);padding:12px 0}.psec h3{font-size:10.5px;letter-spacing:.18em;color:var(--ink-faint);font-weight:600;margin-bottom:8px}.psec p.desc{font-size:12.5px;line-height:1.75;color:var(--ink-dim)}.psec ul{list-style:none}.psec ul.ev li{font-size:12.5px;line-height:1.7;color:var(--ink-dim);padding-left:14px;position:relative;margin-bottom:5px}.psec ul.ev li:before{content:"";position:absolute;left:0;top:8px;width:5px;height:5px;border-radius:50%;background:var(--bullet)}.psec .prompt{font-size:12.5px;line-height:1.75;color:var(--ink-dim);font-style:normal;border-left:2px solid var(--prompt-line);padding-left:10px}.psec ul.prereq li{margin-bottom:7px;cursor:pointer}.psec ul.prereq li .pname{font-size:12.5px;color:var(--ink);display:flex;align-items:center;gap:7px}.psec ul.prereq li:hover .pname{text-decoration:underline}.psec ul.prereq li .pname i{width:6px;height:6px;border-radius:50%;flex:none}.psec ul.prereq li .badge{font-size:9px;letter-spacing:.08em;padding:1.5px 6px;border-radius:999px;border:1px solid var(--card-line);color:var(--ink-faint);flex:none}.psec ul.prereq li .reason{font-size:11px;line-height:1.6;color:var(--ink-faint);margin-top:2px;padding-left:13px}.psec ul.std li{font-size:12px;line-height:1.65;color:var(--ink-dim);margin-bottom:8px}.psec ul.std li .scode{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:10.5px;color:var(--ink-faint);display:block}.psec ul.std li .scur{font-size:10px;color:var(--ink-faint);letter-spacing:.06em}.meta-row{display:flex;gap:14px;flex-wrap:wrap}.meta-row .m{font-size:11.5px;color:var(--ink-dim)}.meta-row .m b{color:var(--ink);font-weight:600}@media(max-width:900px){#leftcol{left:24px;bottom:24px;gap:18px}#hero{max-width:300px}#hero h1{font-size:34px}#legend{padding:10px 14px 8px;min-width:0}#legendList.multi{--legend-rows: 5}#hints{display:none}}
