@import "https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:wght@400;700&family=Fraunces:opsz,wght,SOFT,WONK@9..144,400..900,0..100,0..1&display=swap";:root{--walnut-950:#1a110b;--walnut-900:#2a1b12;--walnut-800:#3d2718;--walnut-700:#5a3a24;--walnut-600:#7a4f30;--walnut-grain:#120b07;--mahogany-rim:#3d2314;--felt-900:#0d2a18;--felt:#1c4a2a;--felt-500:#2a6a3d;--brass-hi:#f8d68c;--brass:#e2a947;--brass-lo:#9c6b22;--brass-glow:#ffd57a;--on-brass:#2b1a0c;--cream:#f3e6cc;--cream-muted:#c9ad88;--parchment:#efe2c6;--parchment-edge:#e3d1ad;--sepia:#2b1d12;--sepia-muted:#6b5238;--lamp-on:#8fce74;--lamp-off:#7a6a58;--danger:#f08a70;--crit-max:#ffd54a;--crit-min:#e2553f;--crit-min-ink:#9a3412;--type-d4:#e67e22;--type-d6:#c0392b;--type-d8:#16a085;--type-d10:#2980b9;--type-d12:#8e44ad;--type-d20:#2c3e50;--type-d100:#d35400;--font-display:Fraunces, "Iowan Old Style", Georgia, serif;--font-ui:"Atkinson Hyperlegible", "Segoe UI", system-ui, sans-serif;--font-mono:ui-monospace, "Cascadia Mono", Menlo, monospace;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--radius-sm:6px;--radius-md:10px;--radius-lg:18px;--radius-pill:999px;--shadow-board:0 1px 0 #7a4f30 inset, 0 -2px 0 #120b07 inset, 0 10px 28px #0000008c;--shadow-carved:inset 0 2px 4px #0009, inset 0 -1px 0 #7a4f3080;--shadow-raised:0 1px 0 #f8d68c40 inset, 0 3px 0 #120b07, 0 6px 12px #00000073;--shadow-pressed:0 1px 0 #120b07, inset 0 2px 5px #00000080;--shadow-brass:0 1px 0 #f8d68c inset, 0 -2px 0 #9c6b22 inset, 0 4px 0 #6b4714, 0 8px 18px #e2a94759;--shadow-paper:0 1px 0 #fff inset, 0 2px 0 #e3d1ad, 0 6px 14px #0006;--tap-min:44px;--die-tile:56px;--roll-button:64px;--feed-rail:340px;--tex-wood:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='480' height='240'%3E%3Cfilter id='g' x='0' y='0'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.006 0.18' numOctaves='3' seed='11'/%3E%3CfeColorMatrix values='0 0 0 0 0.07 0 0 0 0 0.04 0 0 0 0 0.02 0 0 1.1 0 -0.42'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)'/%3E%3C/svg%3E");--tex-paper:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='p'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.6' numOctaves='3' seed='5'/%3E%3CfeColorMatrix values='0 0 0 0 0.42 0 0 0 0 0.32 0 0 0 0 0.2 0 0 0 0.35 -0.1'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23p)'/%3E%3C/svg%3E");--bg-dark:var(--walnut-950);--bg-card:#2a1b12f5;--bg-card-hover:#3d2718fa;--accent-gold:var(--brass);--accent-gold-hover:var(--brass-lo);--accent-blue:#7fb3d9;--accent-red:var(--danger);--accent-green:var(--lamp-on);--accent-purple:#c49bd8;--text-main:var(--cream);--text-muted:var(--cream-muted);--border-subtle:#7a4f308c;--shadow-main:0 10px 28px #0000008c;--font-family:var(--font-ui);--die:#b71c1c;--die-deep:#880e4f;--die-glow:#ff5252;--die-alt:#efe3c8;--die-ink:#fff}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}body,html{background-color:var(--walnut-950);width:100%;height:100%;color:var(--cream);font-family:var(--font-ui);touch-action:none;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none;font-size:15px;line-height:1.45;overflow:hidden}input,textarea{-webkit-user-select:text;user-select:text;font:inherit}button{font:inherit;color:inherit}.hr-icon{flex:none;width:20px;height:20px}:focus-visible{outline:3px solid var(--brass-glow);outline-offset:2px}.hr-board{background:var(--tex-wood), linear-gradient(180deg, var(--walnut-800) 0%, var(--walnut-900) 100%);border:1px solid var(--walnut-grain);border-radius:var(--radius-lg);box-shadow:var(--shadow-board);color:var(--cream);background-size:480px 240px,auto;position:relative}.hr-board--screws:before,.hr-board--screws:after{content:"";background:radial-gradient(circle at 35% 30%, var(--brass-hi), var(--brass) 45%, var(--brass-lo));width:7px;height:7px;box-shadow:0 1px 0 var(--walnut-grain);pointer-events:none;border-radius:50%;position:absolute;top:8px}.hr-board--screws:before{left:8px}.hr-board--screws:after{right:8px}.hr-slot{background:linear-gradient(180deg, var(--walnut-grain), var(--walnut-900));border-radius:var(--radius-md);box-shadow:var(--shadow-carved)}.hr-plate{align-items:center;gap:var(--space-2);border-radius:var(--radius-sm);background:linear-gradient(180deg, var(--brass-hi), var(--brass) 55%, var(--brass-lo));color:var(--on-brass);box-shadow:0 1px 0 var(--walnut-grain), inset 0 1px 0 #ffffff59;font:700 12px/16px var(--font-ui);letter-spacing:.08em;text-transform:uppercase;padding:4px 12px;display:inline-flex}.hr-engraved{font:700 12px/16px var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--cream-muted);text-shadow:0 -1px 0 var(--walnut-grain), 0 1px 0 #7a4f3073}.hr-divider{background:linear-gradient(90deg, transparent, var(--walnut-grain), transparent);border:0;height:2px;box-shadow:0 1px #7a4f3066}.hr-btn{appearance:none;cursor:pointer;justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--tap-min);padding:0 var(--space-4);border-radius:var(--radius-md);font:700 15px/20px var(--font-ui);letter-spacing:.02em;white-space:nowrap;border:0;transition:transform 80ms,box-shadow 80ms,filter .15s,color .15s;display:inline-flex}.hr-btn:active{transform:translateY(2px)}.hr-btn--brass{background:radial-gradient(120% 90% at 50% 10%, var(--brass-hi) 0%, var(--brass) 45%, var(--brass-lo) 100%);color:var(--on-brass);box-shadow:var(--shadow-brass);text-shadow:0 1px #ffffff59}.hr-btn--brass:hover{filter:brightness(1.06)}.hr-btn--brass:active{box-shadow:0 1px 0 var(--brass-hi) inset, 0 1px 0 var(--brass-lo), 0 3px 8px #0006;transform:translateY(3px)}.hr-btn--roll{min-height:var(--roll-button);border-radius:var(--radius-pill);letter-spacing:.12em;text-transform:uppercase;padding:0 30px;font-size:20px}.hr-btn--wood{background:var(--tex-wood), linear-gradient(180deg, var(--walnut-700), var(--walnut-800));color:var(--cream);box-shadow:var(--shadow-raised);background-size:480px 240px,auto}.hr-btn--wood:hover{filter:brightness(1.1)}.hr-btn--wood:active{box-shadow:var(--shadow-pressed)}.hr-btn--ghost{color:var(--cream-muted);box-shadow:inset 0 0 0 1px var(--walnut-700);background:0 0}.hr-btn--ghost:hover{color:var(--cream);box-shadow:inset 0 0 0 1px var(--walnut-600)}.hr-btn--danger{color:var(--danger);box-shadow:inset 0 0 0 1px var(--danger);background:0 0}.hr-btn--danger:hover{background:#f08a701f}.hr-btn--icon{width:var(--tap-min);padding:0}.hr-btn--sm{min-height:36px;padding:0 12px;font-size:14px}.hr-btn--sm.hr-btn--icon{width:36px;padding:0}.hr-btn[disabled]{opacity:.45;cursor:not-allowed;filter:grayscale(.4);transform:none}.hr-btn.copied{color:var(--lamp-on)}.hr-lamp{appearance:none;cursor:pointer;align-items:center;gap:var(--space-2);border-radius:var(--radius-pill);background:linear-gradient(180deg, var(--walnut-grain), var(--walnut-900));min-height:36px;box-shadow:var(--shadow-carved), 0 0 0 1px #7a4f3059;font:700 13px/18px var(--font-ui);color:var(--cream-muted);border:0;padding:0 14px 0 10px;display:inline-flex}.hr-lamp i{background:radial-gradient(circle at 35% 30%, #d8cbb8, var(--lamp-off) 60%, #3b3128);width:12px;height:12px;box-shadow:0 0 0 2px var(--brass-lo);border-radius:50%;flex:none;display:block}.hr-lamp.is-on{color:var(--cream)}.hr-lamp.is-on i{background:radial-gradient(circle at 35% 30%, #e8ffd9, var(--lamp-on) 55%, #3c7a2c);box-shadow:0 0 0 2px var(--brass-lo), 0 0 10px 2px #8fce7499}.hr-lamp-short{display:none}.hr-die-art{object-fit:contain;filter:drop-shadow(0 3px 3px #00000073);pointer-events:none;-webkit-user-drag:none;display:block}.hr-glyph{--s:40px;width:var(--s);height:var(--s);color:var(--die-ink);font:750 calc(var(--s) * .34)/1 var(--font-display);filter:drop-shadow(0 2px 0 var(--walnut-grain));place-items:center;display:inline-grid;position:relative}.hr-glyph:before{content:"";background:linear-gradient(160deg, var(--die) 0%, var(--die) 45%, var(--die-deep) 100%);clip-path:var(--shape,inset(8% round 18%));position:absolute;inset:0}.hr-glyph>b{font-weight:inherit;position:relative}.hr-glyph[data-die=d4]{--shape:polygon(50% 4%, 97% 92%, 3% 92%)}.hr-glyph[data-die=d8]{--shape:polygon(50% 2%, 94% 50%, 50% 98%, 6% 50%)}.hr-glyph[data-die=d10],.hr-glyph[data-die=d100]{--shape:polygon(50% 2%, 95% 42%, 50% 98%, 5% 42%)}.hr-glyph[data-die=d12]{--shape:polygon(50% 3%, 97% 38%, 79% 94%, 21% 94%, 3% 38%)}.hr-glyph[data-die=d20]{--shape:polygon(50% 1%, 94% 26%, 94% 74%, 50% 99%, 6% 74%, 6% 26%)}.hr-tabs{border-radius:var(--radius-md);background:linear-gradient(180deg, var(--walnut-grain), var(--walnut-900));box-shadow:var(--shadow-carved);gap:4px;padding:4px;display:flex}.hr-tabs [role=tab]{appearance:none;cursor:pointer;min-height:36px;color:var(--cream-muted);font:700 14px/18px var(--font-ui);background:0 0;border:0;border-radius:7px;flex:1;justify-content:center;align-items:center;gap:6px;display:inline-flex}.hr-tabs [role=tab][aria-selected=true]{background:var(--tex-wood), linear-gradient(180deg, var(--walnut-700), var(--walnut-800));color:var(--cream);box-shadow:var(--shadow-raised);background-size:480px 240px,auto}.hr-chips{flex-wrap:wrap;gap:6px;display:flex}.hr-chip{appearance:none;cursor:pointer;border-radius:var(--radius-sm);background:var(--walnut-800);min-height:36px;color:var(--cream-muted);font:700 13px/18px var(--font-ui);box-shadow:var(--shadow-raised);border:0;padding:0 12px}.hr-chip:hover{color:var(--cream)}.hr-chip[aria-pressed=true]{background:linear-gradient(180deg, var(--brass-hi), var(--brass));color:var(--on-brass)}.hr-chip:active{box-shadow:var(--shadow-pressed);transform:translateY(2px)}.hr-input{width:100%;min-height:var(--tap-min);border-radius:var(--radius-md);background:linear-gradient(180deg, var(--walnut-grain), var(--walnut-900));box-shadow:var(--shadow-carved);color:var(--cream);font:400 16px/22px var(--font-ui);border:0;outline:none;padding:0 14px}.hr-input::placeholder{color:var(--cream-muted)}.hr-input:focus-visible{box-shadow:var(--shadow-carved), 0 0 0 3px var(--brass-glow);outline:none}.hr-field{gap:6px;display:grid}.hr-field-row{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.hr-field-value{font:700 13px/18px var(--font-ui);color:var(--cream)}.hr-nameplate{border-radius:var(--radius-md);background:linear-gradient(180deg, var(--brass-hi), var(--brass) 55%, var(--brass-lo));min-height:48px;box-shadow:0 2px 0 var(--walnut-grain), inset 0 1px 0 #fff6;color:var(--on-brass);align-items:center;gap:8px;padding:6px 6px 6px 14px;display:flex}.hr-nameplate input{min-width:0;color:var(--on-brass);font:600 16px/20px var(--font-mono);letter-spacing:.06em;background:0 0;border:0;outline:none;flex:1}.hr-nameplate:focus-within{box-shadow:0 2px 0 var(--walnut-grain), 0 0 0 3px var(--brass-glow)}.hr-topbar{align-items:center;gap:var(--space-2);padding:calc(var(--space-3) + env(safe-area-inset-top)) var(--space-4) var(--space-2);display:flex}.hr-spacer{flex:1}.hr-wordmark{font:800 22px/1 var(--font-display);font-variation-settings:"SOFT" 100, "WONK" 1;color:var(--brass);text-shadow:0 2px 0 var(--walnut-grain);letter-spacing:.01em;pointer-events:none;align-items:center;gap:8px;display:inline-flex}.hr-top-btn{position:relative}.hr-top-btn.has-unread:after{content:"";background:var(--brass-glow);width:9px;height:9px;box-shadow:0 0 0 2px var(--walnut-800), 0 0 8px var(--brass-glow);border-radius:50%;position:absolute;top:6px;right:6px}.hr-me{appearance:none;cursor:pointer;min-height:var(--tap-min);border-radius:var(--radius-pill);background:var(--tex-wood), linear-gradient(180deg, var(--walnut-700), var(--walnut-800));box-shadow:var(--shadow-raised);color:var(--cream);font:700 14px/18px var(--font-ui);border:0;align-items:center;gap:8px;max-width:220px;padding:0 14px 0 6px;display:inline-flex}.hr-me .hr-me-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hr-me:active{box-shadow:var(--shadow-pressed);transform:translateY(2px)}.hr-dock-host{width:100%}.hr-dock{gap:var(--space-3);padding:var(--space-4) var(--space-4) var(--space-4);display:grid}.hr-dock-grip,.hr-dock-tabs{display:none}.hr-dock-grip{appearance:none;cursor:pointer;background:0 0;border:0;justify-self:center;place-items:center;width:100%;height:20px;margin:-10px 0 -6px;display:none}.hr-grip{background:var(--walnut-grain);width:48px;height:5px;box-shadow:0 1px 0 var(--walnut-600);border-radius:3px;display:block}.hr-dock-combos{gap:2px;display:grid}.hr-dock-heading{padding-left:2px}.hr-rack{gap:var(--space-2);padding:var(--space-2);grid-template-columns:repeat(8,minmax(0,1fr));display:grid}.hr-tile-wrap{display:grid;position:relative}.hr-tile{appearance:none;cursor:pointer;min-width:0;height:calc(var(--die-tile) + 22px);border-radius:var(--radius-md);background:var(--tex-wood), linear-gradient(180deg, var(--walnut-700), var(--walnut-800));box-shadow:var(--shadow-raised);color:var(--cream);font:750 13px/16px var(--font-display);letter-spacing:.02em;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;background-size:480px 240px,auto;border:0;align-content:center;justify-items:center;gap:2px;padding:4px 2px 10px;transition:transform 80ms,box-shadow 80ms;display:grid;position:relative}.hr-tile:after{content:"";background:var(--type,var(--brass-lo));opacity:.9;border-radius:2px;height:3px;position:absolute;bottom:4px;left:30%;right:30%}.hr-tile:hover{filter:brightness(1.08)}.hr-tile:active{box-shadow:var(--shadow-pressed);transform:translateY(2px)}.hr-tile.is-picked{box-shadow:0 0 0 2px var(--brass), var(--shadow-raised)}.hr-tile .hr-die-art,.hr-tile .hr-glyph{width:40px;height:40px}.hr-tile--design{color:var(--cream-muted)}.hr-tile--design .hr-icon{width:26px;height:26px;margin:7px 0}.hr-tile--design:after{display:none}.hr-tile[data-die=d4]{--type:var(--type-d4)}.hr-tile[data-die=d6]{--type:var(--type-d6)}.hr-tile[data-die=d8]{--type:var(--type-d8)}.hr-tile[data-die=d10]{--type:var(--type-d10)}.hr-tile[data-die=d12]{--type:var(--type-d12)}.hr-tile[data-die=d20]{--type:#5d7a96}.hr-tile[data-die=d100]{--type:var(--type-d100)}.hr-count{background:radial-gradient(circle at 40% 30%, var(--brass-hi), var(--brass) 55%, var(--brass-lo));min-width:24px;height:24px;color:var(--on-brass);font:800 13px/1 var(--font-display);box-shadow:0 2px 0 var(--walnut-grain);pointer-events:none;border-radius:12px;place-items:center;padding:0 6px;display:grid;position:absolute;top:-6px;right:-6px}.hr-minus{cursor:pointer;background:var(--walnut-950);width:26px;height:26px;color:var(--cream);box-shadow:0 0 0 1px var(--walnut-600), 0 2px 0 var(--walnut-grain);font:800 16px/1 var(--font-ui);z-index:1;border:0;border-radius:50%;place-items:center;display:grid;position:absolute;top:-6px;left:-6px}.hr-minus:before{content:"";position:absolute;inset:-9px}.hr-minus:hover{background:var(--walnut-800)}.hr-dock-bar{gap:var(--space-2);align-items:center;display:flex}.hr-formula{align-items:center;gap:var(--space-2);background:linear-gradient(180deg, var(--walnut-grain), var(--walnut-900));border-radius:var(--radius-md);min-width:0;min-height:48px;box-shadow:var(--shadow-carved);font:750 17px/20px var(--font-display);font-variation-settings:"SOFT" 100;color:var(--cream);flex:1;padding:6px 6px 6px 14px;display:flex}.hr-formula-text{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.hr-formula-text.is-empty{color:var(--cream-muted);font:italic 400 15px/20px var(--font-ui)}.hr-formula-reset{appearance:none;color:var(--cream-muted);cursor:pointer;background:0 0;border:0;border-radius:6px;place-items:center;width:32px;height:32px;display:grid}.hr-formula-reset:hover{color:var(--cream);background:var(--walnut-800)}.hr-formula-reset .hr-icon{width:16px;height:16px}.hr-mod{border-radius:var(--radius-sm);background:var(--walnut-800);box-shadow:0 1px 0 var(--walnut-600) inset;flex:none;align-items:center;gap:2px;padding:2px;display:inline-flex}.hr-mod button{appearance:none;width:34px;height:36px;color:var(--cream);font:800 18px/1 var(--font-ui);cursor:pointer;background:0 0;border:0;border-radius:6px}.hr-mod button:hover{background:var(--walnut-700)}.hr-mod button:active{background:var(--walnut-grain)}.hr-mod output{text-align:center;min-width:36px;font:750 16px/1 var(--font-display);color:var(--brass)}.hr-shelf{gap:var(--space-2);scroll-snap-type:x proximity;scrollbar-width:none;padding:8px 4px 10px;display:flex;overflow-x:auto}.hr-shelf::-webkit-scrollbar{display:none}.hr-combo-wrap{scroll-snap-align:start;flex:none;position:relative}.hr-combo{appearance:none;cursor:pointer;border-radius:var(--radius-md);text-align:left;background:var(--tex-paper), linear-gradient(180deg, var(--parchment), var(--parchment-edge));min-width:108px;min-height:56px;color:var(--sepia);box-shadow:var(--shadow-paper);border:0;align-content:center;justify-items:start;gap:2px;padding:7px 12px;transition:transform .1s;display:grid;position:relative}.hr-combo-wrap:nth-child(odd) .hr-combo{transform:rotate(-.8deg)}.hr-combo-wrap:nth-child(2n) .hr-combo{transform:rotate(.6deg)}.hr-combo:hover{transform:translateY(-2px)rotate(0)!important}.hr-combo:active{transform:translateY(1px)rotate(0)!important}.hr-combo-name{font:700 14px/18px var(--font-ui);white-space:nowrap}.hr-combo-formula{font:750 13px/16px var(--font-display);color:var(--sepia-muted);white-space:nowrap;align-items:center;gap:4px;display:flex}.hr-combo-formula .hr-die-art,.hr-combo-formula .hr-glyph{--s:18px;filter:none;width:18px;height:18px}.hr-combo-del{cursor:pointer;background:var(--walnut-950);width:24px;height:24px;color:var(--cream-muted);box-shadow:0 0 0 1px var(--walnut-600);opacity:0;border:0;border-radius:50%;place-items:center;transition:opacity .15s;display:grid;position:absolute;top:-7px;right:-7px}.hr-combo-del:before{content:"";position:absolute;inset:-10px}.hr-combo-del .hr-icon{width:14px;height:14px}.hr-combo-wrap:hover .hr-combo-del,.hr-combo-del:focus-visible{opacity:1}.hr-combo-del:hover{color:var(--danger)}@media (hover:none){.hr-combo-del{opacity:1}}.hr-combo--add{color:var(--brass);box-shadow:inset 0 0 0 2px var(--brass-lo);background:0 0;flex:none;justify-items:center}.hr-combo--add .hr-combo-name{color:var(--brass)}.hr-combo--naming{cursor:default;flex:none;min-width:200px}.hr-combo--naming .hr-combo-name{color:var(--sepia-muted);font-size:12px}.hr-combo-naming-row{align-items:center;gap:6px;display:flex}.hr-combo-input{width:140px;min-height:30px;color:var(--sepia);font:700 14px/18px var(--font-ui);background:#fffaf0;border:0;border-radius:6px;outline:none;padding:0 8px;box-shadow:inset 0 1px 2px #2b1d1259}.hr-combo-input:focus-visible{box-shadow:inset 0 1px 2px #2b1d1259, 0 0 0 2px var(--brass-lo)}.hr-combo-ok{cursor:pointer;background:var(--sepia);width:30px;height:30px;color:var(--parchment);border:0;border-radius:6px;place-items:center;display:grid}.hr-combo-ok .hr-icon{width:16px;height:16px}.hr-feed{gap:var(--space-3);padding:22px var(--space-3) var(--space-3);flex-direction:column;display:flex}.hr-feed-head{justify-content:space-between;align-items:center;gap:8px;padding:0 4px;display:flex}.hr-feed-head .panel-header-actions{gap:6px;display:flex}.hr-feed-well{flex:1;min-height:0;display:flex;position:relative}.hr-feed-log{overscroll-behavior:contain;border-radius:var(--radius-md);background:linear-gradient(180deg, var(--walnut-grain), var(--walnut-900));box-shadow:var(--shadow-carved);scrollbar-width:thin;scrollbar-color:var(--walnut-600) transparent;-webkit-user-select:text;user-select:text;flex-direction:column;flex:1;gap:14px;padding:14px 10px 12px;display:flex;overflow-y:auto}.hr-feed-log>*{flex:none}.hr-feed-log[data-filter=table]>.chat-debug-entry,.hr-feed-log[data-filter=rolls]>:not(.hr-slip),.hr-feed-log[data-filter=log]>.hr-slip,.hr-feed-log[data-filter=log]>.hr-note{display:none}.hr-new-chip{appearance:none;cursor:pointer;border-radius:var(--radius-pill);background:linear-gradient(180deg, var(--brass-hi), var(--brass));color:var(--on-brass);font:700 13px/16px var(--font-ui);box-shadow:0 2px 0 var(--walnut-grain), 0 6px 12px #0006;border:0;padding:6px 12px;position:absolute;bottom:10px;left:50%;transform:translate(-50%)}.hr-new-chip[hidden]{display:none}.hr-feed-send{gap:var(--space-2);display:flex}.hr-feed-send .hr-btn{flex:none}.hr-slip{background:var(--tex-paper), linear-gradient(180deg, var(--parchment), var(--parchment-edge));color:var(--sepia);box-shadow:var(--shadow-paper);border-radius:4px 4px 10px 10px;grid-template-columns:1fr auto;align-items:end;gap:6px 12px;padding:14px 14px 12px;animation:.18s ease-out hr-slip-in;display:grid;position:relative}.hr-slip:before{content:"";background:radial-gradient(circle at 35% 30%, #ffffffb3, var(--die) 55%, var(--walnut-grain));border-radius:50%;width:12px;height:12px;margin-left:-6px;position:absolute;top:-5px;left:50%;box-shadow:0 2px 2px #00000080}.hr-feed-log>.hr-slip:nth-child(odd){transform:rotate(-.5deg)}.hr-feed-log>.hr-slip:nth-child(2n){transform:rotate(.4deg)}@keyframes hr-slip-in{0%{opacity:0;translate:0 8px}to{opacity:1;translate:0}}.hr-slip-head{font:400 13px/18px var(--font-ui);color:var(--sepia-muted);grid-column:1/-1;justify-content:space-between;align-items:center;gap:8px;display:flex}.hr-slip-meta{align-items:center;gap:6px;display:inline-flex}.hr-slip-who{color:var(--sepia);align-items:center;gap:6px;min-width:0;font-weight:700;display:inline-flex}.hr-slip-who i{background:var(--die);width:10px;height:10px;box-shadow:0 0 0 2px var(--parchment), 0 0 0 3px #2b1d1259;border-radius:50%;flex:none}.hr-slip-dice{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.hr-slip-die{font:800 16px/1 var(--font-display);color:var(--sepia);align-items:center;gap:2px;display:inline-flex}.hr-slip-die .hr-die-art,.hr-slip-die .hr-glyph{--s:26px;filter:drop-shadow(0 1px 1px #2b1d1259);width:26px;height:26px}.hr-slip-die.is-max b{color:var(--sepia);background:var(--crit-max);border-radius:4px;padding:1px 4px}.hr-slip-die.is-min b{color:var(--parchment);background:var(--crit-min-ink);border-radius:4px;padding:1px 4px}.hr-slip-formula{font:400 13px/18px var(--font-ui);color:var(--sepia-muted);grid-column:1}.hr-slip-total{text-align:right;font:800 34px/34px var(--font-display);font-variation-settings:"SOFT" 100, "WONK" 1;font-feature-settings:"tnum" 1, "lnum" 1;color:var(--sepia);grid-area:2/2/span 2}.hr-slip-total small{font:700 11px/14px var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--sepia-muted);display:block}.hr-slip-tag{font:700 11px/16px var(--font-ui);letter-spacing:.06em;text-transform:uppercase;border-radius:4px;padding:1px 6px;display:inline-block}.hr-slip-tag.max{background:var(--crit-max);color:var(--sepia)}.hr-slip-tag.min{background:var(--crit-min-ink);color:var(--parchment)}.hr-note{background:var(--walnut-700);max-width:88%;color:var(--cream);font:400 15px/21px var(--font-ui);box-shadow:0 2px 0 var(--walnut-grain);word-break:break-word;border-radius:12px 12px 12px 4px;align-self:flex-start;padding:7px 12px 9px}.hr-note-head{align-items:baseline;gap:8px;font-size:12px;line-height:16px;display:flex}.hr-note-head b{color:var(--die-glow,var(--brass));font-weight:700}.hr-note-head time{color:var(--cream-muted)}.hr-note .chat-text{display:block}.hr-note.is-me{background:var(--walnut-600);border-radius:12px 12px 4px;align-self:flex-end}.hr-sys{text-align:center;max-width:94%;font:400 13px/18px var(--font-ui);color:var(--cream-muted);align-self:center}.hr-sys strong{color:var(--cream)}.hr-sys code{font-family:var(--font-mono);color:var(--brass-hi)}.player-pill{border-radius:var(--radius-pill);background:#00000040;border:1px solid;align-items:center;gap:4px;padding:0 7px;font-weight:700;display:inline-flex}.hr-result-pop{pointer-events:none;opacity:0;z-index:5;justify-items:center;gap:4px;display:grid;position:absolute;top:30%;left:0;right:0}.hr-result-pop.is-showing{animation:2.2s ease-out forwards hr-pop}.hr-result-total{font:800 84px/1 var(--font-display);font-variation-settings:"SOFT" 100, "WONK" 1;font-feature-settings:"tnum" 1, "lnum" 1;color:var(--cream);text-shadow:0 4px 0 var(--felt-900), 0 0 40px #ffd57a73}.hr-result-sub{font:700 14px/18px var(--font-ui);color:var(--brass-glow);text-shadow:0 1px 2px #000c}.hr-result-pop.is-crit-max .hr-result-total{color:var(--crit-max);text-shadow:0 4px 0 var(--felt-900), 0 0 50px #ffd54acc}.hr-result-pop.is-crit-min .hr-result-total{color:#ffb4a4}@keyframes hr-pop{0%{opacity:0;transform:translateY(18px)scale(.92)}12%{opacity:1;transform:translateY(0)scale(1.04)}20%{transform:scale(1)}75%{opacity:1}to{opacity:0;transform:translateY(-12px)}}.hr-scrim{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0a06039e}.hr-sheet{padding:var(--space-5);gap:var(--space-4);width:420px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);display:grid;overflow:hidden auto}.modal-content.hr-sheet{width:420px;max-width:calc(100vw - 32px);padding:var(--space-5);gap:var(--space-4);background:var(--tex-wood), linear-gradient(180deg, var(--walnut-800) 0%, var(--walnut-900) 100%);border:1px solid var(--walnut-grain);border-radius:var(--radius-lg);box-shadow:var(--shadow-board), 0 24px 60px #0009;background-size:480px 240px,auto;display:grid}.hr-sheet-head{justify-content:space-between;align-items:center;gap:var(--space-2);display:flex}.hr-sheet-title{font:650 22px/28px var(--font-display);font-variation-settings:"SOFT" 100, "WONK" 1;color:var(--cream);margin:0}.hr-sheet-actions{grid-template-columns:1fr 1fr;gap:10px;display:grid}.hr-design-link,.hr-diag-link{justify-self:start}.hr-swatches{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;display:grid}.hr-swatch{appearance:none;cursor:pointer;aspect-ratio:1;background:radial-gradient(90% 90% at 30% 20%, #ffffff47 0%, transparent 45%), linear-gradient(160deg, var(--die), var(--die-deep));box-shadow:inset 0 2px 1px #ffffff40, inset 0 -4px 6px #00000059, 0 3px 0 var(--walnut-grain), 0 6px 10px #0006;color:var(--die-ink);font:800 20px/1 var(--font-display);text-shadow:0 1px #00000059;border:0;border-radius:22%;place-items:center;transition:transform .1s;display:grid}.hr-swatch:hover{transform:translateY(-2px)}.hr-swatch.is-selected{outline:3px solid var(--brass-glow);outline-offset:3px}.modal-content.hr-workshop{width:900px}.hr-ws-status{margin-left:auto;margin-right:4px}.hr-workshop-types [role=tab]{min-width:0;min-height:44px;padding:4px 6px}.hr-ws-tab-art{place-items:center;width:26px;height:26px;display:inline-grid}.hr-ws-tab-art .hr-die-art,.hr-ws-tab-art .hr-glyph{--s:26px;filter:none;width:26px;height:26px}.hr-designer{gap:var(--space-5);grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);display:grid}.hr-ws-left{gap:var(--space-3);align-content:start;display:grid}.hr-ws-stage{background:radial-gradient(70% 70% at 50% 45%, #2a6a3d8c, transparent 70%), linear-gradient(180deg, var(--walnut-grain), var(--walnut-900));cursor:grab;height:300px;position:relative;overflow:hidden}.hr-ws-stage:active{cursor:grabbing}.hr-stage-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.hr-ws-drag{z-index:1;font:700 11px/14px var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--cream-muted);pointer-events:none;position:absolute;bottom:10px;left:12px}.hr-ws-faces{grid-template-columns:repeat(auto-fill,minmax(32px,1fr));gap:6px;display:grid}.hr-ws-face{aspect-ratio:1;background:var(--bg);color:var(--ink);font:800 13px/1 var(--font-display);box-shadow:inset 0 1px 1px #ffffff40, inset 0 -2px 3px #0000004d, 0 2px 0 var(--walnut-grain);border-radius:7px;place-items:center;display:grid}.hr-ws-face.is-max{box-shadow:inset 0 0 0 2px var(--ring), 0 2px 0 var(--walnut-grain), 0 0 8px var(--ring)}.hr-ws-face.fin-wood{background-image:var(--tex-wood);background-blend-mode:multiply;background-size:240px 120px}.hr-ws-hint{font:400 13px/18px var(--font-ui);color:var(--cream-muted)}.hr-ws-right{gap:var(--space-4);align-content:start;display:grid}.hr-opt{gap:8px;display:grid}.hr-dots{gap:8px}.hr-dot{cursor:pointer;background:radial-gradient(circle at 35% 30%, #ffffff59, transparent 50%), var(--c);width:30px;height:30px;box-shadow:0 0 0 2px var(--walnut-grain), 0 2px 0 var(--walnut-grain);font:800 12px/1 var(--font-ui);color:#fff;border:0;border-radius:50%;place-items:center;display:grid}.hr-dot[aria-pressed=true]{box-shadow:0 0 0 2px var(--walnut-grain), 0 0 0 5px var(--brass-glow)}.hr-ws-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:4px;display:flex}.hr-ws-actions .hr-btn--brass{margin-left:auto}#app{width:100vw;height:100dvh;display:flex;position:relative}#canvas-container{z-index:1;cursor:grab;position:absolute;inset:0}#canvas-container:active{cursor:grabbing}.ui-overlay{z-index:10;pointer-events:none;position:absolute;inset:0}.interactive{pointer-events:auto}#top-bar-container{position:absolute;top:0;left:0;right:0}.bottom-bar{left:50%;bottom:calc(var(--space-4) + env(safe-area-inset-bottom));width:min(860px, calc(100vw - 2 * var(--space-4)));transition:transform .24s cubic-bezier(.16,1,.3,1),width .24s;position:absolute;transform:translate(-50%)}body.has-rolled .flick-hint{opacity:0}.flick-hint{text-align:center;font:700 12px/16px var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--cream);opacity:.7;text-shadow:0 1px 3px #000c;margin-bottom:8px;transition:opacity .6s}.side-panel.hr-feed{top:70px;right:var(--space-4);bottom:var(--space-4);width:var(--feed-rail);z-index:20;max-width:calc(100vw - 32px);transition:transform .24s cubic-bezier(.16,1,.3,1),opacity .24s;position:absolute}.side-panel.hr-feed.collapsed{opacity:0;pointer-events:none;transform:translate(calc(100% + 24px))}@media (width>=1024px){body.feed-open .bottom-bar{transform:translateX(calc(-50% - (var(--feed-rail) + var(--space-4)) / 2));width:min(860px, calc(100vw - var(--feed-rail) - 3 * var(--space-4)))}body.feed-open #top-bar-container .hr-topbar{padding-right:calc(var(--feed-rail) + 2 * var(--space-4))}body.feed-open .hr-result-pop{right:calc(var(--feed-rail) + var(--space-4))}}@media (width<=1023px){.side-panel.hr-feed{z-index:40;width:360px;box-shadow:var(--shadow-board), -12px 0 40px #00000080;top:66px}.hr-rack{grid-template-columns:repeat(8,minmax(0,1fr))}}@media (width<=599px){.hr-topbar{padding-left:var(--space-3);padding-right:var(--space-3)}.hr-wordmark{display:none}.hr-top-btn{width:var(--tap-min);padding:0}.hr-top-btn span{display:none}.hr-me{padding:0 6px}.hr-me-name,.hr-lamp-long{display:none}.hr-lamp-short{display:inline}.flick-hint{display:none}.bottom-bar{width:100%;bottom:0;left:0;right:0;transform:none}.hr-dock{border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:6px var(--space-3) calc(var(--space-3) + env(safe-area-inset-bottom));border-bottom:0;gap:10px}.hr-dock-grip{display:grid}.hr-dock-combos{display:none}.hr-dock-rack{box-shadow:none;background:0 0}.hr-rack{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;padding:4px 0 0}.hr-tile-wrap--design{display:none}.hr-tile{height:48px;padding:4px 2px 8px}.hr-tile .hr-die-art,.hr-tile .hr-glyph{--s:32px;width:32px;height:32px}.hr-tile-label,.hr-tile~.hr-minus{display:none}.hr-count{min-width:20px;height:20px;padding:0 5px;font-size:12px;top:-7px;right:-5px}.hr-dock-bar{flex-wrap:wrap}.hr-dock-bar .hr-formula{flex:100%;order:-1}.hr-btn--clear{width:var(--tap-min);flex:none;min-height:52px;padding:0}.hr-btn--clear span{display:none}.hr-dock-bar .hr-btn--roll{flex:1;min-height:52px}.hr-dock.is-open{max-height:78dvh;overflow-y:auto}.hr-dock.is-open .hr-dock-tabs{display:flex}.hr-dock.is-open .hr-dock-rack{background:linear-gradient(180deg, var(--walnut-grain), var(--walnut-900));box-shadow:var(--shadow-carved)}.hr-dock.is-open .hr-rack{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:12px 10px}.hr-dock.is-open .hr-tile-wrap--design{display:grid}.hr-dock.is-open .hr-tile{height:72px}.hr-dock.is-open .hr-tile .hr-die-art,.hr-dock.is-open .hr-tile .hr-glyph{width:38px;height:38px}.hr-dock.is-open .hr-tile-label{display:block}.hr-dock.is-open .hr-tile~.hr-minus{display:grid}.hr-dock.is-open[data-tab=combos] .hr-dock-rack{display:none}.hr-dock.is-open[data-tab=combos] .hr-dock-combos{display:grid}.hr-dock.is-open .hr-dock-heading{display:none}.hr-dock.is-open .hr-shelf{flex-wrap:wrap;overflow:visible}.side-panel.hr-feed{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:none;height:min(78dvh,640px);padding-bottom:calc(var(--space-3) + env(safe-area-inset-bottom));inset:auto 0 0}.side-panel.hr-feed.collapsed{transform:translateY(calc(100% + 24px))}.hr-result-pop{top:24%}.hr-result-total{font-size:72px}.hr-scrim{align-items:flex-end}.hr-sheet,.modal-content.hr-sheet,.modal-content.hr-workshop{width:100%;max-width:none;max-height:92dvh;padding:var(--space-4) var(--space-4) calc(var(--space-4) + env(safe-area-inset-bottom));border-radius:var(--radius-lg) var(--radius-lg) 0 0!important}.hr-designer{gap:var(--space-4);grid-template-columns:1fr}.hr-ws-stage{height:220px}.hr-workshop-types .hr-ws-tab-label,.hr-ws-status{display:none}}@media (prefers-reduced-motion:reduce){.hr-btn,.hr-tile,.hr-combo,.side-panel.hr-feed,.bottom-bar{transition:none}.hr-feed-log>.hr-slip,.hr-combo-wrap .hr-combo{transform:none!important}.hr-slip{animation:none}.hr-result-pop.is-showing{opacity:1;animation:none}}.chat-debug-entry{word-break:break-word;background:#00000073;border:1px solid #ffffff14;border-radius:6px;flex-direction:column;gap:3px;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.76rem;line-height:1.35;animation:.2s ease-out slideIn;display:flex}.chat-debug-entry.log-level-info{border-left:3px solid #3498db}.chat-debug-entry.log-level-success{background:#2ecc7114;border-left:3px solid #2ecc71}.chat-debug-entry.log-level-warn{background:#f39c1214;border-left:3px solid #f39c12}.chat-debug-entry.log-level-error{background:#e74c3c1f;border-left:3px solid #e74c3c}.debug-meta{justify-content:space-between;align-items:center;font-size:.7rem;display:flex}.debug-badge{text-transform:uppercase;letter-spacing:.5px;font-weight:700}.debug-badge.badge-info{color:#3498db}.debug-badge.badge-succ{color:#2ecc71}.debug-badge.badge-warn{color:#f39c12}.debug-badge.badge-err{color:#e74c3c}.debug-time{color:var(--text-muted)}.chat-error-card{background:#e74c3c1f;border:1px solid #e74c3c66;border-left:4px solid #e74c3c;border-radius:10px;flex-direction:column;gap:8px;padding:10px;animation:.25s ease-out slideIn;display:flex}.chat-error-header{justify-content:space-between;align-items:center;display:flex}.chat-error-title{color:#ff6b6b;font-size:.85rem;font-weight:700}.chat-error-time{color:var(--text-muted);font-size:.72rem}.chat-error-details{color:#fcc;word-break:break-word;background:#00000059;border-radius:6px;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.76rem;line-height:1.4}.chat-error-actions{justify-content:flex-end;display:flex}.btn-copy-error-debug{color:#fff;cursor:pointer;background:#e74c3c40;border:1px solid #e74c3c80;border-radius:6px;padding:4px 10px;font-size:.75rem;font-weight:700;transition:all .2s}.btn-copy-error-debug:hover{background:#e74c3c66;transform:translateY(-1px)}.btn-copy-error-debug.copied{color:#2ecc71;background:#2ecc714d;border-color:#2ecc71}.modal-backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:100;background:#000000bf;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;top:0;left:0}.modal-backdrop.hidden{display:none}.modal-content{background:var(--bg-card-hover);border:1px solid var(--border-subtle);width:380px;max-width:calc(100vw - 32px);box-shadow:var(--shadow-main);border-radius:16px;flex-direction:column;gap:16px;padding:24px;display:flex}.modal-title{color:var(--accent-gold);font-size:1.2rem;font-weight:700}.form-group{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--text-muted);font-size:.85rem}.form-input{border:1px solid var(--border-subtle);color:#fff;background:#0006;border-radius:8px;outline:none;padding:10px 12px;font-size:.95rem}.form-input:focus{border-color:var(--accent-gold)}.color-picker-grid{grid-template-columns:repeat(5,1fr);gap:8px;padding:4px 0;display:grid}.color-swatch-btn{aspect-ratio:1;cursor:pointer;border:2px solid #0000;border-radius:8px;outline:none;width:100%;transition:transform .15s,border-color .15s,box-shadow .15s}.color-swatch-btn:hover{transform:scale(1.1)}.color-swatch-btn.active{transform:scale(1.08);border-color:#fff!important}.btn-top-color{border:1px solid var(--border-subtle);color:var(--text-main);cursor:pointer;background:#ffffff14;border-radius:20px;align-items:center;gap:6px;padding:6px 12px;font-weight:600;transition:all .2s;display:inline-flex}.btn-top-color:hover{background:#ffffff26;border-color:#ffffff4d}.btn-primary{background:linear-gradient(135deg, var(--accent-gold), var(--accent-gold-hover));color:#1a1a1a;cursor:pointer;border:none;border-radius:10px;padding:12px;font-size:1rem;font-weight:700}.btn-secondary{border:1px solid var(--border-subtle);color:var(--text-main);cursor:pointer;background:0 0;border-radius:10px;padding:10px;font-size:.9rem}.net-status-modal-content{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#121621f2;border:1px solid #ffffff29;flex-direction:column;width:92vw;max-width:680px;max-height:88vh;padding:20px;display:flex;overflow:hidden;box-shadow:0 16px 48px #000000b3}.net-status-header{border-bottom:1px solid var(--border-subtle);justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:12px;display:flex}.net-status-title{color:var(--text-main);flex-wrap:wrap;align-items:center;gap:10px;font-size:1.15rem;font-weight:700;display:flex}.room-id-pill{border:1px solid var(--border-subtle);color:var(--accent-gold);background:#ffffff14;border-radius:6px;padding:2px 8px;font-size:.75rem;font-weight:600}.btn-icon-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:1.2rem;transition:all .2s}.btn-icon-close:hover{color:#fff;background:#ffffff1a}.status-pill{border:1px solid #0000;border-radius:12px;padding:3px 8px;font-size:.75rem;font-weight:600}.dot-green{color:#2ecc71;background:#2ecc7126;border-color:#2ecc7166}.dot-yellow{color:#f39c12;background:#f39c1226;border-color:#f39c1266}.dot-red{color:#e74c3c;background:#e74c3c26;border-color:#e74c3c66}.net-status-tabs{gap:8px;margin-bottom:12px;display:flex}.net-tab-btn{border:1px solid var(--border-subtle);color:var(--text-muted);cursor:pointer;background:#ffffff0d;border-radius:8px;flex:1;padding:8px 12px;font-size:.88rem;font-weight:600;transition:all .2s}.net-tab-btn:hover{color:var(--text-main);background:#ffffff1a}.net-tab-btn.active{border-color:var(--accent-gold);color:var(--accent-gold);background:#f5b04126}.net-status-body{flex-direction:column;flex:1;gap:16px;margin-bottom:14px;padding-right:4px;display:flex;overflow-y:auto}.diag-section{border:1px solid var(--border-subtle);background:#00000040;border-radius:10px;padding:12px}.diag-section-title{text-transform:uppercase;letter-spacing:.5px;color:var(--accent-gold);margin-bottom:10px;font-size:.85rem;font-weight:700}.info-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px;display:grid}.info-item{background:#ffffff08;border:1px solid #ffffff0d;border-radius:6px;flex-direction:column;gap:3px;padding:8px 10px;display:flex}.info-label{color:var(--text-muted);text-transform:uppercase;font-size:.75rem}.info-val{color:#fff;word-break:break-all;font-size:.9rem;font-weight:500}.info-copy-val{justify-content:space-between;align-items:center;gap:6px;display:flex}.btn-micro{border:1px solid var(--border-subtle);color:#fff;cursor:pointer;white-space:nowrap;background:#ffffff1a;border-radius:4px;padding:3px 8px;font-size:.75rem;transition:all .2s}.btn-micro:hover{border-color:var(--accent-gold);background:#fff3}.btn-danger{color:#ff6b6b;cursor:pointer;background:#e74c3c33;border:1px solid #e74c3c80;border-radius:6px;font-weight:700;transition:all .2s}.btn-danger:hover{color:#fff;background:#e74c3c59}.btn-sm{padding:8px 14px;font-size:.85rem}.input-micro{border:1px solid var(--border-subtle);color:#fff;background:#0006;border-radius:6px;padding:6px 10px;font-size:.82rem}.input-micro:focus{border-color:var(--accent-gold);outline:none}.users-tab-container{flex-direction:column;gap:14px;display:flex}.users-section-header{color:#fff;justify-content:space-between;align-items:center;font-size:.92rem;font-weight:700;display:flex}.users-section-sub{color:var(--text-muted);font-size:.75rem}.players-grid{flex-direction:column;gap:10px;display:flex}.player-card{border:1px solid var(--border-subtle);background:#00000059;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;transition:all .2s;display:flex}.player-card:hover{background:#00000073;border-color:#fff3}.player-card-self{background:#f5b0410d;border-color:#f5b04166}.player-card-main{flex:1;align-items:center;gap:12px;display:flex}.player-avatar{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:1.1rem;display:flex}.player-info{flex-direction:column;flex:1;gap:4px;display:flex}.player-name-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.player-name-title{color:#fff;font-size:.95rem;font-weight:700}.badge-you{color:var(--accent-gold);font-size:.72rem;font-weight:700}.badge-role{border-radius:4px;padding:2px 6px;font-size:.7rem;font-weight:700}.badge-role-host{color:var(--accent-gold);background:#f39c1233;border:1px solid #f39c1266}.badge-role-guest{color:#3498db;background:#3498db26;border:1px solid #3498db4d}.player-meta-row{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:10px;font-size:.75rem;display:flex}.player-status-badge{border-radius:4px;padding:1px 6px;font-size:.72rem;font-weight:600}.status-online{color:#2ecc71;background:#2ecc7126;border:1px solid #2ecc714d}.status-reconnecting{color:#f39c12;background:#f39c1226;border:1px solid #f39c124d;animation:1.5s infinite pulseWarning}.status-offline{color:#e74c3c;background:#e74c3c26;border:1px solid #e74c3c4d}@keyframes pulseWarning{0%,to{opacity:1}50%{opacity:.55}}.player-ping-badge{font-family:monospace;font-weight:700}.player-id-label code{color:var(--text-muted);font-family:monospace;font-size:.72rem}.peer-admin-actions{align-items:center;gap:6px;display:flex}.btn-admin-action{cursor:pointer;border-radius:6px;padding:4px 10px;font-size:.75rem;font-weight:700;transition:all .2s}.btn-kick{color:#f39c12;background:#f39c1226;border:1px solid #f39c1266}.btn-kick:hover{color:#fff;background:#f39c124d}.btn-ban{color:#e74c3c;background:#e74c3c26;border:1px solid #e74c3c66}.btn-ban:hover{color:#fff;background:#e74c3c59}.host-admin-panel{background:#140f0a80;border:1px solid #f39c124d;border-radius:10px;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.admin-panel-subtext{color:var(--text-muted);margin:0;font-size:.78rem}.manual-ban-form{align-items:center;gap:8px;display:flex}.manual-ban-form input{flex:1}.banned-section-title{color:var(--accent-gold);margin-top:4px;font-size:.8rem;font-weight:700}.banned-users-list{flex-direction:column;gap:6px;display:flex}.banned-user-row{background:#0000004d;border:1px solid #e74c3c40;border-radius:6px;justify-content:space-between;align-items:center;padding:6px 10px;display:flex}.banned-user-info{flex-wrap:wrap;align-items:center;gap:10px;font-size:.78rem;display:flex}.banned-name{color:#ff6b6b;font-weight:700}.banned-id code{color:var(--text-muted);font-family:monospace;font-size:.72rem}.banned-reason{color:var(--text-muted);font-style:italic}.empty-banned-notice{color:var(--text-muted);padding:4px 0;font-size:.78rem;font-style:italic}.diag-card{border:1px solid var(--border-subtle);background:#0000004d;border-radius:10px;flex-direction:column;gap:10px;padding:12px 14px;display:flex}.diag-card-title{color:var(--accent-gold);justify-content:space-between;align-items:center;font-size:.88rem;font-weight:700;display:flex}.diag-card-badge{color:var(--text-muted);background:#ffffff14;border-radius:4px;padding:2px 6px;font-size:.7rem;font-weight:700}.diag-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.diag-item{background:#ffffff08;border:1px solid #ffffff0a;border-radius:6px;flex-direction:column;gap:2px;padding:6px 8px;display:flex}.diag-label{color:var(--text-muted);text-transform:uppercase;font-size:.7rem}.diag-value-row{justify-content:space-between;align-items:center;gap:6px;display:flex}.diag-value{color:#fff;font-size:.85rem;font-weight:600}.code-id{color:#f5b041;font-family:monospace;font-size:.82rem}.btn-icon-micro{color:var(--text-muted);cursor:pointer;background:0 0;border:1px solid #ffffff1a;border-radius:4px;padding:2px 4px;font-size:.75rem}.btn-icon-micro:hover{color:#fff;background:#ffffff26}.peer-diag-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px;font-size:.82rem;display:flex}.peer-diag-name{color:#fff;font-weight:700}.peer-diag-id{color:var(--text-muted);font-family:monospace;font-size:.75rem}.peer-diag-route{color:#2ecc71;font-size:.72rem;font-weight:700}.peer-diag-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:6px;display:grid}.diag-stat-item{flex-direction:column;gap:1px;display:flex}.stat-label{color:var(--text-muted);text-transform:uppercase;font-size:.68rem}.stat-value{color:#e0e6ed;font-family:monospace;font-size:.78rem}.empty-peers-notice{text-align:center;color:var(--text-muted);border:1px dashed var(--border-subtle);background:#ffffff05;border-radius:8px;padding:24px 16px}.empty-peers-notice p{color:var(--text-main);margin-bottom:4px;font-weight:600}.empty-peers-notice small{font-size:.8rem}.peers-list-container{flex-direction:column;gap:12px;display:flex}.peer-diag-card{background:#1a1f2eb3;border:1px solid #ffffff1a;border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}.peer-diag-header{justify-content:space-between;align-items:center;display:flex}.peer-diag-name{color:#fff;margin-right:8px;font-size:.95rem}.peer-diag-id{color:var(--text-muted);background:#0006;border-radius:4px;padding:2px 6px;font-size:.78rem}.peer-ping-pill{background:#0000004d;border:1px solid;border-radius:12px;padding:3px 8px;font-size:.82rem;font-weight:700}.peer-route-container{align-items:center;gap:6px;display:flex}.route-badge{letter-spacing:.3px;border-radius:6px;padding:4px 10px;font-size:.75rem;font-weight:700}.route-turn{color:#2ecc71;background:#2ecc7133;border:1px solid #2ecc7180;box-shadow:0 0 10px #2ecc7133}.route-stun{color:#3498db;background:#3498db33;border:1px solid #3498db80}.route-host{color:#9b59b6;background:#9b59b633;border:1px solid #9b59b680}.route-p2p{color:#fff;border:1px solid var(--border-subtle);background:#ffffff1a}.candidate-details-grid{background:#0000004d;border-radius:6px;grid-template-columns:1fr 1fr;gap:8px;padding:8px;display:grid}.cand-box{flex-direction:column;gap:2px;display:flex}.cand-label{color:var(--text-muted);text-transform:uppercase;font-size:.7rem}.cand-val{color:#ecf0f1;word-break:break-all;font-family:monospace;font-size:.8rem}.peer-diag-footer{color:var(--text-muted);border-top:1px solid #ffffff0d;justify-content:space-between;align-items:center;padding-top:6px;font-size:.75rem;display:flex}.stat-meta strong{color:#fff}.ice-servers-list{flex-direction:column;gap:6px;display:flex}.ice-server-row{background:#0003;border-radius:6px;align-items:center;gap:8px;padding:6px 10px;display:flex}.tag-badge{border-radius:4px;padding:2px 6px;font-size:.7rem;font-weight:700}.tag-turn{color:#2ecc71;background:#2ecc7133;border:1px solid #2ecc7166}.tag-stun{color:#3498db;background:#3498db33;border:1px solid #3498db66}.code-server{color:#e0e6ed;font-family:monospace;font-size:.8rem}.logs-toolbar{color:var(--text-muted);justify-content:space-between;align-items:center;margin-bottom:8px;font-size:.8rem;display:flex}.diag-logs-console{background:#00000080;border:1px solid #ffffff1a;border-radius:8px;flex-direction:column;gap:6px;max-height:380px;padding:10px;font-family:monospace;font-size:.78rem;display:flex;overflow-y:auto}.diag-log-row{word-break:break-all;gap:8px;line-height:1.4;display:flex}.log-time{color:var(--text-muted);flex-shrink:0}.log-cat{color:var(--accent-gold);flex-shrink:0;font-weight:600}.log-msg{color:#f0f3f8}.log-info .log-msg{color:#dfe6e9}.log-success .log-msg{color:#2ecc71;font-weight:600}.log-warn .log-msg{color:#f39c12}.log-error .log-msg{color:#e74c3c;font-weight:600}.net-status-footer{border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:8px;padding-top:12px;display:flex}.footer-actions{flex-wrap:wrap;gap:8px;display:flex}@media (width<=600px){.candidate-details-grid{grid-template-columns:1fr}.net-status-footer{flex-direction:column;align-items:stretch}.footer-actions{justify-content:space-between}}.modal-backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0a06039e}.modal-content{background:var(--tex-wood), linear-gradient(180deg, var(--walnut-800) 0%, var(--walnut-900) 100%);border:1px solid var(--walnut-grain);border-radius:var(--radius-lg);box-shadow:var(--shadow-board), 0 24px 60px #0009;color:var(--cream);background-size:480px 240px,auto}.net-status-modal-content{background:var(--tex-wood), linear-gradient(180deg, var(--walnut-800) 0%, var(--walnut-900) 100%);background-size:480px 240px,auto}.net-status-title{font-family:var(--font-display);font-variation-settings:"SOFT" 100, "WONK" 1}.btn-primary{background:radial-gradient(120% 90% at 50% 10%, var(--brass-hi) 0%, var(--brass) 45%, var(--brass-lo) 100%);color:var(--on-brass);box-shadow:var(--shadow-brass);font-family:var(--font-ui);min-height:40px;font-weight:700}.btn-primary:active{transform:translateY(3px)}.btn-secondary{background:var(--tex-wood), linear-gradient(180deg, var(--walnut-700), var(--walnut-800));color:var(--cream);box-shadow:var(--shadow-raised);font-family:var(--font-ui);background-size:480px 240px,auto;border:0;min-height:40px;font-weight:700}.btn-secondary:active{box-shadow:var(--shadow-pressed);transform:translateY(2px)}.net-tab-btn{color:var(--cream-muted);background:0 0;border:0}.net-tab-btn.active{background:var(--tex-wood), linear-gradient(180deg, var(--walnut-700), var(--walnut-800));color:var(--cream);box-shadow:var(--shadow-raised)}.net-status-tabs{border-radius:var(--radius-md);background:linear-gradient(180deg, var(--walnut-grain), var(--walnut-900));box-shadow:var(--shadow-carved);padding:4px}.diag-section,.diag-card,.player-card,.peer-diag-card{background:#120b078c;border-color:#7a4f3073}.chat-debug-entry{color:var(--cream);background:#120b07bf;border-color:#7a4f3059}.debug-message{color:var(--cream)}.hr-errcard.chat-error-card{border:1px solid #f08a7073;border-left:4px solid var(--danger);color:var(--cream);background:linear-gradient(#3a1c14,#2a140e)}.chat-error-title{color:var(--danger);align-items:center;gap:6px;display:inline-flex}.chat-error-title .hr-icon{width:16px;height:16px}.chat-error-details{color:var(--cream)}@keyframes slideIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
