:root{color-scheme:dark;--bg:#121412;--panel:#1d211d;--panel-2:#252a24;--line:#3c4539;--text:#f3f6ee;--muted:#aeb8a6;--green:#9bd67b;--blue:#79b8ff;--red:#f18484;--cell:#20261f;--cell-line:#31392f}*{box-sizing:border-box}body,html{min-height:100%;margin:0}body{background:radial-gradient(circle at 70% 20%,rgba(121,184,255,.12),transparent 30%),linear-gradient(135deg,#121412,#161d1a 45%,#1b201a);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select{font:inherit;border:1px solid var(--line);border-radius:7px;background:#171b17;color:var(--text)}button{min-height:38px;padding:0 12px;display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}button:hover{border-color:#5c6b55;background:#202620}input,select{min-height:36px;padding:0 10px;outline:none}button:focus-visible,input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(121,184,255,.16)}.shell{width:min(1440px,100%);min-height:100vh;margin:0 auto;padding:20px}.topbar{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding-bottom:18px}h1{margin:0;font-size:clamp(1.35rem,2.8vw,2.2rem);line-height:1.05;letter-spacing:0}p{margin:7px 0 0;color:var(--muted)}.room-controls{display:flex;align-items:flex-end;gap:10px}.field,label{display:grid;grid-gap:7px;gap:7px;color:var(--muted);font-size:.78rem;text-transform:uppercase}.room-controls input{width:160px}.icon-button{width:38px;padding:0}.workspace{display:grid;grid-template-columns:300px 1fr;grid-gap:18px;gap:18px;align-items:stretch}.panel{background:rgba(29,33,29,.88);border:1px solid var(--line);border-radius:8px;padding:14px;display:flex;flex-direction:column;gap:14px;min-width:0}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:9px;gap:9px}.metric-grid div{border:1px solid var(--line);border-radius:7px;padding:10px;background:var(--panel-2)}.metric-grid span{display:block;color:var(--muted);font-size:.72rem;text-transform:uppercase}.metric-grid strong{display:block;margin-top:5px;font-size:1.3rem}.control-row{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.primary{background:var(--green);border-color:#b7eba0;color:#10200b;font-weight:750}.primary:hover{background:#afe690}.segmented{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px;padding:4px;border:1px solid var(--line);border-radius:8px;background:#151915}.segmented button{border-color:transparent}.segmented .active{background:var(--panel-2);border-color:#637158}.presence{display:grid;grid-gap:7px;gap:7px;margin-top:auto}.presence-title,.presence-user{display:flex;align-items:center;justify-content:space-between;gap:8px}.presence-title{color:var(--muted);font-size:.78rem;text-transform:uppercase}.presence-user{min-height:32px;padding:0 10px;border:1px solid var(--line);border-radius:7px;background:#171b17}.presence-user span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.presence-user svg{color:var(--green);flex:0 0 auto}.error{border:1px solid hsla(0,80%,73%,.45);border-radius:7px;padding:10px;color:#ffd5d5;background:hsla(0,80%,73%,.12)}.board-wrap{min-width:0;display:grid;align-items:center}.board{width:100%;aspect-ratio:56/36;display:grid;overflow:hidden;border:1px solid #55614d;border-radius:8px;background:#111511;box-shadow:0 18px 52px rgba(0,0,0,.3);touch-action:none}.cell{min-height:0;padding:0;border:0;border-right:1px solid var(--cell-line);border-bottom:1px solid var(--cell-line);border-radius:0;background:var(--cell)}.cell:hover{background:#2d372a}.cell.alive{background:linear-gradient(135deg,hsla(0,0%,100%,.25),transparent 45%),var(--green);box-shadow:inset 0 0 8px rgba(20,35,10,.28)}@media (max-width:900px){.shell{padding:14px}.room-controls,.topbar{align-items:stretch;flex-direction:column}.room-controls{display:grid;grid-template-columns:1fr 1fr auto}.room-controls input{width:100%}.workspace{grid-template-columns:1fr}.panel{order:2}}@media (max-width:560px){.control-row,.metric-grid,.room-controls{grid-template-columns:1fr}.icon-button{width:100%}}