*{margin:0;padding:0;box-sizing:border-box}
:root{
    --bg:#0d0d0f;--sf:#131316;--sf2:#1a1a1e;
    --b:#2a2a30;--b2:#383840;
    --tx:#d8d8e0;--dim:#555560;--dim2:#888890;
    --ac:#39ff14;--red:#ff4455;--ye:#ffd700;--bl:#4499ff;--mg:#cc55ff;
    --mono: ui-monospace,'Cascadia Code','Cascadia Mono','Consolas','Menlo','DejaVu Sans Mono',monospace;
}
html,body{height:100%;background:var(--bg);color:var(--tx);font-family:var(--mono);font-size:13px;line-height:1}
body{display:flex;flex-direction:column;height:100vh;overflow:hidden}
#hdr{background:var(--sf);border-bottom:1px solid var(--b);padding:7px 14px;display:flex;align-items:center;gap:10px;flex-shrink:0}
.logo{color:var(--ac);font-weight:bold;letter-spacing:3px}
#dot{width:7px;height:7px;border-radius:50%;background:var(--dim);transition:background .3s}
#dot.ok{background:var(--ac)}#dot.err{background:var(--red)}
#stxt{color:var(--dim2);font-size:11px}
#hmode{margin-left:auto;font-size:11px;color:var(--dim)}
#setup{flex:1;overflow-y:auto;display:flex;align-items:flex-start;justify-content:center;padding:32px 16px}
.sw{width:500px;max-width:100%}
.ss{background:var(--sf);border:1px solid var(--b);margin-bottom:10px}
.st{padding:7px 14px;font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--dim2);border-bottom:1px solid var(--b);background:var(--sf2)}
.sb{padding:13px 14px;display:flex;flex-direction:column;gap:9px}
.row{display:flex;gap:10px;align-items:center}
.row label{color:var(--dim2);font-size:11px;white-space:nowrap;min-width:115px}
input,select{background:var(--bg);border:1px solid var(--b);color:var(--tx);font-family:inherit;font-size:12px;padding:6px 9px;outline:none;transition:border-color .15s;flex:1}
input:focus,select:focus{border-color:var(--ac)}
input::placeholder{color:var(--dim)}
select option{background:var(--bg)}
.tr{display:flex;gap:10px;align-items:center;cursor:pointer}
.tr label{cursor:pointer;color:var(--dim2);font-size:11px;flex:1}
.tog{width:34px;height:18px;background:var(--b2);border-radius:9px;position:relative;cursor:pointer;transition:background .2s;flex-shrink:0}
.tog.on{background:var(--ac)}
.tog::after{content:'';position:absolute;width:12px;height:12px;background:#fff;border-radius:50%;top:3px;left:3px;transition:transform .2s}
.tog.on::after{transform:translateX(16px)}
.bstart{width:100%;padding:11px;background:transparent;border:1px solid var(--ac);color:var(--ac);font-family:inherit;font-size:12px;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:all .15s;margin-top:4px}
.bstart:hover{background:var(--ac);color:var(--bg)}
#game{flex:1;display:none;flex-direction:column;overflow:hidden}
#term{flex:1;overflow-y:scroll;overflow-x:auto;padding:12px 14px;
    font-family: var(--mono), serif;font-size:13px;line-height:1.2;white-space:pre;scrollbar-width:thin;scrollbar-color:var(--b) transparent}
#term::-webkit-scrollbar{width:4px}
#term::-webkit-scrollbar-thumb{background:var(--b)}
#term .ln{display:block}
#term .gap{display:block;height:0.5em}
.c30{color:#444}.c31{color:var(--red)}.c32{color:var(--ac)}.c33{color:var(--ye)}
.c34{color:var(--bl)}.c35{color:var(--mg)}.c36{color:#00cccc}.c37{color:#e0e0e0}
.c90{color:#444}.c91{color:#ff6677}.c92{color:#55ee22}.c93{color:#ffe033}
.c94{color:#66aaff}.c95{color:#dd77ff}.c96{color:#44ddcc}.c97{color:#fff}
.ab{font-weight:bold}.au{text-decoration:underline}
#hbar{border-top:1px solid var(--b);background:var(--sf);padding:5px 14px;font-size:11px;color:var(--dim);display:flex;gap:20px;align-items:center;flex-shrink:0}
#hbar b{color:var(--tx);font-weight:normal}
#ti{margin-left:auto;font-size:11px}
#irow{display:flex;align-items:center;border-top:1px solid var(--b);background:var(--sf);padding:0 14px;flex-shrink:0}
#pr{color:var(--ac);margin-right:8px;user-select:none;font-size:14px}
#pr.w{color:var(--dim)}
#cmd{flex:1;background:transparent;border:none;outline:none;color:var(--tx);font-family:inherit;font-size:13px;padding:11px 0;caret-color:var(--ac)}
#cmd:disabled{opacity:.35}
#sbtn{background:transparent;border:1px solid var(--b);color:var(--dim);font-family:inherit;font-size:11px;letter-spacing:1px;text-transform:uppercase;padding:5px 12px;cursor:pointer;transition:all .15s}
#sbtn:hover:not(:disabled){border-color:var(--ac);color:var(--ac)}
#sbtn:disabled{opacity:.3;cursor:default}
.mbg{display:none;position:fixed;inset:0;background:rgba(0,0,0,.78);z-index:200;align-items:center;justify-content:center}
.mbg.show{display:flex}
.modal{background:var(--sf);border:1px solid var(--b2);padding:24px 28px;min-width:260px;max-width:90vw;text-align:center}
.modal h3{font-size:10px;letter-spacing:3px;text-transform:uppercase;color:var(--dim2);margin-bottom:16px}
#gidval{font-size:24px;color:var(--mg);letter-spacing:5px;padding:12px 18px;background:var(--bg);border:1px solid var(--b);display:block;cursor:pointer;transition:border-color .2s;margin-bottom:8px}
#gidval:hover{border-color:var(--mg)}
.cpyhint{font-size:11px;color:var(--dim)}
.cbtns{display:flex;gap:10px;justify-content:center}
.cb{width:60px;height:52px;background:transparent;font-family:inherit;font-size:10px;letter-spacing:1px;text-transform:uppercase;font-weight:bold;cursor:pointer;border:1px solid;transition:all .15s}
.cb.r{border-color:var(--red);color:var(--red)}.cb.r:hover{background:var(--red);color:var(--bg)}
.cb.g{border-color:var(--ac);color:var(--ac)}.cb.g:hover{background:var(--ac);color:var(--bg)}
.cb.y{border-color:var(--ye);color:var(--ye)}.cb.y:hover{background:var(--ye);color:var(--bg)}
.cb.b{border-color:var(--bl);color:var(--bl)}.cb.b:hover{background:var(--bl);color:var(--bg)}
.card-row{display:inline-block}
.card{display:inline-block;cursor:default;transition:opacity .15s,transform .15s}
.card.playable{cursor:pointer}
.card.playable:hover{transform:translateY(-4px)}
#draw-btn{background:transparent;border:1px solid var(--b2);color:var(--dim2);font-family:inherit;font-size:11px;letter-spacing:1px;text-transform:uppercase;padding:4px 14px;cursor:pointer;transition:all .15s;margin-left:auto}
#draw-btn:hover:not(:disabled){border-color:var(--ac);color:var(--ac)}
#draw-btn:disabled{opacity:.3;cursor:default}
