.app{display:flex;flex-direction:column;height:100vh}.app-body{flex:1;display:flex;min-height:0}.battlefield-region{flex:1;position:relative;min-width:0;background:radial-gradient(900px 500px at 50% 40%,rgba(20,40,66,.5),transparent 70%),#070b12}.panel{background:linear-gradient(180deg,var(--panel),var(--panel-2));border-left:1px solid var(--border-soft);border-right:1px solid var(--border-soft);width:288px;overflow-y:auto;padding:14px;flex-shrink:0}.panel.left{border-left:none}.panel.right{border-right:none}.panel>h2{font-size:12px;text-transform:uppercase;letter-spacing:.14em;color:var(--text-dim);margin-bottom:14px}.panel-section{margin-bottom:18px}.panel-section>h3{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint);border-bottom:1px solid var(--border-soft);padding-bottom:5px;margin-bottom:9px}.toolbar{display:flex;align-items:center;gap:8px;background:linear-gradient(180deg,#131b27,#0e141d);border-bottom:1px solid var(--border);padding:9px 14px;flex-wrap:wrap}.toolbar .spacer{flex:1}.toolbar .brand{display:flex;align-items:center;padding:8px;flex-shrink:0}.brand-symbol{display:block;width:32px;height:32px}.topbar-toggle:has(.brand-symbol){display:flex;align-items:center;gap:6px}.toolbar-collapsed .brand-symbol{width:22px;height:22px}.toolbar-collapsed{padding:3px 10px;font-size:12px;background:linear-gradient(180deg,#0d131c,#0a0f17);flex-wrap:nowrap}.topbar-toggle{padding:2px 8px;font-size:12px;line-height:1.4;opacity:.75}.topbar-toggle:hover{opacity:1}.match-name-mini{font-weight:600;letter-spacing:.01em}.menu-label{padding:4px 10px 6px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}.menu-sep{border:0;border-top:1px solid var(--border-soft);margin:4px 0}.toolbar .unseen{background:linear-gradient(180deg,var(--accent),var(--accent-2));color:var(--accent-ink);padding:3px 11px;border-radius:999px;cursor:pointer;font-weight:600;box-shadow:0 0 14px #43c6f54d}.acting-as{display:flex;align-items:center;gap:6px}.acting-as select{width:auto}.online-pill{color:var(--ok);font-weight:600;font-size:12px;display:inline-flex;align-items:center;gap:5px}.tool-btn-group{display:flex;gap:5px;flex-wrap:wrap}.list-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--r-sm);cursor:pointer;font-size:13px;border:1px solid transparent;transition:background .12s ease,border-color .12s ease}.list-item:hover{background:var(--panel-3)}.list-item.selected{background:#43c6f51f;border-color:#43c6f566;box-shadow:inset 3px 0 0 var(--accent)}.swatch{width:12px;height:12px;border-radius:3px;flex-shrink:0}.activity-entry{font-size:12px;padding:4px 0;border-bottom:1px solid var(--border-soft);color:var(--text-dim)}.activity-entry .type{color:var(--accent);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.02em}.pill{display:inline-block;padding:2px 9px;border-radius:999px;background:var(--panel-3);border:1px solid var(--border);font-size:11px;letter-spacing:.05em;text-transform:uppercase}.warn-banner{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:10;display:flex;flex-direction:column;gap:6px;max-width:80%}.warn-item{background:#121822eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--warn);border-left-width:3px;border-radius:var(--r);padding:9px 13px;font-size:13px;display:flex;align-items:center;gap:10px;box-shadow:var(--shadow-2)}.warn-item .warn-actions{display:flex;gap:5px;margin-left:auto}.warn-item button{padding:3px 9px;font-size:12px}.bottom-panel{position:fixed;left:50%;bottom:10px;transform:translate(-50%);z-index:20;width:min(940px,74vw);max-height:48vh;background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--border-strong);border-radius:var(--r);box-shadow:var(--shadow-2);display:flex;align-items:stretch;overflow:auto}.bottom-col.score-col{flex:1 1 240px;min-width:220px}.bottom-col.activity-col{flex:1.4 1 300px;min-width:260px;display:flex;flex-direction:column}.bottom-col{padding:11px 14px;border-right:1px solid var(--border-soft);overflow-y:auto;min-height:0}.bottom-col.grow{flex:1;display:flex;flex-direction:column}.bottom-col.turn-col{flex:1 1 240px;min-width:220px;overflow:hidden}.turn-status{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:2px 0 8px}.turn-round{font-size:22px;font-weight:700;letter-spacing:-.01em}.turn-player{display:flex;align-items:center;gap:7px;margin-bottom:10px;font-size:13px}.scoring-overlays{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border-soft)}.scoring-overlays-label{font-size:10px;letter-spacing:.14em;text-transform:uppercase;width:100%}.scoring-overlays button{padding:3px 8px;font-size:11px}.overlay-menu-note{padding:6px 10px 2px;font-size:11px;border-top:1px solid var(--border-soft);margin-top:4px}.turn-clock{display:flex;align-items:stretch;gap:6px;margin-bottom:10px}.clock-cell{display:flex;align-items:center;gap:6px;flex:1;padding:5px 8px;background:var(--panel-3);border:1px solid var(--border);border-radius:var(--r-sm);color:var(--text-dim)}.clock-cell.running{border-color:var(--accent);color:var(--text);background:linear-gradient(180deg,var(--panel-3),var(--panel-2))}.clock-time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:13px}.clock-action{padding:5px 9px}.clock-hint{align-self:center;font-size:11px;letter-spacing:.08em}.phase-stepper{display:inline-flex;align-items:center;gap:6px}.phase-arrow{padding:2px 8px;font-size:13px;line-height:1}.turn-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.turn-actions button{width:100%;justify-content:center;text-align:center;padding:7px 8px;white-space:nowrap}.turn-actions .span2{grid-column:1 / -1}.bottom-col>h3{font-size:10px;text-transform:uppercase;letter-spacing:.16em;color:var(--text-faint)}.bottom-tab-content{flex:1;overflow-y:auto;min-height:0}.bottom-collapsed{position:fixed;left:50%;bottom:10px;transform:translate(-50%);z-index:20;background:#101621e6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border-strong);border-radius:999px;box-shadow:var(--shadow-1);height:40px;display:flex;align-items:center;gap:12px;padding:0 16px}.panel-wrap{position:relative;display:flex;flex-shrink:0}.panel-collapse{position:absolute;top:10px;z-index:3;padding:2px 6px;font-size:11px;background:var(--panel-3);opacity:.7}.panel-collapse:hover{opacity:1}.panel-collapse.left{right:8px}.panel-collapse.right{left:8px}.panel-rail{writing-mode:vertical-rl;text-orientation:mixed;padding:14px 5px;border-radius:0;border-top:none;border-bottom:none;background:linear-gradient(180deg,var(--panel),var(--panel-2));color:var(--text-dim);font-size:11px;letter-spacing:.12em;text-transform:uppercase;flex-shrink:0}.panel-rail:hover{color:var(--text);background:var(--panel-2)}.unit-group{margin-bottom:5px}.unit-head{display:flex;align-items:center;gap:7px;padding:6px 7px;border-radius:var(--r-sm);cursor:pointer;font-size:13px;background:var(--panel-2);border:1px solid var(--border-soft);transition:background .12s ease,border-color .12s ease}.unit-head:hover{background:var(--panel-3);border-color:var(--border)}.unit-head.selected{background:#43c6f51f;border-color:#43c6f573}.unit-head .grow{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.unit-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 5px;border-radius:5px;font-family:var(--font-mono);font-size:11px;font-weight:700;color:#0a0e16;flex-shrink:0;box-shadow:var(--shadow-1)}.collapse-btn{padding:0 4px;background:transparent;border:none;color:var(--text-dim);font-size:11px}.collapse-btn:hover{background:transparent;color:var(--text)}.tray-block{margin-top:6px}.tray-head{display:flex;align-items:center;gap:6px;padding:3px 4px;border-bottom:1px dashed var(--border);margin-bottom:3px;font-size:11px;text-transform:uppercase;letter-spacing:.06em}.tray-head .grow{flex:1}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#04070c9e;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:100;animation:fade-in .14s ease}.modal{background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--border-strong);border-radius:var(--r-lg);padding:22px;width:440px;max-width:92vw;max-height:88vh;overflow-y:auto;box-shadow:var(--shadow-3);animation:pop-in .16s cubic-bezier(.2,.8,.3,1)}.modal h2{margin-top:0;font-size:18px}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.match-row{display:flex;align-items:center;gap:8px;padding:9px 10px;border:1px solid var(--border-soft);border-radius:var(--r);margin-bottom:6px;background:var(--panel-2)}.match-row .grow{flex:1}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(6px) scale(.985)}}.overlay-menu{position:relative;display:inline-block}.overlay-menu-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.overlay-menu-pop{position:absolute;top:calc(100% + 6px);left:0;z-index:41;background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--border-strong);border-radius:var(--r);padding:7px;min-width:180px;box-shadow:var(--shadow-2);max-height:calc(100vh - 80px);overflow-y:auto}.online-anchor{align-self:stretch}.overlay-menu-pop.align-right{left:auto;right:0}.overlay-menu-item{display:flex;align-items:center;gap:8px;padding:6px 7px;border-radius:var(--r-sm);cursor:pointer;color:var(--text);font-size:13px}.overlay-menu-item:hover{background:var(--panel-3)}.tools-menu-btn{display:block;width:100%;text-align:left;margin-bottom:4px}.tools-menu-row{display:flex;align-items:center;gap:4px;margin-bottom:4px}.tools-menu-row .tools-menu-btn{margin-bottom:0}.hover-name{position:absolute;z-index:6;transform:translate(-50%,-100%);background:#0a0e16e6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:2px 8px;font-size:12px;color:var(--text);pointer-events:none;white-space:nowrap;box-shadow:var(--shadow-1)}.measure-label{position:absolute;z-index:6;background:#0a0e16db;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--accent);border-radius:var(--r-sm);padding:3px 9px;font-family:var(--font-mono);font-size:12.5px;color:var(--text);pointer-events:none;white-space:nowrap;box-shadow:var(--shadow-1)}.datasheet-card{position:absolute;z-index:7;transform:translate(14px,-100%);min-width:150px;max-width:240px;background:#0a0e16eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--accent);border-radius:var(--r);padding:8px 10px;font-size:12.5px;color:var(--text);box-shadow:var(--shadow-1);display:flex;flex-direction:column;gap:5px}.datasheet-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.datasheet-head button{padding:0 6px;font-size:12px}.datasheet-stats{display:flex;flex-wrap:wrap;gap:4px 12px;font-family:var(--font-mono)}.modal.datasheet-modal{width:720px;max-width:96vw;max-height:88vh;padding:0;display:flex;flex-direction:column;overflow:hidden}.ds-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 18px;border-bottom:1px solid var(--border-soft);background:var(--panel);flex-shrink:0}.ds-eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--text-dim);font-family:var(--font-mono)}.ds-close{padding:2px 9px;font-size:13px}.ds-scroll{overflow-y:auto;padding:16px 18px 22px}.ds-title{margin:0;font-size:26px;line-height:1.15;letter-spacing:.02em;text-transform:uppercase}.ds-subline{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;margin-top:6px;font-family:var(--font-mono);font-size:12.5px;color:var(--text-dim)}.ds-points{color:var(--accent);font-weight:600}.ds-hurt{color:var(--warn)}.ds-actions{display:flex;align-items:center;gap:10px;margin:12px 0 4px}.ds-attack{font-weight:600}.ds-link{font-size:12px}.ds-chips{display:flex;flex-wrap:wrap;gap:5px;margin:10px 0}.ds-chip{display:inline-block;padding:2px 8px;border:1px solid var(--border);border-radius:999px;background:var(--panel-3);font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.ds-chip-faction{border-color:var(--warn);color:var(--warn)}.ds-chip-army{border-color:var(--accent);color:var(--accent)}.ds-chip-core{text-transform:none;letter-spacing:.02em;color:var(--text)}.ds-chip-link{cursor:pointer;color:var(--text)}.ds-chip-link:hover{border-color:var(--accent);color:var(--accent)}.ds-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.ds-rowlabel{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint);font-family:var(--font-mono)}.ds-statline{display:grid;grid-template-columns:repeat(auto-fit,minmax(72px,1fr));gap:6px;margin:12px 0 4px}.ds-stat{display:flex;flex-direction:column;align-items:center;padding:6px 4px;border:1px solid var(--border);border-radius:var(--r);background:var(--panel-3);font-family:var(--font-mono)}.ds-stat b{font-size:19px;line-height:1.2}.ds-statkey{font-size:9px;letter-spacing:.12em;color:var(--text-dim)}.ds-section{margin-top:18px}.ds-heading{margin:0 0 8px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);font-weight:600;border-bottom:1px solid var(--border-soft);padding-bottom:5px}summary.ds-heading{cursor:pointer;list-style-position:inside}.ds-note{font-size:12px;line-height:1.45;margin:6px 0}.ds-loadouts{margin:0;padding-left:18px;font-size:12.5px;line-height:1.6}.ds-table-wrap{overflow-x:auto}.ds-weapons{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:12px}.ds-weapons th{text-align:center;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint);font-weight:600;padding:0 6px 5px;white-space:nowrap}.ds-weapons td{text-align:center;padding:5px 6px;border-top:1px solid var(--border-soft);white-space:nowrap}.ds-weapons th.ds-qty,.ds-weapons td.ds-qty{text-align:left;color:var(--text-dim);width:1%}.ds-weapons th.ds-wname,.ds-weapons td.ds-wname{text-align:left;white-space:normal;color:var(--text)}.ds-weapons th.ds-kw,.ds-weapons td.ds-kw{text-align:left;white-space:normal;color:var(--text-dim);font-size:10.5px}.ds-weapons tbody tr:hover td{background:#43c6f50f}.ds-ability{padding:8px 0;border-bottom:1px solid var(--border-soft);font-size:12.5px;line-height:1.5}.ds-ability:last-child{border-bottom:none}.ds-ability-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ds-ability-head b{color:var(--warn)}.ds-ability-desc{color:var(--text-dim);white-space:pre-line}.ability-range-chips{display:inline-flex;gap:4px;margin-left:6px;vertical-align:middle}.ability-range-chip{padding:0 5px;font-size:10.5px;line-height:1.5;font-family:var(--font-mono);border-radius:999px;border:1px solid var(--border-soft);background:var(--panel-3);color:var(--text-dim);cursor:pointer}.ability-range-chip:hover{color:var(--text);border-color:#a855f7}.ability-range-chip.active{background:#a855f7;border-color:#a855f7;color:#0f172a;font-weight:700}.tray-dock{position:absolute;bottom:calc(10px + var(--dice-mat-h, 0px));right:12px;display:flex;gap:6px;z-index:6;pointer-events:none}.tray-dock-box{pointer-events:auto;width:94px;height:46px;border:1.5px dashed var(--border-strong);border-radius:var(--r);background:#0a0e16b8;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);line-height:1.2;text-align:center;transition:border-color .14s ease,color .14s ease,background .14s ease}.tray-dock-box:hover{border-color:var(--accent);color:var(--text);background:#101824d9}.tray-dock-box.destructive{border-color:#f0525f8c}.tray-dock-box.destructive:hover{border-color:var(--danger);color:#ffd7db}.tray-dock-label{font-weight:600}.tray-dock-count{color:var(--text);font-family:var(--font-mono);font-size:12px}.camera-hud{position:absolute;bottom:calc(10px + var(--dice-mat-h, 0px));left:12px;z-index:5;width:196px;max-height:min(64vh,calc(100% - 20px - var(--dice-mat-h, 0px)));overflow-y:auto;background:#0a0e16d1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:var(--r);padding:8px 10px;font-size:12px;font-family:var(--font-mono);display:flex;flex-direction:column;align-items:stretch;gap:6px;box-shadow:var(--shadow-1)}.camera-hud>span{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.camera-hud button{padding:2px 8px;font-size:12px}.modal.shortcuts{width:min(820px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow-y:auto}.shortcut-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0}.shortcut-keys{display:flex;gap:4px;align-items:center}.shortcut-keys .plus{color:var(--text-faint);margin:0 2px;font-size:11px}kbd{font-family:var(--font-mono);font-size:11px;background:var(--panel-3);border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:5px;padding:2px 7px;color:var(--text)}.shortcut-label{color:var(--text-dim);font-size:13px}.marquee{position:absolute;border:1px solid var(--accent);background:#43c6f524;border-radius:2px;pointer-events:none;z-index:5}.die-pips{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);width:26px;height:26px;gap:2px}.die-pips .pip{border-radius:50%}.die-pips .pip.on{background:#0a0e16}.scoreboard{font-size:13px}.score-head,.score-row{display:grid;grid-template-columns:96px repeat(3,1fr) 68px;align-items:center;gap:6px;padding:4px 0}.score-head{border-bottom:1px solid var(--border);padding-bottom:5px;text-transform:uppercase;letter-spacing:.08em;font-size:10px}.score-cell{text-align:center;font-size:12px}.score-cell.counter{display:flex;align-items:center;justify-content:center;gap:4px}.score-cell.counter button{padding:0 8px}.score-cell.counter strong,.score-cell.total{font-family:var(--font-mono)}.score-cell.total{font-weight:700;font-size:17px;color:var(--accent)}.chip-row{display:flex;flex-wrap:wrap;gap:5px}.chip{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:3px 9px;border:1px solid var(--border);border-radius:999px;background:var(--panel-2);color:var(--text);cursor:pointer;transition:border-color .12s ease}.chip:hover{border-color:var(--border-strong)}.chip .swatch{width:8px;height:8px;border-radius:50%}.chip-x{background:transparent;border:none;color:var(--text-dim);padding:0 0 0 2px;font-size:13px;cursor:pointer}.chip-x:hover{background:transparent;color:var(--danger)}.template-grid{display:flex;flex-direction:column;gap:6px;max-height:264px;overflow-y:auto}.map-matrix{max-height:340px;overflow-y:auto}.map-matrix-table{width:100%;border-collapse:collapse;font-size:.85rem}.map-matrix-table th,.map-matrix-table td{padding:3px 6px;text-align:center;border-bottom:1px solid var(--border, #2a3a4a)}.map-matrix-table th{position:sticky;top:0;background:var(--panel, #16202c);color:var(--muted, #8aa);font-weight:600}.map-matrix-table td button{min-width:30px;padding:2px 8px}.map-matrix-table tr:last-child td{border-bottom:none}.template-card{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1px solid var(--border-soft);border-radius:var(--r);background:var(--panel-2);transition:border-color .12s ease}.template-card:hover{border-color:var(--border)}.template-card .grow{flex:1}.template-form{margin-top:16px;padding-top:14px;border-top:1px solid var(--border-soft)}.template-form h4{margin:0 0 8px;font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim)}.import-table{max-height:46vh;overflow-y:auto;border:1px solid var(--border-soft);border-radius:var(--r)}.import-head,.import-row{display:grid;grid-template-columns:34px 1fr 64px 74px 52px 46px 60px 26px;gap:6px;align-items:center;padding:5px 7px}.import-head{position:sticky;top:0;background:var(--panel-3);font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.import-row+.import-row{border-top:1px solid var(--border-soft)}.import-subrow{display:grid;grid-template-columns:34px 1fr 44px 60px 46px;gap:6px;align-items:center;padding:3px 7px 3px 26px;font-size:12px;color:var(--text-dim)}.import-subrow .grow{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-row input,.import-subrow input{padding:3px 6px}.import-table input.locked{color:var(--text-dim);background:transparent;border-color:var(--border-soft);cursor:default}.import-lock{display:flex;align-items:center;gap:8px;margin:0 0 6px;font-size:12px}.import-lock button{margin-left:auto;padding:3px 9px;font-size:12px}.pic-crop{position:relative;display:inline-block;overflow:hidden;flex:none;background:var(--panel-3);outline:1px solid var(--border)}.pic-crop img{position:absolute;max-width:none;border:0;border-radius:0;object-fit:fill}.import-pic .pic-crop img{border:0;border-radius:0;object-fit:fill}.pic-crop-missing{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--text-dim)}.import-pic-btn{padding:0;background:none;border:0;cursor:pointer}.pic-chooser-backdrop{z-index:200}.pic-chooser{width:min(440px,calc(100vw - 32px))}.pic-chooser-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px}.pic-option{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 6px;height:auto}.pic-option.in-use{outline:2px solid var(--text);outline-offset:-2px}.pic-option-label{font-size:12px;font-weight:600}.pic-option.in-use .pic-option-label{text-decoration:underline}.pic-option-credit{font-size:11px}.import-pic{display:flex;align-items:center;justify-content:center;width:30px;height:30px}.import-pic img{width:30px;height:30px;object-fit:cover;border-radius:50%;border:1px solid var(--border)}.import-pic-empty{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;border:1px dashed var(--border);color:var(--text-dim);font-size:15px;line-height:1}.import-pic:hover .import-pic-empty{border-color:var(--accent, var(--text-dim));color:var(--text)}.account-pill{display:inline-flex;align-items:center;gap:8px;max-width:220px;padding:4px 12px 4px 4px}.account-avatar{flex:none;width:24px;height:24px;border-radius:999px;display:grid;place-items:center;font-size:12px;font-weight:700;line-height:1;color:var(--accent-ink);background:var(--accent)}.account-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tier-mark{flex:none;font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.tier-badge{font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:var(--accent);border:1px solid var(--border-strong);border-radius:999px;padding:1px 7px}.warn-badge{margin-left:8px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:var(--warn);border:1px solid var(--warn);border-radius:999px;padding:1px 7px}.handoff-btn{width:100%;justify-content:center}.auth-notice{position:fixed;top:52px;right:12px;z-index:60;display:flex;align-items:center;flex-wrap:wrap;gap:8px;max-width:min(420px,calc(100vw - 24px));padding:8px 12px;font-size:13px;background:#121822f2;border:1px solid var(--warn);border-left-width:3px;border-radius:var(--r);box-shadow:0 6px 20px #0006}.auth-notice button{padding:3px 9px;font-size:12px}.field{display:flex;flex-direction:column;gap:4px;margin:8px 0}.account-facts{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:8px 0}.account-facts dt{color:var(--muted, #8a97a8);font-size:12px}.account-facts dd{margin:0;display:flex;align-items:center;gap:6px}.account-section{margin:12px 0 4px;display:flex;flex-direction:column;gap:6px}.account-rosters{margin:10px 0;display:flex;flex-direction:column;gap:6px}.roster-list{display:flex;flex-direction:column;gap:4px;max-height:220px;overflow-y:auto}.roster-row{display:flex;align-items:center;gap:10px;padding:6px 8px;background:var(--panel-2);border:1px solid var(--border-soft);border-radius:6px}.roster-meta{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.roster-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.roster-meta .muted{font-size:12px}.roster-row button{flex:none}.link-btn{background:none;border:none;color:var(--accent);padding:0;font-size:12px;cursor:pointer}.link-btn:disabled{color:var(--muted, #8a97a8);cursor:default}.landing{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;background:var(--bg);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.landing-card{width:min(480px,90vw);text-align:center;padding:8px}.landing-brand{padding:18px}.landing-brand img{display:block;width:min(360px,100%);height:auto;margin:auto}.landing-tagline{font-size:11px;letter-spacing:.18em}.panel>h2,.landing-btn-title{font-family:var(--font-display);font-weight:800}.landing-btn-title{font-size:20px}.landing-tagline{color:var(--muted, #8a97a8);margin:6px 0 26px}.landing-actions{display:flex;flex-direction:column;gap:12px}.landing-btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:16px 18px;border:1px solid var(--border-strong, #2a3546);border-radius:var(--r, 8px);background:linear-gradient(180deg,var(--panel-2, #131b28),var(--panel, #0d141e));cursor:pointer;text-align:left;transition:border-color .12s,transform .06s}.landing-btn:hover{border-color:var(--accent)}.landing-btn:active{transform:translateY(1px)}.landing-btn.primary{border-color:var(--accent);box-shadow:0 0 0 1px #43c6f540}.landing-btn-title{font-size:16px;font-weight:700;color:var(--text)}.landing-btn-sub{font-size:12.5px;color:var(--muted, #8a97a8)}.catalogue-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;max-height:340px;overflow-y:auto;padding-right:2px}.catalogue-card{display:flex;flex-direction:column;gap:4px;padding:8px;border:1px solid var(--border-soft);border-radius:var(--r);background:var(--panel-2);min-width:0}.catalogue-card:hover{border-color:var(--border)}.catalogue-card strong,.catalogue-key{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.catalogue-key{font-family:var(--mono, ui-monospace, monospace);font-size:11px}.catalogue-art{position:relative;aspect-ratio:1;display:grid;place-items:center;border-radius:calc(var(--r) - 2px);background:var(--panel);border:1px solid var(--border-soft);overflow:hidden;font-size:11px}.catalogue-art img{width:100%;height:100%;object-fit:cover}.catalogue-star{position:absolute;top:3px;right:4px;color:#f5c451;text-shadow:0 1px 2px rgba(0,0,0,.75)}.hover-name .hover-gear{font-size:11px;white-space:normal;max-width:260px;text-align:center}.hover-name.cover-tag{pointer-events:auto;cursor:help}.connection-banner{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;padding:6px 14px;font-size:12px;background:var(--panel, #13232c);border-bottom:1px solid #29404c}.connection-banner.attention{border-color:#e3b453;color:#f5d88f}.connection-banner button{font-size:12px}.setup-guide{width:min(660px,94vw)}.setup-steps{display:flex;flex-wrap:wrap;gap:6px;margin:18px 0}.setup-guide p{line-height:1.6}.online-invite{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.online-invite input{min-width:220px;max-width:100%}.checkpoint-modal{width:min(660px,94vw)}.checkpoint-save{border-top:1px solid var(--border);padding-top:16px}.checkpoint-save label{display:block;margin-bottom:8px}.checkpoint-save input{flex:1;min-width:0}.checkpoint-list{display:grid;gap:12px;margin-top:20px}.checkpoint-card,.checkpoint-confirm{border:1px solid var(--border);border-radius:var(--r);padding:14px;background:var(--panel)}.checkpoint-card h3{margin:0;overflow-wrap:anywhere}.checkpoint-modal p{line-height:1.5}.checkpoint-modal .row{flex-wrap:wrap;gap:8px}.sight-inspector{position:absolute;top:12px;right:12px;z-index:20;width:min(360px,calc(100% - 24px));max-height:calc(100% - 24px);overflow:auto;padding:16px;background:var(--panel, #17212d);border:1px solid #526577;border-radius:10px;box-shadow:0 6px 24px #0008}.sight-inspector .row{justify-content:space-between}.sight-inspector select{width:100%}.sight-row{border-top:1px solid #526577;margin-top:12px;padding-top:12px}.sight-pair{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.sight-pair small{flex-basis:100%;color:#fbbf24}.attack-panel{position:absolute;right:14px;bottom:calc(14px + var(--dice-mat-h, 0px));z-index:8;width:420px;max-width:calc(100vw - 28px);max-height:calc(100vh - 160px - var(--dice-mat-h, 0px));overflow-y:auto;background:linear-gradient(180deg,var(--panel-2),var(--panel));border:1px solid var(--accent);border-radius:var(--r-lg);box-shadow:var(--shadow-3);padding:12px 14px 14px;font-size:12.5px}.atk-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-bottom:8px;border-bottom:1px solid var(--border-soft)}.atk-pair{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:13.5px}.atk-arrow{color:var(--accent)}.atk-head-tools{display:flex;gap:6px;flex-shrink:0}.atk-head-tools button{padding:2px 8px;font-size:11.5px}.atk-hint{font-size:12px;line-height:1.45;margin:8px 0}.atk-summary{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:9px 0;font-family:var(--font-mono);font-size:11.5px}.atk-phase{display:flex;border:1px solid var(--border);border-radius:var(--r);overflow:hidden}.atk-phase button{border:none;border-radius:0;padding:3px 10px;font-size:11px;background:transparent}.atk-phase button.on{background:linear-gradient(180deg,var(--accent),var(--accent-2));color:var(--accent-ink)}.atk-pool{margin-left:auto;color:var(--accent);font-weight:600}.atk-contexts{display:flex;flex-wrap:wrap;gap:5px;padding:8px 0;border-top:1px solid var(--border-soft)}.atk-contexts.manual{border-top:none;padding-top:0}.atk-ctx{display:inline-flex;align-items:baseline;gap:5px;padding:3px 9px;border:1px solid var(--border);border-radius:999px;background:var(--panel-3);color:var(--text-faint);font-size:11px;cursor:pointer;text-align:left}.atk-ctx:hover{border-color:var(--border-strong)}.atk-ctx.on{border-color:var(--warn);color:var(--warn)}.atk-ctx.def.on{border-color:var(--accent);color:var(--accent)}.atk-ctx-src{font-size:9.5px;color:var(--text-faint);letter-spacing:.04em}.atk-more{padding:3px 9px;font-size:11px;border-radius:999px}.atk-more.strat{border-color:var(--warn);color:var(--warn)}.atk-ctx-cp{font-size:9.5px;font-family:var(--font-mono);padding:0 4px;border-radius:3px;background:#f5a62329;color:var(--warn)}.atk-ctx.on .atk-ctx-cp{background:#f5a6234d}.atk-weapon{margin-top:12px;padding-top:10px;border-top:1px solid var(--border-soft)}.atk-weapon-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.atk-weapon-head .muted{font-family:var(--font-mono);font-size:10.5px}.atk-reset{margin-left:auto;padding:0 7px;font-size:12px}.atk-attacks{display:flex;align-items:center;gap:7px;margin:8px 0 4px;font-size:11.5px;color:var(--text-dim)}.atk-attacks input{width:62px;padding:2px 6px;font-family:var(--font-mono)}.atk-roll-a{padding:2px 8px;font-size:11px}.atk-steps{list-style:none;margin:6px 0 0;padding:0;counter-reset:atk}.atk-step{display:grid;grid-template-columns:62px 1fr auto;align-items:center;gap:4px 8px;padding:6px 0;border-top:1px solid var(--border-soft)}.atk-step.waiting{opacity:.5}.atk-step-name{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim)}.atk-step-need{font-family:var(--font-mono);font-size:12px}.atk-step button{padding:2px 10px;font-size:11.5px}.atk-step-note{grid-column:2 / -1;font-size:10.5px;line-height:1.4;color:var(--text-faint)}.atk-step.done .atk-step-note{color:var(--text)}.atk-handoff{margin-top:10px;padding:9px 11px;border:1px solid var(--accent);border-radius:var(--r);background:#43c6f512;font-size:12.5px;line-height:1.55}.atk-handoff-head{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}.atk-handoff-line b{font-family:var(--font-mono);font-size:14px;color:var(--warn)}.ping-edge{position:absolute;z-index:7;transform:translate(-50%,-50%);display:flex;align-items:center;gap:6px;padding:4px 10px;border:2px solid var(--accent);border-radius:999px;background:#0a0e16e6;color:var(--text);font-weight:600;font-size:12.5px;white-space:nowrap;cursor:pointer;animation:ping-edge-pulse .9s ease-in-out infinite alternate}.ping-edge-arrow{display:inline-block;font-size:14px}@keyframes ping-edge-pulse{0%{box-shadow:0 0 #ffffff59}to{box-shadow:0 0 0 6px #fff0}}@media(prefers-reduced-motion:reduce){.ping-edge{animation:none}}.opponent-rolls{position:absolute;left:12px;bottom:calc(12px + var(--dice-mat-h, 0px));z-index:8;display:flex;flex-direction:column-reverse;gap:8px;max-width:min(420px,calc(100% - 24px));pointer-events:none}.opponent-roll{pointer-events:auto;background:#0a0e16f0;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:2px solid var(--accent);border-radius:var(--r);padding:8px 10px;box-shadow:0 6px 24px #00000073;display:flex;flex-direction:column;gap:6px}.opponent-roll-head,.opponent-roll-foot{display:flex;align-items:center;gap:6px;font-size:13px}.opponent-roll-foot{justify-content:space-between}.opponent-roll-close{margin-left:auto;padding:0 6px;background:none;border:none;color:var(--text-dim);font-size:16px;cursor:pointer}.player-dot{width:10px;height:10px;border-radius:50%;flex:none;background:var(--text-dim);box-shadow:0 0 0 1px #00000080}.opponent-roll-dice{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.opponent-roll-links{display:flex;gap:12px}button.linklike{background:none;border:none;padding:0;color:var(--accent);text-decoration:underline;cursor:pointer}.shortcut-row{gap:12px}.shortcut-row .shortcut-keys{flex:none;flex-wrap:wrap;max-width:55%}.shortcut-label{flex:1;text-align:left}.hotkey-chip{display:inline-flex;align-items:center;gap:2px;padding:2px 4px;background:none;border:1px solid transparent;border-radius:6px;cursor:pointer}.hotkey-chip:hover,.hotkey-chip:focus-visible{border-color:var(--border-strong)}.hotkey-chip.waiting{border-color:var(--accent);min-width:110px}.hotkey-chip.clash{border:1px dashed var(--warn)}.hotkey-clash-note{display:block;margin-top:2px;color:var(--warn);font-size:12px;font-weight:600}.hotkey-conflict-summary{margin:8px 0 0;padding:6px 10px;border:1px dashed var(--warn);border-radius:var(--r-sm);color:var(--warn);font-weight:600}.hotkey-profile-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px}.hotkey-sync{margin:6px 0 0;font-size:12.5px}.hotkey-sync-error{color:var(--warn);font-weight:600}.hotkey-table-wrap{overflow-x:auto}.hotkey-table{width:100%;border-collapse:collapse;font-size:13px}.hotkey-table thead th{position:sticky;top:0;z-index:1;background:var(--panel-2);text-align:left;padding:6px 8px;border-bottom:1px solid var(--border-strong)}.hotkey-table td{padding:5px 8px;border-bottom:1px solid var(--border-soft);vertical-align:top}.hotkey-table .hotkey-group th{text-align:left;padding:12px 8px 4px;color:var(--text-dim);font-size:11.5px;letter-spacing:.06em;text-transform:uppercase}.hotkey-table .hotkey-action{width:52%}.hotkey-table .hotkey-current,.hotkey-table .hotkey-next{white-space:nowrap}.hotkey-table .hotkey-current>div,.hotkey-next-cell{display:flex;align-items:center;gap:4px;min-height:26px}.hotkey-table tr.has-conflict td{background:#f5a6230f}.hotkey-chip{display:inline-flex;align-items:center;gap:2px;min-width:84px;padding:2px 6px;background:var(--panel-3);border:1px solid var(--border);border-radius:6px;cursor:pointer}.hotkey-chip.changed{border-color:var(--accent);border-width:2px}.hotkey-undo{padding:0 6px;background:none;border:none;color:var(--text-dim);cursor:pointer}.hotkey-footer{position:sticky;bottom:-1px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-top:8px;padding:10px 0;background:var(--panel);border-top:1px solid var(--border-strong)}.hotkey-footer .hotkey-conflict-summary{margin:0}.account-hotkeys{display:flex;align-items:baseline;gap:10px}.dice-mat{position:absolute;left:0;right:0;margin-inline:auto;width:calc(100% - 24px);max-width:1180px;z-index:7;display:flex;flex-direction:column;max-height:min(66vh,calc(100% - 96px));background:radial-gradient(900px 200px at 50% -60px,rgba(67,198,245,.09),transparent 70%),linear-gradient(180deg,#0e1520,#0a1018);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-3),inset 0 1px #ffffff0a;-webkit-user-select:none;user-select:none;animation:dm-rise .2s ease-out}@keyframes dm-rise{0%{transform:translateY(16px);opacity:0}}.dice-mat .dm-top{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"tally go";align-items:center;gap:9px 16px;padding:10px 12px 10px 18px;border-bottom:1px solid var(--border-soft)}.dice-mat .dm-tally{grid-area:tally;display:flex;align-items:center;flex-wrap:wrap;gap:10px 18px}.dice-mat .dm-stat{display:flex;flex-direction:column;line-height:1;min-width:40px}.dice-mat .dm-stat b{font-family:var(--font-display);font-weight:800;font-size:30px;letter-spacing:.01em;color:var(--text);font-variant-numeric:tabular-nums}.dice-mat .dm-stat b i{font-style:normal;font-size:20px;color:var(--text-faint);margin-right:3px}.dice-mat .dm-stat small{margin-top:4px;font-size:9.5px;letter-spacing:.15em;text-transform:uppercase;color:var(--text-faint)}.dice-mat .dm-bank{display:flex;align-items:center;gap:8px;padding:4px 5px 4px 11px;border:1px solid;border-radius:999px;animation:dm-pop .24s cubic-bezier(.2,.9,.3,1.3)}.dice-mat .dm-bank b{font-family:var(--font-display);font-weight:800;font-size:23px;line-height:1;font-variant-numeric:tabular-nums}.dice-mat .dm-bank span{display:flex;flex-direction:column;font-size:11.5px;font-weight:600;line-height:1.15}.dice-mat .dm-bank small{font-size:9.5px;font-weight:400;opacity:.75}.dice-mat .dm-bank button{width:22px;height:22px;padding:0;display:grid;place-items:center;border:none;border-radius:50%;background:transparent;color:inherit;opacity:.55;font-size:15px;line-height:1}.dice-mat .dm-bank button:hover{opacity:1;background:#ffffff14}.dice-mat .dm-bank.lethal{color:var(--warn);border-color:#f5a62373;background:#f5a62314}.dice-mat .dm-bank.sustained{color:var(--ok);border-color:#2ecb8273;background:#2ecb8214}@keyframes dm-pop{0%{transform:scale(.8);opacity:0}}.dice-mat .dm-go{grid-area:go;align-self:start;display:flex;align-items:center;gap:8px}.dice-mat .dm-roll{display:flex;align-items:center;gap:12px;height:42px;padding:0 7px 0 20px;border:none;border-radius:10px;background:linear-gradient(180deg,var(--accent),var(--accent-2));color:var(--accent-ink);font-family:var(--font-display);font-weight:800;font-size:19px;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 6px 18px #43c6f547,inset 0 1px #fff6}.dice-mat .dm-roll:hover{background:linear-gradient(180deg,var(--accent),var(--accent-2));filter:brightness(1.08)}.dice-mat .dm-roll:disabled{opacity:.35;box-shadow:none;filter:none}.dice-mat .dm-roll-n{display:flex;align-items:baseline;gap:2px;min-width:32px;height:30px;padding:0 9px;justify-content:center;align-items:center;border-radius:7px;background:#04141d33;font-size:17px;font-variant-numeric:tabular-nums}.dice-mat .dm-roll-n em{font-style:normal;font-size:13px;opacity:.75}.dice-mat .dm-roll.second{background:transparent;color:var(--accent);box-shadow:inset 0 0 0 1.5px #43c6f58c}.dice-mat .dm-roll.second:hover{background:#43c6f51a;filter:none}.dice-mat .dm-roll.second .dm-roll-n{background:#43c6f524}.dice-mat .dm-views{display:flex;gap:2px;margin-right:6px;padding:3px;border:1px solid var(--border);border-radius:10px;background:#0000002e}.dice-mat .dm-views button{height:30px;padding:0 12px;border:none;border-radius:7px;background:transparent;color:var(--text-dim);font-size:12.5px;font-weight:600}.dice-mat .dm-views button:hover{background:var(--panel-3);color:var(--text)}.dice-mat .dm-views button.on{background:var(--panel-3);color:var(--text);box-shadow:inset 0 0 0 1px var(--border-strong)}.dice-mat .dm-tuck{width:36px;height:36px;padding:0;display:grid;place-items:center;border:1px solid var(--border);border-radius:9px;background:transparent;color:var(--text-dim)}.dice-mat .dm-tuck:hover{background:var(--panel-3);color:var(--text)}.dice-mat .dm-tuck svg{width:18px;height:18px}.dice-mat .dm-lanes{position:relative;flex:1;min-height:0;overflow-y:auto;padding:7px 9px}.dice-mat .dm-lane{display:grid;grid-template-columns:78px 66px 1fr;align-items:center;min-height:42px;padding:4px 6px;border-radius:10px;outline:1px dashed transparent;outline-offset:-1px;transition:background .12s ease,box-shadow .12s ease,outline-color .12s ease}.dice-mat .dm-lane+.dm-lane{margin-top:2px}.dice-mat .dm-lane:nth-child(odd){background:#ffffff06}.dice-mat .lane-head{display:flex;align-items:center;gap:11px}.dice-mat .lane-face{width:24px;height:24px;display:grid;place-items:center;border:1.5px solid var(--border-strong);border-radius:6px;color:var(--text-dim)}.dice-mat .lane-face .die-pips{width:16px;height:16px;gap:1px}.dice-mat .lane-face .die-pips .pip.on{background:currentColor}.dice-mat .lane-face-num{font-family:var(--font-mono);font-size:11px;font-weight:700}.dice-mat .lane-n{min-width:26px;font-family:var(--font-display);font-weight:800;font-size:27px;line-height:1;color:var(--text);font-variant-numeric:tabular-nums}.dice-mat .dm-lane.empty .lane-head{opacity:.35}.dice-mat .dm-lane.crit .lane-face{color:#f5c451;border-color:#f5c4518c}.dice-mat .lane-tools{display:flex;gap:4px}.dice-mat .lane-btn{width:29px;height:29px;padding:0;display:grid;place-items:center;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-dim)}.dice-mat .lane-btn svg{width:17px;height:17px}.dice-mat .lane-btn.idle{opacity:.4}.dice-mat .lane-btn.remove:hover,.dice-mat .lane-btn.remove:focus-visible{opacity:1;color:var(--danger);border-color:#f0525f80;background:#f0525f1a}.dice-mat .lane-btn.reroll:hover,.dice-mat .lane-btn.reroll:focus-visible{opacity:1;color:var(--accent);border-color:#43c6f580;background:#43c6f51a}.dice-mat .dm-lane.is-target.remove{background:#f0525f1a;box-shadow:inset 0 0 0 1px #f0525f80}.dice-mat .dm-lane.is-target.reroll{background:#43c6f51a;box-shadow:inset 0 0 0 1px #43c6f580}.dice-mat .dm-lane.is-reach.remove{outline-color:#f0525f66}.dice-mat .dm-lane.is-reach.reroll{outline-color:#43c6f566}.dice-mat .dm-lane.is-reach.strong.remove{background:#f0525f1a;outline-style:solid;outline-color:#f0525f80}.dice-mat .dm-lane.is-reach.strong.reroll{background:#43c6f51a;outline-style:solid;outline-color:#43c6f580}.dice-mat .lane-dice{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:34px;padding-left:6px}.mdie{position:relative;flex:none;width:34px;height:34px;padding:0;display:grid;place-items:center;border:none;border-radius:8px;color:var(--pip);background:var(--die);background:radial-gradient(120% 95% at 28% 18%,color-mix(in srgb,var(--die) 55%,#fff) 0%,var(--die) 50%,color-mix(in srgb,var(--die) 62%,#000) 100%);box-shadow:inset 0 1px #ffffff61,inset 0 -2px 3px #00000052,0 2px 6px #00000080;cursor:pointer;animation:die-land .46s cubic-bezier(.2,.9,.25,1.15) backwards;animation-delay:calc(min(var(--i, 0),20)*17ms);transition:transform .1s ease,filter .1s ease}.mdie .die-pips{width:23px;height:23px;gap:1.5px}.mdie .die-pips .pip.on{background:var(--pip);box-shadow:inset 0 1px 1px #00000059}.mdie-num{font-family:var(--font-display);font-weight:800;font-size:17px}.mdie.d3{background:radial-gradient(120% 95% at 28% 18%,#fffdf7,#efe7d5 52%,#c9bea4);box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--die) 75%,transparent),inset 0 -2px 3px #0000002e,0 2px 6px #00000080}.mdie.d3 .die-pips .pip.on{background:var(--die);box-shadow:none}.mdie.static{cursor:default;animation:none}.mdie.sm{width:24px;height:24px;border-radius:6px}.mdie.sm .die-pips{width:16px;height:16px;gap:1px}.mdie.dim{opacity:.35;filter:saturate(.4)}.opponent-roll .mdie.static{animation:die-land .46s cubic-bezier(.2,.9,.25,1.15) backwards;animation-delay:calc(min(var(--i, 0),20)*17ms)}.dice-mat .mdie:hover{background:radial-gradient(120% 95% at 28% 18%,color-mix(in srgb,var(--die) 55%,#fff) 0%,var(--die) 50%,color-mix(in srgb,var(--die) 62%,#000) 100%);transform:translateY(-2px);filter:brightness(1.12)}.dice-mat .mdie.d3:hover{background:radial-gradient(120% 95% at 28% 18%,#fffdf7,#efe7d5 52%,#c9bea4)}.dice-mat .mdie.paid{box-shadow:0 0 0 2px var(--ok),inset 0 1px #ffffff61,inset 0 -2px 3px #00000052,0 2px 6px #00000080}@keyframes die-land{0%{opacity:0;transform:translate(-12px,-18px) rotate(-160deg) scale(.5)}55%{opacity:1;transform:translate(1px,2px) rotate(14deg) scale(1.08)}78%{transform:translateY(-1px) rotate(-5deg) scale(.97)}to{opacity:1;transform:none}}.dice-mat .dm-empty{position:absolute;top:0;right:0;bottom:0;left:150px;display:grid;place-items:center;margin:0;padding:0 24px;text-align:center;font-size:13px;color:var(--text-faint);pointer-events:none}.dice-mat .dm-body{flex:0 1 auto;height:min(348px,calc(66vh - 118px),calc(100vh - 310px));min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 284px;grid-template-rows:minmax(0,1fr)}.dice-mat .dm-body .dm-lane{min-height:51px}.dice-mat .dm-stage{display:flex;flex-direction:column;gap:10px;min-height:0;padding:12px 14px;border-left:1px solid var(--border-soft);background:#ffffff05}.dice-mat .dm-load{display:flex;flex-direction:column;gap:6px}.dice-mat .dm-load-row{display:flex;align-items:center;gap:3px}.dice-mat .dm-kind{width:22px;margin-right:4px;font:600 11px/1 var(--font-mono);letter-spacing:.04em;color:var(--text-dim)}.dice-mat .dm-kind.d3{color:#e9dfc8}.dice-mat .dm-chip{min-width:30px;height:30px;padding:0 5px;border:1px solid var(--border);border-radius:7px;background:var(--panel-3);color:var(--text);font-family:var(--font-display);font-weight:800;font-size:14.5px;font-variant-numeric:tabular-nums}.dice-mat .dm-chip:hover{border-color:var(--accent);color:var(--accent);background:#43c6f51a}.dice-mat .dm-chip.d3:hover{border-color:#e9dfc8;color:#f7f0e1;background:#e9dfc81a}.dice-mat .dm-tray{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;align-items:center;gap:10px;padding:4px 0}.dice-mat .dm-tray-head{display:flex;align-items:baseline;gap:5px;padding:0 2px}.dice-mat .dm-tray-head b{font-family:var(--font-display);font-weight:800;font-size:21px;line-height:1;color:var(--text);font-variant-numeric:tabular-nums}.dice-mat .dm-tray-head small{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-faint)}.dice-mat .dm-tray-kinds{margin-left:auto;font-family:var(--font-mono);font-size:11px;color:var(--text-dim)}.dice-mat .dm-tray-block{display:grid;grid-template-columns:repeat(var(--tray-cols, 5),var(--tray-die, 26px));gap:var(--tray-gap, 5px)}.dice-mat .mdie.staged{width:var(--tray-die, 26px);height:var(--tray-die, 26px);border-radius:max(3px,calc(var(--tray-die, 26px) * .22));animation:dm-pop .18s cubic-bezier(.2,.9,.3,1.3)}.dice-mat .mdie.staged .die-pips{width:calc(var(--tray-die, 26px) * .7);height:calc(var(--tray-die, 26px) * .7);gap:1px}.dice-mat .mdie.staged:hover{transform:none;filter:brightness(.85);outline:2px solid rgba(240,82,95,.7);outline-offset:1px}.dice-mat .dm-tray-empty{max-width:220px;margin:auto 0;text-align:center;font-size:12.5px;line-height:1.5;color:var(--text-faint)}.dice-mat .dm-stage-foot{display:flex;flex-direction:column;gap:8px}.dice-mat .dm-stage-note{margin:0;font-size:11.5px;line-height:1.4;color:var(--text-dim)}.dice-mat .dm-stage-note .linklike{font:inherit}.dice-mat .dm-stage-go{display:flex;gap:6px}.dice-mat .dm-throw{flex:1;height:38px;padding:0 12px;border:none;border-radius:9px;background:linear-gradient(180deg,var(--accent),var(--accent-2));color:var(--accent-ink);font-family:var(--font-display);font-weight:800;font-size:17px;letter-spacing:.05em;text-transform:uppercase;box-shadow:0 6px 18px #43c6f547,inset 0 1px #fff6}.dice-mat .dm-throw:hover{background:linear-gradient(180deg,var(--accent),var(--accent-2));filter:brightness(1.08)}.dice-mat .dm-throw b{font-weight:800}.dice-mat .dm-viewport{flex:0 1 auto;height:min(400px,calc(66vh - 66px),calc(100vh - 258px));min-height:0;overflow-y:auto}.dice-mat .dm-view{display:flex;flex-direction:column;gap:10px;padding:12px 18px 14px}.dice-mat .dm-view-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 12px}.dice-mat .dm-view-count{font-size:12px;color:var(--text-faint)}.dice-mat .dm-who{display:flex;flex-wrap:wrap;gap:4px}.dice-mat .dm-who button{display:inline-flex;align-items:center;gap:7px;height:28px;padding:0 11px;border:1px solid var(--border);border-radius:999px;background:transparent;color:var(--text-dim);font-size:12px}.dice-mat .dm-who button:hover{background:var(--panel-3);color:var(--text)}.dice-mat .dm-who button.on{border-color:#43c6f58c;background:#43c6f51f;color:var(--text)}.dice-mat .dm-view-empty{margin:18px 0;text-align:center;font-size:13px;color:var(--text-faint)}.dice-mat .dm-hist{display:flex;flex-direction:column;margin:0;padding:0;list-style:none}.dice-mat .dm-hist-row{display:flex;flex-direction:column;gap:6px;padding:9px 2px;border-top:1px solid var(--border-soft)}.dice-mat .dm-hist-row:first-child{border-top:none}.dice-mat .dm-hist-meta{display:flex;align-items:center;flex-wrap:wrap;gap:8px;font-size:12.5px}.dice-mat .dm-hist-meta b{font-weight:600;color:var(--text)}.dice-mat .dm-hist-label{color:var(--text-dim)}.dice-mat .dm-hist-when{margin-left:auto;font-size:11.5px;color:var(--text-faint)}.dice-mat .dm-hist-dice{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.dice-mat .dm-hist-more,.dice-mat .dm-hist-sum{font-size:11.5px;color:var(--text-faint)}.dice-mat .dm-hist-sum{margin-left:8px}.dice-mat .dm-more{align-self:center}.dice-mat .dm-stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px}.dice-mat .dm-stat-card{display:flex;flex-direction:column;gap:12px;padding:14px 16px 12px;border:1px solid var(--border-soft);border-radius:12px;background:#ffffff05}.dice-mat .dm-stat-head{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.dice-mat .dm-stat-head b{font-size:14px;font-weight:600}.dice-mat .dm-stat-sub{margin-left:auto;font-size:12px;color:var(--text-dim)}.dice-mat .dm-stat-figs{display:flex;gap:28px}.dice-mat .dm-stat-figs div{display:flex;flex-direction:column;gap:4px}.dice-mat .dm-stat-figs b{font-family:var(--font-ui);font-size:24px;font-weight:600;line-height:1;color:var(--text)}.dice-mat .dm-stat-figs small{font-size:11px;color:var(--text-dim)}.dice-mat .dm-stat-figs small span{color:var(--text-faint)}.dice-mat .dm-bars{display:grid;grid-template-columns:repeat(6,1fr)}.dice-mat .dm-bar-col{display:flex;flex-direction:column;align-items:center;gap:3px;padding-bottom:2px;border-radius:6px;outline:none}.dice-mat .dm-bar-col:focus-visible{box-shadow:0 0 0 2px var(--accent)}.dice-mat .dm-bar-col:hover .dm-bar,.dice-mat .dm-bar-col:focus-visible .dm-bar{filter:brightness(1.25)}.dice-mat .dm-bar-slot{position:relative;width:100%;height:110px;display:flex;align-items:flex-end;justify-content:center;border-bottom:1px solid var(--border)}.dice-mat .dm-bar{width:22px;min-height:2px;border-radius:4px 4px 0 0}.dice-mat .dm-fair{position:absolute;left:0;right:0;z-index:1;border-top:1px solid rgba(244,241,234,.45);pointer-events:none}.dice-mat .dm-fair-key{display:inline-block;width:16px;margin-right:8px;vertical-align:middle;border-top:1px solid rgba(244,241,234,.45)}.dice-mat .dm-bar-face{width:18px;height:18px;margin-top:5px;display:grid;place-items:center;border:1.5px solid var(--border-strong);border-radius:5px;color:var(--text-dim)}.dice-mat .dm-bar-face .die-pips{width:12px;height:12px;gap:1px}.dice-mat .dm-bar-face .die-pips .pip.on{background:currentColor}.dice-mat .dm-bar-n{font-size:12.5px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}.dice-mat .dm-bar-pct{font-size:11px;color:var(--text-dim);font-variant-numeric:tabular-nums}.dice-mat .dm-stats-note{margin:2px 0 0;font-size:11.5px;color:var(--text-dim)}.dice-mat .dm-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px 18px;padding:9px 12px 10px 18px;border-top:1px solid var(--border-soft)}.dice-mat .dm-crits,.dice-mat .dm-house{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.dice-mat .dm-crit-n{margin-right:6px;font-size:12px;color:var(--text-dim)}.dice-mat .dm-crit-n b{font-family:var(--font-display);font-size:19px;color:var(--text-dim);font-variant-numeric:tabular-nums}.dice-mat .dm-crit-n.on b{color:#f5c451}.dice-mat .dm-crit{height:31px;padding:0 13px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text-dim);font-size:12.5px;font-weight:600}.dice-mat .dm-crit.lethal:not(:disabled):hover{color:var(--warn);border-color:#f5a62399;background:#f5a6231a}.dice-mat .dm-crit.sustained:not(:disabled):hover{color:var(--ok);border-color:#2ecb8299;background:#2ecb821a}.dice-mat .dm-crit.both:not(:disabled):hover{color:#f5c451;border-color:#f5c45199;background:#f5c4511a}.dice-mat .dm-crit:disabled{opacity:.38}.dice-mat .dm-sus{display:inline-flex}.dice-mat .dm-sus .dm-crit{border-radius:8px 0 0 8px}.dice-mat .dm-x-cycle{height:31px;min-width:30px;margin-left:-1px;padding:0 9px;border:1px solid var(--border);border-radius:0 8px 8px 0;background:var(--panel-3);color:var(--ok);font-family:var(--font-display);font-weight:800;font-size:15px}.dice-mat .dm-x-cycle:hover{background:#2ecb821f;border-color:#2ecb8280}.dice-mat .dm-reach{display:flex;align-items:center;margin-right:6px;font-size:11.5px;color:var(--text-dim)}.dice-mat .dm-reach>span{margin-right:8px}.dice-mat .dm-reach button{position:relative;height:27px;padding:0 11px;border:1px solid var(--border);border-radius:0;background:transparent;color:var(--text-dim);font-size:11.5px}.dice-mat .dm-reach button:first-of-type{border-radius:7px 0 0 7px}.dice-mat .dm-reach button+button{margin-left:-1px;border-radius:0 7px 7px 0}.dice-mat .dm-reach button:hover{background:var(--panel-3);color:var(--text)}.dice-mat .dm-reach button.on{z-index:1;border-color:#43c6f58c;background:#43c6f521;color:var(--accent)}.dice-mat .dm-quiet{display:inline-flex;align-items:center;gap:6px;height:31px;padding:0 11px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-dim);font-size:12.5px}.dice-mat .dm-quiet svg{width:15px;height:15px}.dice-mat .dm-quiet:not(:disabled):hover{border-color:var(--border);background:var(--panel-3);color:var(--text)}.dice-mat .dm-quiet:disabled{opacity:.32}.dice-mat button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.dice-mat-toggle{display:inline-flex;align-items:center;gap:7px;font-weight:600}.dice-mat-toggle.on{border-color:#43c6f599;background:#43c6f524;color:var(--accent)}.dice-mat-toggle .dmt-icon svg{display:block;width:15px;height:15px}.dice-mat-toggle .dmt-n{min-width:18px;height:18px;padding:0 5px;display:grid;place-items:center;border-radius:999px;background:var(--accent);color:var(--accent-ink);font-size:10.5px;font-weight:700;font-variant-numeric:tabular-nums}.dice-mat-toggle .dmt-n.lethal{background:var(--warn)}@media(max-width:760px){.dice-mat .dm-top{grid-template-columns:minmax(0,1fr);grid-template-areas:"tally" "go"}.dice-mat .dm-go{flex-wrap:wrap}.dice-mat .dm-body{display:flex;flex-direction:column;height:auto;max-height:calc(66vh - 150px);overflow-y:auto}.dice-mat .dm-lanes{flex:none;overflow:visible}.dice-mat .dm-lane{grid-template-columns:60px 64px 1fr}.dice-mat .dm-stage{border-left:none;border-top:1px solid var(--border-soft)}.dice-mat .dm-viewport{height:auto;max-height:calc(66vh - 100px)}}@media(prefers-reduced-motion:reduce){.dice-mat,.dice-mat .dm-bank,.mdie,.opponent-roll .mdie.static,.dice-mat .mdie.staged{animation:none}}:root{--bg: #10151c;--panel: #10161f;--panel-2: #161d29;--panel-3: #1e2836;--border: #263143;--border-soft: #1c2634;--border-strong: #33415a;--text: #f4f1ea;--text-dim: #93a0b4;--text-faint: #5e6c81;--accent: #43c6f5;--accent-2: #12a5e0;--accent-ink: #04141d;--warn: #f5a623;--danger: #f0525f;--ok: #2ecb82;--r-sm: 5px;--r: 8px;--r-lg: 12px;--shadow-1: 0 1px 2px rgba(0, 0, 0, .4);--shadow-2: 0 8px 24px rgba(0, 0, 0, .45);--shadow-3: 0 24px 60px rgba(0, 0, 0, .55);--glow: 0 0 0 1px rgba(67, 198, 245, .35), 0 0 18px rgba(67, 198, 245, .18);--font-ui: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Barlow Condensed", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;color:var(--text);background:var(--bg);font-family:var(--font-ui);font-synthesis:none;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow:hidden}body{background:radial-gradient(1200px 600px at 15% -10%,rgba(67,198,245,.06),transparent 60%),radial-gradient(1000px 700px at 100% 0%,rgba(120,90,255,.05),transparent 55%),var(--bg)}::selection{background:#43c6f547}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px;border:2px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:#47597a;background-clip:content-box}button{font:inherit;font-weight:500;color:var(--text);background:linear-gradient(180deg,var(--panel-3),var(--panel-2));border:1px solid var(--border);border-radius:var(--r-sm);padding:6px 11px;cursor:pointer;transition:background .14s ease,border-color .14s ease,transform .06s ease,box-shadow .14s ease}button:hover{background:linear-gradient(180deg,#26344a,var(--panel-3));border-color:var(--border-strong)}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:none;box-shadow:var(--glow);border-color:var(--accent)}button.active{background:linear-gradient(180deg,var(--accent),var(--accent-2));border-color:var(--accent);color:var(--accent-ink);font-weight:600;box-shadow:0 0 14px #43c6f547}.button-like{display:inline-flex;align-items:center;font:inherit;font-weight:500;color:var(--text);background:linear-gradient(180deg,var(--panel-3),var(--panel-2));border:1px solid var(--border);border-radius:var(--r-sm);padding:6px 11px;cursor:pointer;transition:background .14s ease,border-color .14s ease}.button-like:hover{background:linear-gradient(180deg,#26344a,var(--panel-3));border-color:var(--border-strong)}input,select,textarea{font:inherit;color:var(--text);background:#04080ea6;border:1px solid var(--border);border-radius:var(--r-sm);padding:6px 9px;width:100%;transition:border-color .14s ease,box-shadow .14s ease}input::placeholder,textarea::placeholder{color:var(--text-faint)}textarea{resize:vertical}label{font-size:11px;letter-spacing:.03em;color:var(--text-dim);display:block;margin-bottom:3px}h2,h3,h4{margin:0 0 8px;font-weight:600;letter-spacing:-.01em}.field{margin-bottom:10px}.row{display:flex;gap:8px;align-items:center}.muted{color:var(--text-dim);font-size:12px}
