:root{--bg-color:#0b0c10;--bg-gradient:radial-gradient(circle at top left, #1a1c29 0%, #0b0c10 100%);--surface-color:#1f212a99;--surface-border:#ffffff14;--surface-hover:#2d303ecc;--accent-primary:#8a2be2;--accent-secondary:#0ff;--accent-success:#0fa;--accent-danger:#f36;--text-primary:#fff;--text-secondary:#a0a5b5;--text-muted:#6b7280;--font-sans:"Inter", system-ui, sans-serif;--font-display:"Outfit", system-ui, sans-serif;--font-mono:ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--focus-ring:var(--accent-secondary);--spacing-sm:.5rem;--spacing-md:1rem;--spacing-lg:1.5rem;--spacing-xl:2rem;--spacing-2xl:3rem;--shadow-glow:0 0 20px #8a2be24d;--shadow-panel:0 8px 32px #0006;--radius-sm:6px;--radius-md:8px;--radius-lg:16px;--status-live-text:#86efac;--status-warn-text:#fde68a;--status-error-text:#f87171;--module-bar-glow:var(--accent-secondary);--surface-inset:#0003;--surface-inset-strong:#00000040;--track-bg:#00000059;--surface-faint:#ffffff08;--hairline-strong:#ffffff26;--grid-line:#ffffff06;--text-on-accent:#fff;--hp-mid:#facc15;--accent-deep:color-mix(in srgb, var(--accent-primary) 72%, #000);--accent-gradient:linear-gradient(135deg, var(--accent-primary), var(--accent-deep))}[data-theme=daylight]{--bg-color:#eef1f6;--bg-gradient:radial-gradient(circle at top left, #fff 0%, #e6eaf2 100%);--surface-color:#ffffffb8;--surface-border:#0f172a1f;--surface-hover:#fffffff2;--accent-primary:#7c3aed;--accent-secondary:#0891b2;--accent-success:#059669;--accent-danger:#e11d48;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#64748b;--surface-inset:#0f172a0d;--surface-inset-strong:#0f172a12;--track-bg:#0f172a1a;--surface-faint:#0f172a08;--hairline-strong:#0f172a29;--grid-line:#0f172a0d;--text-on-accent:#fff;--hp-mid:#d97706;--status-live-text:#15803d;--status-warn-text:#b45309;--status-error-text:#dc2626;--shadow-panel:0 10px 30px #0f172a1f;--shadow-glow:0 0 18px #7c3aed40}[data-theme=terminal]{--bg-color:#07120b;--bg-gradient:radial-gradient(circle at top left, #0c2417 0%, #07120b 100%);--surface-color:#0a1c129e;--surface-border:#39ff8229;--surface-hover:#10281ad9;--accent-primary:#39ff8b;--accent-secondary:#ffb000;--accent-success:#2bff88;--accent-danger:#ff5c5c;--text-primary:#c6ffd8;--text-secondary:#6fae84;--text-muted:#4a7a5c;--font-sans:"IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--font-display:"IBM Plex Mono", ui-monospace, monospace;--surface-inset:#00000059;--surface-inset-strong:#00000073;--track-bg:#00000080;--surface-faint:#39ff820d;--hairline-strong:#39ff8247;--grid-line:#39ff820d;--text-on-accent:#04140a;--hp-mid:#ffb000;--status-live-text:#2bff88;--status-warn-text:#ffb000;--status-error-text:#ff7a7a;--shadow-glow:0 0 18px #39ff8b59;--module-bar-glow:var(--accent-primary)}[data-theme=parchment]{--bg-color:#f3e9d2;--bg-gradient:radial-gradient(circle at top left, #fbf3df 0%, #ece0c2 100%);--surface-color:#fffaeec7;--surface-border:#5e422133;--surface-hover:#fffaeef2;--accent-primary:#9a5b2d;--accent-secondary:#2f6f5e;--accent-success:#4d7c2f;--accent-danger:#a4161a;--text-primary:#3b2f23;--text-secondary:#6b5742;--text-muted:#8a7560;--font-sans:"Lora", Georgia, "Times New Roman", serif;--font-display:"Lora", Georgia, serif;--surface-inset:#5e422112;--surface-inset-strong:#5e42211a;--track-bg:#5e422124;--surface-faint:#5e42210a;--hairline-strong:#5e422142;--grid-line:#5e42210f;--text-on-accent:#fdf6e8;--hp-mid:#b8860b;--status-live-text:#3f6e1f;--status-warn-text:#8a5a12;--status-error-text:#9b2226;--shadow-panel:0 10px 30px #5e42212e;--shadow-glow:0 0 18px #9a5b2d47}[data-theme=hearth]{--bg-color:#160f0a;--bg-gradient:repeating-linear-gradient(90deg, #00000024 0 2px, transparent 2px 7px, #e0902f08 7px 9px, transparent 9px 16px), radial-gradient(120% 95% at 50% 6%, #3a2414 0%, #241710 40%, #160f0a 80%);--surface-color:#38261ab8;--surface-border:#e0902f38;--surface-hover:#463020d9;--accent-primary:#e0902f;--accent-secondary:#d06a47;--accent-success:#8fb45a;--accent-danger:#ee6a4f;--text-primary:#f6e9d2;--text-secondary:#cbb091;--text-muted:#9a7f63;--font-sans:"Inter Tight", system-ui, sans-serif;--font-display:"Cormorant Garamond", Georgia, serif;--font-mono:"Spline Sans Mono", ui-monospace, monospace;--surface-inset:#08040280;--surface-inset-strong:#08040299;--track-bg:#0804028c;--surface-faint:#e0902f0a;--hairline-strong:#e0902f4d;--grid-line:#e0902f0d;--text-on-accent:#1c1109;--hp-mid:#d99f3c;--status-live-text:#8fb45a;--status-warn-text:#e0902f;--status-error-text:#ee6a4f;--shadow-panel:0 12px 34px #0000008c;--shadow-glow:0 0 0 #0000;--focus-ring:#e0902f;--inst-bg:#231711}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background:var(--bg-color);background-image:var(--bg-gradient);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;line-height:1.6}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:700;line-height:1.2}.text-gradient{color:var(--accent-primary)}[data-theme=hearth] .session-module{background:var(--inst-bg);-webkit-backdrop-filter:none;box-shadow:inset 0 1px 0 #ffd28c0f, var(--shadow-panel)}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.container{max-width:1200px;padding:0 var(--spacing-md);margin:0 auto}.glass-panel{background:var(--surface-color);-webkit-backdrop-filter:blur(12px);border:1px solid var(--surface-border);padding:var(--spacing-xl);box-shadow:var(--shadow-panel);border-radius:16px;transition:transform .3s,border-color .3s}.glass-panel:hover{border-color:var(--hairline-strong);transform:translateY(-2px)}.btn{font-family:var(--font-sans);cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;padding:.75rem 1.5rem;font-size:1rem;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex}.btn-sm{padding:.4rem .9rem}.btn-lg{padding:1rem 2rem;font-size:1.1rem}.btn-block{width:100%}.btn-primary{background:var(--accent-gradient);color:var(--text-on-accent);box-shadow:0 4px 15px color-mix(in srgb, var(--accent-primary) 40%, transparent)}.btn-primary:hover{box-shadow:0 6px 20px color-mix(in srgb, var(--accent-primary) 60%, transparent);filter:brightness(1.12);transform:translateY(-2px)}.btn-outline{border:2px solid var(--surface-border);color:var(--text-primary);background:0 0}.btn-outline:hover{border-color:var(--accent-primary);color:var(--accent-primary);background:color-mix(in srgb, var(--accent-primary) 5%, transparent)}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.6s ease-out forwards fadeIn}.toast-host{z-index:1000;pointer-events:none;flex-direction:column;gap:.6rem;max-width:min(360px,100vw - 2.5rem);display:flex;position:fixed;top:5rem;right:1.25rem}@keyframes toastIn{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}.toast{pointer-events:auto;background:var(--surface-color);border:1px solid var(--surface-border);border-left:3px solid var(--accent-primary);color:var(--text-primary);box-shadow:var(--shadow-panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:12px;padding:.75rem 1rem;font-weight:500;animation:.25s ease-out forwards toastIn}.toast-warn{border-left-color:#facc15}.toast-success{border-left-color:var(--accent-success)}.toast-danger{border-left-color:var(--accent-danger)}@keyframes hpFlashUp{0%{background:color-mix(in srgb, var(--accent-success) 28%, transparent)}to{background:0 0}}@keyframes hpFlashDown{0%{background:color-mix(in srgb, var(--accent-danger) 30%, transparent)}to{background:0 0}}.hp-row.flash-up{animation:.7s ease-out hpFlashUp}.hp-row.flash-down{animation:.7s ease-out hpFlashDown}button{font-family:inherit}select option,select optgroup{background-color:var(--bg-color);color:var(--text-primary)}input:not([type]),input[type=text],input[type=number],input[type=search],input[type=email],input[type=password],input[type=url],input[type=tel],textarea{background-color:var(--surface-inset);color:var(--text-primary);border:1px solid var(--surface-border);border-radius:var(--radius-sm)}.btn-bare{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}.icon-btn{cursor:pointer;color:var(--text-muted);background:0 0;border:none;justify-content:center;align-items:center;min-width:40px;min-height:40px;padding:0;font-size:1rem;line-height:1;display:inline-flex}.text-secondary{color:var(--text-secondary)}.text-muted{color:var(--text-muted)}.mb-sm{margin-bottom:var(--spacing-sm)}.mb-md{margin-bottom:var(--spacing-md)}.mb-lg{margin-bottom:var(--spacing-lg)}.home{text-align:center;margin-top:4rem}.home-title{margin-bottom:var(--spacing-md);font-size:4rem}.home-lead{color:var(--text-secondary);max-width:600px;margin:0 auto var(--spacing-xl) auto;font-size:1.25rem}.home-cta{margin-bottom:var(--spacing-2xl)}.home-features{gap:var(--spacing-xl);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));display:grid}.page-sm{max-width:480px}.page-md{max-width:560px}.page-lg{max-width:720px}.page-head{margin-bottom:var(--spacing-sm);font-size:2.5rem}.page-lead{color:var(--text-secondary);margin-bottom:var(--spacing-lg)}.m-0{margin:0}.mt-xl{margin-top:var(--spacing-xl)}.no-pointer{pointer-events:none}.row-center{align-items:center;gap:var(--spacing-md);display:flex}.row-between{justify-content:space-between;align-items:center;display:flex}.btn-xs{padding:.3rem .8rem;font-size:.85rem}.status-ok{color:var(--status-live-text)}.status-err{color:var(--status-error-text)}.form-stack{gap:var(--spacing-md);flex-direction:column;display:flex}.field{flex-direction:column;gap:.35rem;display:flex}.field-label{color:var(--text-secondary);font-size:.85rem}.field-hint{color:var(--text-muted);font-size:.8rem}.dice-head-gap{margin-bottom:.75rem}.dice-history{flex-direction:column;gap:.4rem;display:flex}.dice-row{align-items:center;gap:var(--spacing-sm);font-size:.95rem;display:flex}.dice-notation{color:var(--text-secondary);font-family:monospace}.dice-rolls{color:var(--text-muted)}.session-start-form{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.session-start-input{flex:1;min-width:220px}.session-list{flex-direction:column;gap:.75rem;display:flex}.session-row-card{padding:1rem 1.25rem}.session-row{justify-content:space-between;align-items:center;gap:var(--spacing-md);flex-wrap:wrap;display:flex}.session-row-info{min-width:0}.session-row-title{margin-bottom:.25rem;font-size:1.15rem;font-weight:600;display:block}.session-row-meta{color:var(--text-secondary);font-size:.9rem}.session-row-actions{flex:none;align-items:center;gap:.5rem;display:flex}.session-details{border-top:1px solid var(--surface-border);margin-top:.75rem;padding-top:.75rem}.session-details-h{color:var(--text-secondary);margin:0 0 .4rem;font-size:.85rem}.session-players{flex-wrap:wrap;gap:.35rem .6rem;margin:0 0 .6rem;padding:0;list-style:none;display:flex}.session-players--away{opacity:.6}.session-player{background:var(--surface-inset);border:1px solid var(--surface-border);border-radius:999px;padding:.15rem .6rem;font-size:.85rem}.session-mine{color:var(--status-live-text);white-space:nowrap;margin-left:.5rem;font-size:.75rem;font-weight:600}.mb-xl{margin-bottom:var(--spacing-xl)}.flex-gap{gap:var(--spacing-md);display:flex}.flex-gap-sm{gap:.75rem;display:flex}.flex-gap-xs{gap:.3rem;display:flex}.input{border-radius:var(--radius-md);border:1px solid var(--surface-border);background:var(--surface-inset);width:100%;color:var(--text-primary);padding:.75rem}.input-sm{border-radius:var(--radius-sm);border:1px solid var(--surface-border);background:var(--surface-inset);width:100%;color:var(--text-primary);padding:.35rem .5rem}.input-num{width:60px}.input-num--wide{width:70px}.btn-chip{padding:.35rem .9rem;font-size:.85rem}.btn-cell{padding:.3rem .7rem;font-size:.8rem}.btn-danger-outline{border-color:var(--status-error-text);color:var(--status-error-text)}.panel-danger{border-color:var(--status-error-text)}.inv-header{margin-bottom:var(--spacing-xl);justify-content:space-between;align-items:center;display:flex}.add-game-form{gap:var(--spacing-md);grid-template-columns:repeat(auto-fit,minmax(200px,1fr));display:grid}.inv-toolbar{justify-content:space-between;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md);flex-wrap:wrap;display:flex}.view-toggle{gap:.4rem;display:flex}.filter-input{flex:220px;width:auto;max-width:320px}.card-grid{gap:var(--spacing-lg);grid-template-columns:repeat(auto-fill,minmax(300px,1fr));display:grid}.game-edit-form{padding:var(--spacing-lg);flex-direction:column;gap:.75rem;display:flex}.game-card{padding:var(--spacing-lg)}.game-card-title{margin-bottom:var(--spacing-sm);font-size:1.25rem}.game-card-meta{gap:var(--spacing-md);color:var(--text-secondary);margin-bottom:var(--spacing-md);font-size:.9rem;display:flex}.game-card-actions{gap:var(--spacing-sm);display:flex}.table-wrap{padding:var(--spacing-sm);overflow-x:auto}.inv-table{border-collapse:collapse;width:100%;min-width:460px}.inv-th{text-align:left;cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-secondary);border-bottom:1px solid var(--surface-border);white-space:nowrap;padding:.6rem .75rem;font-size:.85rem}.inv-th--active{color:var(--text-primary)}.inv-th--actions{cursor:default;text-align:right}.inv-td{border-bottom:1px solid var(--surface-border);vertical-align:middle;padding:.55rem .75rem}.inv-td--actions{text-align:right;white-space:nowrap}.inv-count{color:var(--text-muted);margin:.5rem .75rem .25rem;font-size:.8rem}.session-page--desktop{max-width:1600px}.session-page--mobile{max-width:720px}.session-page--desktop,.session-page--mobile{margin-top:-2rem}.session-missing{max-width:640px}.session-missing-title{margin-bottom:var(--spacing-md);font-size:2.5rem}.session-topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.3rem 1rem;margin-bottom:.4rem;display:flex}.session-title{margin:0;font-size:1.7rem;line-height:1.15}.session-status{flex-wrap:wrap;align-items:center;gap:.4rem .9rem;font-size:.9rem;display:flex}.session-elapsed{color:var(--text-secondary);font-family:monospace;font-size:1rem}.session-claim{align-items:center;gap:var(--spacing-md);border-color:#facc1566;flex-wrap:wrap;margin-bottom:.75rem;padding:.6rem .9rem;display:flex}.session-claim-msg{flex:1;min-width:200px}.session-invite{border-color:var(--border-subtle,#ffffff2e)}.invite-link{min-width:150px;font-size:.76rem;font-family:var(--font-mono,monospace);flex:220px}.session-arrange-hint{color:var(--text-muted);margin:0;font-size:.8rem}.session-actions{flex-wrap:wrap;gap:.75rem;display:flex}.session-page--fullbleed{width:100%;max-width:none;margin-left:0;margin-right:0;margin-top:calc(-1 * var(--spacing-2xl));margin-bottom:calc(-1 * var(--spacing-2xl));padding:0}.session-canvas-wrap{position:relative}.room-bar{z-index:30;border-radius:999px;align-items:center;gap:.55rem;max-width:calc(100% - 24px);padding:.4rem .95rem;display:flex;position:absolute;top:12px;left:12px;overflow:hidden}.room-bar:hover{transform:none}.room-bar-title{white-space:nowrap;font-size:1rem;font-weight:600}.room-bar-status{white-space:nowrap;align-items:center;gap:.35rem;min-width:0;font-size:.82rem;display:inline-flex}.room-bar-status .text-secondary{text-overflow:ellipsis;overflow:hidden}.room-bar-sep{background:var(--surface-border);flex:none;width:1px;height:15px}.room-bar-clock{color:var(--text-secondary);font-family:var(--font-mono);white-space:nowrap;font-size:.82rem}.room-actions{z-index:30;align-items:center;gap:.4rem;display:flex;position:absolute;top:12px;right:12px}.room-launch{min-width:34px;height:32px;color:var(--text-primary);white-space:nowrap;background:var(--surface-color);-webkit-backdrop-filter:blur(12px);border:1px solid var(--surface-border);border-radius:var(--radius-md);cursor:pointer;justify-content:center;align-items:center;gap:.3rem;padding:0 .55rem;font-size:.98rem;line-height:1;transition:border-color .15s,background-color .15s,transform 80ms;display:inline-flex}.room-launch:hover{border-color:var(--hairline-strong);background:var(--surface-hover)}.room-launch:active{transform:translateY(1px)}.room-launch[aria-expanded=true]{border-color:var(--accent-primary);background:var(--surface-hover)}.room-menu-scrim{z-index:39;position:fixed;inset:0}.room-actions>.room-launch,.room-actions>.btn,.room-actions>.theme-select{z-index:41;position:relative}.room-actions>.btn{border-width:1px;height:32px;padding-top:0;padding-bottom:0}.room-actions>.theme-select select{height:32px;padding-top:0;padding-bottom:0}.room-menu,.room-popover{z-index:40;transform-origin:100% 0;animation:.16s ease-out both roomPopIn;position:absolute;top:calc(100% + 6px);right:0}@keyframes roomPopIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.room-menu{border-radius:12px;flex-direction:column;width:216px;padding:.35rem;display:flex}.room-menu:hover{transform:none}.room-popover{width:268px;max-height:calc(100vh - 130px);overflow-y:auto}.room-popover>.glass-panel{width:100%;margin:0}.room-popover>.glass-panel:hover{border-color:var(--surface-border);transform:none}.room-menu-head{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;padding:.35rem .6rem .3rem;font-size:.68rem}.room-menu-item{border-radius:var(--radius-sm);width:100%;color:var(--text-primary);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:.5rem;padding:.5rem .6rem;font-size:.88rem;display:flex}.room-menu-item:hover{background:var(--surface-hover)}.room-menu-item--danger{color:var(--accent-danger)}.room-pills{z-index:28;flex-direction:column;align-items:center;gap:8px;max-width:min(560px,100% - 420px);display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.room-pill{border-radius:999px;align-items:center;gap:.6rem;padding:.4rem .5rem .4rem .95rem;font-size:.82rem;display:flex}.room-pill:hover{transform:none}.room-pill--warn{border-color:#facc1580}.room-empty-hint{z-index:5;text-align:center;max-width:340px;color:var(--text-muted);pointer-events:none;font-size:.92rem;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)}@media (prefers-reduced-motion:reduce){.room-menu,.room-popover{animation:none}.room-launch{transition:none}.room-launch:active{transform:none}}.session-arrange-bar{justify-content:space-between;align-items:center;gap:var(--spacing-sm);margin:0 0 .4rem;display:flex}.session-mode{border-radius:var(--radius-sm,6px);border:1px solid var(--hairline-strong);color:var(--text-secondary);cursor:pointer;background:0 0;flex-shrink:0;padding:.25rem .6rem;font-size:.78rem}.session-mode:hover{border-color:var(--accent-secondary)}.session-mode:disabled{opacity:.6;cursor:default}.session-mode--led{color:var(--status-warn-text);background:#facc151a;border-color:#facc1580}.session-mode--ro{cursor:default}.session-module{padding:.85rem 1rem}.session-module--static{margin-bottom:var(--spacing-lg)}.session-module--dragging{box-shadow:0 14px 44px #0000008c}.module-head{justify-content:space-between;align-items:center;gap:var(--spacing-sm);margin-bottom:.6rem;display:flex}.module-head--drag{cursor:grab;-webkit-user-select:none;user-select:none}.module-head--dragging{cursor:grabbing}.module-head--collapsed{margin-bottom:0}.module-bar-title{flex:none;align-items:center;gap:.1rem;min-width:0;display:inline-flex}.module-bar-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.module-grip{color:var(--text-muted);cursor:inherit;margin-right:.35rem}.module-head-actions{flex:none;align-items:center;gap:.15rem;display:flex}.module-pulse{background:linear-gradient(90deg, transparent, var(--module-bar-glow) 50%, transparent);opacity:0;pointer-events:none;border-radius:2px;width:100%;height:2px;margin:0 0 .45rem;display:block}.module-pulse--fire{box-shadow:0 0 12px -2px var(--module-bar-glow);animation:2.5s ease-in-out modulePulse}@keyframes modulePulse{0%,to{opacity:0}50%{opacity:1}}.module-ctrl{color:var(--text-muted);padding:0 .25rem;font-size:.85rem;line-height:1}.module-ctrl:hover{color:var(--text-primary)}.module-remove:hover{color:var(--status-error-text)}.module-badge{background:var(--accent-primary);min-width:1.1rem;height:1.1rem;color:var(--text-on-accent);vertical-align:middle;box-shadow:var(--shadow-glow);border-radius:999px;justify-content:center;align-items:center;margin-left:.4rem;padding:0 .3rem;font-size:.7rem;font-weight:700;display:inline-flex}.module-gm-badge{border:1px solid var(--border-subtle,#ffffff2e);background:var(--surface-2,#ffffff0f);color:var(--text-secondary);letter-spacing:.02em;white-space:nowrap;vertical-align:middle;border-radius:999px;align-items:center;margin-left:.4rem;padding:.05rem .4rem;font-size:.62rem;font-weight:700;display:inline-flex}.module-body--collapsed{display:none}.library-row{justify-content:space-between;align-items:center;gap:var(--spacing-sm);display:flex}.library-label{font-size:.92rem}.library-group{margin:var(--spacing-sm) 0 .25rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-size:.72rem}.library-group:first-child{margin-top:0}.session-canvas{width:100%;margin-bottom:var(--spacing-lg);border-radius:var(--radius-lg);border:1px dashed var(--surface-border);background:repeating-linear-gradient(0deg, transparent, transparent 39px, var(--grid-line) 40px), repeating-linear-gradient(90deg, transparent, transparent 39px, var(--grid-line) 40px);position:relative}.session-canvas--free{cursor:grab;overflow:hidden}.session-canvas--free:active{cursor:grabbing}.session-canvas--free .canvas-content>div{cursor:auto}.canvas-content{transform-origin:0 0;pointer-events:none;position:absolute;inset:0}.canvas-controls{z-index:25;align-items:center;gap:var(--spacing-sm);display:flex;position:absolute;bottom:12px;right:12px}.canvas-zoom-pct{color:var(--text-muted);font-family:monospace;font-size:.78rem}.module-resize{cursor:ew-resize;touch-action:none;z-index:2;border-radius:4px;width:12px;position:absolute;top:8px;bottom:8px;right:-4px}.module-resize:after{content:"";background:var(--accent-secondary);opacity:0;border-radius:2px;width:2px;transition:opacity .15s;position:absolute;top:0;bottom:0;right:5px}.module-resize:hover:after,.module-resize:active:after{opacity:.6}.hp-max-input{width:96px}.col-gap-sm{flex-direction:column;gap:.75rem;display:flex}.w-70{width:70px}.w-80{width:80px}.rand-controls{gap:var(--spacing-sm);flex-wrap:wrap;align-items:flex-end;display:flex}.rand-field{color:var(--text-secondary);flex-direction:column;gap:.2rem;font-size:.8rem;display:flex}.rand-hint{color:var(--text-muted);margin:0;font-size:.8rem}.rand-spin{text-align:center;padding:var(--spacing-md);opacity:.7;font-size:1.25rem;font-weight:600}.rand-pick{text-align:center;padding:var(--spacing-md)}.rand-pick-title{font-size:1.4rem;font-weight:700}.rand-pick-meta{color:var(--text-secondary);margin-top:.25rem;font-size:.9rem}.rand-again{margin-top:.75rem}.auth-page{max-width:480px;margin-top:4rem}.theme-options{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.theme-option{text-align:left;border-radius:var(--radius-md);border:1px solid var(--surface-border);background:var(--surface-inset);color:var(--text-secondary);cursor:pointer;flex-direction:column;flex:180px;gap:.2rem;padding:.6rem .8rem;transition:border-color .15s,color .15s;display:flex}.theme-option:hover:not(:disabled){border-color:var(--accent-primary);color:var(--text-primary)}.theme-option:disabled{cursor:default}.theme-option--active{border-color:var(--accent-primary);color:var(--text-primary);box-shadow:var(--shadow-glow)}.theme-option-label{font-weight:600}.theme-option-blurb{color:var(--text-muted);font-size:.78rem}.theme-select{color:var(--text-secondary);align-items:center;gap:.3rem;font-size:.85rem;display:inline-flex}.theme-select select{font:inherit;color:var(--text-primary);background:var(--surface-inset);border:1px solid var(--surface-border);border-radius:var(--radius-sm);cursor:pointer;padding:.2rem .4rem}.theme-select select:hover:not(:disabled){border-color:var(--accent-secondary)}.theme-select select:disabled{opacity:.6;cursor:default}.tt-alarm-toggle{margin-top:var(--spacing-sm);color:var(--text-secondary);cursor:pointer;align-items:center;gap:.4rem;font-size:.8rem;display:flex}.notfound{text-align:center;max-width:32rem;margin:4rem auto}.notfound-code{margin-bottom:var(--spacing-sm);font-size:3rem}.btn-roomy{padding:.9rem 1.8rem}.version-tag{color:var(--text-muted);opacity:.6;-webkit-user-select:none;user-select:none;z-index:1;font-family:monospace;font-size:.7rem;text-decoration:none;transition:opacity .15s,color .15s;position:fixed;bottom:.4rem;right:.6rem}.version-tag:hover{opacity:1;color:var(--accent-secondary)}.changelog{max-width:760px;margin-top:2.5rem}.changelog-title{margin-bottom:.25rem;font-size:2.2rem}.changelog-entry{margin-bottom:var(--spacing-lg)}.changelog-head{justify-content:space-between;align-items:baseline;gap:var(--spacing-md);margin-bottom:var(--spacing-sm);flex-wrap:wrap;display:flex}.changelog-entry-title{font-size:1.25rem}.changelog-meta{color:var(--text-muted);white-space:nowrap;font-family:monospace;font-size:.78rem}.changelog-list{flex-direction:column;gap:.5rem;margin:0;padding-left:1.2rem;display:flex}.changelog-list li{color:var(--text-secondary);line-height:1.5}.reconnect-bar{z-index:60;text-align:center;color:var(--status-warn-text);background:#facc151f;border-top:1px solid #facc1580;padding:.4rem;font-size:.85rem;position:fixed;bottom:0;left:0;right:0}.roster-inline{margin-bottom:var(--spacing-lg)}.roster-head{margin-bottom:var(--spacing-md)}.roster-body{margin-top:.75rem}.roster-list{gap:var(--spacing-sm);flex-direction:column;list-style:none;display:flex}.roster-list--tight{gap:.25rem}.roster-row{align-items:center;gap:var(--spacing-sm);display:flex}.roster-row--away{opacity:.55}.roster-empty{color:var(--text-secondary);margin:0}.roster-tag{color:var(--text-secondary);font-size:.8rem}.roster-count{color:var(--text-secondary);font-size:1rem;font-weight:400}.roster-subhead{margin-top:var(--spacing-md);margin-bottom:var(--spacing-sm);color:var(--text-secondary);font-size:.85rem}.roster-past{color:var(--text-secondary);font-size:.9rem}.roster-dot{margin-right:var(--spacing-sm)}.app-container{flex-direction:column;min-height:100vh;display:flex}.main-content{padding:var(--spacing-2xl) 0;flex:1}.navbar{padding:var(--spacing-md) var(--spacing-lg);justify-content:space-between;align-items:center;gap:var(--spacing-md);border-bottom:1px solid var(--surface-border);background:var(--bg-color);display:flex;position:relative}.navbar-brand{flex-shrink:0;align-items:center;gap:.5rem;text-decoration:none;display:inline-flex}.navbar-brand h2{margin:0;font-size:1.5rem}.brand-mark{width:1.4rem;height:1.4rem;color:var(--accent-primary);flex:none}.navbar-toggle{border:1px solid var(--surface-border);color:var(--text-primary);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;width:40px;height:40px;padding:0;font-size:1.25rem;display:none}.navbar-links{gap:var(--spacing-lg);align-items:center;display:flex}.navbar-link{color:var(--text-secondary);padding:.25rem 0;font-weight:500;text-decoration:none}button.navbar-link{cursor:pointer;font:inherit;background:0 0;border:none;font-weight:500}.navbar-link:hover{color:var(--text-primary)}.navbar-user{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;max-width:200px;font-size:.9rem;text-decoration:none;overflow:hidden}.navbar-right{align-items:center;gap:var(--spacing-md);display:flex}.session-pill{border:1px solid var(--surface-border);background:var(--surface-color);color:var(--text-secondary);white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:.4rem;padding:.3rem .7rem;font-size:.82rem;font-weight:600;text-decoration:none;display:inline-flex}.session-pill:hover{border-color:var(--hairline-strong);color:var(--text-primary)}.session-pill-dot{font-size:.7rem;line-height:1}.session-pill--mine .session-pill-dot{color:var(--status-live-text)}.session-pill--live .session-pill-dot{color:var(--accent-danger)}@media (width<=480px){.session-pill-label{display:none}.session-pill{padding:.35rem .5rem}}@media (width<=720px){.navbar{padding:var(--spacing-md)}.navbar-toggle{display:inline-flex}.navbar-links{align-items:stretch;gap:var(--spacing-sm);padding:var(--spacing-md);background:var(--bg-color);border-bottom:1px solid var(--surface-border);box-shadow:var(--shadow-panel);z-index:10;flex-direction:column;display:none;position:absolute;top:100%;left:0;right:0}.navbar-links.open{display:flex}.navbar-link{border-radius:8px;padding:.75rem .5rem}.navbar-link:hover{background:var(--surface-hover)}.navbar-user{border-top:1px solid var(--surface-border);max-width:100%;margin-top:var(--spacing-sm);padding:.5rem}}.dice-roller{gap:var(--spacing-md);flex-direction:column;display:flex}.dice-types{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.dice-type{border:1px solid var(--surface-border);background:var(--surface-inset);min-width:56px;min-height:40px;color:var(--text-secondary);cursor:pointer;border-radius:8px;flex:auto;padding:.5rem .75rem;font-weight:600;transition:all .15s}.dice-type:hover:not(:disabled){border-color:var(--accent-primary);color:var(--text-primary)}.dice-type.active{background:var(--accent-gradient);color:var(--text-on-accent);box-shadow:0 0 12px color-mix(in srgb, var(--accent-primary) 40%, transparent);border-color:#0000}.dice-controls{align-items:flex-end;gap:var(--spacing-md);display:flex}.dice-field{color:var(--text-secondary);flex-direction:column;gap:.25rem;font-size:.8rem;display:flex}.dice-field input{border:1px solid var(--surface-border);background:var(--surface-inset);width:80px;color:var(--text-primary);border-radius:8px;padding:.5rem;font-size:1rem}.dice-result{border:1px solid var(--surface-border);background:var(--surface-inset-strong);min-width:72px;height:72px;font-family:var(--font-display);border-radius:12px;justify-content:center;align-items:center;margin-left:auto;font-size:2rem;font-weight:800;display:flex}.dice-result.rolling{color:var(--accent-secondary);animation:.18s infinite dice-shake}.dice-result.settled{color:var(--text-primary);border-color:var(--accent-primary);box-shadow:var(--shadow-glow);animation:.3s ease-out dice-pop}@keyframes dice-shake{0%{transform:rotate(-6deg)scale(1.05)}50%{transform:rotate(6deg)scale(.95)}to{transform:rotate(-6deg)scale(1.05)}}@keyframes dice-pop{0%{transform:scale(1.4)}60%{transform:scale(.92)}to{transform:scale(1)}}.dice-roll-btn{width:100%}.dice-feed{gap:var(--spacing-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.dice-feed-item{border:1px solid var(--surface-border);background:var(--surface-faint);border-radius:10px;padding:.6rem .9rem}.dice-feed-item.crit{border-color:color-mix(in srgb, var(--accent-success) 50%, transparent);box-shadow:0 0 12px color-mix(in srgb, var(--accent-success) 20%, transparent)}.dice-feed-item.fumble{border-color:color-mix(in srgb, var(--accent-danger) 50%, transparent);box-shadow:0 0 12px color-mix(in srgb, var(--accent-danger) 20%, transparent)}.dice-feed-line{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.dice-feed-notation{color:var(--text-secondary);font-size:.85rem}.dice-tag{letter-spacing:.05em;border-radius:6px;padding:.1rem .4rem;font-size:.7rem;font-weight:800}.dice-tag.crit{background:color-mix(in srgb, var(--accent-success) 15%, transparent);color:var(--accent-success)}.dice-tag.fumble{background:color-mix(in srgb, var(--accent-danger) 15%, transparent);color:var(--accent-danger)}.dice-feed-detail{color:var(--text-secondary);align-items:baseline;gap:.5rem;margin-top:.2rem;font-size:.9rem;display:flex}.dice-feed-detail .dice-total{color:var(--text-primary);font-size:1.1rem;font-weight:700}.hp-add{gap:var(--spacing-sm);margin-bottom:var(--spacing-lg);flex-wrap:wrap;display:flex}.hp-add input,.hp-add select{border:1px solid var(--surface-border);background:var(--surface-inset);color:var(--text-primary);border-radius:8px;padding:.6rem .75rem;font-size:.95rem}.hp-add input[type=text]{flex:180px}.hp-add input:disabled{opacity:.4;cursor:not-allowed}.hp-unknown-toggle{color:var(--text-secondary);cursor:pointer;flex:100%;align-items:center;gap:.5rem;font-size:.85rem;display:flex}.hp-unknown-toggle input{cursor:pointer;width:auto}.hp-damage-note{color:var(--text-muted);margin-bottom:.5rem;font-size:.75rem;font-style:italic}.turn-timer{gap:var(--spacing-md);flex-direction:column;display:flex}.tt-presets{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.tt-preset{border:1px solid var(--surface-border);background:var(--surface-inset);min-width:52px;min-height:40px;color:var(--text-secondary);cursor:pointer;border-radius:8px;flex:auto;padding:.5rem;font-weight:600;transition:all .15s}.tt-preset:hover:not(:disabled){border-color:var(--accent-secondary);color:var(--text-primary)}.tt-preset.active{background:color-mix(in srgb, var(--accent-secondary) 12%, transparent);border-color:var(--accent-secondary);color:var(--accent-secondary)}.tt-preset:disabled{opacity:.5;cursor:not-allowed}.tt-custom{border:1px solid var(--surface-border);background:var(--surface-inset);width:72px;color:var(--text-primary);border-radius:8px;padding:.5rem}.tt-display{text-align:center;font-family:var(--font-display);color:var(--text-primary);font-variant-numeric:tabular-nums;font-size:3.5rem;font-weight:800;line-height:1}.tt-display.urgent{color:var(--accent-danger);animation:1s ease-in-out infinite tt-pulse}.tt-display.done{color:var(--accent-danger)}@keyframes tt-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.75;transform:scale(1.06)}}.tt-bar-track{background:var(--track-bg);border-radius:6px;height:8px;overflow:hidden}.tt-bar-fill{border-radius:6px;height:100%;transition:width .2s linear,background .2s}.tt-controls{gap:var(--spacing-sm);display:flex}.tt-controls .btn{flex:1}.feed{gap:var(--spacing-md);flex-direction:column;display:flex}.feed-scroller{overflow-anchor:none;flex-direction:column;gap:.4rem;max-height:360px;padding-right:.25rem;display:flex;overflow-y:auto}.feed-older-hint{text-align:center;color:var(--text-muted);margin:0;padding:.25rem;font-size:.75rem}.feed-older-start{opacity:.7;letter-spacing:.04em}.feed-divider{align-items:center;gap:.6rem;margin:.5rem .2rem .2rem;display:flex}.feed-divider:before,.feed-divider:after{content:"";background:var(--surface-border);flex:1;height:1px}.feed-divider span{letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);white-space:nowrap;font-size:.7rem}.feed-typing{color:var(--text-secondary);min-height:1.1em;padding:.1rem .6rem .2rem;font-size:.78rem;font-style:italic}.feed-entry{border-radius:8px;padding:.3rem .5rem;font-size:.95rem;line-height:1.4}.feed-time{color:var(--text-muted);white-space:nowrap;margin-right:.5rem;font-family:monospace;font-size:.72rem}.feed-message .feed-author{color:var(--accent-secondary);margin-right:.5rem;font-weight:700}.feed-message .feed-body{word-break:break-word}.feed-whisper{background:color-mix(in srgb, var(--accent-secondary) 8%, transparent);border-radius:8px}.feed-whisper-badge{color:var(--accent-secondary);white-space:nowrap;margin-right:.5rem;font-size:.78rem;font-weight:600}.whisper-select{border:1px solid var(--surface-border);background:var(--surface-inset);color:var(--text-primary);border-radius:8px;flex:100%;align-items:center;gap:.3rem;padding:0 .5rem;display:inline-flex}.whisper-select select{color:inherit;cursor:pointer;background:0 0;border:none;max-width:9rem;padding:.5rem 0;font-size:.9rem}.feed-composer--whisper input{border-color:var(--accent-secondary);background:color-mix(in srgb, var(--accent-secondary) 6%, var(--surface-inset))}.feed-code{background:var(--surface-inset);border:1px solid var(--surface-border);border-radius:var(--radius-sm);padding:.02rem .3rem;font-family:monospace;font-size:.85em}.feed-link{color:var(--accent-secondary);word-break:break-word;text-decoration:underline}.feed-img{border-radius:var(--radius-md);border:1px solid var(--surface-border);width:auto;max-width:min(260px,100%);height:auto;max-height:220px;margin-top:.3rem;display:block}.feed-dice{background:color-mix(in srgb, var(--accent-primary) 6%, transparent);color:var(--text-secondary)}.feed-dice strong{color:var(--text-primary)}.feed-dice .feed-notation{font-family:monospace}.feed-dice.crit{background:color-mix(in srgb, var(--accent-success) 8%, transparent)}.feed-dice.fumble{background:color-mix(in srgb, var(--accent-danger) 8%, transparent)}.feed-tag{letter-spacing:.05em;border-radius:5px;margin-left:.4rem;padding:.05rem .35rem;font-size:.65rem;font-weight:800}.feed-tag.crit{background:color-mix(in srgb, var(--accent-success) 15%, transparent);color:var(--accent-success)}.feed-tag.fumble{background:color-mix(in srgb, var(--accent-danger) 15%, transparent);color:var(--accent-danger)}.feed-system{color:var(--text-muted);font-size:.85rem;font-style:italic}.feed-composer{border-top:1px solid var(--surface-border);padding-top:var(--spacing-md);flex-wrap:wrap;gap:.5rem;display:flex}.feed-composer input{border:1px solid var(--surface-border);background:var(--surface-inset);min-width:0;color:var(--text-primary);border-radius:8px;flex:1;padding:.6rem .75rem}.rules{gap:var(--spacing-md);flex-direction:column;display:flex}.rules-head{align-items:center;gap:.5rem;display:flex}.rules-game{border:1px solid var(--surface-border);background:var(--surface-inset);min-width:0;color:var(--text-primary);border-radius:8px;flex:1;align-items:center;gap:.4rem;padding:0 .6rem;display:inline-flex}.rules-game select{min-width:0;color:inherit;cursor:pointer;background:0 0;border:none;flex:1;padding:.5rem 0;font-size:.95rem}.rules-options-btn{border:1px solid var(--surface-border);background:var(--surface-inset);width:2.2rem;height:2.2rem;color:var(--text-secondary);cursor:pointer;border-radius:8px;flex:none;font-size:1rem;line-height:1;transition:color .15s,border-color .15s}.rules-options-btn:hover,.rules-options-btn.is-open{color:var(--accent-primary);border-color:var(--accent-primary)}.rules-clear-btn{border:1px solid var(--surface-border);background:var(--surface-inset);width:2.2rem;height:2.2rem;color:var(--text-secondary);cursor:pointer;border-radius:8px;flex:none;font-size:.95rem;line-height:1;transition:color .15s,border-color .15s}.rules-clear-btn:hover{color:var(--accent-danger);border-color:var(--accent-danger)}.rules-flyout{border:1px solid var(--surface-border);background:var(--surface-faint);border-radius:10px;flex-wrap:wrap;gap:.6rem;padding:.75rem;display:flex}.rules-opt{color:var(--text-secondary);flex-direction:column;gap:.25rem;font-size:.78rem;display:flex}.rules-opt--wide{flex:100%}.rules-opt input,.rules-opt textarea{border:1px solid var(--surface-border);background:var(--surface-inset);color:var(--text-primary);font:inherit;border-radius:8px;padding:.45rem .6rem;font-size:.9rem}.rules-opt textarea{resize:vertical}.rules-opt input[type=number]{width:5rem}.rules-flyout-note{color:var(--text-muted);flex:100%;margin:0;font-size:.72rem}.rules-log{overflow-anchor:none;flex-direction:column;gap:.75rem;max-height:340px;padding-right:.25rem;display:flex;overflow-y:auto}.rules-empty{font-size:.95rem}.rules-entry{flex-direction:column;gap:.3rem;display:flex}.rules-q{align-items:baseline;gap:.4rem;display:flex}.rules-asker{color:var(--accent-secondary);white-space:nowrap;font-size:.85rem;font-weight:700}.rules-question{color:var(--text-secondary);word-break:break-word;font-size:.92rem}.rules-a{border-left:2px solid var(--surface-border);padding-left:.6rem}.rules-answer{color:var(--text-primary);word-break:break-word;font-size:.95rem;line-height:1.5}.rules-error{color:var(--accent-danger);margin:0;font-size:.9rem}.rules-thinking{background:linear-gradient(90deg, var(--text-muted) 0%, var(--text-muted) 35%, var(--accent-primary) 50%, var(--text-muted) 65%, var(--text-muted) 100%);color:#0000;background-size:200%;-webkit-background-clip:text;background-clip:text;margin:0;font-size:.92rem;font-weight:500;animation:1.8s linear infinite rules-shimmer}@keyframes rules-shimmer{0%{background-position:200%}to{background-position:-200%}}.rules-answer--revealing{cursor:pointer}.rules-word{opacity:0;animation:.22s forwards rules-word-in;display:inline-block}@keyframes rules-word-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.rules-answer-meta{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.4rem;display:flex}.rules-tokens{color:var(--text-muted);font-size:.68rem;font-family:var(--font-mono)}.rules-citation{font-size:.74rem;font-weight:600;font-family:var(--font-mono);background:color-mix(in srgb, var(--accent-primary) 14%, transparent);color:var(--accent-primary);border:1px solid color-mix(in srgb, var(--accent-primary) 30%, transparent);border-radius:999px;padding:.1rem .5rem;display:inline-block}.rules-citation--pop{animation:.32s forwards rules-chip-pop}@keyframes rules-chip-pop{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.rules-composer{border-top:1px solid var(--surface-border);padding-top:var(--spacing-md);gap:.5rem;display:flex}.rules-composer input{border:1px solid var(--surface-border);background:var(--surface-inset);min-width:0;color:var(--text-primary);border-radius:8px;flex:1;padding:.6rem .75rem}.rules-privacy{color:var(--text-muted);margin:0;font-size:.72rem;line-height:1.4}@media (prefers-reduced-motion:reduce){.rules-thinking{color:var(--text-secondary);animation:none}.rules-word,.rules-citation--pop{opacity:1;animation:none;transform:none}}.notes{flex-direction:column;gap:.5rem;min-height:0;display:flex}.notes-tabs{gap:.3rem;display:flex}.notes-tab{border:1px solid var(--surface-border);background:var(--surface-inset);color:var(--text-secondary);cursor:pointer;border-radius:8px;flex:1;padding:.4rem .5rem;font-size:.85rem;transition:color .15s,border-color .15s,background .15s}.notes-tab:hover{color:var(--text-primary)}.notes-tab.is-active{color:var(--accent-primary);border-color:var(--accent-primary);background:color-mix(in srgb, var(--accent-primary) 10%, var(--surface-inset))}.notes-area{resize:vertical;border:1px solid var(--surface-border);background:var(--surface-inset);width:100%;min-height:200px;color:var(--text-primary);font:inherit;border-radius:8px;padding:.6rem .75rem;font-size:.92rem;line-height:1.5}.notes-area:disabled{opacity:.6}.notes-status{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:.6rem;font-size:.72rem;display:flex}.notes-remote-warn{color:var(--accent-danger);font-weight:600}.notes-hint{color:var(--text-secondary);text-align:center;margin:0;padding:1rem .5rem;font-size:.92rem}.hp-groups{gap:var(--spacing-lg);flex-direction:column;display:flex}.hp-group-title{margin-bottom:var(--spacing-sm);color:var(--text-secondary);font-size:.9rem}.hp-list{gap:var(--spacing-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.hp-row{border:1px solid var(--surface-border);background:var(--surface-faint);border-radius:10px;padding:.6rem .9rem;transition:opacity .2s}.hp-row.down{opacity:.5}.hp-row.down .hp-name{text-decoration:line-through}.hp-row-head{align-items:center;gap:.5rem;margin-bottom:.4rem;display:flex}.hp-flags{flex-wrap:wrap;align-items:center;gap:.3rem;margin-bottom:.4rem;display:flex}.hp-flag{border:1px solid var(--surface-border);background:var(--surface-inset-strong);color:var(--text-secondary);cursor:pointer;border-radius:999px;align-items:center;gap:.2rem;padding:.1rem .45rem;font-size:.72rem;line-height:1.5;display:inline-flex}.hp-flag:hover{border-color:var(--accent-danger);color:var(--text-primary)}.hp-flag-x{opacity:.45}.hp-flag-add{border:1px dashed var(--surface-border);color:var(--text-muted);cursor:pointer;background:0 0;border-radius:999px;padding:.1rem .45rem;font-size:.72rem}.hp-flag-add:hover{color:var(--accent-secondary);border-color:var(--accent-secondary)}.hp-flag-picker{border:1px solid var(--surface-border);background:var(--surface-inset);border-radius:8px;flex-wrap:wrap;align-items:center;gap:.3rem;margin-bottom:.4rem;padding:.4rem;display:flex}.hp-flag-chip{border:1px solid var(--surface-border);background:var(--surface-faint);color:var(--text-secondary);cursor:pointer;border-radius:999px;padding:.15rem .45rem;font-size:.72rem}.hp-flag-chip:hover{border-color:var(--accent-primary);color:var(--text-primary)}.hp-flag-custom{align-items:center;gap:.25rem;display:inline-flex}.hp-flag-custom input{border:1px solid var(--surface-border);background:var(--surface-inset);width:92px;color:var(--text-primary);border-radius:6px;padding:.15rem .4rem;font-size:.72rem}.hp-viewbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.6rem;display:flex}.hp-viewtoggle{gap:.35rem;display:flex}.hp-lock{border:1px solid var(--surface-border);color:var(--text-secondary);cursor:pointer;background:0 0;border-radius:999px;padding:.1rem .55rem;font-size:.72rem}.hp-lock--open:hover{border-color:var(--accent-secondary);color:var(--text-primary)}.hp-lock--ro{cursor:default}.hp-combatbar{border:1px solid var(--surface-border);background:var(--surface-faint);border-radius:10px;flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.6rem;padding:.4rem .55rem;display:flex}.hp-round{white-space:nowrap;font-size:.82rem;font-weight:700}.hp-turn-now{color:var(--text-secondary);font-size:.82rem}.hp-turn-now strong{color:var(--text-primary)}.hp-combat-actions{gap:.35rem;display:flex}.hp-combat-idle{font-size:.8rem}.hp-autotimer{color:var(--text-secondary);cursor:pointer;align-items:center;gap:.3rem;margin-left:auto;font-size:.72rem;display:inline-flex}.hp-turn-dot{color:var(--accent-success);font-size:.78rem;line-height:1}.hp-row--turn{border-color:var(--accent-success);box-shadow:0 0 0 1px var(--accent-success) inset}.hp-lock-badge{color:var(--text-secondary);background:var(--surface-inset);border:1px solid var(--surface-border);white-space:nowrap;border-radius:999px;align-items:center;gap:.2rem;padding:.05rem .4rem;font-size:.68rem;display:inline-flex}.hp-viewbar-right{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem;margin-left:auto;display:flex}.hp-locked-note{padding:.4rem 0;font-size:.82rem}.hp-manage-flyout{border:1px solid var(--surface-border);background:var(--surface-faint);border-radius:10px;flex-direction:column;gap:.4rem;margin-bottom:.6rem;padding:.55rem .6rem;display:flex}.hp-manage-hint{color:var(--text-secondary);margin:0 0 .2rem;font-size:.74rem}.hp-manage-row{align-items:center;gap:.5rem;display:flex}.hp-manage-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.85rem;overflow:hidden}.hp-manage-assign{border:1px solid var(--surface-border);background:var(--surface-inset);color:var(--text-primary);border-radius:6px;max-width:9rem;padding:.2rem .35rem;font-size:.78rem}.hp-step:disabled,.hp-amt:disabled,.hp-flag:disabled,.hp-init-grip:disabled,.hp-init-num:disabled{opacity:.45;cursor:not-allowed}.hp-init{align-items:center;gap:.25rem;display:inline-flex}.hp-init-grip{cursor:grab;color:var(--text-muted);touch-action:none;background:0 0;border:none;padding:0 .15rem;font-size:.95rem;line-height:1}.hp-init-grip:disabled{cursor:default;opacity:.4}.hp-init-num{text-align:center;border:1px solid var(--surface-border);background:var(--surface-inset-strong);width:42px;color:var(--text-primary);border-radius:6px;padding:.15rem .3rem;font-size:.8rem;font-weight:600}.hp-init-num:disabled,.hp-row--dragging{opacity:.5}.hp-row--drop-before{box-shadow:inset 0 2px 0 0 var(--accent-secondary)}.hp-name{font-weight:600}.hp-figures{color:var(--text-secondary);margin-left:auto;font-family:monospace}.tt-display,.hp-figures,.feed-notation,.dice-feed-notation,.hp-init-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.hp-remove{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:0 .25rem;font-size:1.1rem;line-height:1}.hp-remove:hover{color:var(--accent-danger)}.hp-bar-track{background:var(--track-bg);border-radius:6px;height:8px;margin-bottom:.5rem;overflow:hidden}.hp-bar-fill{border-radius:6px;height:100%;transition:width .25s,background .25s}.hp-controls{gap:.4rem;display:flex}.hp-controls button{border:1px solid var(--surface-border);background:var(--surface-inset);color:var(--text-primary);cursor:pointer;border-radius:6px;flex:1;padding:.35rem 0;font-weight:600;transition:border-color .15s,background .15s}.hp-controls button:hover{border-color:var(--accent-primary);background:color-mix(in srgb, var(--accent-primary) 8%, transparent)}.hp-amt{text-align:center;border:1px solid var(--surface-border);background:var(--surface-inset-strong);width:64px;color:var(--text-primary);border-radius:6px;flex:none;padding:.35rem;font-weight:600}
