:root{--bg-page:#f6f3ec;--bg-card:#fdfcf8;--bg-nav:#efece3;--bg-chat:#f9f7f1;--bg-input:#f3f0e8;--bg-even:#f2efe6;--bg-hover:#e9e5da;--text-primary:#23262b;--text-secondary:#5a5f66;--text-muted:#8d8f88;--accent:#3b4a6b;--accent-soft:#e8ebf2;--accent-warm:#8a6f3d;--accent-correct:#3f6b52;--accent-error:#9c4a4a;--border:#e0dbce;--border-focus:#b9b2a0;--radius:4px;--radius-lg:8px;--shadow-card:0 1px 3px #5046320f, 0 1px 1px #5046320d;--shadow-elevated:0 6px 18px #5046321a, 0 2px 4px #5046320f;--font-heading:"Noto Serif SC", "Songti SC", "SimSun", Georgia, serif;--font-body:"Noto Sans SC", "PingFang SC", -apple-system, "Helvetica Neue", sans-serif;--font-mono:"JetBrains Mono", "Fira Code", "SF Mono", "Menlo", monospace;--line-height:1.78}[data-theme=dark]{--bg-page:#171613;--bg-card:#1f1e1a;--bg-nav:#1c1b17;--bg-chat:#1d1c18;--bg-input:#26241f;--bg-even:#22211c;--bg-hover:#2a2822;--text-primary:#e9e6df;--text-secondary:#b6b2a8;--text-muted:#8d887e;--accent:#8fa3c4;--accent-soft:#2a3040;--accent-warm:#b8a271;--accent-correct:#7da589;--accent-error:#d07777;--border:#36332c;--border-focus:#4c483e;--shadow-card:0 1px 3px #00000059;--shadow-elevated:0 6px 18px #00000073}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:var(--font-body);font-size:15px;line-height:var(--line-height);color:var(--text-primary);background:var(--bg-page);-webkit-font-smoothing:antialiased;background-image:radial-gradient(circle at 15% 20%, color-mix(in srgb, var(--accent) 3%, transparent) 0, transparent 40%), radial-gradient(circle at 85% 60%, color-mix(in srgb, var(--accent-warm) 3%, transparent) 0, transparent 45%);background-attachment:fixed}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);letter-spacing:.01em;color:var(--text-primary);font-weight:600;line-height:1.35}h1{margin-bottom:10px;font-size:30px}h2{border-bottom:1px solid var(--border);margin:30px 0 14px;padding-bottom:8px;font-size:22px}h3{margin:22px 0 8px;font-size:18px}h4{margin:16px 0 6px;font-size:15px}p{text-wrap:pretty;margin:8px 0}a{color:var(--accent);text-decoration:none;transition:color .15s}a:hover{text-decoration:underline}.stat,.num,table td,.tabular{font-variant-numeric:tabular-nums}code{font-family:var(--font-mono);background:var(--bg-nav);color:var(--text-primary);border-radius:3px;padding:2px 5px;font-size:.9em}pre{background:var(--bg-nav);border:1px solid var(--border);border-radius:var(--radius);margin:12px 0;padding:14px 18px;font-size:13px;line-height:1.5;overflow-x:auto}pre code{background:0 0;padding:0}table{border-collapse:collapse;width:100%;margin:12px 0;font-size:14px}th,td{border:1px solid var(--border);text-align:left;padding:8px 12px}th{background:var(--bg-nav);font-weight:600;font-family:var(--font-heading)}blockquote{border-left:3px solid var(--accent);background:var(--bg-nav);border-radius:0 var(--radius) var(--radius) 0;color:var(--text-secondary);margin:12px 0;padding:8px 16px;font-size:14px}details{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);margin:8px 0;padding:10px 14px}details summary{cursor:pointer;font-weight:600;font-family:var(--font-heading)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}::selection{background:var(--accent);color:#fff}.app-header{background:var(--bg-nav);border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;height:48px;padding:0 20px;display:flex}.header-left{align-items:center;gap:16px;display:flex}.app-brand{font-family:var(--font-heading);color:var(--text-primary);letter-spacing:.5px;font-size:17px;font-weight:700;text-decoration:none}.app-brand:hover{color:var(--accent);text-decoration:none}.app-subtitle{color:var(--text-muted);font-size:13px;font-family:var(--font-body)}.header-right{align-items:center;gap:8px;display:flex}.header-btn{border:1px solid var(--border);color:var(--text-secondary);border-radius:var(--radius);cursor:pointer;background:0 0;justify-content:center;align-items:center;width:34px;height:34px;font-size:15px;transition:all .15s;display:flex}.header-btn:hover{border-color:var(--border-focus);color:var(--text-primary);background:var(--bg-card)}.btn{font-size:14px;font-family:var(--font-body);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);color:var(--text-primary);cursor:pointer;align-items:center;gap:6px;padding:7px 18px;font-weight:500;text-decoration:none;transition:background .15s,border-color .15s,transform .12s;display:inline-flex}.btn:hover{border-color:var(--border-focus);background:var(--bg-nav);text-decoration:none}.btn:active{transform:scale(.98)}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{border-color:var(--accent);color:var(--accent)}.btn-primary:hover{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-sm{padding:4px 12px;font-size:13px}.btn-block{justify-content:center;width:100%;display:flex}.btn-danger{color:var(--accent-error);border-color:var(--accent-error)}.btn-danger:hover{background:var(--accent-error);color:#fff}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);margin:12px 0;padding:20px 24px}.card-header{font-family:var(--font-heading);margin-bottom:8px;font-size:16px;font-weight:600}.card-body{color:var(--text-primary)}.modal-overlay{display:none}.modal-overlay:not([hidden]){z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);width:90%;max-width:440px;box-shadow:var(--shadow-elevated);padding:24px}.modal h3{font-family:var(--font-heading);margin-bottom:8px;font-size:17px}.modal-hint{color:var(--text-muted);margin:8px 0;font-size:13px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.input-full{border:1px solid var(--border);border-radius:var(--radius);width:100%;font-size:14px;font-family:var(--font-mono);background:var(--bg-input);color:var(--text-primary);outline:none;margin:8px 0;padding:9px 12px}.input-full:focus{border-color:var(--border-focus)}.practice-phase{animation:.25s fadeUp}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.problem-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);margin:12px 0;padding:22px 26px}.problem-meta{color:var(--text-muted);gap:16px;margin-bottom:10px;font-size:13px;display:flex}.problem-list-item{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:var(--bg-card);justify-content:space-between;align-items:center;margin:4px 0;padding:10px 16px;font-size:14px;transition:all .12s;display:flex}.problem-list-item:hover{border-color:var(--accent);background:var(--bg-nav)}.upload-area{border:2px dashed var(--border);border-radius:var(--radius-lg);text-align:center;cursor:pointer;background:var(--bg-card);margin:12px 0;padding:36px;transition:all .15s}.upload-area:hover{border-color:var(--accent);background:var(--bg-nav)}.upload-area input{display:none}.verdict-banner{border-radius:var(--radius);font-family:var(--font-heading);text-align:center;margin:12px 0;padding:14px 22px;font-size:19px;font-weight:700}.verdict-correct{color:var(--accent-correct);background:#eaf4ee;border:1px solid #b8d8c4}.verdict-partial{color:var(--accent-warm);background:#faf3e8;border:1px solid #dcc8a0}.verdict-incorrect{color:var(--accent-error);background:#f9eaea;border:1px solid #dba8a8}[data-theme=dark] .verdict-correct{color:#8cc9a0;background:#1a2e20;border-color:#2a5a38}[data-theme=dark] .verdict-partial{color:#d4b87a;background:#2e2418;border-color:#5a4028}[data-theme=dark] .verdict-incorrect{color:#d49a9a;background:#2e1a1a;border-color:#5a2a2a}.feedback-block{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);margin:8px 0;padding:14px 18px}.feedback-block h4{font-family:var(--font-heading);margin-bottom:6px;font-size:14px}.graded-step{border-bottom:1px solid var(--border);align-items:flex-start;gap:8px;padding:5px 0;font-size:14px;display:flex}.graded-step:last-child{border-bottom:none}.step-status{flex-shrink:0;font-size:16px}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:18px;height:18px;animation:.6s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.museum-nav{background:var(--bg-nav);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:center;align-items:center;gap:4px;padding:10px 20px;display:flex}.museum-nav a,.museum-nav button{font-size:13px;font-family:var(--font-body);color:var(--text-secondary);border-radius:var(--radius);cursor:pointer;letter-spacing:.02em;background:0 0;border:1px solid #0000;align-items:center;gap:4px;padding:6px 14px;text-decoration:none;transition:color .15s,background .15s;display:inline-flex}.museum-nav a:hover,.museum-nav button:hover{color:var(--accent);background:var(--bg-hover);text-decoration:none}.museum-nav a.active{color:var(--accent);background:var(--accent-soft);font-weight:600}.museum-nav .nav-sep{color:var(--text-muted);-webkit-user-select:none;user-select:none;font-size:12px}.random-actions{flex-wrap:wrap;gap:10px;margin:10px 0;display:flex}.viz-container{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);min-height:300px;margin:16px 0;padding:20px;overflow:hidden}.viz-container h4{font-family:var(--font-heading);margin-bottom:12px}p.pointer{color:#fff;font-family:var(--font-mono)}.workshop-layout{max-width:100%;height:calc(100vh - 90px);display:flex;overflow:hidden}.workshop-sidebar{border-right:1px solid var(--border);background:var(--bg-nav);width:360px;min-width:360px;padding:24px 20px;overflow-y:auto}.workshop-main{flex:1;padding:24px;overflow-y:auto}.workshop-plot-area{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;min-height:500px;position:relative;overflow:hidden}.workshop-plot-area .ws-placeholder{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.ws-mode-tabs{border:1px solid var(--border);border-radius:8px;gap:0;margin:0;display:flex;overflow:hidden}.ws-mode-tab{background:var(--bg-card);color:var(--text-secondary);cursor:pointer;font-size:12px;font-family:var(--font-body);border:none;border-right:1px solid var(--border);flex:1;padding:8px 12px;transition:all .15s}.ws-mode-tab:last-child{border-right:none}.ws-mode-tab:hover{background:var(--bg-nav)}.ws-mode-tab.active{background:var(--accent);color:#fff;font-weight:600}.ws-preset-group{margin-bottom:10px}.ws-preset-btn{border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);cursor:pointer;font-size:11px;font-family:var(--font-mono);border-radius:12px;padding:3px 9px;transition:all .12s}.ws-preset-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--bg-nav)}@media (width<=900px){.workshop-layout{flex-direction:column;height:auto}.workshop-sidebar{border-right:none;border-bottom:1px solid var(--border);width:100%;min-width:0;max-height:50vh}}.practice-page{max-width:780px;margin:0 auto;padding:32px 20px 64px}.practice-header{text-align:center;margin-bottom:32px}.practice-header h1{margin:8px 0 16px;font-size:24px}.practice-topic-select{align-items:center;gap:8px;margin-bottom:16px;display:flex}.practice-back{color:var(--text-muted);margin-bottom:4px;font-size:13px;text-decoration:none;display:inline-block}.practice-back:hover{color:var(--accent)}.practice-steps{justify-content:center;align-items:center;gap:8px;display:flex}.practice-step{color:var(--text-muted);border-radius:20px;padding:4px 12px;font-size:13px;transition:all .2s}.practice-step.active{background:var(--accent);color:#fff}.practice-step.done{color:var(--accent-correct)}.practice-step-arrow{color:var(--text-muted);font-size:12px}.practice-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.practice-filter{gap:4px;display:flex}.filter-chip{border:1px solid var(--border);cursor:pointer;background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border);font-size:12px;font-family:var(--font-body);border-radius:20px;padding:5px 14px;transition:all .15s}.filter-chip:hover{border-color:var(--accent);color:var(--accent)}.filter-chip.active{background:var(--accent);color:#fff;border-color:var(--accent)}.practice-actions{gap:8px;display:flex}.practice-problem-list{flex-direction:column;gap:4px;display:flex}.practice-problem-card{border:1px solid var(--border);cursor:pointer;background:var(--bg-card);border-radius:8px;align-items:center;gap:12px;padding:14px 16px;transition:all .12s;display:flex}.practice-problem-card:hover{border-color:var(--accent);background:var(--bg-nav)}.ppc-difficulty{text-align:center;flex-shrink:0;width:40px;font-size:13px}.ppc-easy{color:var(--accent-correct)}.ppc-medium{color:var(--accent-warm)}.ppc-hard{color:var(--accent-error)}.ppc-basic{color:var(--accent-correct)}.ppc-advanced{color:var(--accent)}.ppc-exam{color:var(--accent-warm)}.ppc-graduate{color:#a45050}.ppc-phd{color:#a45050;font-weight:700}.ppc-body{flex:1;min-width:0}.ppc-id{color:var(--text-muted);font-size:12px}.ppc-preview{margin-top:2px;font-size:14px;display:block}.ppc-arrow{color:var(--text-muted);font-size:18px}.practice-empty{text-align:center;color:var(--text-muted);padding:40px;font-size:14px}.practice-solve-card{background:var(--bg-card);border:1px solid var(--border);border-radius:10px;margin-bottom:16px;padding:24px}.psc-meta{align-items:center;gap:12px;margin-bottom:12px;display:flex}.psc-problem{font-size:16px;line-height:1.8}.practice-upload{border:2px dashed var(--border);text-align:center;cursor:pointer;background:var(--bg-card);border-radius:12px;padding:40px 20px;transition:all .15s}.practice-upload:hover{border-color:var(--accent);background:var(--bg-nav)}.practice-upload-icon{color:var(--text-muted);margin-bottom:8px;font-size:32px}.exhibit-card-topics{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.exhibit-card-topics span{color:#ffffffe6;font-size:11px;font-family:var(--font-mono);background:#ffffff26;border-radius:10px;padding:2px 10px}[data-theme=dark] .workshop-sidebar{background:#1e1c17}[data-theme=dark] .ws-mode-tab{background:#24211c}[data-theme=dark] .ws-mode-tab:hover{background:#2a2722}[data-theme=dark] .ws-preset-btn{background:#24211c}.search-container{align-items:center;display:inline-flex;position:relative}.search-container input{width:0;color:var(--text-primary);background:0 0;border:1px solid #0000;border-radius:20px;outline:none;padding:4px 0;font-size:13px;transition:all .25s}.search-container.open input{border-color:var(--border);background:var(--bg-input);width:200px;padding:4px 12px}.search-btn{cursor:pointer;color:var(--text-secondary);background:0 0;border:none;padding:4px 8px;font-size:16px}.search-results{background:var(--bg-card);border:1px solid var(--border);width:360px;max-height:400px;box-shadow:var(--shadow-elevated);z-index:200;border-radius:8px;margin-top:4px;display:none;position:absolute;top:100%;right:0;overflow-y:auto}.search-results.show{display:block}.search-result-item{border-bottom:1px solid var(--border);color:var(--text-primary);padding:10px 14px;font-size:13px;text-decoration:none;transition:background .1s;display:block}.search-result-item:hover{background:var(--bg-nav);text-decoration:none}.search-result-item:last-child{border-bottom:none}.search-result-item .sr-title{font-weight:600;font-family:var(--font-heading)}.search-result-item .sr-excerpt{color:var(--text-muted);margin-top:2px;font-size:11px}.search-no-results{text-align:center;color:var(--text-muted);padding:16px;font-size:13px}@media (width<=768px){.search-results{width:280px;right:-40px}.gallery-grid{grid-template-columns:1fr;padding:16px}.hamburger{display:none}.exhibit-card-hero{min-height:220px!important}.exhibit-card-body h2{font-size:18px!important}.exhibit-card-topics span{padding:1px 7px;font-size:10px}.workshop-layout{flex-direction:column;height:auto}.workshop-sidebar{border-right:none;border-bottom:1px solid var(--border);width:100%;min-width:0;max-height:none;padding:16px}.workshop-main{padding:16px}.workshop-plot-area{min-height:380px}.exhibit-actions{padding:0 0 32px}#fractalCanvas{max-height:400px;width:100%!important}.practice-page{padding:16px 12px 48px}.practice-problem-card{padding:12px}.ppc-difficulty{width:32px}#dailyProblem{margin:0 12px 16px;padding:16px}}.skeleton{background:linear-gradient(90deg, var(--bg-nav) 25%, var(--border) 50%, var(--bg-nav) 75%);border-radius:var(--radius);background-size:200% 100%;animation:1.5s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-text{width:100%;height:14px;margin:8px 0}.skeleton-text.short{width:60%}.skeleton-title{width:70%;height:24px;margin:12px 0}.skeleton-block{height:120px;margin:12px 0}.skeleton-card{border-radius:var(--radius-lg);height:200px}body{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E"), radial-gradient(circle at 15% 20%, color-mix(in srgb, var(--accent) 3%, transparent) 0, transparent 40%), radial-gradient(circle at 85% 60%, color-mix(in srgb, var(--accent-warm) 3%, transparent) 0, transparent 45%);background-repeat:repeat,no-repeat,no-repeat;background-size:120px 120px,auto,auto}[data-theme=dark] body{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E"), radial-gradient(circle at 15% 20%, color-mix(in srgb, var(--accent) 4%, transparent) 0, transparent 40%), radial-gradient(circle at 85% 60%, color-mix(in srgb, var(--accent-warm) 4%, transparent) 0, transparent 45%);background-repeat:repeat,no-repeat,no-repeat;background-size:120px 120px,auto,auto}.page-head{text-align:center;max-width:820px;margin:0 auto;padding:48px 20px 8px}.page-head h1{margin:0 0 8px;font-size:34px}.page-head .sub{color:var(--text-secondary);text-align:center;max-width:640px;margin:0 auto}.hero-eyebrow,.eyebrow{letter-spacing:.26em;text-transform:uppercase;color:var(--accent-warm);margin:0 0 12px;font-size:11px;font-weight:600}.page-head .hero-eyebrow,.page-head .eyebrow{text-align:center}.hero{text-align:center;color:var(--text-primary);border-bottom:1px solid var(--border);background:radial-gradient(90% 70% at 50% 0%, color-mix(in srgb, var(--accent) 6%, transparent) 0%, transparent 70%), linear-gradient(180deg, color-mix(in srgb, var(--accent-soft) 55%, var(--bg-page)) 0%, var(--bg-page) 100%);padding:56px 40px 44px;position:relative}.hero:after{content:"";background:var(--border);height:1px;position:absolute;bottom:-5px;left:0;right:0}.hero h1{margin:0 0 14px;font-size:38px}.hero .hero-sub,.hero .sub{color:var(--text-secondary);max-width:640px;margin:14px auto;font-size:15px}.chapter-roman{font-family:var(--font-heading);font-variant-numeric:oldstyle-nums;letter-spacing:.04em;font-weight:700;line-height:1}.book-margin{position:relative}.book-margin:before{content:"";background:var(--border);width:1px;position:absolute;top:0;bottom:0;left:0}.rule-double{border-bottom:3px double var(--border);padding-bottom:8px}.skip-link{z-index:1000;background:var(--accent);color:#fff;border-radius:0 0 6px 6px;padding:8px 16px;font-size:13px;text-decoration:none;transition:top .2s;position:absolute;top:-40px;left:8px}.skip-link:focus{top:0}.lang-switch{letter-spacing:.5px;border-color:var(--accent);width:auto;color:var(--accent);padding:0 10px;font-size:12px;font-weight:600}.back-top{z-index:50;border:1px solid var(--border);background:var(--bg-card);width:40px;height:40px;color:var(--text-secondary);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;transition:all .2s;display:flex;position:fixed;bottom:32px;right:32px;box-shadow:0 2px 8px #00000014}.back-top:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px);box-shadow:0 4px 14px #0000001f}.hamburger{font-size:18px;display:none}.nav-overlay{display:none}@media (width<=768px){.hamburger{display:inline-flex}.museum-nav{background:var(--bg-card);border-bottom:1px solid var(--border);z-index:100;flex-direction:column;max-height:calc(100vh - 48px);padding:8px 0;display:none;position:absolute;top:48px;left:0;right:0;overflow-y:auto}.museum-nav.nav-open{display:flex}.museum-nav .nav-sep{display:none}.museum-nav a{border:none;border-radius:0;padding:10px 20px}.nav-overlay{z-index:99;background:#0000004d;display:block;position:fixed;inset:0}}@media (width<=480px){.app-subtitle{display:none}.header-left{gap:8px}.app-brand{letter-spacing:.2px;font-size:15px}}
