:root{--bg:#0b0b0d;--fg:#e6e6e6;--accent:#c9a227;--muted:#8a8a8a;--border:#2a2a2e}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--fg);min-height:100vh;margin:0;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,Liberation Mono,monospace;line-height:1.5}main{max-width:640px;margin:0 auto;padding:4rem 1.5rem}h1{color:var(--accent);letter-spacing:.02em;margin:0 0 .25rem;font-size:2rem}.tagline{color:var(--muted);margin:0 0 2rem}button{color:var(--fg);border:1px solid var(--border);font:inherit;cursor:pointer;background:0 0;border-radius:4px;padding:.6rem 1rem}button:hover{border-color:var(--accent);color:var(--accent)}.user{color:var(--accent)}.room-actions{margin-top:2rem}.room-actions .primary{border-color:var(--accent);color:var(--accent);padding:.6rem 1.4rem}.or-divider{color:var(--muted);margin:1.5rem 0 .5rem}.join-form{gap:.5rem;display:flex}.join-form input{border:1px solid var(--border);width:8ch;color:var(--fg);font:inherit;text-transform:uppercase;letter-spacing:.1em;background:0 0;border-radius:4px;padding:.6rem}.join-form input:focus{border-color:var(--accent);outline:none}.error{color:#c0392b;margin-top:.5rem}.game-screen{max-width:760px;height:100dvh;padding:max(1rem, env(safe-area-inset-top)) max(1.25rem, env(safe-area-inset-right)) max(.75rem, env(safe-area-inset-bottom)) max(1.25rem, env(safe-area-inset-left));flex-direction:column;gap:1rem;margin:0 auto;display:flex}.game-header{color:var(--muted);border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.5rem 1.25rem;padding-bottom:.75rem;font-size:.85rem;display:flex}.game-header strong{color:var(--accent)}.presence{color:var(--muted)}.hp-display{color:var(--muted);font-size:.8em}.hp-critical{color:#c0392b;font-size:.8em}.score-display{color:var(--muted);font-size:.78em}.player-name{margin-left:auto}.lobby-link{color:var(--muted);border:1px solid #0000;border-radius:4px;align-items:center;min-height:32px;padding:.35rem .55rem;font-size:.85rem;text-decoration:none;display:inline-flex}.lobby-link:hover{color:var(--accent);border-color:var(--border)}.help-btn{border:1px solid var(--border);color:var(--muted);border-radius:4px;min-width:36px;min-height:36px;padding:.35rem .7rem;font-size:.9rem;line-height:1}.help-btn:hover{border-color:var(--accent);color:var(--accent)}.game-log{flex-direction:column;flex:1;gap:.75rem;display:flex;overflow-y:auto}.game-log p{white-space:pre-wrap;margin:0;line-height:1.7}.game-log .log-map{white-space:pre;flex-shrink:0;margin:0;line-height:1.5;overflow-x:auto}.log-command{color:var(--accent)}.log-response{color:var(--fg)}.log-plain{white-space:pre-wrap;margin:0;line-height:1.7}.log-document{color:#2b231a;white-space:pre-wrap;text-shadow:none;background:#f4ecd6;border:1px solid #8a6f3a;border-radius:3px;margin:.6rem 0;padding:1rem 1.2rem;font-family:Georgia,Times New Roman,serif;font-size:.95rem;line-height:1.6;box-shadow:0 2px 12px #0006,inset 0 0 30px #8b6f3a2e}.log-vision{color:#c8e1ff;white-space:pre-wrap;text-shadow:0 0 8px #b4d2ff80;background:#141e32d9;border:1px solid #4a7ab8;border-radius:3px;margin:.6rem 0;padding:1rem 1.2rem;font-style:italic;line-height:1.7;box-shadow:0 0 24px #508cdc59,inset 0 0 20px #78b4ff1f}.log-waiting{color:var(--muted)}.game-input{border-top:1px solid var(--border);gap:.5rem;padding-top:.75rem;display:flex}.game-input input{border:1px solid var(--border);color:var(--fg);font:inherit;background:0 0;border-radius:4px;flex:1;min-height:44px;padding:.6rem .75rem;font-size:16px}.game-input button{min-height:44px;padding:.6rem 1.1rem}.game-input input:focus{border-color:var(--accent);outline:none}.game-input input::placeholder{color:var(--muted)}.game-input button:disabled{opacity:.4;cursor:default}.help-overlay{z-index:100;background:#000000a6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.help-panel{border:1px solid var(--border);background:#13131a;border-radius:6px;width:min(480px,90vw);max-height:85vh;padding:0;overflow-y:auto}.help-header{z-index:1;border-bottom:1px solid var(--border);color:var(--accent);letter-spacing:.08em;text-transform:uppercase;background:#13131a;justify-content:space-between;align-items:center;padding:1rem 1.25rem;font-size:.9rem;display:flex;position:sticky;top:0}.help-close{color:var(--muted);border:none;padding:.2rem .4rem;font-size:.8rem}.help-list{flex-direction:column;gap:.4rem;margin:0;padding:1rem 1.25rem 0;display:flex}.help-row{gap:1rem;display:flex}.help-row dt{color:var(--accent);min-width:10rem;font-size:.82rem}.help-row dd{color:var(--muted);margin:0;font-size:.82rem}.help-spells{border-top:1px solid var(--border);color:var(--muted);margin:1rem 0 0;padding:.75rem 1.25rem 0;font-size:.82rem}.help-spells strong{color:var(--accent);font-weight:400}.help-hint{color:var(--border);text-align:right;margin:1rem 0 0;padding:0 1.25rem 1rem;font-size:.75rem}.feedback-btn-text{border:1px solid var(--border);color:var(--muted);font:inherit;cursor:pointer;background:0 0;border-radius:4px;margin-top:.75rem;padding:.4rem .75rem;font-size:.82rem}.feedback-btn-text:hover{color:var(--fg);border-color:var(--muted)}.feedback-btn-compact{border:1px solid var(--border);color:var(--muted);font:inherit;cursor:pointer;background:0 0;border-radius:4px;justify-content:center;align-items:center;width:32px;height:32px;font-size:1rem;display:inline-flex}.feedback-btn-compact:hover{color:var(--accent);border-color:var(--accent)}.feedback-form,.feedback-thanks{padding:1rem 1.25rem}.feedback-hint{color:var(--muted);margin:0 0 .5rem;font-size:.82rem}.feedback-textarea{box-sizing:border-box;border:1px solid var(--border);width:100%;color:var(--fg);font:inherit;resize:vertical;background:0 0;border-radius:4px;min-height:6rem;padding:.6rem .75rem;font-size:16px}.feedback-textarea:focus{border-color:var(--accent);outline:none}.feedback-actions{justify-content:flex-end;gap:.5rem;margin-top:.75rem;display:flex}.feedback-actions button{min-height:44px;padding:.5rem 1rem}.feedback-actions .primary{border-color:var(--accent);color:var(--accent)}.feedback-actions button:disabled{opacity:.4;cursor:default}.feedback-thanks{color:var(--accent);text-align:center;font-size:.95rem}.game-screen:before{content:"";pointer-events:none;z-index:50;background:repeating-linear-gradient(#0000 0 3px,#00000012 3px 4px);position:fixed;inset:0}.game-screen:after{content:"";pointer-events:none;z-index:50;position:fixed;inset:0;box-shadow:inset 0 0 100px #0000008c}.log-response{text-shadow:0 0 10px #e6e6e61f}.log-command{text-shadow:0 0 10px #c9a22773}.game-input input{caret-color:var(--accent)}.prompt-symbol{color:var(--accent);-webkit-user-select:none;user-select:none;flex-shrink:0;align-self:center;padding:0 .25rem 0 .1rem;font-size:1rem;line-height:1}.death-screen{border-top:1px solid #c0392b;flex-direction:column;align-items:flex-start;gap:.5rem;padding-top:1.25rem;display:flex}.death-title{color:#c0392b;letter-spacing:.15em;margin:0;font-size:1.1rem}.death-sub{color:var(--muted);margin:0}.victory-screen{border-top:1px solid var(--accent);flex-direction:column;align-items:flex-start;gap:.5rem;padding-top:1.25rem;display:flex}.victory-title{color:var(--accent);letter-spacing:.15em;text-shadow:0 0 12px #c9a227b3;margin:0;font-size:1.1rem}.victory-sub{color:var(--muted);margin:0}.resume-game{align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.resume-clear{color:var(--muted);border:none;padding:.3rem .4rem;font-size:.8rem;line-height:1}.resume-clear:hover{color:var(--fg);border-color:#0000}.difficulty-picker{margin:1.25rem 0}.difficulty-label{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 .5rem;font-size:.78rem}.difficulty-row{gap:.4rem;display:flex}.difficulty-btn{border:1px solid var(--border);color:var(--muted);font:inherit;cursor:pointer;background:0 0;border-radius:4px;flex:1;padding:.5rem .75rem;font-size:.9rem}.difficulty-btn:hover{border-color:var(--accent);color:var(--accent)}.difficulty-btn.active{border-color:var(--accent);color:var(--accent);background:#c9a22714}.difficulty-hint{color:var(--muted);min-height:1em;margin:.5rem 0 0;font-size:.75rem}.character-summary{color:var(--muted);margin:.75rem 0 0;font-size:.78rem}.start-over{color:var(--muted);border-color:var(--border);background:0 0;margin-top:.75rem;font-size:.82rem}.start-over:hover{color:var(--fg);border-color:var(--muted)}.start-over-confirm{border:1px solid var(--border);border-radius:4px;margin-top:.75rem;padding:.75rem}.start-over-confirm p{margin:0 0 .5rem;font-size:.85rem}.start-over-confirm button{margin-right:.5rem}.start-over-confirm .danger{color:#b04545;border-color:#b04545}.char-create{max-width:640px;margin:0 auto;padding:2rem 1.5rem 4rem}.char-create h1{color:var(--accent);margin:0 0 .25rem}.char-sub{color:var(--muted);margin:0 0 2rem}.char-section{border-top:1px solid var(--border);margin-bottom:2rem;padding-top:1.25rem}.char-section h2{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:0 0 1rem;font-size:.85rem}.char-section-header{justify-content:space-between;align-items:baseline;margin-bottom:1rem;display:flex}.char-section-header h2{margin:0}.char-name-input{border:1px solid var(--border);width:100%;max-width:24rem;color:var(--fg);font:inherit;background:0 0;border-radius:4px;padding:.6rem .75rem}.char-name-input:focus{border-color:var(--accent);outline:none}.char-name-input::placeholder{color:var(--muted)}.reroll-btn{color:var(--muted);border-color:var(--border);padding:.25rem .6rem;font-size:.78rem}.reroll-btn:disabled{opacity:.4;cursor:default}.reroll-btn:disabled:hover{border-color:var(--border);color:var(--muted)}.stat-pool{flex-wrap:wrap;gap:.5rem;min-height:2.5rem;margin-bottom:.5rem;display:flex}.pool-empty{color:var(--muted);align-self:center;font-size:.85rem}.pool-value{border:1px solid var(--border);width:2.8rem;height:2.8rem;color:var(--accent);border-radius:4px;font-size:1.1rem;font-weight:700}.pool-value.selected{border-color:var(--accent);background:#c9a2271f}.stat-hint{color:var(--muted);min-height:1.2em;margin:0 0 1rem;font-size:.78rem}.stat-grid{grid-template-columns:repeat(3,1fr);gap:.5rem;display:grid}.stat-slot{border:1px dashed var(--border);cursor:default;text-align:left;border-radius:4px;justify-content:space-between;align-items:center;padding:.5rem .75rem;display:flex}.stat-slot.clickable{cursor:pointer}.stat-slot.filled{border-style:solid}.stat-slot.filled:hover,.stat-slot.clickable:hover{border-color:var(--accent)}.stat-label{color:var(--muted);letter-spacing:.05em;font-size:.78rem}.stat-value{color:var(--fg);font-size:1.1rem;font-weight:700}.stat-modified{color:var(--accent)}.stat-mod-hint{color:var(--muted);margin-left:.2rem;font-size:.65rem}.option-grid{grid-template-columns:repeat(2,1fr);gap:.5rem;display:grid}.option-card{border:1px solid var(--border);text-align:left;cursor:pointer;border-radius:4px;flex-direction:column;gap:.2rem;padding:.65rem .9rem;display:flex}.option-card.active{border-color:var(--accent);background:#c9a22714}.option-card:hover{border-color:var(--accent)}.option-name{color:var(--fg);font-size:.95rem;font-weight:700}.option-detail{color:var(--muted);font-size:.75rem}.option-spell{color:var(--accent);font-size:.72rem}.hp-preview{color:var(--muted);margin:.75rem 0 0;font-size:.82rem}.alignment-grid{grid-template-columns:repeat(3,1fr);gap:.5rem;display:grid}.alignment-cell{border:1px solid var(--border);cursor:pointer;text-align:center;color:var(--muted);border-radius:4px;padding:.5rem;font-size:.78rem}.alignment-cell.active{border-color:var(--accent);color:var(--accent);background:#c9a22714}.alignment-cell:hover{border-color:var(--accent);color:var(--accent)}.char-summary p{color:var(--muted);margin:.3rem 0;font-size:.85rem}.char-summary strong{color:var(--fg)}.char-error{color:#c0392b;margin:.5rem 0;font-size:.85rem}.begin-btn{border-color:var(--accent);color:var(--accent);letter-spacing:.05em;margin-top:1.5rem;padding:.75rem 2rem;font-size:1rem}.begin-btn:disabled{opacity:.35;cursor:default;border-color:var(--border);color:var(--muted)}@media (max-width:640px){main{padding:2rem 1.25rem}.game-screen{max-width:100%}.game-header{column-gap:.75rem;font-size:.8rem}.player-name{margin-left:auto}.stat-grid,.alignment-grid{grid-template-columns:repeat(2,1fr)}.option-grid{grid-template-columns:1fr}.pool-value{width:3.2rem;height:3.2rem}.help-panel{width:min(480px,100vw - 1.5rem)}.help-row{flex-direction:column;gap:.1rem}.help-row dt{min-width:0}.help-close{min-width:44px;min-height:44px;font-size:1rem}}
