:root{--page:#dcd8d0;--page-ink:#2a2826;--page-muted:#625d56;--shell-hi:#4a4c51;--shell:#2c2e32;--shell-lo:#17181a;--shell-ink:#e9eaee;--button:#a9b5ef;--button-hi:#c9d1fa;--button-lo:#6f7bbd;--lcd:#b5bca2;--lcd-hi:#c7cdb4;--seg-on:#1c2117;--seg-off:#1c211716;--led-off:#4b1515;--led-on:#ff2b2b;--panel:#f7f5f1;--panel-line:#c9c3b8;--accent:#3f4fa8;color:var(--page-ink);font-synthesis:none;background:var(--page);font-family:Hiragino Sans,Hiragino Kaku Gothic ProN,Noto Sans JP,Yu Gothic UI,Meiryo,sans-serif;line-height:1.5}*{box-sizing:border-box}body{background:radial-gradient(1200px 700px at 50% -10%, #f1eee8 0%, var(--page) 70%);min-height:100vh;margin:0}button,input,select{font:inherit;touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline-offset:2px;outline:3px solid #f6c445}[hidden]{display:none!important}.sr{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.bb2{--grip:clamp(64px, 15vw, 128px);width:min(780px,100% - 16px);color:var(--shell-ink);background:radial-gradient(120% 60% at 50% 0%, #ffffff14, transparent 60%), linear-gradient(180deg, var(--shell-hi) 0%, var(--shell) 22%, var(--shell) 70%, var(--shell-lo) 100%);-webkit-user-select:none;user-select:none;border-radius:clamp(28px,7vw,72px) clamp(28px,7vw,72px) 26px 26px;margin:14px auto 0;padding:clamp(10px,2.4vw,22px) clamp(8px,2vw,18px) 0;box-shadow:inset 0 2px #ffffff24,inset 0 -3px #0006,0 2px #0d0d0e,0 22px 40px #00000059}.body-top{grid-template-columns:var(--grip) minmax(0, 1fr) var(--grip);align-items:stretch;gap:clamp(4px,1.4vw,14px);display:grid}.grip{background:linear-gradient(#1d1e21,#26282c 50%,#1b1c1f);border-radius:18px;flex-direction:column;justify-content:center;gap:clamp(18px,4vw,34px);padding:16px 0;display:flex;box-shadow:inset 0 2px 6px #000000b3,inset 0 -1px #ffffff14}.pill{color:var(--shell-ink);background:0 0;border:0;flex-direction:column;align-items:center;gap:clamp(8px,2.6vw,22px);padding:0;display:flex;position:relative}.pill-cap{background:linear-gradient(180deg, var(--button-hi), var(--button) 55%, #94a2e4);width:clamp(40px,9.5vw,78px);height:clamp(22px,5vw,38px);box-shadow:0 4px 0 var(--button-lo), 0 6px 8px #0000008c, inset 0 1px 0 #fff9;border-radius:999px;transition:transform 60ms,box-shadow 60ms,filter .2s;display:block;transform:rotate(-38deg)}.grip-r .pill-cap{transform:rotate(38deg)}.pill:active:not(:disabled) .pill-cap{box-shadow:0 1px 0 var(--button-lo), 0 2px 4px #00000080, inset 0 1px 0 #fff6;translate:0 3px}.pill-label{letter-spacing:.04em;white-space:nowrap;font-size:clamp(.54rem,1.8vw,.74rem);font-style:italic;font-weight:800}.pill:disabled .pill-cap{filter:saturate(.25)brightness(.6)}.pill:disabled .pill-label{opacity:.45}.grip.active .pill:not(:disabled) .pill-cap{animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{filter:brightness(1.18)drop-shadow(0 0 6px #a9b5efe6)}}.face{flex-direction:column;align-items:stretch;min-width:0;display:flex}.brandline{text-align:center;letter-spacing:.08em;color:#d6d8de;margin:0 0 6px;font-size:clamp(.58rem,1.9vw,.82rem);font-style:italic;font-weight:800}.brandline b{margin-right:.3em;font-size:1.2em}.bezel{background:linear-gradient(#222326,#1a1b1d);border-radius:14px;grid-template-columns:clamp(6px,2vw,18px) minmax(0,1fr) clamp(6px,2vw,18px);align-items:center;gap:clamp(4px,1.2vw,10px);padding:clamp(6px,1.6vw,14px);display:grid;box-shadow:inset 0 0 0 2px #121314,inset 0 3px 8px #0009,0 1px #ffffff1a}.vent{opacity:.8;clip-path:polygon(0 0,100% 8%,100% 92%,0 100%);background:repeating-linear-gradient(#bfc2c8 0 3px,#0000 3px 7px);height:70%}.vent-r{clip-path:polygon(0 8%,100% 0,100% 100%,0 92%)}.lcd{min-width:0;color:var(--seg-on);background:linear-gradient(170deg, var(--lcd-hi) 0%, var(--lcd) 45%, #a9b195 100%);border-radius:4px;grid-column:2;padding:clamp(5px,1.4vw,10px) clamp(5px,1.4vw,12px) clamp(6px,1.4vw,10px);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;position:relative;box-shadow:inset 0 0 0 1px #00000059,inset 3px 4px 8px #00000047}.lcd-row{justify-content:space-between;align-items:center;gap:4px;display:flex}.lcd-flags{grid-template-columns:repeat(6,auto);justify-content:space-between;margin-bottom:2px;display:grid}.flag{letter-spacing:.02em;color:var(--seg-off);border-radius:2px;padding:0 3px;font-size:clamp(.42rem,1.55vw,.66rem);font-weight:800}.flag.on{color:var(--lcd-hi);background:var(--seg-on)}.flag.blink{animation:1s steps(2,jump-none) infinite blink}@keyframes blink{50%{color:var(--seg-off);background:0 0}}.lcd-icons{margin-bottom:2px}.icons{align-items:center;gap:clamp(1px,.6vw,5px);display:flex}.lcd-icon svg{width:clamp(13px,3.4vw,22px);height:clamp(13px,3.4vw,22px);fill:var(--seg-off);display:block}.lcd-icon.on svg{fill:var(--seg-on)}.lcd-mode{letter-spacing:.1em;border:1.5px solid;border-radius:3px;padding:0 5px;font-size:clamp(.6rem,2vw,.86rem);font-weight:800}.lcd-stats{gap:clamp(1px,.5vw,4px);display:grid}.stat-row{grid-template-columns:minmax(0,1fr) clamp(30px,8vw,58px) minmax(0,1fr);align-items:center;gap:clamp(2px,1vw,8px);display:grid}.seg{width:100%;height:auto;max-height:44px;display:block}.seg .on{fill:var(--seg-on)}.seg .off{fill:var(--seg-off)}.stat-label{flex-direction:column;align-items:center;line-height:1;display:flex}.stat-label b{font-family:Arial Black,Helvetica Neue,Arial,sans-serif;font-size:clamp(.7rem,2.4vw,1.05rem)}.stat-label small{color:var(--seg-off);margin-top:2px;font-size:clamp(.38rem,1.3vw,.58rem);font-weight:800}.stat-label small.on{color:var(--lcd-hi);background:var(--seg-on);border-radius:2px;padding:0 2px}.stat-row.mini{margin-top:clamp(2px,.8vw,6px)}.mini-pair{grid-template-columns:auto minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:2px;display:grid}.mini-pair small{font-size:clamp(.38rem,1.3vw,.58rem);font-weight:800}.mini-pair .seg{max-height:18px}.hp-bars{flex-direction:column;gap:3px;display:flex}.hp-bar{border:1px solid var(--seg-on);border-radius:1px;height:4px;display:block}.hp-bar>i{background:var(--seg-on);height:100%;display:block}.hp-bar.right{transform:scaleX(-1)}.lcd.boot .seg .off,.lcd.boot .flag,.lcd.boot .lcd-icon svg{animation:.7s step-end boot}@keyframes boot{0%{fill:var(--seg-on);color:var(--seg-on)}to{fill:inherit}}.viewfinder{background:#000;border-radius:4px;position:absolute;inset:0;overflow:hidden}.viewfinder video{object-fit:cover;width:100%;height:100%;display:block}.reticle{pointer-events:none;position:absolute;inset:22% 6%}.reticle:before,.reticle:after,.reticle span:before,.reticle span:after{content:"";border:3px solid #ff3a3a;width:18px;height:18px;position:absolute}.reticle:before{border-bottom:0;border-right:0;top:0;left:0}.reticle:after{border-bottom:0;border-left:0;top:0;right:0}.reticle span:before{border-top:0;border-right:0;bottom:0;left:0}.reticle span:after{border-top:0;border-left:0;bottom:0;right:0}.scanline{background:#ff3a3a;height:2px;animation:1.8s ease-in-out infinite sweep;position:absolute;top:50%;left:4%;right:4%;box-shadow:0 0 10px #ff3a3a}@keyframes sweep{0%,to{top:8%}50%{top:90%}}.message{color:#ffd9a8;overflow-wrap:anywhere;background:#101112;border-radius:6px;min-height:2.9em;margin:8px 0 0;padding:5px 10px;font-size:clamp(.72rem,2.3vw,.9rem);font-weight:700;line-height:1.4;box-shadow:inset 0 1px 4px #000c,0 1px #ffffff14}.room-bar{grid-template-columns:44px minmax(0,1fr) 44px;align-items:stretch;gap:6px;margin-top:6px;display:grid}.room-bar button{color:#171a2c;background:linear-gradient(180deg, var(--button-hi), var(--button));min-height:44px;box-shadow:0 3px 0 var(--button-lo), inset 0 1px 0 #ffffff8c;border:0;border-radius:8px;padding:0;font-size:1rem}.room-bar button:disabled{filter:saturate(.25)brightness(.6)}.room-now{background:#101112;border-radius:6px;flex-direction:column;justify-content:center;min-width:0;padding:4px 10px;line-height:1.3;display:flex;box-shadow:inset 0 1px 4px #000c}.room-now b{color:#fff;overflow-wrap:anywhere;font-size:clamp(.78rem,2.4vw,.92rem)}.room-now span{color:#ffd9a8;overflow-wrap:anywhere;font-size:clamp(.66rem,2vw,.78rem)}.leds{justify-content:space-between;padding:10px 6% 0;display:flex}.led{background:radial-gradient(circle at 35% 30%, #8a3030, var(--led-off) 60%);border-radius:50%;width:clamp(10px,2.4vw,15px);height:clamp(10px,2.4vw,15px);box-shadow:0 0 0 2px #121314,inset 0 -2px 2px #00000080}.led.on{background:radial-gradient(circle at 35% 30%, #ffb3b3, var(--led-on) 55%);box-shadow:0 0 0 2px #121314, 0 0 12px var(--led-on)}.led.win{animation:.5s steps(2,jump-none) 6 ledblink}@keyframes ledblink{50%{background:var(--led-off);box-shadow:0 0 0 2px #121314}}.leds.sweep-lr .led,.leds.sweep-rl .led,.leds.sweep-both .led{animation:.42s ease-out both ledsweep}.leds.sweep-lr .led:nth-child(2),.leds.sweep-rl .led:nth-child(4){animation-delay:70ms}.leds.sweep-lr .led:nth-child(3),.leds.sweep-rl .led:nth-child(3){animation-delay:.14s}.leds.sweep-lr .led:nth-child(4),.leds.sweep-rl .led:nth-child(2){animation-delay:.21s}.leds.sweep-lr .led:nth-child(5),.leds.sweep-rl .led:first-child{animation-delay:.28s}.leds.sweep-both .led:nth-child(2n){animation-delay:.1s}.leds.sweep-both .led:nth-child(3){animation-delay:.2s}@keyframes ledsweep{0%,to{}30%{background:radial-gradient(circle at 35% 30%, #ffb3b3, var(--led-on) 55%);box-shadow:0 0 0 2px #121314, 0 0 12px var(--led-on)}}.led-caption{letter-spacing:.04em;color:#d6d8de;justify-content:space-between;align-items:center;gap:4px;margin:4px 0 0;padding:0 4%;font-size:clamp(.5rem,1.7vw,.72rem);font-weight:800;display:flex}.led-caption span:nth-child(3){white-space:nowrap}.led-caption i{background:#d6d8de;flex:1;max-width:60px;height:2px;position:relative}.arrow-l:before,.arrow-r:after{content:"";border:4px solid #0000;position:absolute;top:-3px}.arrow-l:before{border-right-color:#d6d8de;left:-5px}.arrow-r:after{border-left-color:#d6d8de;right:-5px}.keys{background:linear-gradient(#26282b,#303236);border-radius:12px 12px 0 0;grid-template-columns:repeat(3,1fr);gap:clamp(8px,3vw,40px);width:min(100%,560px);margin:clamp(10px,2.4vw,18px) auto 0;padding:10px clamp(12px,6vw,70px) 12px;display:grid;box-shadow:inset 0 1px #ffffff14}.key{color:var(--shell-ink);background:0 0;border:0;flex-direction:column;align-items:center;gap:4px;padding:0;display:flex}.key-label{letter-spacing:.06em;font-size:clamp(.6rem,2vw,.8rem);font-weight:800}.key-cap{background:linear-gradient(180deg, var(--button-hi), var(--button));width:100%;max-width:110px;height:clamp(16px,3.6vw,24px);box-shadow:0 3px 0 var(--button-lo), 0 4px 6px #00000080, inset 0 1px 0 #ffffff8c;border-radius:3px;display:block}.key:active:not(:disabled) .key-cap{box-shadow:0 1px 0 var(--button-lo), inset 0 1px 0 #fff6;translate:0 2px}.key:disabled .key-cap{filter:saturate(.25)brightness(.6)}.key:disabled .key-label,.key:disabled .key-hint{opacity:.45}.key.ready .key-cap{animation:1.2s ease-in-out infinite pulse}.key-hint{color:#a9abb2;font-size:clamp(.52rem,1.7vw,.68rem)}.slot{background:linear-gradient(#1b1c1e 0%,#2a2c30 30%,#222326 100%);border-radius:0 0 26px 26px;margin:0 calc(-1*clamp(8px,2vw,18px));padding:12px clamp(10px,3vw,28px) 14px;box-shadow:inset 0 3px 6px #0009}.slot-mouth{letter-spacing:.08em;color:#8d9098;background:linear-gradient(#050506,#141517);border-radius:4px;align-items:center;gap:8px;height:22px;margin-bottom:10px;padding:0 12px;font-size:.68rem;font-weight:700;display:flex;box-shadow:inset 0 2px 3px #000,0 1px #ffffff1a}.slot-mouth i{background:#8d9098;flex:0 0 40px;height:1px;position:relative}.slot-mouth .arrow-r:after{border-left-color:#8d9098;top:-4px}.slot-targets{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.slot-targets button{color:#d8dae0;background:#33353a;border:1px solid #45484e;border-radius:8px;flex:60px;min-height:40px;padding:4px 8px;font-size:.82rem;font-weight:800}.slot-targets button[aria-pressed=true]{background:var(--button);color:#171a2c;border-color:var(--button-hi);box-shadow:0 0 10px #a9b5ef73}.slot-targets button:disabled{opacity:.35}.slot-inputs{grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:8px;display:grid}.scan-button{color:#171a2c;background:linear-gradient(180deg, var(--button-hi), var(--button));min-height:48px;box-shadow:0 3px 0 var(--button-lo), inset 0 1px 0 #ffffff8c;border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;padding:6px 12px;font-weight:800;display:flex}.scan-button svg{flex:none;width:34px;height:22px}.scan-button[aria-pressed=true]{color:#fff;background:#ff6a6a;box-shadow:0 3px #9e2a2a}.scan-form{gap:6px;min-width:0;display:flex}.scan-form input{color:#e9eaee;letter-spacing:.08em;background:#0f1011;border:1px solid #45484e;border-radius:10px;flex:1;min-width:0;min-height:48px;padding:6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:16px}.scan-form input::placeholder{color:#6a6d74;letter-spacing:0}.scan-form button{color:#fff;background:#3a3c42;border:1px solid #45484e;border-radius:10px;flex:none;min-height:48px;padding:6px 14px;font-weight:800}.camera-actions{justify-content:center;gap:8px;margin-top:8px;display:flex}.camera-actions button{color:#fff;background:#3a3c42;border:1px solid #55585e;border-radius:999px;min-height:40px;padding:6px 16px;font-weight:700}.camera-actions button[aria-pressed=true]{color:#222;background:#f6c445}.logo{text-align:center;letter-spacing:.04em;color:#e4e6ea;text-shadow:0 -1px #000,0 1px #ffffff40;margin:14px 0 0;font-family:Georgia,Times New Roman,serif;font-size:clamp(1.05rem,4.4vw,1.8rem);font-style:italic;font-weight:900;line-height:1}.logo em{margin-left:.3em;font-family:Georgia,serif}.console{background:var(--panel);border:1px solid var(--panel-line);border-radius:18px;width:min(780px,100% - 16px);margin:14px auto 0;padding:14px;box-shadow:0 6px 18px #00000014}.tabs,.modes{gap:6px;margin-bottom:10px;display:flex}.tabs button,.modes button{border:1px solid var(--panel-line);min-height:44px;color:var(--page-ink);background:#fff;border-radius:10px;flex:1;padding:6px 8px;font-weight:800}.modes button b{margin-right:6px;font-family:ui-monospace,Menlo,Consolas,monospace}.tabs button[aria-pressed=true],.modes button[aria-pressed=true]{background:var(--shell);color:#fff;border-color:var(--shell)}.modes button:disabled{opacity:.5}.hint,#mode-help{color:var(--page-muted);margin:0 0 10px;font-size:.82rem}.panel{border:1px solid var(--panel-line);background:#fff;border-radius:12px;margin:0 0 10px;padding:10px}.panel p{margin:0 0 8px}#campaign-status,#turn{font-weight:800}.field-row{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.field-row label{color:var(--page-muted);flex-direction:column;flex:160px;gap:2px;font-size:.76rem;font-weight:700;display:flex}.combo{flex:220px;gap:6px;display:flex}.combo select{flex:1;min-width:0}#world-controls{gap:6px;display:flex}input,select{border:1px solid var(--panel-line);min-height:44px;color:var(--page-ink);background:#fff;border-radius:10px;padding:6px 10px}.console :where(button){border:1px solid var(--shell);background:var(--shell);color:#fff;border-radius:10px;min-height:44px;padding:6px 14px;font-weight:800}.console button:disabled{opacity:.45}.console button.ghost{color:var(--page-ink);border-color:var(--panel-line);background:#fff}#auto{width:100%;margin-top:8px}#sample{flex:1}.cards{grid-template-columns:1fr 1fr;gap:10px;margin-top:12px;display:grid}.card{border:1px solid var(--panel-line);border-left:5px solid var(--panel-line);background:#fff;border-radius:12px;min-width:0;padding:10px}.card.targeted{border-left-color:var(--accent);box-shadow:0 0 0 2px #3f4fa82e}.card h2{overflow-wrap:anywhere;margin:0 0 4px;font-size:.95rem}.who{background:var(--shell);color:#fff;border-radius:4px;margin-right:6px;padding:0 6px;font-size:.72rem;display:inline-block}.badge{background:var(--accent);color:#fff;vertical-align:1px;border-radius:99px;margin-left:6px;padding:0 6px;font-size:.68rem;display:inline-block}.card-body{align-items:flex-start;gap:8px;display:flex}.product-image{object-fit:contain;border:1px solid var(--panel-line);background:#fff;border-radius:6px;flex:none;width:56px;height:56px}.product-name{overflow-wrap:anywhere;margin:0;font-size:.82rem}.kind{overflow-wrap:anywhere;margin:2px 0 0;font-size:.76rem;font-weight:700}.stats{color:var(--page-muted);font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:.74rem}.empty-copy{color:var(--page-muted);margin:0;font-size:.8rem}.product-links{flex-wrap:wrap;gap:4px 10px;margin-top:6px;font-size:.72rem;display:flex}.product-links a{color:var(--accent)}.log-drawer{border:1px solid var(--panel-line);background:#fff;border-radius:12px;margin-top:12px;padding:8px 12px}.log-drawer summary{cursor:pointer;font-weight:800}#log{max-height:240px;padding-left:1.4rem;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.82rem;overflow:auto}#rooms{grid-template-columns:1fr 1fr;gap:10px;margin-top:10px;display:grid}#rooms article{border:1px solid var(--panel-line);background:#fff;border-radius:12px;padding:12px}#rooms article.selected{border-color:var(--accent);box-shadow:0 0 0 2px #3f4fa82e}#rooms h3{margin:0 0 6px}#rooms p{overflow-wrap:anywhere;margin:0 0 8px;font-size:.85rem}#rooms article button{width:100%}.help,footer{width:min(780px,100% - 16px);color:var(--page-muted);margin:0 auto;font-size:.85rem}.help{margin-top:16px}.help summary{color:var(--page-ink);cursor:pointer;font-weight:800}footer{text-align:center;padding:18px 0 28px}footer p{margin:0 0 6px}footer a{color:var(--accent)}@media (width<=520px){.bb2{--grip:52px}.vent{display:none}.bezel{grid-template-columns:0 minmax(0,1fr) 0;gap:0;padding:5px}.pill-cap{width:38px;height:21px}.pill-label{letter-spacing:0;font-size:.5rem}.grip{border-radius:14px;gap:26px;padding:10px 0}}@media (width<=560px){.slot-inputs,.cards,#rooms{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
