:root{color-scheme:dark;--bg:#0b1216;--surface:#111d24;--panel:#15242c;--hover:#1c3039;--line:#29404a;--line2:#36515b;--fg:#edf4f1;--muted:#9aafb2;--faint:#6b858b;--mint:#93e7bc;--amber:#f0be7b;--red:#f29491;--blue:#90baf5;--radius:16px;font-family:"Segoe UI","Microsoft YaHei","PingFang SC",system-ui,sans-serif;font-size:14px}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);min-height:100vh}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.4}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px solid var(--mint);outline-offset:3px}a{color:var(--mint);text-underline-offset:4px}button{touch-action:manipulation}h1,h2,h3,p{margin:0}.hidden,[hidden]{display:none!important}.mono,code{font-family:"Cascadia Code",Consolas,monospace}.app{max-width:1660px;margin:auto;padding:0 30px}.topbar{height:91px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:20px}.brand{display:flex;align-items:center;gap:14px}.brandMark{width:43px;height:43px;display:grid;grid-template-columns:repeat(3,1fr);gap:3px;padding:6px;border:1px solid #72c7a380;border-radius:11px;background:#15372e}.brandMark i{background:#88dcb7;border-radius:1px}.brandMark i:nth-child(2),.brandMark i:nth-child(6),.brandMark i:nth-child(7){background:#88dcb72a}.brandName{font-size:21px;letter-spacing:.5px;font-weight:750}.brandSub{color:var(--faint);font-size:10px;letter-spacing:2px;margin-top:4px}.version{font-size:11px;color:var(--mint);border:1px solid #385b4c;background:#19382c;border-radius:6px;padding:3px 6px;vertical-align:middle;margin-left:7px}.topRight{display:flex;align-items:center;gap:19px;color:var(--muted);font-size:12px}.online{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}.dot{width:6px;height:6px;background:var(--mint);border-radius:50%;box-shadow:0 0 12px #93e7bc50}.nav{display:flex;gap:28px;margin-bottom:25px;border-bottom:1px solid var(--line);overflow:auto}.nav button{white-space:nowrap;background:none;border:0;border-bottom:2px solid transparent;color:var(--muted);padding:20px 2px 15px;font-size:13px;font-weight:650}.nav button .num{color:var(--faint);font-size:11px;margin-right:8px}.nav button.active{color:var(--mint);border-color:var(--mint)}.nav button.active .num{color:var(--mint)}.intro{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.intro h1{font-size:clamp(23px,2.6vw,32px);letter-spacing:-.8px;font-weight:650}.intro h1 em{font-style:normal;color:var(--mint)}.intro p{color:var(--muted);line-height:1.7;margin-top:9px;font-size:13px}.eyebrow{color:var(--amber);font-size:10px;letter-spacing:2px;font-weight:700;margin-bottom:8px}.smallBadge{font-size:11px;white-space:nowrap;color:var(--muted);background:var(--surface);border:1px solid var(--line);padding:7px 10px;border-radius:7px}.workbench{display:grid;grid-template-columns:190px minmax(0,1fr) 280px;gap:18px;align-items:start}.card{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);min-width:0;overflow:hidden}.pad{padding:20px}.cardLabel{font-size:10px;color:var(--faint);letter-spacing:1.6px;font-weight:700}.cardHeading{font-size:14px;font-weight:650}.sideHead{margin-bottom:13px;display:flex;align-items:center;justify-content:space-between}.componentList{display:grid;gap:8px}.compButton{display:flex;align-items:center;gap:11px;padding:12px 11px;width:100%;text-align:left;border:1px solid transparent;border-radius:11px;background:none;color:var(--muted);transition:background .15s,border-color .15s}.compButton:hover{background:var(--hover)}.compButton.active{background:#1b3c32;border-color:#46715c;color:var(--fg)}.compSymbol{font-family:Consolas,monospace;width:30px;height:31px;display:grid;place-items:center;color:var(--mint);border:1px solid #38594c;border-radius:7px;font-size:18px;flex-shrink:0}.compButton strong{display:block;font-size:13px;font-weight:650}.compButton small{display:block;font-size:9px;letter-spacing:1px;margin-top:4px;color:var(--faint)}.compButton.active small{color:#8fc0a6}.sideNote{font-size:11px;color:var(--faint);line-height:1.8;margin-top:17px}.sep{height:1px;background:var(--line);margin:18px 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--line2);background:#1c3038;color:var(--fg);font-size:12px;font-weight:600;border-radius:8px;padding:9px 12px;min-height:35px;white-space:nowrap;transition:background .15s}.btn:hover{background:#29434b}.btn.primary{background:var(--mint);color:#10261b;border-color:var(--mint)}.btn.primary:hover{background:#b9f6d5}.btn.ghost{background:transparent;color:var(--muted)}.btn.danger{color:var(--red);border-color:#734641;background:#39262a}.btn.small{padding:6px 9px;min-height:29px;font-size:11px}.btn.wide{width:100%}.btn.on{border-color:var(--mint);color:var(--mint);background:#214333}.btnGroup{display:flex;flex-wrap:wrap;gap:8px}.stageTop{padding:20px 21px 17px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;gap:12px;align-items:center}.stageTop h2{font-size:21px;font-weight:600;margin-top:4px}.stageTop h2 span{color:var(--faint);font-size:12px;font-family:Consolas,monospace;margin-left:8px;font-weight:500}.gateNumber{font-family:Consolas,monospace;color:var(--mint);font-size:32px;font-weight:300;letter-spacing:-3px}.stageTools{padding:13px 18px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.stageTools .spacer{flex:1}.switch{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--muted);white-space:nowrap}input[type=checkbox]{accent-color:var(--mint);width:14px;height:14px}.portStrip{padding:0 18px 15px;display:flex;gap:12px;flex-wrap:wrap}.portControl{display:flex;align-items:center;gap:8px;padding:7px 8px;background:#0d191f;border:1px solid var(--line);border-radius:8px;font-size:12px}.portName{font-family:Consolas,monospace;font-weight:700;color:var(--amber);min-width:15px}.portControl.out .portName{color:var(--mint)}.portRole{font-size:9px;color:var(--faint)}.segments{display:flex;gap:2px}.segments button{width:25px;height:25px;border:1px solid transparent;border-radius:5px;background:transparent;color:var(--faint);font:12px Consolas,monospace}.segments button:hover{background:#263d43;color:var(--fg)}.segments button.selected{color:var(--fg);background:#31454d;border-color:#496269}.segments button.selected[data-value='1']{color:#0c2519;background:var(--mint);border-color:var(--mint)}.portRead{font-size:13px;font-weight:750;min-width:16px;text-align:center;font-family:Consolas,monospace;color:var(--mint)}.viewport{position:relative;overflow:auto;max-height:530px;min-height:345px;background-color:#0b161d;background-image:radial-gradient(#31505c70 .7px,transparent .7px);background-size:18px 18px;border-top:1px solid #243e4780;border-bottom:1px solid #243e4780;scrollbar-color:#36535c #0d191f;display:flex;align-items:flex-start}.viewport canvas{display:block;flex:none;margin:auto;image-rendering:pixelated;touch-action:pan-x pan-y;outline:none}.buildViewport{min-height:460px;max-height:560px}.buildViewport canvas{margin:0}.boardBottom{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 18px;font-size:10px;color:var(--faint);flex-wrap:wrap}.boardBottom label{display:flex;align-items:center;gap:7px}input[type=range]{accent-color:var(--mint);width:90px;height:13px}.legend{display:flex;gap:13px;flex-wrap:wrap}.legend i{width:7px;height:7px;border-radius:2px;display:inline-block;margin-right:4px}.notice{margin:0 16px 16px;padding:12px 14px;border:1px solid var(--line);background:#172a32;border-radius:9px;line-height:1.7;font-size:12px;color:#bdd0d2;min-height:45px}.notice.ok{border-color:#355c4d;background:#163128;color:#b4e9c9}.notice.fail{border-color:#6e4545;background:#382428;color:#f8b4b3}.notice.pending{border-color:#6a5237;background:#332d21;color:#eacc9f}.infoText{color:var(--muted);font-size:12px;line-height:1.9}.equation{color:var(--mint);font-family:Consolas,monospace;font-size:18px;background:#112a23;border:1px solid #2c5140;border-radius:9px;padding:13px;margin:14px 0}.truth{width:100%;border-collapse:collapse;font:12px Consolas,monospace;margin-top:12px;text-align:center}.truth th{color:var(--faint);font-size:11px;font-weight:500;border-bottom:1px solid var(--line);padding:8px}.truth td{padding:9px;border-bottom:1px solid #223b4360;color:var(--muted)}.truth tbody tr{cursor:pointer}.truth tbody tr:hover{background:var(--hover)}.truth tbody tr.current{background:#224536}.truth tbody tr.current td{color:var(--mint)}.truth td.out{color:var(--mint);font-weight:700}.subtle{font-size:10px;color:var(--faint);line-height:1.7;margin-top:9px}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:15px 0}.stat{border:1px solid var(--line);padding:12px 8px;border-radius:9px;text-align:center}.stat b{font:22px Consolas,monospace;color:var(--fg);display:block}.stat span{display:block;font-size:9px;color:var(--faint);margin-top:6px}.details{border-top:1px solid var(--line);padding-top:14px}.details summary{color:var(--muted);font-size:12px;cursor:pointer;user-select:none}.constraintList{font:11px/1.9 Consolas,monospace;color:var(--muted);margin-top:11px;max-height:200px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}.infoSteps{display:grid;gap:12px}.infoStep{display:flex;gap:9px;color:var(--muted);font-size:11px;line-height:1.8}.stepIndex{color:var(--mint);font:11px Consolas,monospace;margin-top:4px}.miniToolGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.input,.select,.textarea{background:#0e1b22;border:1px solid var(--line2);border-radius:8px;color:var(--fg);padding:9px 10px;min-width:0;max-width:100%;font-size:12px}.input{width:100%}.select{width:100%}.textarea{width:100%;resize:vertical;line-height:1.9}.label{display:block;font-size:11px;color:var(--muted);margin:13px 0 6px}.paintDigits{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;margin-top:7px}.paintDigits button{padding:5px;min-width:0}.selectedInfo{font:12px/1.8 Consolas,monospace;background:#0e1a20;padding:12px;border-radius:8px;border:1px solid var(--line);margin-top:12px;color:var(--muted)}.editorCaption{padding:10px 18px;color:var(--amber);font-size:11px;background:#2d281b;border-top:1px solid #5c4b2a}.statusFooter{display:flex;justify-content:space-between;align-items:center;gap:16px;color:var(--faint);font-size:10px;padding:22px 0 25px;line-height:1.8}.statusFooter .testBadge{color:var(--mint);white-space:nowrap}.extraRow{display:flex;gap:7px;flex-wrap:wrap;margin-top:12px}.satLayout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px}.satHead{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:15px}.satActions{display:flex;gap:8px;flex-wrap:wrap;margin:13px 0}.varButtons{display:flex;gap:9px;flex-wrap:wrap;margin:20px 0}.varBtn{padding:13px 17px;min-width:91px;border:1px solid var(--line2);border-radius:9px;background:#23343d;color:var(--muted);font-family:Consolas,monospace;font-size:16px}.varBtn.v1{color:var(--mint);background:#1a3e30;border-color:#49785b}.varBtn.v0{color:var(--amber);background:#392e20;border-color:#705a3c}.clauseGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px;margin-top:17px}.clauseCard{background:#15262e;border:1px solid var(--line);border-radius:11px;padding:14px}.clauseCard.good{border-color:#477759;background:#163025}.clauseCard.bad{border-color:#80504f;background:#362429}.clauseTop{display:flex;justify-content:space-between;font-size:10px;color:var(--faint);margin-bottom:13px}.clauseGood{color:var(--mint)}.clauseBad{color:var(--red)}.lits{display:flex;align-items:center;gap:7px;font:15px Consolas,monospace}.lit{border-radius:6px;background:#263943;color:var(--muted);padding:8px 10px}.lit.good{color:var(--mint);background:#26533e}.lit.bad{color:var(--red);background:#4a2b2d}.graphFrame{overflow:auto;border:1px solid var(--line);border-radius:10px;background:#0e1b22;margin-top:18px}.graphFrame svg{display:block}.guideGrid{display:grid;grid-template-columns:1.2fr 1fr;gap:18px}.guideList{display:grid;gap:18px;margin-top:18px}.guideList h3{font-size:14px;margin-bottom:7px}.testLog{font:11px/1.8 Consolas,monospace;color:var(--muted);height:310px;overflow:auto;padding:12px;background:#0d191f;border:1px solid var(--line);border-radius:10px;margin-top:15px;white-space:pre-wrap}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,20px);background:#234135;border:1px solid #5a9276;border-radius:10px;padding:12px 20px;font-size:12px;color:#d1f6dc;box-shadow:0 10px 40px #0005;opacity:0;transition:opacity .15s,transform .15s;pointer-events:none;z-index:100;max-width:90vw}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.fail{background:#4b2c30;color:#ffd1cc;border-color:#a6696b}dialog{background:var(--surface);color:var(--fg);border:1px solid var(--line2);border-radius:16px;width:min(760px,92vw);padding:24px;box-shadow:0 30px 100px #0008}dialog::backdrop{background:#030b10c9;backdrop-filter:blur(4px)}dialog h2{font-size:20px}dialog .textarea{height:290px;font:11px/1.7 Consolas,monospace;white-space:pre;margin:15px 0}.dialogHead{display:flex;justify-content:space-between;align-items:center}.key{font:10px Consolas,monospace;background:#20343b;border:1px solid var(--line2);border-radius:4px;padding:2px 5px}.readout{border:1px solid var(--line);border-radius:10px;padding:15px;background:#101e24;margin:14px 0}.readout .big{font:34px Consolas,monospace;color:var(--mint)}.readout .caption{font-size:11px;color:var(--muted);margin-top:6px}.zero{color:var(--amber)}.pass{color:var(--mint)}.failText{color:var(--red)}.credits{font-size:11px;color:var(--faint);line-height:1.9}.srOnly{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(min-width:1450px){.workbench{grid-template-columns:210px minmax(0,1fr) 300px}.pad{padding:22px}}
@media(max-width:1120px){.app{padding:0 18px}.workbench{grid-template-columns:160px minmax(0,1fr)}.inspector{grid-column:2}.inspector .pad{display:grid;grid-template-columns:1fr 1fr;gap:16px}.inspector .pad>.sep{display:none}.inspector .pad>.details{grid-column:1/-1}.satLayout{grid-template-columns:1fr 250px}.compButton{padding:11px 7px}.pad{padding:15px}.topRight .helpLink{display:none}}
@media(max-width:760px){.app{padding:0 12px}.topbar{height:76px}.brandName{font-size:17px}.brandSub{font-size:8px;letter-spacing:1px}.topRight{font-size:10px;gap:8px}.brandMark{width:34px;height:34px}.version{font-size:9px}.nav{gap:20px;margin-bottom:20px}.nav button{font-size:12px;padding-top:16px}.intro{display:block}.intro h1{font-size:25px}.intro .smallBadge{display:none}.workbench{display:flex;flex-direction:column;gap:13px}.palette{width:100%}.palette .componentList{display:flex;overflow:auto;gap:5px}.palette .compButton{width:auto;min-width:107px;padding:9px}.palette .sideNote,.palette .sep,.palette .sideHead{display:none}.palette .compSymbol{width:26px;height:28px;font-size:15px}.palette .compButton small{font-size:8px}.palette .pad{padding:10px}.stage,.inspector{width:100%}.inspector .pad{display:block}.inspector .pad>.sep{display:block}.stageTop{padding:16px}.stageTools{padding:12px}.portStrip{padding-left:12px;padding-right:12px;gap:7px}.portControl{gap:5px;font-size:11px;padding:6px}.portRole{display:none}.viewport{min-height:290px;max-height:450px}.buildViewport{min-height:360px;max-height:460px}.satLayout,.guideGrid{grid-template-columns:1fr}.satHead{flex-wrap:wrap}.statusFooter{display:block}.statusFooter .testBadge{display:block;margin-top:5px}.satActions .btn{flex:1}.buildPalette .pad{display:grid;grid-template-columns:1fr 1fr;gap:12px}.buildPalette .componentList{flex-wrap:wrap;overflow:visible}.buildPalette .compButton{min-width:80px;flex:1}.buildPalette .componentList small{display:none}.buildPalette .componentList .compSymbol{display:none}.buildPalette .sideNote{display:block;margin-top:8px}.buildPalette .label{margin-top:8px}.boardBottom{padding:11px 12px}.guideGrid .pad{padding:19px}.brand{gap:9px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* V2.1 classic presentation. No circuit cell or constraint is changed here. */
:root{color-scheme:light;--bg:#f4f4ec;--surface:#c0c0c0;--panel:#c0c0c0;--hover:#dedede;--line:#858585;--line2:#777;--fg:#202020;--muted:#444;--faint:#585858;--mint:#075b35;--amber:#805100;--red:#a71f21;--blue:#000080;--radius:0px;font-family:Tahoma,"Microsoft YaHei",sans-serif;font-size:14px}
body{background:var(--bg)}.app{max-width:1600px;padding:0 22px}.topbar{height:80px;border-bottom:0;gap:12px}.brandMark{border-radius:0;border:2px outset #eee;background:#c0c0c0}.brandMark i{background:#000080;border-radius:0}.brandMark i:nth-child(2),.brandMark i:nth-child(6),.brandMark i:nth-child(7){background:#ddd}.brandName{font-weight:700;color:#000080}.brandSub{letter-spacing:1.3px;color:#555}.version{background:#d7d7d7;border:1px solid #999;border-radius:0;color:#333}.dot{background:#008000;box-shadow:none}.nav{gap:5px;border:0;padding:0 0 6px;margin-bottom:19px;overflow:auto}.nav button{padding:9px 17px;background:#c0c0c0;color:#333;border:2px outset #eee;border-radius:0}.nav button.active{border:2px inset #eee;background:#dedede;color:#000080}.nav button .num,.nav button.active .num{color:#666}.intro{margin-bottom:17px}.intro h1{font-size:27px;color:#111;letter-spacing:0;font-weight:700}.intro h1 em{color:#000080}.intro p{font-size:12px;margin-top:8px}.eyebrow{color:#555;letter-spacing:1.3px}.smallBadge{border-radius:0;background:#e8e8e4;border:1px solid #999;color:#333;padding:6px 9px}.workbench{gap:14px;grid-template-columns:186px minmax(0,1fr) 268px}.card{background:#c0c0c0;border:3px outset #eee;border-radius:0;box-shadow:none}.pad{padding:16px}.cardLabel{color:#555;letter-spacing:1px}.compButton,.compButton.active{border-radius:0;background:#c0c0c0;border:2px outset #eee;color:#111;padding:9px}.compButton.active{border:2px inset #eee;background:#dedede}.compButton small,.compButton.active small{color:#555}.compSymbol{background:#c0c0c0;border:1px inset #eee;border-radius:0;color:#000080}.btn,.btn.primary,.btn.ghost,.btn.danger,.btn.small,.btn.on{border:2px outset #eee;border-radius:0;background:#c0c0c0;color:#111;box-shadow:none;transition:none}.btn:hover,.btn.primary:hover{background:#d6d6d6}.btn:active,.btn.on{border-style:inset;background:#dedede}.btn.primary{font-weight:700;color:#000080}.btn.danger{color:#8d0000}.btn:disabled{opacity:.48}.stageTop{border-bottom:1px solid #888;padding:15px 17px;background:#c0c0c0}.stageTop h2{font-size:21px}.gateNumber{color:#000080}.stageTools{padding:11px 13px;gap:7px}.portStrip{padding:0 13px 12px;gap:8px}.portControl{border:1px inset #eee;border-radius:0;background:#d8d8d8;color:#222}.portName,.portControl.out .portName{color:#000080}.portRole{color:#555}.portRead{color:#075b35}.segments button{background:#c0c0c0;border:1px outset #eee;border-radius:0;color:#333}.segments button.selected,.segments button.selected[data-value='1']{background:#e9e9e9;color:#000080;border:1px inset #eee}.segments button:hover{color:#000;background:#eee}.segments button.selected[data-value='0']{background:#ededed;color:#005b35}
.viewport{margin:0 10px;background:#c0c0c0;background-image:none;border:3px inset #eee;min-height:240px;max-height:510px;scrollbar-color:#999 #ccc}.viewport canvas{image-rendering:auto}.buildViewport{min-height:370px;max-height:570px}.boardBottom{padding:10px 14px;font-size:11px;color:#444}.legend i{border-radius:0}.notice{border-radius:0;background:#dedede;color:#222;border:1px inset #eee;min-height:43px;line-height:1.75}.notice.ok{background:#dfecdf;color:#24452e;border-color:#8a9a8c}.notice.fail{background:#f2dcdc;color:#7d1010;border-color:#b47f7f}.notice.pending{background:#eee5c8;color:#665016;border-color:#a79970}.equation{border-radius:0;background:#ddd;border:2px inset #eee;color:#000080;font-size:17px}.stats{gap:6px}.stat{border:1px inset #eee;border-radius:0;background:#d5d5d5;padding:10px 4px}.stat b{color:#111}.stat span{font-size:10px;color:#555}.truth th{color:#333;border-color:#999}.truth td{color:#333;border-color:#aaa}.truth td.out{color:#075b35}.truth tbody tr.current{background:#e1eadf}.truth tbody tr.current td{color:#004a00}.details{border-color:#888}.input,.select,.textarea{border-radius:0;background:#fff;border:2px inset #eee;color:#222}.selectedInfo{border-radius:0;background:#dedede;border:2px inset #eee;color:#222}.editorCaption{background:#e6e6dd;color:#444;border:0;padding:9px 14px;font-size:11px}.sideNote,.subtle,.credits{color:#555}.statusFooter{border-top:1px solid #aaa;margin-top:20px;color:#555}.statusFooter .testBadge{color:#075b35}.varBtn{border:2px outset #eee;border-radius:0;background:#ccc;color:#333}.varBtn.v1{color:#075b35;background:#e3eedf;border:2px inset #eee}.varBtn.v0{color:#a02020;background:#eddede;border:2px inset #eee}.clauseCard,.readout{border-radius:0;background:#d7d7d7;border:1px inset #eee}.clauseCard.good{background:#dbe8d7;border-color:#8b9f82}.clauseCard.bad{background:#e9d6d6;border-color:#b17878}.lit,.lit.good,.lit.bad{border-radius:0;border:1px solid #999;background:#e0e0e0}.lit.good{background:#d6e6ce}.lit.bad{background:#efd6d6}.graphFrame{border-radius:0;background:#0e1b22}.testLog{border:2px inset #eee;border-radius:0;background:#eee;color:#333}.toast,.toast.fail{border:2px outset #eee;border-radius:0;background:#efefdf;color:#111;box-shadow:3px 3px 0 #0004}.toast.fail{background:#f3dada;color:#700}.key{border-radius:0;background:#eee;color:#222;border-color:#888}dialog{border-radius:0;border:3px outset #eee;background:#c0c0c0;box-shadow:4px 4px 0 #0006}dialog::backdrop{background:#0005;backdrop-filter:none}
.classicHUD{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:7px 10px;margin:10px;border:3px inset #eee;background:#c0c0c0}.meterBlock{display:flex;align-items:center;gap:8px}.meterLabel{font-size:10px;color:#555;line-height:1.5;max-width:40px}.meter{display:block;width:72px;height:38px;background:#1c0000;border:2px inset #eee}.meter svg{display:block;width:100%;height:100%}.smileBtn{width:39px;height:39px;padding:3px;background:#c0c0c0;border:3px outset #eee;display:flex;align-items:center;justify-content:center;cursor:pointer}.smileBtn:active{border-style:inset}.smileBtn svg{width:29px;height:29px;display:block}.viewToggles{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:1px 14px 11px;font-size:11px;color:#444}.viewToggles label{display:flex;gap:5px;align-items:center}.viewToggles input{accent-color:#000080}.classicNote{font-size:10px;color:#555;padding:0 14px 11px;line-height:1.6}.classicNote strong{color:#333}.hudCenter{text-align:center;display:flex;flex-direction:column;align-items:center;gap:5px}.hudCaption{font-size:10px;color:#555}.playWorkbench{display:grid;grid-template-columns:204px minmax(0,1fr) 262px;gap:14px;align-items:start}.levelList{display:grid;gap:5px;max-height:650px;overflow:auto}.levelBtn{display:grid;grid-template-columns:25px 1fr;gap:7px;align-items:start;text-align:left;padding:10px 7px;background:#c0c0c0;border:2px outset #eee;color:#222;font-size:12px}.levelBtn.active{background:#dedede;border-style:inset;color:#000080}.levelNo{font:15px Consolas,monospace;padding-top:1px}.levelBtn small{display:block;font-size:10px;color:#555;margin-top:5px}.starLine{font-family:Tahoma,sans-serif;letter-spacing:1px;color:#8c5700}.playMode{font-size:11px;color:#555;margin-bottom:4px}.playDesc{line-height:1.85;font-size:12px;color:#333;margin:12px 0}.playGoal{border:2px inset #eee;background:#dfdfdf;padding:12px;margin:12px 0;font-size:13px;line-height:1.9;color:#000080}.goalChip{display:inline-block;border:1px solid #888;padding:4px 9px;background:#ddd;margin:3px 5px 3px 0;font:14px Consolas,monospace}.goalChip.met{background:#d1e5c9;color:#145000}.goalChip.missed{background:#f0dddd;color:#900}.playPorts{display:flex;gap:8px;flex-wrap:wrap;padding:0 14px 12px}.goalProgress{height:9px;background:#999;border:1px inset #eee;margin:14px 0 7px}.goalProgress>span{display:block;height:100%;background:#000080;transition:width .1s}.playSummary{font-size:11px;color:#444;line-height:1.8}.playViewport{min-height:270px;max-height:470px}.playViewport.paused{filter:blur(4px);pointer-events:none}.playToolbar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:11px 13px}.playToolbar .grow{flex:1}.playTool{min-width:65px}.playHelp{padding:11px 14px;border-top:1px solid #999;color:#444;font-size:11px;line-height:1.8}.playResult{margin:12px 14px;padding:15px;background:#f1eedb;border:3px outset #eee}.playResult h3{color:#000080;font-size:19px;margin-bottom:9px}.playResult .bigStars{color:#a56600;font-size:28px;letter-spacing:6px;margin-bottom:6px}.scoreDetails{font-size:12px;line-height:1.85;color:#333}.recordItem{display:flex;justify-content:space-between;gap:7px;padding:6px 0;border-bottom:1px solid #aaa;font-size:11px;color:#444}.challengeBadge{border:1px inset #eee;background:#ddd;padding:4px 6px;color:#333;font-size:10px;white-space:nowrap}.hintBudget{font-size:10px;color:#555}.phoneInputNote{display:none}.playTopIntro .btnGroup{flex-shrink:0}.rulesText{font-size:11px;line-height:1.9;color:#444;margin-top:10px}.busy{cursor:progress}.practiceOnly{color:#8d5600}.goalRule{font-size:11px;color:#555;margin-top:8px}.play-note{margin-top:10px;line-height:1.7;font-size:11px;color:#444}.errorCount{color:#9d0000}.keyboardHint{font-size:11px;color:#555}.plainLink{border:0;background:none;color:#000080;text-decoration:underline;font-size:11px;padding:4px;cursor:pointer}.panelHeading{font-size:13px;margin-bottom:12px;color:#222}
@media(min-width:1450px){.workbench{grid-template-columns:196px minmax(0,1fr) 280px}.playWorkbench{grid-template-columns:210px minmax(0,1fr) 280px}}
@media(max-width:1120px){.workbench{grid-template-columns:160px minmax(0,1fr)}.playWorkbench{grid-template-columns:178px minmax(0,1fr)}.playInspector{grid-column:2}.playInspector .pad{display:grid;grid-template-columns:1fr 1fr;gap:18px}.playInspector .sep{display:none}.app{padding:0 14px}.nav button{padding:9px 12px}.topbar{height:74px}.playTopIntro{align-items:flex-start}}
@media(max-width:760px){.app{padding:0 9px}.topbar{height:72px}.brandName{font-size:17px}.brandSub{letter-spacing:.7px;font-size:8px}.topRight .online{display:none}.nav{gap:4px;margin-bottom:16px}.nav button{padding:9px 10px;font-size:12px}.nav .num{display:none}.intro h1{font-size:23px}.workbench{display:flex}.playWorkbench{display:flex;flex-direction:column;gap:12px}.playPalette,.playStage,.playInspector{width:100%}.playPalette .pad{padding:10px}.levelList{display:flex;overflow-x:auto;padding-bottom:5px;gap:5px}.levelBtn{min-width:148px;max-width:160px;padding:9px 6px}.levelList+.sep{display:none}.playPalette .btnGroup{margin-top:5px}.playPalette .playSummary{display:none}.playInspector .pad{display:block}.playInspector .sep{display:block}.playViewport{min-height:215px;max-height:410px}.viewport{min-height:210px;margin:0 7px}.buildViewport{min-height:330px;max-height:430px}.classicHUD{margin:8px}.meterLabel{display:none}.stageTools{padding:10px}.playToolbar{padding:10px 9px}.playTopIntro .btnGroup{margin-top:12px}.playResult{margin:10px 9px}.phoneInputNote{display:block}.legend{font-size:10px;gap:9px}.intro{margin-bottom:15px}.topRight{gap:4px}.keyboardHint{display:none}.palette .compButton{min-width:108px}.boardBottom label input{width:75px}}

:root{color-scheme:light;--bg:#f7f7ef;--surface:#efefea;--panel:#d0d0d0;--fg:#171717;--muted:#4b4b4b;--faint:#686868;--line:#aaa;--line2:#888;--mint:#006000;--amber:#8a5000;--red:#bb0000;--radius:0px;font:14px Arial,'Microsoft YaHei','PingFang SC',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg)}button,input,select,textarea{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:default;opacity:.45}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,a:focus-visible{outline:2px dotted #000080;outline-offset:2px}.hidden,[hidden]{display:none!important}h1,h2,h3,p{margin:0}a{color:#0000ee;text-underline-offset:3px}.mono,code{font-family:Consolas,monospace}.app{max-width:1600px;margin:auto;padding:18px 24px}.topbar{text-align:center;padding:0 0 12px}.brandName{font-family:'Times New Roman','SimSun',serif;color:#00376d;font-size:24px;font-weight:400}.brandSub{font-size:12px;color:#666;margin-top:7px}.brandMark,.topRight,.version{display:none}.nav{display:flex;justify-content:center;gap:22px;flex-wrap:wrap;margin:8px 0 23px}.nav button{background:none;border:0;padding:0;color:#0000ee;text-decoration:underline;font-size:18px;white-space:nowrap}.nav button.active{color:#303030;font-weight:bold;text-decoration:none}.nav .num{display:none}.intro{text-align:center;margin-bottom:16px}.intro h1{font-size:18px;font-weight:normal;letter-spacing:.5px}.intro em{font-style:normal}.intro p{font-size:12px;color:#595959;line-height:1.8;margin:7px auto;max-width:980px}.eyebrow{display:none}.smallBadge{font-size:11px;color:#555}.workbench{display:grid;grid-template-columns:160px minmax(0,1fr) 250px;gap:14px;align-items:start}.card{min-width:0}.pad{padding:14px}.palette{background:#e4e4de;border:1px solid #b4b4ac}.inspector{border:1px solid #bababa;background:#efefea}.stage{background:transparent;overflow:hidden}.sideHead{display:flex;justify-content:space-between;margin-bottom:12px}.cardLabel{font-size:11px;color:#555}.cardHeading{font-size:13px}.componentList{display:grid;gap:6px}.compButton{border:2px outset #e6e6e6;background:#c9c9c9;color:#222;padding:8px 7px;display:flex;align-items:center;gap:9px;text-align:left;width:100%;min-height:44px}.compButton:hover{background:#d7d7d7}.compButton:active,.compButton.active{border-style:inset;background:#bdbdbd}.compSymbol{font:bold 21px Consolas,monospace;width:24px;text-align:center;color:#000080}.compButton strong{font-size:12px;display:block}.compButton small{font-size:9px;letter-spacing:.5px;color:#5b5b5b}.sideNote,.subtle,.credits{font-size:11px;color:#666;line-height:1.8;margin-top:9px}.sep{height:1px;background:#bdbdbd;margin:14px 0}.btn{display:inline-flex;justify-content:center;align-items:center;border:2px outset #ededed;background:#ccc;color:#111;padding:5px 10px;min-height:31px;font-size:12px;white-space:nowrap;gap:5px;border-radius:0}.btn:hover{background:#dedede}.btn:active,.btn.on{border-style:inset;background:#bbb}.btn.primary{font-weight:bold;color:#000080}.btn.ghost{background:#d6d6d0}.btn.small{font-size:11px;padding:4px 8px;min-height:27px}.btn.wide{width:100%}.btn.danger{color:#a00000}.btnGroup{display:flex;gap:8px;flex-wrap:wrap}.stageTop{display:flex;align-items:center;justify-content:space-between;margin:0 0 10px;gap:10px}.stageTop h2{font-size:17px;font-weight:normal;margin-top:3px}.stageTop h2 span{font-size:12px;margin-left:6px;color:#555}.gateNumber{font:22px Georgia,serif;padding:8px;border:1px solid #aaa;color:#000080}.stageTools{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin:9px 0;padding:0!important}.spacer{flex:1}.switch{display:inline-flex;gap:5px;align-items:center;font-size:11px;white-space:nowrap;color:#333}input[type=checkbox]{accent-color:#000080}.portStrip{display:flex;flex-wrap:wrap;gap:7px;margin:10px 0}.portControl{display:flex;align-items:center;gap:6px;padding:4px 5px;border:1px solid #aaa;background:#eeeeea;font-size:11px}.portName{font:bold 14px Consolas,monospace;color:#000080}.portRole{font-size:10px;color:#666}.segments{display:flex}.segments button{background:#c7c7c7;border:2px outset #eee;height:24px;min-width:25px;padding:1px 5px;font:12px Consolas,monospace}.segments button.selected{border-style:inset;background:#aaa;font-weight:bold}.segments button.selected[data-value='1']{color:#900}.segments button.selected[data-value='0']{color:#006000}.portRead{font:bold 14px Consolas,monospace;min-width:14px;text-align:center;color:#005700}.portControl.out{background:#e7e7de}.classicCabinet{background:#c0c0c0;border:3px outset #e9e9e9;padding:11px;box-shadow:0 0 0 1px #999}.scorePanel{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;border:3px inset #e5e5e5;margin-bottom:10px;min-height:63px}.counterBox{display:flex;align-items:center;gap:9px}.counterLabel{font:10px 'Microsoft YaHei',sans-serif;color:#555;line-height:1.3;max-width:3em}.led{display:flex;background:#170000;padding:2px 3px;border:2px inset #eee;gap:2px}.led svg{display:block;width:18px;height:32px}.smile{width:38px;height:38px;border:3px outset #eee;background:#c0c0c0;display:grid;place-items:center;padding:2px}.smile:active{border-style:inset}.smile svg{width:28px;height:28px}.viewport{width:100%;overflow:auto;background:#c0c0c0;border:3px inset #efefef;scrollbar-color:#aaa #ddd;max-height:650px;display:flex;align-items:flex-start}.viewport canvas{display:block;flex:none;margin:auto;touch-action:pan-x pan-y;image-rendering:pixelated}.buildViewport{max-height:780px}.buildViewport canvas{margin:0 auto}.boardBottom{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:11px 0;color:#555;font-size:11px}.boardBottom label{display:flex;align-items:center;gap:6px}input[type=range]{width:115px;accent-color:#555}.legend{display:flex;gap:14px;flex-wrap:wrap}.legend i{display:inline-block;width:8px;height:8px;margin-right:4px;border:1px solid #777}.notice{border:1px solid #aaa;background:#ededdf;margin:7px 0 12px!important;padding:9px 12px;font-size:12px;line-height:1.7;color:#444}.notice.ok{border-color:#8caa8c;background:#edf3e8;color:#225222}.notice.fail{border-color:#b44;background:#ffe7e5;color:#900}.notice.pending{border-color:#bc9b65;background:#fff4de;color:#704d12}.infoText{color:#444;font-size:12px;line-height:1.9}.equation{font:16px/1.7 Consolas,'Microsoft YaHei',monospace;border:1px inset #fff;padding:9px;background:#e1e1d9;color:#000080;margin:10px 0}.truth{width:100%;border-collapse:collapse;text-align:center;font:12px Consolas,monospace;margin-top:10px}.truth th{padding:8px;border-bottom:2px solid #999}.truth td{padding:7px;border-bottom:1px solid #bcbcbc}.truth tr.current{background:#d3dec6}.truth tbody tr{cursor:pointer}.truth tbody tr:hover{background:#e6e6dd}.truth td.out{font-weight:bold;color:#005500}.stats{display:flex;gap:6px;margin:11px 0}.stat{flex:1;text-align:center;border:1px inset #fff;background:#deded9;padding:9px 5px}.stat b{display:block;font:22px Consolas,monospace}.stat span{font-size:10px;color:#666}.details{margin-top:14px;border-top:1px solid #bbb;padding-top:10px}.details summary{cursor:pointer;font-size:12px;color:#555}.constraintList{font:11px/1.7 Consolas,monospace;max-height:220px;overflow:auto;white-space:pre-wrap;margin-top:9px}.infoSteps{display:grid;gap:9px}.infoStep{display:flex;gap:8px;font-size:11px;color:#555;line-height:1.8}.stepIndex{font-family:Consolas,monospace;color:#000080}.input,.select,.textarea{font-size:12px;border:2px inset #eee;padding:6px;background:#fff;color:#111;max-width:100%;min-width:0}.input,.select,.textarea{width:100%}.textarea{line-height:1.8;resize:vertical}.label{display:block;font-size:11px;color:#555;margin:9px 0 4px}.miniToolGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px}.paintDigits{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin-top:7px}.paintDigits button{padding:5px}.selectedInfo{font:12px/1.8 Consolas,monospace;padding:9px;background:#fff;border:1px inset #ccc;margin:10px 0;white-space:pre-line}.editorCaption{font-size:11px;color:#666;line-height:1.7;margin:6px 0}.extraRow{display:flex;gap:6px;flex-wrap:wrap;margin-top:9px}.statusFooter{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;font-size:10px;color:#666;margin:22px 0 5px;border-top:1px solid #ccc;padding-top:14px}.testBadge{color:#006000}.key{font:10px Consolas,monospace;border:1px solid #aaa;padding:1px 4px;background:#ddd}.satLayout{display:grid;grid-template-columns:1fr 280px;gap:18px}.satLayout>.card,.guideGrid>.card{border:1px solid #aaa;background:#ededdf}.satHead{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.satActions{display:flex;gap:7px;flex-wrap:wrap;margin:13px 0}.varButtons{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.varBtn{border:2px outset #eee;background:#ccc;font:16px Consolas,monospace;padding:10px 16px}.varBtn.v1{background:#c1d6bb;color:#005500}.varBtn.v0{background:#eed8c1;color:#8c2600}.clauseGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.clauseCard{border:1px solid #aaa;background:#e1e1d9;padding:13px}.clauseCard.good{background:#dfe9d7;border-color:#708c6b}.clauseCard.bad{background:#f4dbd3;border-color:#ab5757}.clauseTop{display:flex;justify-content:space-between;font-size:10px;color:#555;margin-bottom:12px}.lits{display:flex;align-items:center;gap:7px;font:16px Consolas,monospace}.lit{border:1px solid #999;background:#ddd;padding:7px}.lit.good{color:#006000;background:#d0e1bf}.lit.bad{color:#900;background:#f1c6bb}.graphFrame{overflow:auto;background:#fff;border:1px solid #aaa;margin-top:14px}.readout{border:2px inset #eee;background:#e0e0d8;padding:16px;margin:12px 0}.readout .big{font:34px Consolas,monospace}.caption{font-size:11px;color:#666}.guideGrid{display:grid;grid-template-columns:1.1fr 1fr;gap:18px}.guideList{display:grid;gap:17px;margin-top:16px}.guideList h3{font-size:14px;margin-bottom:7px}.guideGrid aside>.card{border:1px solid #aaa;background:#ededdf}.testLog{font:11px/1.8 Consolas,monospace;white-space:pre-wrap;height:310px;overflow:auto;background:#fff;border:1px inset #bbb;margin-top:14px;padding:12px}.toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);padding:11px 16px;background:#ffffdf;border:1px solid #777;color:#111;font-size:12px;max-width:90vw;box-shadow:2px 2px 0 #8886;opacity:0;pointer-events:none;z-index:99}.toast.show{opacity:1}.toast.fail{background:#ffe4df;color:#900}dialog{background:#e5e5dc;border:3px outset #eee;color:#111;width:min(780px,94vw);padding:18px}dialog::backdrop{background:#0008}.dialogHead{display:flex;justify-content:space-between;align-items:center}dialog h2{font-size:18px}dialog .textarea{height:290px;white-space:pre;font:11px/1.7 Consolas,monospace;margin:14px 0}.srOnly{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
/* The default page gives the whole board its own wide classic cabinet. */
#view-build .workbench{display:block}#view-build .buildPalette{display:none}#view-build .inspector{margin-top:16px}#view-build .inspector>.pad{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:22px}#view-build .inspector>.pad>.sep{display:none}#view-build .inspector .details{grid-column:1/-1}.componentChips{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:9px 0}.componentChips button{border:1px solid #aaa;background:#e5e5dd;color:#444;padding:5px 9px;font-size:11px}.componentChips button:hover,.componentChips button.active{color:#5d3987;border-color:#8d73ac;background:#e8dfed}.topExtras{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-bottom:16px}.editMode #view-build .workbench{display:grid;grid-template-columns:175px minmax(0,1fr)}.editMode #view-build .buildPalette{display:block}.editMode #view-build .inspector{grid-column:1/-1}.scorePanel .scoreTitle{font-size:11px;color:#555;line-height:1.5;text-align:center}.focusMode{background:#000}.focusMode .app{max-width:none;padding:12px}.focusMode .topbar,.focusMode .nav,.focusMode .intro,.focusMode .topExtras,.focusMode .palette,.focusMode .inspector,.focusMode .statusFooter{display:none!important}.focusMode #view-build .workbench{display:block}.focusMode .stageTop,.focusMode .portStrip,.focusMode .stageTools,.focusMode .componentChips,.focusMode .boardBottom,.focusMode .editorCaption{color:#ccc}.focusMode .viewport{max-height:calc(100vh - 230px)}.focusMode .scoreTitle,.focusMode .counterLabel{color:#333}.focusMode .notice{display:none}.exitFocus{display:none}.focusMode .exitFocus{display:inline-flex}.gameShell{width:max-content;max-width:100%;margin:0 auto}.gameControls{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}.gameControls button.link{background:none;color:#0000ee;font-size:16px;text-decoration:underline;border:0;padding:3px}.gameControls input[type=number]{width:61px;border:1px solid #888;background:#fff;text-align:center;padding:4px}.gameCaption{text-align:center;font-size:11px;color:#555;line-height:1.8;margin:15px 0}.gameViewport{max-height:640px}.gameViewport canvas{margin:0}.gameFlags{margin-bottom:12px;display:flex;justify-content:center;gap:9px}.gameBox{max-width:100%;overflow:hidden}.gameToolbar{display:flex;justify-content:center;gap:8px}.gameResults{text-align:center;margin:14px;color:#000080;font-size:12px}
@media(max-width:1150px){.workbench{grid-template-columns:145px minmax(0,1fr)}.inspector{grid-column:2}.inspector>.pad{display:grid;grid-template-columns:1fr 1fr;gap:15px}.inspector>.pad>.sep{display:none}.inspector .details{grid-column:1/-1}.app{padding:16px}.satLayout{grid-template-columns:1fr 240px}}
@media(max-width:760px){.app{padding:12px 8px}.brandName{font-size:21px}.nav{gap:16px;margin-bottom:18px}.nav button{font-size:15px}.intro h1{font-size:16px}.intro p{font-size:11px}.workbench{display:flex;flex-direction:column;gap:11px}.card{width:100%}.palette .componentList{display:flex;flex-wrap:wrap}.palette .compButton{width:auto;min-width:95px;flex:1;padding:6px}.palette .compButton small{font-size:8px}.palette .pad{padding:8px}.palette .sideNote,.palette .sep{display:none}.inspector>.pad{display:block}.stageTop h2{font-size:16px}.classicCabinet{padding:7px;border-width:2px}.scorePanel{padding:6px;margin-bottom:7px}.counterLabel{display:none}.led svg{width:16px;height:28px}.smile{width:34px;height:34px}.scoreTitle{display:none}.portStrip{gap:4px}.portControl{padding:3px;gap:4px}.portRole{display:none}.portName{font-size:12px}.segments button{min-width:22px}.topExtras{gap:6px}.viewport{max-height:440px}.buildViewport{max-height:520px}.boardBottom{font-size:10px}.satLayout,.guideGrid{grid-template-columns:1fr}.satHead{flex-wrap:wrap}.pad{padding:12px}#view-build .inspector>.pad{display:block}.editMode #view-build .workbench{display:flex}.editMode #view-build .buildPalette .pad{display:grid;grid-template-columns:1fr 1fr;gap:10px}.editMode #view-build .buildPalette .sideNote{display:block}.stageTools{gap:5px}.btn{padding:5px 7px;min-height:30px;font-size:11px}.componentChips{gap:4px}.componentChips button{padding:5px 6px;font-size:10px}.counterBox{gap:5px}.gameControls{gap:7px}.gameControls button.link{font-size:14px}.gameViewport{max-height:520px}.focusMode .viewport{max-height:calc(100vh - 280px)}}

.scorePanel .scoreTitle{display:none}

/* Game-first shell. The original V2.1 application remains intact in expert mode. */
body.town-mode{background:#eeede6;color:#253a36;color-scheme:light}body.town-mode>.app,body.town-mode>#toast{display:none!important}body:not(.town-mode) #town{display:none}body.town-mode #town-return{display:none}#town-return{position:sticky;top:0;z-index:50;padding:10px 20px;background:#f8f1cb;border-bottom:2px solid #777;display:flex;align-items:center;gap:15px;color:#333;font-size:12px}
#town{--ink:#253a36;--soft:#64716c;--yellow:#f6ce53;--green:#287c61;--gray:#c8ccc8;--cream:#f8f7f1;font-family:'Segoe UI','Microsoft YaHei','PingFang SC',sans-serif;max-width:1260px;margin:auto;padding:0 26px;color:var(--ink);font-size:14px;line-height:1.5}
#town button,#town input{font:inherit}#town button{touch-action:manipulation}#town button:focus-visible,#town input:focus-visible,#town summary:focus-visible{outline:3px solid #2f8aaf;outline-offset:3px}#town .tbutton,#town-return .tbutton{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #a6aca4;border-top-color:#fff;border-left-color:#fff;border-radius:5px;box-shadow:0 1px 0 #8c9389;background:#dedfd5;padding:9px 13px;min-height:40px;font-weight:650;font-size:12px;color:#31423c;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .12s,transform .12s}
#town .tbutton:hover{background:#ebecde}#town .tbutton:active{transform:translateY(1px)}#town .tbutton.quiet{background:transparent;border-color:transparent;box-shadow:none;color:#62716a}#town .tbutton.quiet:hover{background:#dfE3d8;color:#203e31}#town .tbutton.primary,#town-return .tbutton.primary{background:#f4cf59;border-color:#e0b849;border-top-color:#fff4bc;border-left-color:#fff4bc;color:#29352c;box-shadow:0 2px 0 #ac8b35}#town .tbutton.primary:hover{background:#ffe17b}#town .tbutton.large{width:100%;font-size:14px;min-height:46px}#town .tbutton:disabled{opacity:.45;cursor:default;transform:none}
#town .town-header{height:88px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #d0d3c6}#town .town-brand{display:flex;align-items:center;gap:12px;color:var(--ink);text-decoration:none}#town .town-logo{width:42px;height:42px;display:grid;place-items:center;background:#f3ce57;color:#31483b;font:bold 32px Georgia;border:2px solid #fff6ba;box-shadow:2px 2px 0 #ac9144;border-radius:6px}#town .town-brand strong{font-size:23px;letter-spacing:1px;line-height:1.2;display:block}#town .town-brand small{font-size:10px;color:#6f796d;display:block;margin-top:5px;letter-spacing:.6px}#town .town-brand b{font-size:9px;font-weight:600;background:#dcdfd2;padding:1px 4px;margin-left:4px}#town .town-head-actions{display:flex;align-items:center;gap:8px}#town #town-total{margin-left:5px;font-size:11px;color:#617163}#town .icon{padding:8px 11px}#town .icon span{font-size:10px}
#town .town-districts{display:flex;align-items:center;gap:12px;margin:19px 0 26px}#town .town-district{flex:1;display:flex;align-items:center;gap:9px;padding:9px 12px;border:1px solid #d4d7cb;border-radius:5px;background:#e9eadd;color:#778173;min-width:0;cursor:pointer}#town .town-district.current{border-color:#aebfa7;background:#e1e8d8;color:#2d5840}#town .town-district.done{background:#d8e8d5;border-color:#a6bda0}#town .town-district svg{width:32px;height:30px;flex:none}#town .town-district strong{font-size:11px;display:block}#town .town-district span{font-size:10px;display:block}#town .town-district-line{height:3px;background:#cdd4c5;margin-top:4px;max-width:110px}#town .town-district-line i{display:block;height:100%;background:#68a574}
#town .town-mission{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:12px}#town .town-overline{font-size:10px;color:#577457;letter-spacing:1px;font-weight:700;margin-bottom:6px}#town h1{font-size:29px;line-height:1.3;font-weight:750;letter-spacing:-.6px;color:#273e34}#town .town-mission p{font-size:14px;line-height:1.7;margin-top:8px;color:#687269;max-width:760px}#town .town-mission-side{display:flex;align-items:center;gap:8px}#town .town-round{font-size:11px;border:1px solid #beccb5;background:#e1e9d8;padding:5px 9px;white-space:nowrap;border-radius:4px}#town .town-help{background:#fff8d8;padding:12px 16px;border-left:3px solid #d6b348;margin-bottom:17px;font-size:12px;line-height:1.9}
#town .town-layout{display:grid;grid-template-columns:minmax(0,1fr) 272px;gap:20px;align-items:start}#town .town-machine{background:#c6cbc6;padding:10px;border:2px solid #fafff4;border-bottom-color:#939d92;border-right-color:#939d92;border-radius:7px;box-shadow:0 5px 12px #3349340a;min-width:0}#town .town-machine-hud{display:flex;align-items:center;justify-content:space-between;background:#bdc3bb;border:2px solid #909a90;border-bottom-color:#f5f8eb;border-right-color:#f5f8eb;padding:8px 12px;margin-bottom:10px;min-height:60px}#town .town-meter{display:flex;align-items:center;gap:10px}#town .town-meter>span{font-size:10px;color:#4a5d4e}#town .town-machine-hud .sevenMeter{width:66px;height:36px;background:#100e0c;border:1px solid #8c978b;box-shadow:1px 1px 0 #f5f9e9;padding:1px}#town .town-machine-hud .smileyButton{width:38px;height:38px;padding:3px;background:#d8dfcc;border:2px solid white;border-right-color:#86917f;border-bottom-color:#86917f;border-radius:2px;cursor:pointer}#town .town-machine-hud svg{width:100%;height:100%}
#town .town-stage{position:relative;border:2px solid #8c9989;border-right-color:#e4eedb;border-bottom-color:#e4eedb;background:#f1f3e9;overflow:hidden}#town .town-stage-label{display:flex;justify-content:space-between;align-items:center;color:#7b8a78;font-size:10px;padding:12px 15px;border-bottom:1px solid #dce1d4;gap:8px}#town .town-stage-legend{display:flex;align-items:center;gap:6px;white-space:nowrap}#town .town-stage-legend i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#aab3a1}#town .town-stage-legend i.live{background:#e8b93d;margin-left:8px}#town .town-diagram-scroll{overflow:auto;background-image:radial-gradient(#c6cebe .8px,transparent .8px);background-size:17px 17px;scrollbar-width:thin;scrollbar-color:#9cab93 #e9eee0}#town .town-diagram-scroll svg{display:block;min-height:260px}#town .town-inline{padding:11px 14px;text-align:center;line-height:1.7;font-size:12px;background:#e5ebdb;border-top:1px solid #d8dfce;color:#527246;min-height:44px}#town .town-inline.bad{background:#f6e4d4;color:#985131}#town .town-inline.good{background:#dbeed2;color:#356733}#town .town-inline strong{color:#314a30}
#town .twire-bg{stroke:#d3dbc9;stroke-width:10;fill:none;stroke-linejoin:round;stroke-linecap:round}#town .twire{stroke:#9aa891;stroke-width:3;fill:none;stroke-linejoin:round;stroke-linecap:round}#town .twire.on{stroke:#4c9663;stroke-width:4}#town .tflow{stroke:#c8f2b7;stroke-width:2;fill:none;stroke-dasharray:2 18;stroke-linecap:round;animation:town-flow 1s linear infinite}#town .tnode{cursor:pointer;outline:none}#town .tnode:hover .tclick-bg,#town .tnode:focus .tclick-bg{stroke:#c5a441;stroke-width:2}#town .t-node-text{font:600 13px 'Microsoft YaHei','Segoe UI',sans-serif;fill:#465d48}#town .t-node-small{font:11px 'Microsoft YaHei','Segoe UI',sans-serif;fill:#738471}#town .t-coach-pointer{animation:town-bob 1.3s ease-in-out infinite}#town .town-controls{display:flex;justify-content:center;gap:9px;padding:15px 9px 12px;flex-wrap:wrap;min-height:68px;background:#d1d7cb;border-bottom:1px solid #abb6a6}#town .tswitch{min-height:43px;min-width:94px;display:flex;align-items:center;gap:10px;padding:8px 12px;border:2px solid #f7faec;border-right-color:#889581;border-bottom-color:#889581;border-radius:4px;background:#e7eadd;color:#596a52;cursor:pointer;font-size:13px;font-weight:650}#town .tswitch:disabled{opacity:.7;cursor:default}#town .tswitch.on{background:#cee1b9;color:#244f28;border-color:#87aa73;border-right-color:#f1f9e9;border-bottom-color:#f1f9e9}#town .tswitch i{display:block;position:relative;width:25px;height:14px;border:1px solid #7f9278;border-radius:8px;background:#a5b19b}#town .tswitch i:after{content:'';position:absolute;top:1px;left:1px;width:10px;height:10px;border-radius:50%;background:#f2f4e9;box-shadow:0 1px 2px #53634d40}#town .tswitch.on i{background:#679453}#town .tswitch.on i:after{left:12px}#town .tswitch small{font-size:10px;font-weight:400;color:#718166}
#town .town-tools{display:flex;align-items:center;gap:2px;padding:6px 3px 0;flex-wrap:wrap}#town .town-tools .tbutton{font-size:11px;padding:7px 9px;min-height:34px}#town .town-par{margin-left:auto;font-size:10px;color:#62715b;padding-right:7px}#town .town-choice{flex:1;min-width:100px;max-width:180px;padding:10px 12px;background:#e5e8db;border:2px solid #fafbeb;border-bottom-color:#96a18b;border-right-color:#96a18b;color:#3c583d;border-radius:4px;font-size:12px;cursor:pointer}#town .town-choice.selected{background:#f6e7a8;border-color:#c1a65a;border-bottom-color:#fff3cd;border-right-color:#fff3cd}#town .town-choice strong{display:block;font-size:13px}#town .town-choice span{font-size:10px;color:#708164}#town .town-control-full{flex-basis:100%;text-align:center;font-size:10px;color:#576e50}#town .town-run{min-width:160px}#town .town-guess{min-width:145px;padding:13px 19px;font-size:15px;border:2px solid #fff7e2;border-right-color:#7c9276;border-bottom-color:#7c9276;border-radius:5px;background:#e2eacf;color:#3b5b36;font-weight:650;cursor:pointer}
#town .town-sidebar{display:grid;gap:13px}#town .town-objectives{border:1px solid #cdd4c0;background:#fafaf0;border-radius:7px;padding:17px}#town .town-section-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:13px}#town .town-section-title h2{font-size:14px;font-weight:700}#town .town-section-title>span{color:#7c8e74;font-size:11px;font-family:Consolas,monospace}#town .town-goals{display:grid;gap:7px}#town .town-goal{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid #dce2d0;background:#f1f3e9;border-radius:5px}#town .town-goal.met{border-color:#b1c8a2;background:#e9f1de}#town .town-goal svg{width:29px;height:37px;flex:none}#town .town-goal-text{font-size:12px;flex:1}#town .town-goal-text strong{font-size:12px;display:block;font-weight:650}#town .town-goal-text small{color:#7b8971;font-size:10px}#town .town-goal-check{color:#87967b;font-size:13px}#town .town-goal.met .town-goal-check{color:#518239}#town .town-goal-note{font-size:11px;color:#7b8772;line-height:1.7;margin-top:13px}#town .town-coach{display:flex;gap:11px;background:#e2e8d8;border:1px solid #ced8c0;border-radius:7px;padding:14px}#town .town-coach-avatar{display:flex;align-items:center;justify-content:center;flex:none;width:30px;height:30px;border-radius:50%;background:#f3d35f;color:#4c613e;font-size:25px}#town .town-coach h3{font-size:11px;color:#567347;margin-bottom:5px}#town .town-coach p{font-size:12px;color:#596d50;line-height:1.85}#town .town-success{border:1px solid #c3c994;background:#f6f4cf;padding:19px;border-radius:7px;box-shadow:0 4px 13px #51623012}#town .town-success-label{color:#78874a;font-size:10px;letter-spacing:2px}#town .town-success h2{font-size:20px;margin-top:6px}#town .town-stars{font-size:31px;letter-spacing:7px;color:#d1a228;margin:7px 0}#town .town-success p{font-size:12px;line-height:1.9;color:#667245;margin-bottom:14px}#town .town-success .quiet{width:100%;font-size:11px;margin-top:6px}#town .town-extras{display:grid;grid-template-columns:1fr 1fr;gap:7px}#town .town-extras .tbutton{font-size:11px;padding:7px 8px}#town #town-code{grid-column:1/-1}#town .town-test-cases{margin-top:12px;display:grid;gap:5px}#town .town-case{display:flex;justify-content:space-between;gap:8px;font-size:10px;padding:7px;background:#e9eddf;border-radius:3px;color:#6e7c60}#town .town-case.pass{background:#e1edcf;color:#527c3c}#town .town-case.fail{background:#f1ded0;color:#975135}
#town .town-underhood{margin-top:20px;border:1px solid #d0d5c4;border-radius:6px;background:#e9ecdf}#town .town-underhood summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:10px;cursor:pointer;padding:14px 17px;font-size:12px;color:#586d4c}#town .town-underhood summary::-webkit-details-marker{display:none}#town .town-underhood summary small{font-size:10px;color:#839076}#town .town-underhood[open] summary{border-bottom:1px solid #d1d9c5}#town .town-underhood-body{padding:17px}#town .town-underhood p{font-size:11px;line-height:1.8;color:#6d7d60;margin-bottom:10px}#town .town-raw-head{display:flex;gap:14px;flex-wrap:wrap;align-items:center;font-size:11px;color:#5e7551;margin:13px 0}#town .town-raw-head>span{margin-right:auto}#town .town-raw-head label{display:flex;gap:6px;align-items:center}#town .town-raw-viewport{overflow:auto;max-height:420px;background:#c0c0c0;border:3px inset #ddd;margin-bottom:12px}#town .town-raw-viewport canvas,#town .town-detect-viewport canvas{display:block;margin:0 auto}#town .town-detect-viewport{overflow:auto;padding:16px 0;background:#e2e8db}#town .town-footer{padding:20px 0 25px;font-size:10px;color:#8a9581;display:flex;justify-content:space-between;gap:12px}#town .town-footer b{font-weight:500}#town .town-footer span:last-child{white-space:nowrap}
#town .town-dialog{color-scheme:light;background:#f1f3e7;color:#29412c;border:2px solid #faffed;border-right-color:#8c9a80;border-bottom-color:#8c9a80;border-radius:8px;width:min(860px,94vw);max-height:88vh;overflow:auto;padding:24px}#town .town-dialog::backdrop{background:#233328a6;backdrop-filter:blur(3px)}#town .town-dialog.compact{width:min(480px,94vw)}#town .town-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:12px}#town .town-dialog h2{font-size:20px}#town .town-dialog-desc{font-size:12px;line-height:1.9;color:#738168;margin:12px 0 20px}#town .town-dialog-actions{display:flex;gap:10px;margin-top:20px}#town .town-map-chapter{margin-top:20px}#town .town-map-chapter h3{font-size:13px;margin:0 0 10px}#town .town-map-levels{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}#town .town-level{min-height:100px;border:1px solid #b9c6ab;border-top-color:#fff;border-left-color:#fff;border-radius:5px;background:#e1e7d5;color:#465e39;text-align:left;padding:12px;cursor:pointer}#town .town-level.current{background:#f3e2a2;border-color:#c3a644}#town .town-level b{display:block;font:21px Consolas,monospace;color:#859974;margin-bottom:4px}#town .town-level span{display:block;font-size:11px}#town .town-level small{font-size:13px;color:#b1973e;letter-spacing:2px;margin-top:5px;display:block}#town .town-code-input{display:flex;gap:8px;margin:8px 0}#town .town-code-input input{min-width:0;flex:1;font:20px Consolas,monospace;padding:10px 12px;border:2px inset #c1cdb2;background:#fbfcf3;color:#354e2f;text-transform:uppercase}#town #town-code-notice{font-size:12px;min-height:24px;color:#637847;margin:10px 0}#town .town-dialog label{font-size:12px;color:#6c805d}
#town .town-confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden}#town .town-confetti i{position:absolute;top:-20px;width:7px;height:11px;border-radius:1px;animation:town-fall 1.6s ease-in forwards}#town .town-overlay-tag{font:11px 'Microsoft YaHei',sans-serif;fill:#828f76}#town .town-broken-cta{font-size:11px;color:#937b36}#town .town-diagram-scroll.is-wide:after{content:'← 线路较长，可左右滑动 →';display:block;text-align:center;padding:5px;font-size:10px;color:#859478}
@keyframes town-flow{to{stroke-dashoffset:-20}}@keyframes town-bob{50%{transform:translateY(-4px)}}@keyframes town-fall{to{transform:translateY(430px) rotate(500deg);opacity:0}}
@media(min-width:1450px){#town{max-width:1360px}.town-main{padding-top:5px}}
@media(max-width:900px){#town{padding:0 17px}#town .town-layout{grid-template-columns:minmax(0,1fr) 240px;gap:14px}#town .town-head-actions{gap:2px}#town .town-brand strong{font-size:20px}#town .town-districts{gap:7px}#town .town-district{padding:7px}#town .town-district svg{width:25px}#town .town-meter{gap:5px}#town .town-meter>span{font-size:9px}#town .town-machine-hud{padding:6px 8px}#town .town-par{display:none}}
@media(max-width:690px){#town{padding:0 12px}#town .town-header{height:75px;gap:5px}#town .town-logo{width:32px;height:32px;font-size:25px}#town .town-brand{gap:8px}#town .town-brand strong{font-size:18px}#town .town-brand small{font-size:8px;letter-spacing:0}#town .town-head-actions .tbutton{font-size:10px;padding:6px 7px;min-height:35px}#town .town-head-actions .icon{display:none}#town #town-total{display:none}#town .town-districts{margin:12px 0 18px;gap:6px}#town .town-district{display:block;text-align:center;padding:6px 3px}#town .town-district svg{width:25px;height:25px;margin:0 auto 2px;display:block}#town .town-district strong{font-size:9px}#town .town-district span{font-size:9px}#town .town-district-line{margin:3px auto 0;width:70%}#town .town-mission{margin-bottom:12px;align-items:flex-start}#town h1{font-size:24px}#town .town-mission p{font-size:12px;line-height:1.8;margin-top:6px}#town .town-overline{font-size:9px}#town .town-mission-side{flex-direction:column;gap:3px}#town #town-how{font-size:10px;padding:5px;min-height:30px}#town .town-round{font-size:9px;padding:4px}#town .town-layout{display:flex;flex-direction:column;gap:13px}#town .town-machine{width:100%;padding:7px}#town .town-machine-hud{min-height:50px;margin-bottom:7px}#town .town-machine-hud .sevenMeter{width:53px;height:31px}#town .town-machine-hud .smileyButton{width:33px;height:33px}#town .town-stage-label{font-size:9px;padding:10px}#town .town-inline{font-size:11px;padding:9px 10px}#town .town-controls{padding:11px 5px;gap:7px}#town .tswitch{min-width:92px;padding:8px 11px;font-size:12px}#town .town-tools .tbutton{padding:5px 7px;min-height:31px;font-size:10px}#town .town-sidebar{width:100%;grid-template-columns:1fr}#town .town-objectives{padding:12px 13px}#town .town-section-title{margin-bottom:9px}#town .town-section-title h2{font-size:12px}#town .town-goals{grid-template-columns:repeat(auto-fit,minmax(130px,1fr))}#town .town-goal{padding:8px;gap:7px}#town .town-goal-note{font-size:10px;margin-top:9px}#town .town-coach{padding:12px}#town .town-coach p{font-size:11px}#town .town-success{padding:17px}#town .town-extras{grid-template-columns:1fr 1fr 1.5fr}#town #town-code{grid-column:auto}#town .town-extras .tbutton{font-size:10px}#town .town-underhood{margin-top:16px}#town .town-underhood summary{font-size:11px;padding:12px}#town .town-underhood summary small{display:none}#town .town-footer{font-size:9px;display:block;line-height:1.9}#town .town-footer span{display:block}#town .town-dialog{padding:16px}#town .town-dialog h2{font-size:17px}#town .town-map-levels{grid-template-columns:repeat(3,minmax(0,1fr))}#town .town-level{padding:9px;min-height:94px}#town .town-level span{font-size:10px}#town .town-choice{min-width:85px;padding:9px 6px}#town .town-choice strong{font-size:12px}#town .town-guess{min-width:125px;padding:11px 15px;font-size:13px}#town-return{font-size:10px;padding:8px;gap:8px}}
@media(prefers-reduced-motion:reduce){#town .tflow,#town .t-coach-pointer,#town .town-confetti i{animation:none!important}#town *{transition:none!important}}

#town .town-mobile-goals{display:none}
@media(max-width:690px){#town .town-mobile-goals{display:block;background:#f7efd1;color:#746239;font-size:11px;line-height:1.7;padding:8px 10px;border-bottom:1px solid #daceac}#town[data-mode=switch] .town-objectives,#town[data-mode=detect] .town-objectives{display:none}#town .town-diagram-scroll svg{min-height:240px}#town .town-machine-hud{margin-bottom:6px}}

/* Unified navigation deliberately stays separate from board-specific presentation. */
#unified-header{position:relative;z-index:80;background:#f5f5ed;border-bottom:1px solid #bdc5b8;color:#263c31;font-family:'Segoe UI','Microsoft YaHei',sans-serif}
.unified-head-inner{max-width:1510px;margin:auto;min-height:74px;padding:12px 24px;display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.unified-brand{display:flex;align-items:center;gap:11px;color:#263c31!important;text-decoration:none!important;flex-shrink:0}.unified-brand strong{font-size:19px;letter-spacing:1px;display:block}.unified-brand small{display:block;font-size:10px;color:#75816f;margin-top:4px}.unified-logo{width:35px;height:35px;display:grid;place-items:center;background:#d8dfcd;border:2px outset #ecf0e6;font-size:25px;color:#b43528}
.unified-nav{display:flex;align-items:center;gap:5px;margin-left:auto}.unified-nav-btn,#unified-more summary,.unified-save-btn{font:600 12px 'Microsoft YaHei',sans-serif;color:#5a6b55;padding:11px 15px;cursor:pointer;white-space:nowrap;border:1px solid transparent;border-radius:5px;background:transparent}.unified-nav-btn:hover,#unified-more summary:hover{background:#e6eadf}.unified-nav-btn.active{background:#e3e9d8;border-color:#c1cbb3;color:#2b623c;box-shadow:inset 0 -2px #6d9669}.unified-save-btn{border-color:#bcc6b1;background:#fafbf5;padding:9px 13px}
#unified-more{position:relative}#unified-more summary{list-style:none}#unified-more summary::-webkit-details-marker{display:none}.unified-menu{position:absolute;right:0;top:calc(100% + 6px);width:240px;background:#f7f8f0;border:1px solid #bbc7b0;border-radius:7px;box-shadow:0 10px 30px #23332630;padding:6px;display:grid;z-index:85}.unified-menu button{text-align:left;border:0;background:transparent;color:#364934;padding:12px;font-size:12px;border-radius:4px}.unified-menu button:hover{background:#e4ead9}
body.focusMode #unified-header{display:none}.app>.topbar{display:none!important}.app>.nav{margin-top:15px}#town-return{display:none!important}
#town .town-header{height:57px;justify-content:flex-end;border:0;margin-bottom:0}#town .town-header .town-brand{display:none}#town .town-head-actions{width:100%;justify-content:flex-end}#town .town-districts{margin-top:0}.app .brandSub{display:none}.app .intro{margin-top:14px}
.merged-library{margin-bottom:15px;min-width:0}.merged-library>label{font-size:11px;font-weight:bold;display:block;margin-bottom:7px}.merged-library .select{font-size:11px;width:100%;padding:7px}.merged-library p{font-size:10px;line-height:1.7;color:#586453;margin:7px 0 0}.buildPalette .merged-library{grid-column:1/-1}
#town-physical{background:#e6eadf}#town-board-viewport{overflow:auto;max-height:510px;min-height:200px;border:3px inset #d6dbcf;background:#c0c0c0;margin:0 10px 10px}#town-board-canvas{display:block;margin:auto;image-rendering:pixelated}.merged-board-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 13px;color:#607354;font-size:10px}.merged-board-tools>span{flex-basis:100%;line-height:1.6}.merged-board-tools label{display:flex;align-items:center;gap:5px}.merged-board-tools input{width:100px}
.merge-dialog{color-scheme:light;background:#f4f5ec;color:#30442f;border:1px solid #acb9a0;border-radius:9px;max-width:620px;padding:24px;width:92vw}.merge-dialog::backdrop{background:#162619b0}.merge-dialog-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.merge-dialog h2{font-size:21px}.merge-dialog p{font-size:12px;line-height:1.9;margin:15px 0}.merge-dialog .merge-tip{color:#6f7d65;font-size:11px}.merge-summary{padding:13px;background:#e5ebda;line-height:1.9;font-size:12px;border:1px solid #c6d0b8;border-radius:5px}.merge-backup-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}.merge-status{background:#e9eddf;color:#586f4b;padding:12px;font-size:12px;line-height:1.8;border-radius:5px}.merge-status.bad{color:#963820;background:#f2ddd4}
#unified-alert{position:fixed;bottom:22px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;z-index:200;background:#eef1e0;color:#304f2e;border:1px solid #aabb96;border-radius:7px;box-shadow:0 8px 30px #24351c30;padding:12px 20px;max-width:90vw;font:12px/1.7 'Microsoft YaHei',sans-serif;transition:.15s}#unified-alert.visible{opacity:1;transform:translate(-50%,0)}#unified-alert.bad{background:#f3dfd6;color:#8c371d;border-color:#d5a28c}
/* Compact-compatible HUD used by the retained numerical challenges. */
.sevenMeter{display:inline-flex;background:#180300;border:2px inset #ddd;padding:2px;width:74px;height:40px}.sevenMeter svg{width:100%;height:100%;display:block}.smileyButton{width:38px;height:38px;display:inline-grid;place-items:center;background:#c0c0c0;border:3px outset #eee;padding:2px}.smileyButton svg{width:100%;height:100%}.smileyButton:active{border-style:inset}
@media(max-width:850px){.unified-head-inner{gap:10px;padding:10px 15px}.unified-brand strong{font-size:16px}.unified-brand small{font-size:9px}.unified-nav{gap:1px}.unified-nav-btn,#unified-more summary{font-size:11px;padding:10px}.unified-save-btn{font-size:11px;padding:8px 10px}}
@media(max-width:630px){.unified-head-inner{padding:11px 12px 8px;gap:9px}.unified-brand{order:1;flex:1}.unified-save-btn{order:2}.unified-nav{order:3;flex-basis:100%;justify-content:space-between;margin:0}.unified-nav-btn,#unified-more summary{padding:9px 12px}.unified-logo{width:29px;height:29px;font-size:21px}.unified-brand strong{font-size:17px}#town .town-header{height:44px}.unified-menu{right:0}.merged-library{margin:4px 0 12px;width:100%}.palette .pad:has(.merged-library){display:block}.merged-library .select{max-width:230px}.merged-library p{margin-top:4px}.merge-dialog{padding:18px}.merge-dialog h2{font-size:19px}#town-board-viewport{max-height:370px}.merged-board-tools{padding:8px;font-size:9px}.app>.nav{margin-top:10px}}
@media(prefers-reduced-motion:reduce){#unified-alert{transition:none}}
/* Public shell: restrained classic palette; game canvases keep their existing rules. */
.release-skip{position:fixed;top:-70px;left:12px;z-index:9999;background:#fff;padding:12px;color:#183f2b}.release-skip:focus{top:8px}
:focus-visible{outline:3px solid #186dad!important;outline-offset:3px!important}
#release-banner{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 24px;border-bottom:1px solid #cab777;background:#fff4cb;color:#58471c;font-size:13px}
#release-banner-text{flex:1;min-width:180px;line-height:1.7}#release-banner button{border:1px solid #ab8d3f;background:#fffdf4;color:#4a3b15;border-radius:5px;padding:9px 13px;min-height:40px;cursor:pointer}
#release-banner[hidden],#release-error[hidden]{display:none!important}
.release-footer{padding:22px 18px 28px;border-top:1px solid #cbd1c1;background:#f5f5ed;text-align:center;color:#5f6c55;font:12px/2 'Microsoft YaHei',sans-serif;clear:both}
.release-footer a{color:#3a6745;margin:0 9px}.release-footer small{display:block;font-size:11px;color:#73816c}
body.focusMode .release-footer,body.focusMode #release-banner{display:none}
.release-dialog{box-sizing:border-box;border:1px solid #a9b9a2;border-radius:10px;background:#f6f7ef;color:#30462f;max-width:630px;width:92vw;padding:24px;font-family:'Microsoft YaHei',sans-serif}.release-dialog::backdrop{background:#18251cbf}.release-dialog h2{font-size:22px}.release-dialog h3{font-size:14px;margin:22px 0 7px}.release-dialog p{font-size:12px;line-height:1.85;margin:12px 0}.release-dialog a{color:#2c673c}.release-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.release-actions{display:flex;gap:8px;flex-wrap:wrap}.release-actions button,.release-dialog-head button{background:#e6ebdc;color:#354a30;border:1px solid #a9b99c;padding:10px 13px;min-height:42px;border-radius:5px;cursor:pointer}.release-actions button.danger{border-color:#c39483;background:#fae9e1;color:#793f29}.release-status{padding:13px;background:#e9edde;border:1px solid #ccd4be;border-radius:5px}.release-status p{margin:4px 0}.release-dialog input{max-width:100%;width:100%;padding:10px;background:white;color:#263b26;border:1px solid #849579;font-family:Consolas,monospace}
#release-error{position:fixed;z-index:500;bottom:12px;right:12px;max-width:460px;background:#fff5e1;border:1px solid #c78754;color:#683e20;padding:16px;box-shadow:0 4px 22px #37281835;font-size:13px;border-radius:8px}#release-error p{line-height:1.7;margin:7px 0}#release-error button{background:#fff;border:1px solid #b09276;padding:8px 13px;border-radius:4px;margin-right:5px;color:#623b1f}
.unified-brand small{font-size:10px}.unified-head-inner{gap:14px}.unified-nav{gap:0}.unified-nav-btn,#unified-more summary{padding:11px 12px}.unified-save-btn{min-height:38px}
@media(max-width:760px){.unified-head-inner{gap:8px}.unified-brand{min-width:180px}.unified-save-btn{padding:9px;font-size:11px}.unified-brand small{font-size:9px}.unified-head-inner .unified-nav{order:5;flex-basis:100%;justify-content:space-between}.release-dialog{padding:18px}.release-footer{font-size:11px}#release-banner{padding:10px 12px;gap:8px}#release-banner-text{flex-basis:100%}.town-head-actions button{min-height:40px}.release-actions button{flex:1 0 auto}}
@media(max-width:400px){.unified-brand{min-width:150px;flex-basis:100%}.unified-head-inner{justify-content:flex-end}.unified-nav-btn,#unified-more summary{padding:10px}.release-dialog{width:94vw}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition:none!important}}
