/*! © 2026 昆明理工大学 伍亮、清华大学 南策文 版权所有 / Liang Wu (KUST) & Ce-Wen Nan (THU). All Rights Reserved. · mse3d.com */
:root{--bg: #e6e1d6;--paper: #f8f6f1;--paper-hi: #ffffff;--card: #ffffff;--card-2: #f3efe6;--text: #14223a;--sub: #3d4a5e;--muted: #7b8597;--line: #e3ddd1;--line-2: #cfc6b5;--gold: #a5762a;--gold-soft: rgba(165, 118, 42, 0.1);--seal: #b5332b;--accent: #0f766e;--accent-soft: rgba(15, 118, 110, 0.1);--pos: #cc4c41;--neg: #1d79a7;--core: #c17c26;--field: #7667b4;--teal: #12857f;--neutral: #6b7686;--good: #15803d;--bad: #dc2626;--shadow: 0 1px 2px rgba(20, 34, 58, 0.05), 0 10px 28px rgba(20, 34, 58, 0.08);--shadow-2: 0 2px 8px rgba(20, 34, 58, 0.08), 0 28px 70px rgba(20, 34, 58, 0.22);--font: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", "Noto Sans SC", sans-serif;--mono: "Fira Code", ui-monospace, Consolas, monospace;--text-main: #14223a;--text-sub: #3d4a5e;--panel-bg: rgba(255, 255, 255, 0.92);--panel-border: rgba(20, 34, 58, 0.1);--panel-shadow: 0 10px 30px rgba(20, 34, 58, 0.12);color-scheme:light;}html.dark{--bg: #05080f;--paper: #0c1322;--paper-hi: #13203a;--card: #111a2c;--card-2: #0f1728;--text: #eef2f7;--sub: #c3ccda;--muted: #8190a6;--line: rgba(255, 255, 255, 0.08);--line-2: rgba(255, 255, 255, 0.17);--gold: #d9a95a;--gold-soft: rgba(217, 169, 90, 0.12);--seal: #d4483d;--accent: #22b8cf;--accent-soft: rgba(34, 184, 207, 0.14);--pos: #ff6c5d;--neg: #65addc;--core: #ffb462;--field: #ac9be3;--teal: #6acbc4;--neutral: #b7c0cc;--good: #34d399;--bad: #f87171;--shadow: 0 1px 2px rgba(0, 0, 0, 0.3), 0 12px 32px rgba(0, 0, 0, 0.32);--shadow-2: 0 28px 70px rgba(0, 0, 0, 0.55);--text-main: #eef2f7;--text-sub: #a0abc4;--panel-bg: rgba(15, 23, 42, 0.65);--panel-border: rgba(255, 255, 255, 0.09);--panel-shadow: none;color-scheme:dark;}html,body{height:100%;margin:0;}body{background:var(--bg);color:var(--text);font-family:var(--font);overflow:hidden;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;}#stage{position:absolute;overflow:hidden;background:radial-gradient(130% 90% at 50% -10%,var(--paper-hi) 0%,var(--paper) 58%);box-shadow:0 0 0 1px var(--line),0 30px 80px rgba(0,0,0,0.18);font-size:20px;line-height:1.55;}.slide{position:absolute;inset:0;box-sizing:border-box;padding:2.3em 3.4em 2.9em;display:flex;flex-direction:column;visibility:hidden;opacity:0;transform:translateY(0.6em);transition:opacity 0.4s ease,transform 0.5s cubic-bezier(0.2,0.7,0.2,1),visibility 0s linear 0.4s;}.slide.cur{visibility:visible;opacity:1;transform:none;transition:opacity 0.4s ease,transform 0.5s cubic-bezier(0.2,0.7,0.2,1);}.sec{display:flex;align-items:center;gap:0.75em;font-size:0.64em;font-weight:700;letter-spacing:0.2em;color:var(--gold);}.sec::before{content:"";flex:0 0 2.4em;height:2px;background:currentColor;}.slide h2{margin:0.32em 0 0.7em;font-size:2.02em;font-weight:800;line-height:1.22;letter-spacing:0.01em;color:var(--text);text-wrap:balance;}.en{font-size:0.5em;font-weight:500;color:var(--muted);letter-spacing:0.03em;margin-left:0.6em;}.foot{position:absolute;left:3.4em;right:3.4em;bottom:1.15em;display:flex;justify-content:space-between;align-items:baseline;font-size:0.56em;letter-spacing:0.08em;color:var(--muted);pointer-events:none;}.foot .pn{font:600 1em var(--mono);letter-spacing:0.04em;color:var(--muted);}.foot .pn b{color:var(--gold);font-weight:700;}.txt{font-size:1.08em;min-width:0;color:var(--sub);}.txt p{margin:0 0 0.6em;}.pts{list-style:none;margin:0;padding:0;}.pts>li{position:relative;padding-left:1.1em;margin:0 0 0.6em;}.pts>li::before{content:"";position:absolute;left:0.1em;top:0.68em;width:0.36em;height:0.36em;border-radius:50%;background:var(--gold);}.pts.sm,.small{font-size:0.9em;}b.t{font-weight:700;color:var(--text);}.sub{color:var(--sub);}.muted{color:var(--muted);}.c-pos{color:var(--pos);}.c-neg{color:var(--neg);}.c-core{color:var(--core);}.c-acc{color:var(--accent);}.num{font-variant-numeric:tabular-nums;}.mt{margin-top:0.8em;}.cols{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2.2em;}.cols.tm{grid-template-columns:minmax(0,0.8fr) minmax(0,1.2fr);}.cols.mt2{grid-template-columns:minmax(0,1.25fr) minmax(0,0.75fr);}.cols.top{flex:none;align-items:start;}.stack{display:flex;flex-direction:column;gap:0.95em;min-height:0;}.grow{flex:1 1 auto;min-height:0;}.card{background:var(--card);border:1px solid var(--line);border-radius:0.75em;padding:0.9em 1.1em;box-sizing:border-box;box-shadow:var(--shadow);}.key{border-left:0.2em solid var(--gold);background:var(--gold-soft);border-radius:0 0.5em 0.5em 0;padding:0.62em 1em;color:var(--text);}.key.cool{border-left-color:var(--accent);background:var(--accent-soft);}.key.warm{border-left-color:var(--pos);background:color-mix(in srgb,var(--pos) 9%,transparent);}.tag{display:inline-block;padding:0.08em 0.6em;border-radius:1em;font-size:0.6em;font-weight:700;letter-spacing:0.08em;vertical-align:0.3em;color:var(--gold);border:1px solid currentColor;}.tbl{width:100%;border-collapse:collapse;font-size:0.86em;color:var(--sub);}.tbl th,.tbl td{padding:0.48em 0.6em;border-bottom:1px solid var(--line);text-align:left;}.tbl tr:first-child th{border-bottom:1.5px solid var(--text);}.tbl th{font-size:0.8em;font-weight:700;letter-spacing:0.06em;color:var(--text);}.tbl td.r,.tbl th.r{text-align:right;}.eq{font-size:1.12em;text-align:center;margin:0.3em 0;color:var(--text);}.big-eq{font-size:1.65em;text-align:center;color:var(--text);}.step{opacity:0;transform:translateY(0.4em);transition:opacity 0.35s ease,transform 0.35s ease;}.step.on{opacity:1;transform:none;}.model{position:relative;display:flex;flex-direction:column;min-height:0;border-radius:0.8em;border:1px solid var(--line);background:var(--card);box-shadow:var(--shadow);overflow:hidden;}.mhead{display:flex;align-items:center;gap:0.55em;padding:0.4em 0.5em 0.4em 0.85em;font-size:0.6em;color:var(--muted);border-bottom:1px solid var(--line);background:var(--card-2);}.mhead .mbadge{padding:0.12em 0.55em;border-radius:0.3em;background:var(--text);color:var(--paper-hi);font-weight:800;letter-spacing:0.08em;}.mhead .mname{font-weight:700;color:var(--text);letter-spacing:0.04em;}.mhead .mid{font-family:var(--mono);}.mhead .gap{flex:1;}.mhead button,.mhead a{display:inline-flex;align-items:center;gap:0.35em;padding:0.28em 0.75em;border-radius:0.45em;border:1px solid var(--line-2);background:var(--card);color:var(--sub);font:inherit;font-weight:600;text-decoration:none;cursor:pointer;}.mhead button:hover,.mhead a:hover{color:var(--text);border-color:var(--accent);}.mhead svg{width:1.15em;height:1.15em;}.mbody{position:relative;flex:1 1 auto;min-height:0;}.mbody iframe{position:absolute;inset:0;width:100%;height:100%;border:0;opacity:0;transition:opacity 0.45s ease;}.model.ready .mbody iframe{opacity:1;}.mcap{padding:0.45em 0.95em;font-size:0.58em;color:var(--muted);border-top:1px solid var(--line);background:var(--card-2);}.mload{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0.7em;font-size:0.68em;color:var(--muted);}.mload i{width:1.8em;height:1.8em;border-radius:50%;border:2px solid var(--line-2);border-top-color:var(--accent);animation:deck-spin 0.9s linear infinite;}.model.ready .mload{display:none;}@keyframes deck-spin{to{transform:rotate(360deg);}}.model.max{position:absolute;inset:0.9em;z-index:40;box-shadow:var(--shadow-2);}.wbox{position:relative;min-height:0;}.wbox canvas{display:block;width:100%;height:100%;touch-action:none;}.chips{display:flex;flex-wrap:wrap;gap:0.4em;}.chip{font:inherit;font-size:0.76em;font-weight:600;padding:0.32em 0.85em;border-radius:0.5em;border:1px solid var(--line-2);background:var(--card);color:var(--sub);cursor:pointer;transition:border-color 0.2s,color 0.2s,background 0.2s,box-shadow 0.2s;}.chip:hover{color:var(--text);border-color:var(--accent);}.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);}.chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}.rng{display:flex;align-items:center;gap:0.7em;font-size:0.8em;color:var(--sub);}.rng input[type=range]{flex:1 1 auto;accent-color:var(--accent);min-width:0;}.readout{font-size:0.82em;color:var(--sub);font-variant-numeric:tabular-nums;}.readout b{color:var(--text);}.slide.divider{flex-direction:row;align-items:center;gap:2.4em;padding-left:5em;}.divider .big-n{font:800 11.5em/0.8 Inter,var(--font);letter-spacing:-0.04em;color:transparent;-webkit-text-stroke:2px var(--gold);opacity:0.85;}.divider .dv{display:flex;flex-direction:column;gap:0.5em;min-width:0;}.divider h2{margin:0.1em 0 0.3em;font-size:2.8em;}.divider .dv-sub{font-size:1.05em;color:var(--sub);max-width:26em;}.divider ol{list-style:none;margin:1em 0 0;padding:0;counter-reset:d;min-width:24em;}.divider ol li{counter-increment:d;display:flex;align-items:baseline;gap:0.8em;padding:0.5em 0;border-bottom:1px solid var(--line);font-size:1.02em;color:var(--text);}.divider ol li::before{content:counter(d,decimal-leading-zero);font:600 0.75em var(--mono);color:var(--gold);}.divider ol li span{margin-left:auto;font:500 0.72em var(--mono);color:var(--muted);}#ui{position:fixed;right:max(14px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;gap:2px;padding:4px;font:13px/1 var(--font);background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-2);transition:opacity 0.3s ease,transform 0.3s ease;}#ui.idle{opacity:0;transform:translateY(6px);pointer-events:none;}#ui button{position:relative;width:34px;height:34px;display:grid;place-items:center;padding:0;border:0;border-radius:9px;background:transparent;color:var(--sub);cursor:pointer;}#ui button:hover{background:var(--accent-soft);color:var(--text);}#ui button.on{background:var(--text);color:var(--paper-hi);}#ui button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}#ui svg{width:18px;height:18px;}#ui .pg{width:auto;min-width:62px;padding:0 6px;font:600 12.5px/1 var(--mono);letter-spacing:0.02em;}#ui .sep{width:1px;height:20px;margin:0 3px;background:var(--line-2);}#ui .xx img{width:26px;height:26px;border-radius:50%;display:block;box-shadow:0 0 0 1.5px var(--line-2);}#ui .xx.on{background:var(--gold-soft);}#pens{display:none;gap:5px;padding:0 5px;}#ui.pen #pens{display:flex;}#pens i{width:16px;height:16px;border-radius:50%;cursor:pointer;box-shadow:0 0 0 2px var(--card),0 0 0 3px transparent;}#pens i.on{box-shadow:0 0 0 2px var(--card),0 0 0 3.5px var(--text);}#tools{position:fixed;top:max(12px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));z-index:61;display:flex;gap:4px;padding:4px;font:13px/1 var(--font);background:var(--card);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);opacity:0.88;transition:opacity 0.2s ease;}#tools:hover,#tools:focus-within{opacity:1;}#tools button{width:36px;height:36px;display:grid;place-items:center;padding:0;border:0;border-radius:9px;background:transparent;color:var(--sub);cursor:pointer;}#tools button:hover{background:var(--accent-soft);color:var(--text);}#tools button.on{background:var(--text);color:var(--paper-hi);}#tools button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;}#tools svg{width:19px;height:19px;}#tools .xx img{width:28px;height:28px;border-radius:50%;display:block;box-shadow:0 0 0 1.5px var(--line-2);}#tools .xx.on{background:var(--gold-soft);}body.deck-xx-off .xx-float,body.deck-xx-off .xx-panel{display:none !important;}#prog{position:absolute;left:0;bottom:0;height:3px;background:var(--gold);opacity:0.85;transition:width 0.35s ease;z-index:30;}#ink{position:absolute;z-index:50;pointer-events:none;touch-action:none;}html.inking #ink{pointer-events:auto;cursor:crosshair;}html.lasering #ink{pointer-events:auto;cursor:none;}.pop{position:fixed;right:max(14px,env(safe-area-inset-right));top:calc(max(12px,env(safe-area-inset-top)) + 54px);z-index:65;width:330px;max-width:calc(100vw - 28px);box-sizing:border-box;padding:16px 16px 14px;font:13.5px/1.5 var(--font);color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow-2);}.pop[hidden]{display:none;}.pop h4{margin:0 0 10px;display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800;}.pop h4 small{margin-left:auto;font-size:11.5px;font-weight:500;color:var(--muted);}.pop .row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:8px 0;}.pop .lab{font-size:12px;color:var(--muted);}.pop input[type=text],.pop input[type=number],.pop textarea{box-sizing:border-box;width:100%;padding:7px 9px;font:inherit;color:var(--text);background:var(--paper);border:1px solid var(--line-2);border-radius:8px;}.pop input[type=number]{width:76px;}.pop textarea{height:92px;resize:vertical;}.pop .chip{font-size:12.5px;}.pop .btn{padding:7px 14px;font:inherit;font-weight:700;color:var(--paper-hi);background:var(--text);border:0;border-radius:9px;cursor:pointer;}.pop .btn.ghost{color:var(--sub);background:transparent;border:1px solid var(--line-2);}.pop .note{font-size:11.5px;color:var(--muted);}.pop .err{font-size:12px;color:var(--bad);}#timer{position:fixed;top:max(12px,env(safe-area-inset-top));right:calc(max(12px,env(safe-area-inset-right)) + 172px);z-index:62;display:flex;align-items:center;gap:10px;padding:8px 10px 8px 16px;font:800 34px/1 Inter,var(--font);font-variant-numeric:tabular-nums;letter-spacing:0.02em;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-2);cursor:pointer;user-select:none;}#timer[hidden]{display:none;}#timer .tbar{position:absolute;left:14px;right:14px;bottom:5px;height:3px;border-radius:2px;background:var(--line);overflow:hidden;}#timer .tbar i{display:block;height:100%;background:var(--gold);transition:width 0.25s linear;}#timer.warn{color:var(--bad);}#timer.warn .tbar i{background:var(--bad);}#timer.done{animation:t-pulse 0.9s ease-in-out infinite;}#timer.paused{opacity:0.6;}#timer .tx{width:26px;height:26px;display:grid;place-items:center;font:600 16px/1 var(--font);color:var(--muted);border-radius:8px;}#timer .tx:hover{background:var(--accent-soft);color:var(--text);}@keyframes t-pulse{50%{transform:scale(1.06);}}.stagebox{position:fixed;inset:0;z-index:68;display:flex;align-items:center;justify-content:center;background:rgba(10,16,28,0.38);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);font-family:var(--font);}.stagebox[hidden]{display:none;}.sb-card{position:relative;box-sizing:border-box;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto;padding:28px 32px;color:var(--text);background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow-2);}.sb-x{position:absolute;top:12px;right:12px;width:34px;height:34px;border:0;border-radius:10px;background:transparent;color:var(--muted);font-size:20px;cursor:pointer;}.sb-x:hover{background:var(--accent-soft);color:var(--text);}.sb-kick{font-size:12px;font-weight:800;letter-spacing:0.2em;color:var(--gold);}.rc-names{display:flex;flex-wrap:wrap;justify-content:center;gap:14px 26px;margin:22px 0 10px;min-width:420px;}.rc-names b{font:800 clamp(40px,7vw,92px)/1.1 var(--font);color:var(--text);letter-spacing:0.04em;}.rc-names.rolling b{color:var(--muted);}.rc-meta{text-align:center;font-size:13px;color:var(--muted);}.pl-wrap{display:grid;grid-template-columns:auto minmax(360px,560px);gap:clamp(24px,3vw,44px);align-items:center;}.pl-qr{display:flex;flex-direction:column;align-items:center;gap:8px;}.pl-qr canvas{width:clamp(220px,24vw,340px);height:auto;aspect-ratio:1;image-rendering:pixelated;border-radius:10px;background:#fff;box-shadow:0 0 0 1px var(--line);}.pl-code{font:800 22px/1 var(--mono);letter-spacing:0.12em;color:var(--text);}.pl-url{font-size:11.5px;color:var(--muted);word-break:break-all;max-width:240px;text-align:center;}.pl-q{margin:6px 0 16px;font-size:clamp(18px,1.8vw,28px);font-weight:800;line-height:1.35;}.pl-bars{display:flex;flex-direction:column;gap:10px;}.pl-bar{display:grid;grid-template-columns:30px minmax(0,1fr) 104px;align-items:center;gap:10px;font-size:clamp(14px,1.2vw,18px);}.pl-bar .k{font:800 15px var(--mono);color:var(--sub);}.pl-bar .t{position:relative;height:clamp(32px,4.4vh,46px);border-radius:8px;background:var(--card-2);overflow:hidden;}.pl-bar .t i{position:absolute;inset:0 auto 0 0;width:0;background:var(--accent-soft);border-right:3px solid var(--accent);transition:width 0.5s cubic-bezier(0.2,0.7,0.2,1);}.pl-bar .t span{position:absolute;left:12px;top:50%;transform:translateY(-50%);font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;right:8px;}.pl-bar .n{font:700 15px var(--mono);text-align:right;white-space:nowrap;color:var(--text);}.pl-bar.right .t i{background:color-mix(in srgb,var(--good) 16%,transparent);border-right-color:var(--good);}.pl-bar.right .k{color:var(--good);}.pl-foot{margin-top:16px;display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted);}.pl-foot .btn{margin-left:auto;padding:8px 16px;font:inherit;font-weight:700;color:var(--paper-hi);background:var(--text);border:0;border-radius:10px;cursor:pointer;}#ov{position:fixed;inset:0;z-index:70;overflow:auto;box-sizing:border-box;padding:max(28px,env(safe-area-inset-top)) max(28px,env(safe-area-inset-right)) 40px max(28px,env(safe-area-inset-left));display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:14px;align-content:start;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-family:var(--font);}#ov[hidden]{display:none;}.ovi{aspect-ratio:16 / 9;box-sizing:border-box;padding:12px 14px;display:flex;flex-direction:column;gap:6px;text-align:left;border-radius:10px;border:1px solid var(--line);background:var(--paper);color:var(--text);font:inherit;cursor:pointer;box-shadow:var(--shadow);}.ovi:hover,.ovi:focus-visible{border-color:var(--accent);outline:none;}.ovi.cur{border-color:var(--gold);box-shadow:0 0 0 2px var(--gold);}.ovi .n{font:600 12px/1 var(--mono);color:var(--muted);}.ovi .s{font-size:11px;color:var(--gold);letter-spacing:0.1em;font-weight:700;}.ovi .h{font-size:15px;font-weight:800;line-height:1.35;}.ovi .b{margin-top:auto;display:flex;gap:6px;font-size:11px;color:var(--sub);}.ovi .b span{padding:1px 7px;border:1px solid var(--line-2);border-radius:9px;}#pc-hint{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(10,16,28,0.45);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);font-family:var(--font);}#pc-hint[hidden]{display:none;}#pc-hint .box{max-width:320px;padding:22px 22px 18px;border-radius:16px;background:var(--card);color:var(--text);box-shadow:var(--shadow-2);text-align:center;}#pc-hint h4{margin:0 0 8px;font-size:18px;font-weight:800;}#pc-hint p{margin:0 0 16px;font-size:14px;line-height:1.6;color:var(--sub);}#pc-hint button{padding:9px 18px;font:inherit;font-size:14px;font-weight:700;color:var(--paper-hi);background:var(--text);border:0;border-radius:10px;cursor:pointer;}#black{position:fixed;inset:0;z-index:80;background:#000;display:none;cursor:none;}#black.on{display:block;}#black.white{background:#fff;}html.portrait .slide{display:block;overflow-y:auto;overflow-x:hidden;padding:1.4em 1.1em 5.5em;-webkit-overflow-scrolling:touch;}html.portrait .cols,html.portrait .cols.tm,html.portrait .cols.mt2{display:flex;flex-direction:column;gap:1.1em;}html.portrait .model{height:30em;flex:none;}html.portrait .wbox.tall{height:22em;flex:none;}html.portrait .foot{display:none;}html.portrait .model.max{position:fixed;inset:0;border-radius:0;z-index:75;}html.portrait .slide.divider{display:flex;flex-direction:column;align-items:flex-start;padding-left:1.1em;gap:0.5em;}html.portrait .divider .big-n{font-size:6em;}html.portrait .divider ol{min-width:0;width:100%;}html.portrait #ui .desk,html.portrait #tools .desk{display:none;}html.portrait #timer{right:calc(max(12px,env(safe-area-inset-right)) + 92px);}html.portrait #timer{font-size:26px;}
