:root{--bg: #1d1f24;--panel: #2a2d34;--panel2: #33373f;--text: #e8e6e1;--muted: #9a9ca3;--accent: #e0b44c;--accent2: #4ca3e0;--danger: #e05a4c;--ok: #6cc070;--light: #f0d9b5;--dark: #b58863;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg);min-height:100vh}h1{margin:0 0 8px}h3{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}button,input{font:inherit}button{background:var(--panel2);color:var(--text);border:1px solid #454a54;border-radius:8px;padding:8px 14px;cursor:pointer}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);color:#1d1f24;border-color:var(--accent);font-weight:600}button.ghost{background:transparent}input{background:#15171b;color:var(--text);border:1px solid #454a54;border-radius:8px;padding:8px 12px;width:100%}.muted{color:var(--muted)}.small{font-size:12px}.banner{position:fixed;top:12px;left:50%;transform:translate(-50%);z-index:10;padding:10px 18px;border-radius:8px;font-weight:500;box-shadow:0 4px 16px #0008;cursor:pointer;max-width:90vw}.banner.error{background:var(--danger);color:#fff}.banner.warn{background:var(--accent);color:#1d1f24;top:auto;bottom:12px}.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.panel{background:var(--panel);border-radius:10px;padding:12px}.lobby{width:380px;max-width:100%;display:flex;flex-direction:column;gap:12px;padding:24px}.lobby label{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--muted)}.lobby .row{display:flex;gap:8px}.code-input{text-transform:uppercase;letter-spacing:.3em;font-weight:700;text-align:center}.build-sha{position:fixed;left:12px;bottom:8px;font:11px ui-monospace,monospace;color:var(--muted);opacity:.6}.lobby h2{margin:8px 0 0;font-size:15px;color:var(--accent)}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.segmented button{padding:8px 4px;font-size:14px}.segmented button.on{border-color:var(--accent);background:#3a3424;color:var(--accent);font-weight:600}.hint.thinking{animation:pulse 1.2s infinite}.segmented.levels{grid-template-columns:repeat(5,1fr);gap:4px}.segmented.levels button{padding:6px 2px;font-size:11px;line-height:1.2}.level-box{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.room-code{font-size:48px;font-weight:800;letter-spacing:.25em;text-align:center;color:var(--accent);padding:8px;background:#15171b;border-radius:10px}.game{display:grid;grid-template-columns:310px auto 300px;gap:16px;justify-content:center;padding:12px;height:100vh;--bs: min( calc(100vh - 70px) , calc(100vw - 680px) , 680px)}.side{display:flex;flex-direction:column;gap:10px;min-height:0;overflow-y:auto}.center{display:flex;flex-direction:column;gap:8px;align-items:center}.hint{width:var(--bs);padding:8px 12px;border-radius:8px;background:var(--panel);text-align:center;font-weight:500;min-height:38px}.hint.mine{background:#3a3424;color:var(--accent)}.hint.over{background:#24363a;color:var(--accent2);font-weight:700}.board{width:var(--bs);height:var(--bs);display:grid;grid-template:repeat(8,1fr) / repeat(8,1fr);border-radius:6px;overflow:hidden;box-shadow:0 6px 24px #0008;-webkit-user-select:none;user-select:none}.sq{position:relative;display:flex;align-items:center;justify-content:center;cursor:pointer}.sq.light{background:var(--light)}.sq.dark{background:var(--dark)}.sq.last:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#9bc70069}.sq.sel:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#14551e80}.sq.selectable:before{content:"";position:absolute;top:3px;right:3px;bottom:3px;left:3px;border:3px solid var(--accent);border-radius:6px;animation:pulse 1.2s infinite}.sq.target:after{content:"";position:absolute;width:30%;height:30%;border-radius:50%;background:#1d4a2a99}.sq.capture:after{content:"";position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:50%;border:5px solid #1d4a2a99}.sq.warn:after{content:"⚠";position:absolute;top:2px;right:4px;font-size:calc(var(--bs) / 30);color:var(--danger)}.sq.warn:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#e05a4c44}.sq.check{background-image:radial-gradient(ellipse at center,red,#e70000 25%,#a9000000 89%,#9e000000)}@keyframes pulse{50%{opacity:.35}}.pc{position:relative;z-index:1;width:95%;height:95%;pointer-events:none}.shield{position:absolute;z-index:2;bottom:4%;right:4%;width:30%;height:30%;filter:drop-shadow(0 1px 1.5px rgba(0,0,0,.65))}.aura{position:absolute;z-index:0;top:8%;right:8%;bottom:8%;left:8%;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(255,214,90,.3) 0%,rgba(240,180,40,.14) 50%,transparent 72%)}.coord{position:absolute;font-size:11px;font-weight:700;color:#0008;z-index:1}.coord.rank{top:2px;left:3px}.coord.file{bottom:1px;right:3px}.player{display:flex;align-items:center;gap:10px;border:2px solid transparent}.player.turn{border-color:var(--accent)}.player.offline{border-color:var(--danger);background:#3a2624}.offline-note{color:var(--danger);font-weight:700;font-size:12px;margin-top:2px}.pname{font-weight:600}.dot{display:inline-block;width:14px;height:14px;border-radius:50%;border:1px solid #888;flex:none}.dot.w{background:#fff}.dot.b{background:#111}.dot.small{width:9px;height:9px;margin-right:6px}.player>div{min-width:0}.taken{display:flex;flex-wrap:wrap;align-items:center;gap:2px 6px;margin-top:4px;min-height:20px}.taken-group{display:inline-flex}.taken-pc{width:20px;height:20px}.taken-group .taken-pc+.taken-pc{margin-left:-11px}.taken-plus{font-size:12px;font-weight:700;color:var(--muted)}.turn-badge{margin-left:auto;flex:none;white-space:nowrap;background:var(--accent);color:#1d1f24;font-size:11px;font-weight:700;padding:3px 8px;border-radius:4px;letter-spacing:.02em}.op-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.op-card{background:#15171b;border-radius:6px;padding:6px;font-size:11px;text-align:center;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:3px}.op-card.used{opacity:.7}.op-card.used .op-title{text-decoration:line-through}.op-title{line-height:1.2}.op-glyph{display:block;width:24px;height:24px}.card-back{display:block;width:14px;height:19px;opacity:.55;filter:drop-shadow(0 1px 1px rgba(0,0,0,.4))}.side.left{overflow:hidden}.cards{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,minmax(0,1fr));gap:8px;flex:1;min-height:0;max-height:330px}.card{text-align:left;padding:8px;display:flex;flex-direction:column;gap:4px;background:var(--panel);border:2px solid #454a54;border-radius:10px}.card.ready{border-color:#6cc07088}.card.off{opacity:.6}.card.used{opacity:.3;filter:grayscale(1)}.card.active{border-color:var(--accent);background:#3a3424;box-shadow:0 0 0 3px #e0b44c55;opacity:1}.card{overflow:hidden;justify-content:center;min-height:0}.card-head{font-weight:700;font-size:13px;display:flex;align-items:center;gap:6px;line-height:1.2}.card-glyph{width:24px;height:24px;flex:none}.card-tagline{font-size:11px;color:#b9a77c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-status{font-size:11px;font-weight:600;color:var(--ok);line-height:1.25;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:center;justify-content:center;padding:16px;background:#0a0b0e8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade-in .15s ease-out}.modal{width:380px;max-width:100%;padding:18px 20px;border-radius:12px;background:#23262df7;border:1px solid #e0b44c66;box-shadow:0 16px 48px #000b;font-size:14px;line-height:1.45;animation:pop-in .18s ease-out}.modal-body{color:#cfd0d4;margin-bottom:4px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.modal-actions button{min-width:110px}button.danger{background:var(--danger);border-color:var(--danger);color:#fff;font-weight:600}button.danger:hover:not(:disabled){border-color:#ff8a7d}button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(6px) scale(.98)}}.icon-inline{display:inline-block;width:1em;height:1.15em;vertical-align:-.2em;margin:0 .1em}.card-tip{position:fixed;z-index:20;width:300px;padding:12px 14px;border-radius:10px;pointer-events:none;background:#23262df2;border:1px solid #e0b44c66;box-shadow:0 10px 30px #000a;font-size:13px;line-height:1.4;opacity:0;transform:translate(-4px);transition:opacity .15s,transform .15s}.card-tip.below{transform:translateY(-4px)}.card-tip.shown{opacity:1;transform:none}.tip-title{font-weight:700;font-size:15px;color:var(--accent);margin-bottom:8px}.tip-section{margin-bottom:8px}.tip-section span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:2px}.tip-foot{font-size:11px;color:var(--muted)}.tip-status{margin-top:8px;padding-top:8px;border-top:1px solid #454a54;font-size:12px;font-weight:600}.card.off .card-tagline{font-size:11px;color:#b9a77c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-status{color:var(--muted)}.card.active .card-tagline{font-size:11px;color:#b9a77c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tip-tagline{font-size:12px;color:#b9a77c;margin:-6px 0 10px}.card-status{color:var(--accent)}.room{font-size:13px;color:var(--muted)}.room b{color:var(--accent);letter-spacing:.1em}.code-chip{padding:1px 6px;margin:0 2px;font-size:13px;font-weight:700;letter-spacing:.12em;color:var(--accent);background:#15171b;border-color:#e0b44c55;border-radius:4px}.copied{color:var(--ok);margin-left:4px}.segmented.two{grid-template-columns:1fr 1fr}.segmented.two button{font-size:13px;padding:7px 4px}.status{margin:8px 0;font-size:15px}.check-badge{margin-left:8px;background:var(--danger);color:#fff;padding:1px 8px;border-radius:10px;font-size:12px;font-weight:700}.buttons{display:flex;gap:6px;flex-wrap:wrap}.buttons button{flex:1 1 auto;padding:8px 6px;font-size:14px}.log-panel{flex:1;display:flex;flex-direction:column;min-height:200px}.log{flex:1;overflow-y:auto;font-size:13px;display:flex;flex-direction:column;gap:3px}.log-line{padding:3px 6px;border-radius:4px;display:flex;align-items:baseline}.log-line .dot{flex:none}.log-line.kind-card{background:#3a3424}.log-line.kind-roll{background:#24363a;font-weight:600}.log-line.kind-info{color:var(--accent2)}.log-line.jump{cursor:pointer}.log-line.jump:hover{background:#2f333b}.log-line.current,.log-line.current:hover{box-shadow:inset 3px 0 0 var(--accent),inset 0 0 0 1px #e0b44c55;background:#3a3424}.replay-nav{display:flex;gap:6px;margin-top:8px}.replay-nav button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:7px 4px;font-size:13px}.nav-icon{width:13px;height:13px;flex:none}.replay-badge{margin-left:8px;background:var(--accent2);color:#10202b;padding:1px 6px;border-radius:4px;font-size:10px;letter-spacing:.03em}.hint.replay{background:#24363a;color:var(--accent2)}@media(max-width:1100px){.game{grid-template-columns:1fr;height:auto;--bs: min(94vw, 600px);justify-items:center}.side,.side.left{width:min(94vw,600px);overflow:visible}.cards{grid-template-rows:none;max-height:none}}
