:root{color:#f5f1ff;font-synthesis:none;text-rendering:optimizelegibility;--ink:#f5f1ff;--muted:#aaa2ba;--panel:#1b1727db;--line:#ffffff1a;--violet:#9b7cff;--coral:#ff8b72;--lime:#b8f46e;background:#0d0b14;font-family:Manrope,system-ui,sans-serif}*{box-sizing:border-box}html{background:#0d0b14;min-width:320px;min-height:100%}body{background:radial-gradient(circle at 82% 10%,#9b7cff2b,#0000 28rem),radial-gradient(circle at 8% 70%,#ff8b7214,#0000 24rem),#0d0b14;min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible{outline:3px solid var(--lime);outline-offset:3px}.main-navigation{border:1px solid var(--line);background:#ffffff0a;border-radius:999px;gap:6px;padding:5px;display:flex}.main-navigation button{color:var(--muted);background:0 0;border:0;border-radius:999px;padding:8px 14px}.main-navigation button[aria-current=page]{color:#171221;background:var(--lime);font-weight:700}.characters-workspace{padding:54px 0 64px}.characters-intro,.character-detail-header,.actions-title-row,.saved-action-heading{justify-content:space-between;align-items:flex-start;gap:24px;display:flex}.characters-intro{align-items:end;margin-bottom:28px}.characters-intro h1{letter-spacing:-.07em;margin:4px 0 8px;font-size:clamp(2.6rem,7vw,5rem)}.characters-intro p:last-child{max-width:660px;color:var(--muted);margin:0}.storage-badge,.status-pill{color:var(--lime);letter-spacing:.08em;text-transform:uppercase;border:1px solid #b8f46e47;border-radius:999px;padding:7px 11px;font-family:DM Mono,monospace;font-size:.68rem}.workspace-error{color:#ffd6cf;background:#ff8b721f;border:1px solid #ff8b7259;border-radius:12px;justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px;padding:14px 18px;display:flex}.workspace-error button{color:inherit;background:0 0;border:0;font-size:1.4rem}.characters-layout{background:var(--panel);border:1px solid var(--line);border-radius:22px;grid-template-columns:minmax(260px,340px) minmax(0,1fr);min-height:650px;display:grid;overflow:hidden}.character-list-panel{border-right:1px solid var(--line);background:#0a081061;padding:22px}.create-character,.create-action-form,.create-variable-form,.inline-form{gap:13px;display:grid}.create-character h2{margin:0 0 2px;font-size:1.05rem}.create-character label,.create-action-form label,.create-variable-form label,.inline-form label,.library-filters label{color:#d5cedf;gap:6px;font-size:.76rem;font-weight:700;display:grid}.create-character input,.create-action-form input,.create-variable-form input,.inline-form input,.library-filters input,.library-filters select{width:100%;min-width:0;color:var(--ink);border:1px solid var(--line);background:#ffffff0b;border-radius:9px;padding:10px 11px}.primary,.create-character button,.create-action-form button,.create-variable-form button{color:#171221;background:var(--lime);border:0;border-radius:9px;padding:10px 14px;font-weight:800}.primary.compact{padding:9px 16px}.library-filters{border-top:1px solid var(--line);border-bottom:1px solid var(--line);gap:12px;margin:22px -22px 14px;padding:18px 22px;display:grid}.search-row{grid-template-columns:1fr auto;gap:7px;display:grid}.search-row button,.load-more,.lifecycle-actions button,.action-controls button,.inline-form button,.mobile-back,.delete-confirmation button{color:#ded7e8;border:1px solid var(--line);background:#ffffff0f;border-radius:8px;padding:9px 11px}.lifecycle-actions .primary{color:#171221;background:var(--lime);border-color:var(--lime);font-weight:800}.filter-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.character-list{gap:7px;max-height:350px;display:grid;overflow:auto}.character-list-item{width:100%;color:var(--ink);text-align:left;background:0 0;border:1px solid #0000;border-radius:10px;gap:3px;padding:13px;display:grid}.character-list-item span{color:var(--muted);font-size:.75rem}.character-list-item:hover,.character-list-item[aria-current=true]{background:#9b7cff1a;border-color:#9b7cff47}.list-message,.detail-placeholder,.archived-note{color:var(--muted);line-height:1.6}.load-more{width:100%;margin-top:12px}.character-detail-panel{min-width:0;padding:30px}.detail-placeholder{text-align:center;place-content:center;min-height:480px;display:grid}.detail-placeholder span{color:var(--violet);font-size:3rem}.detail-placeholder h2{color:var(--ink);margin:12px 0 0}.character-detail-header h2{letter-spacing:-.055em;margin:12px 0 3px;font-size:clamp(2rem,5vw,3.4rem)}.character-detail-header p{color:var(--muted);margin:0}.status-pill.archived{color:var(--coral);border-color:#ff8b724d}.lifecycle-actions,.action-controls,.delete-confirmation>div{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.danger,.delete-confirmation .danger{color:#ffd5ce;background:#ff8b7217;border-color:#ff8b724d}.delete-confirmation{background:#ff8b7214;border:1px solid #ff8b7247;border-radius:12px;margin:22px 0;padding:18px}.delete-confirmation h3,.delete-confirmation p{margin:0 0 8px}.edit-character{border:1px solid var(--line);border-radius:10px;margin-top:24px;padding:13px 15px}summary{cursor:pointer;color:#d9d2e3}.inline-form{grid-template-columns:1fr 1fr auto;align-items:end;margin-top:14px}.actions-section{border-top:1px solid var(--line);margin-top:32px;padding-top:28px}.actions-title-row h3{margin:3px 0 0;font-size:1.6rem}.actions-title-row>span{color:var(--muted);font-family:DM Mono,monospace;font-size:.75rem}.create-action-form,.create-variable-form{background:#b8f46e0a;border:1px solid #b8f46e24;border-radius:12px;grid-template-columns:minmax(130px,.8fr) minmax(180px,1.4fr) auto;align-items:end;margin:20px 0;padding:16px}.saved-actions-list{gap:12px;display:grid}.saved-action{border:1px solid var(--line);background:#ffffff08;border-radius:13px;padding:17px}.saved-action h4{margin:0 0 5px;font-size:1.05rem}.action-expression{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.action-expression code{color:#cbbdff}.action-expression small{color:var(--muted)}.action-controls{margin-top:13px}.action-controls details{flex:100%;margin-top:4px}.action-controls button:disabled,.primary:disabled{cursor:not-allowed;opacity:.42}.action-controls .danger-text{color:var(--coral);background:0 0;border-color:#0000}.mobile-back{display:none}.app-shell{width:min(1180px,100% - 40px);min-height:100vh;margin:0 auto}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:92px;display:flex}.brand{color:var(--ink);align-items:center;gap:12px;text-decoration:none;display:inline-flex}.brand-mark{color:#0d0b14;background:var(--lime);clip-path:polygon(50% 0,95% 25%,95% 75%,50% 100%,5% 75%,5% 25%);place-items:center;width:42px;height:42px;font-family:DM Mono,monospace;font-weight:500;display:grid}.brand strong,.brand small{display:block}.brand strong{letter-spacing:-.02em;font-size:1rem}.brand small{color:var(--muted);letter-spacing:.12em;text-transform:uppercase;margin-top:1px;font-size:.68rem}.engine-badge{color:#cdc4da;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:7px 11px;font-family:DM Mono,monospace;font-size:.68rem}.eyebrow,.section-kicker{color:var(--lime);letter-spacing:.14em;text-transform:uppercase;margin:0 0 16px;font-family:DM Mono,monospace;font-size:.72rem;font-weight:500}.hero-orbit{isolation:isolate;place-self:center end;place-items:center;width:280px;height:280px;display:grid;position:relative}.orbit{pointer-events:none;z-index:-1;border:1px solid #9b7cff61;border-radius:50%;position:absolute;inset:24px}.orbit:after{content:"";background:var(--lime);width:8px;height:8px;box-shadow:0 0 18px var(--lime);border-radius:50%;position:absolute;top:17px;right:39px}.orbit-two{inset:55px 10px;transform:rotate(63deg)}.hero-d20{cursor:grab;filter:drop-shadow(0 24px 26px #633ec67a);touch-action:none;-webkit-user-select:none;user-select:none;width:210px;height:210px}.hero-d20.is-dragging{cursor:grabbing}.orbit-hint{color:#8e83a3;letter-spacing:.1em;text-transform:uppercase;opacity:0;white-space:nowrap;padding:5px 8px;font-family:DM Mono,monospace;font-size:.58rem;transition:opacity .18s,transform .18s;position:absolute;bottom:12px;left:50%;transform:translate(-50%)translateY(4px)}.hero-orbit:hover .orbit-hint,.hero-orbit:focus-within .orbit-hint{opacity:1;transform:translate(-50%)translateY(0)}.roller-card,.play-actions{border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:24px;box-shadow:0 24px 80px #0000003d}.roller-card{padding:clamp(24px,5vw,46px)}.play-area{gap:22px;padding:40px 0 70px;display:grid}.play-header{justify-content:space-between;align-items:center;gap:24px;display:flex}.play-identity .eyebrow{margin-bottom:10px}.play-identity h1{letter-spacing:-.05em;margin:0;font-size:clamp(2.2rem,5vw,3.4rem);line-height:1}.play-entity-type{color:var(--muted);margin:10px 0 0}.play-switch,.link-button{color:var(--violet);background:0 0;border:0;padding:0;font-weight:700}.play-switch{margin-top:14px}.play-switch:hover,.link-button:hover{text-decoration:underline}.play-decoration .hero-orbit{width:150px;height:150px}.play-decoration .hero-d20{width:112px;height:112px}.play-decoration .orbit{inset:12px}.play-decoration .orbit-two{inset:30px 6px}.play-decoration .orbit:after{top:8px;right:20px}.play-decoration .orbit-hint{display:none}.character-picker{background:var(--panel);border:1px solid var(--line);border-radius:18px;gap:9px;padding:20px;display:grid}.character-picker label{color:#d9d2e5;letter-spacing:.05em;text-transform:uppercase;font-size:.78rem;font-weight:700}.character-picker input{width:100%;min-height:44px;color:var(--ink);background:#100e18;border:1px solid #3a334a;border-radius:11px;padding:0 14px}.picker-list{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:8px;max-height:260px;margin:6px 0 0;padding:0;list-style:none;display:grid;overflow-y:auto}.picker-list .list-message{grid-column:1/-1}.picker-option{width:100%;color:var(--ink);text-align:left;border:1px solid var(--line);background:#ffffff08;border-radius:11px;gap:3px;padding:11px 13px;display:grid}.picker-option span{color:var(--muted);font-size:.78rem}.picker-option:hover,.picker-option[aria-current=true]{border-color:var(--violet);background:#9b7cff1f}.play-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:22px;display:grid}.play-grid .result-region{margin-top:0}.play-actions{padding:26px}.play-actions h2{font-size:1.35rem}.action-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:18px 0 0;padding:0;list-style:none;display:grid}.action-button{width:100%;min-height:74px;color:var(--ink);text-align:left;background:#9b7cff14;border:1px solid #9b7cff4d;border-radius:13px;align-content:center;gap:6px;padding:12px 14px;transition:background .15s,border-color .15s,transform .15s;display:grid}.action-button:hover{border-color:var(--violet);background:#9b7cff29;transform:translateY(-1px)}.action-button code{color:#c9baf5;overflow-wrap:anywhere;font-family:DM Mono,monospace;font-size:.78rem}.result-source{color:#d9d2e5;margin:0 0 14px;font-weight:700}.roller-heading{justify-content:space-between;align-items:flex-start;gap:20px;display:flex}.roller-heading h2,.play-actions h2{letter-spacing:-.04em;margin:0;font-size:1.75rem}.roller-heading p{color:var(--muted);margin:8px 0 0;font-size:.92rem;line-height:1.6}.roll-form{margin-top:34px}.roll-form label{color:#d9d2e5;letter-spacing:.05em;text-transform:uppercase;margin-bottom:9px;font-size:.78rem;font-weight:700;display:block}.formula-row{grid-template-columns:minmax(0,1fr) auto;gap:10px;display:grid}.formula-row input{width:100%;min-height:62px;color:var(--ink);background:#100e18;border:1px solid #3a334a;border-radius:13px;padding:0 20px;font-family:DM Mono,monospace;font-size:1.15rem}.formula-row input:hover{border-color:#5e5373}.roll-button{color:#15101e;background:var(--lime);border:0;border-radius:13px;justify-content:center;align-items:center;gap:9px;min-width:126px;min-height:62px;font-weight:800;transition:transform .15s,box-shadow .15s;display:inline-flex}.roll-button:hover{transform:translateY(-2px);box-shadow:0 10px 30px #b8f46e33}.field-hint{color:#7f778e;margin:9px 0 0;font-size:.78rem}.quick-dice{flex-wrap:wrap;gap:8px;margin-top:24px;display:flex}.quick-dice button{color:#cfc6da;background:0 0;border:1px solid #3a334a;border-radius:10px;min-width:50px;padding:9px 12px;font-family:DM Mono,monospace;transition:color .15s,border-color .15s,background .15s}.quick-dice button:hover{color:var(--ink);border-color:var(--violet);background:#9b7cff1a}.result-region{min-height:190px;margin-top:30px}.empty-result,.error-panel,.result-panel{border-radius:17px;min-height:190px}.empty-result{color:#756d84;text-align:center;background:#0c0a127a;border:1px dashed #393243;place-content:center;display:grid}.empty-result p{margin:8px 0 0;font-size:.87rem}.empty-glyph{color:var(--violet);font-size:2.5rem}.error-panel{background:#ff8b7214;border:1px solid #ff8b7247;align-items:center;gap:16px;padding:25px;display:flex}.error-mark{color:#1a1111;background:var(--coral);border-radius:50%;flex:none;place-items:center;width:42px;height:42px;font-weight:800;display:grid}.error-panel strong{color:#ffc1b3}.error-panel p{color:#c3a39e;margin:5px 0 0;line-height:1.5}.result-panel{background:linear-gradient(125deg,#9b7cff24,#0000 60%),#12101a;border:1px solid #9b7cff47;padding:24px}.result-summary{justify-content:space-between;align-items:flex-start;display:flex}.result-label{color:#8e859e;letter-spacing:.12em;text-transform:uppercase;margin-bottom:4px;font-family:DM Mono,monospace;font-size:.68rem;display:block}.result-total{color:var(--lime);letter-spacing:-.07em;font-size:clamp(3.2rem,9vw,5rem);line-height:1;display:block}.result-summary code{color:#c9baf5;background:#9b7cff1a;border-radius:7px;padding:7px 10px;font-family:DM Mono,monospace}.roll-breakdown{margin-top:24px}.roll-list{flex-wrap:wrap;gap:8px;display:flex}.pool-result{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pool-result+.pool-result{border-left:1px solid var(--line);padding-left:12px}.pool-result code{color:#a99bc4;font-family:DM Mono,monospace;font-size:.72rem}.die-result,.modifier-result{border-radius:9px;place-items:center;min-width:40px;height:40px;font-family:DM Mono,monospace;display:grid}.die-result{color:#1b1425;background:#ded4f3;font-weight:600}.die-result.dropped{color:#8f849d;opacity:.72;background:#332b3e;text-decoration:line-through}.die-result.replaced{color:#9d8f8f;opacity:.7;background:#3b2b32;text-decoration:line-through}.die-result.explosion{box-shadow:inset 0 0 0 2px #e8aa65}.die-result.exploded{outline-offset:2px;outline:2px solid #e8aa65}.die-result.reroll{box-shadow:inset 0 0 0 2px #87c6bd}.modifier-result{color:#ffc5b8;background:#ff8b721f;border:1px solid #ff8b724d}.section-hint{color:var(--muted);margin:8px 0 0;font-size:.85rem}.section-hint code,.saved-variable-summary code,.stat-name,.roll-variables code{font-family:DM Mono,monospace}.section-hint code{color:#c9baf5}.saved-variables-list{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.saved-variable{border:1px solid var(--line);background:#ffffff08;border-radius:13px;gap:10px;padding:14px;display:grid}.saved-variable-summary{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.saved-variable-summary code{color:#c9baf5;overflow-wrap:anywhere;font-size:1rem}.saved-variable-summary strong{color:var(--lime);font-size:1.3rem}.stat-block{border:1px solid var(--line);background:var(--panel);border-radius:24px;padding:22px 26px}.stat-block h2{letter-spacing:-.04em;margin:0;font-size:1.35rem}.stat-list{flex-wrap:wrap;gap:10px;margin:16px 0 0;padding:0;list-style:none;display:flex}.stat-chip{background:#9b7cff14;border:1px solid #9b7cff4d;border-radius:13px;justify-items:center;gap:6px;padding:10px 10px 8px;display:grid}.stat-name{color:#c9baf5;letter-spacing:.06em;font-size:.78rem}.stat-controls{align-items:center;gap:4px;display:flex}.stat-controls button{width:30px;height:30px;color:var(--ink);border:1px solid var(--line);background:#ffffff0f;border-radius:8px}.stat-controls button:hover{border-color:var(--violet)}.stat-controls input{width:3.6rem;height:34px;color:var(--lime);text-align:center;appearance:textfield;background:#100e18;border:1px solid #3a334a;border-radius:8px;font-size:1.1rem;font-weight:800}.stat-controls input::-webkit-inner-spin-button{appearance:none;margin:0}.stat-controls input::-webkit-outer-spin-button{appearance:none;margin:0}.roll-variables{margin-top:20px}.roll-variables ul{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.roll-variables li{color:#d9d2e5;background:#9b7cff1a;border:1px solid #9b7cff42;border-radius:8px;padding:6px 10px;font-family:DM Mono,monospace;font-size:.82rem}.roll-variables code{color:#c9baf5}.login-page{place-items:center;min-height:100vh;padding:24px 16px;display:grid}.login-card{background:var(--panel);border:1px solid var(--line);border-radius:24px;gap:6px;width:min(420px,100%);padding:clamp(28px,6vw,44px);display:grid;box-shadow:0 24px 80px #0000003d}.login-card .brand-mark{margin-bottom:18px}.login-card .eyebrow{margin-bottom:6px}.login-card h1{letter-spacing:-.05em;margin:0;font-size:2.4rem}.login-lede{color:var(--muted);margin:4px 0 18px}.login-form{gap:14px;display:grid}.login-form label{color:#d9d2e5;letter-spacing:.05em;text-transform:uppercase;gap:7px;font-size:.78rem;font-weight:700;display:grid}.login-form input{width:100%;min-height:50px;color:var(--ink);letter-spacing:normal;text-transform:none;background:#100e18;border:1px solid #3a334a;border-radius:12px;padding:0 16px;font-size:1rem}.login-form .roll-button{width:100%;min-height:52px;margin-top:6px}.login-form .roll-button:disabled{cursor:not-allowed;opacity:.5;box-shadow:none;transform:none}.login-error{color:#ffc1b3;background:#ff8b7214;border:1px solid #ff8b7247;border-radius:10px;margin:0;padding:11px 13px;font-size:.88rem}.header-actions{align-items:center;gap:16px;display:flex}.account-menu{color:var(--muted);align-items:center;gap:10px;font-size:.88rem;display:flex}.account-name{color:var(--ink);font-weight:700}@media (width<=850px){.play-grid{grid-template-columns:1fr}.characters-layout{grid-template-columns:minmax(230px,290px) minmax(0,1fr)}.create-action-form,.create-variable-form,.inline-form{grid-template-columns:1fr}}@media (width<=560px){.app-shell{width:min(100% - 24px,1180px)}.site-header{min-height:76px}.brand small{display:none}.main-navigation{gap:2px}.main-navigation button{padding:7px 9px;font-size:.78rem}.header-actions{gap:8px}.account-name,.engine-badge,.play-decoration{display:none}.play-area{padding:28px 0 45px}.roller-card,.play-actions,.stat-block{border-radius:18px;padding:22px}.formula-row{grid-template-columns:1fr}.roll-button{width:100%}.quick-dice button{flex:52px}.characters-workspace{padding:36px 0 45px}.characters-intro{align-items:flex-start}.storage-badge{display:none}.characters-layout{min-height:560px;display:block}.character-list-panel{border-right:0}.characters-layout.has-selection .character-list-panel,.characters-layout:not(.has-selection) .character-detail-panel{display:none}.character-detail-panel{padding:20px}.mobile-back{margin-bottom:20px;display:inline-block}.character-detail-header,.saved-action-heading,.lifecycle-actions{flex-direction:column;align-items:stretch}.lifecycle-actions button{width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important}}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/dm-mono-regular.ttf)format("truetype")}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/dm-mono-medium.ttf)format("truetype")}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/manrope-regular.ttf)format("truetype")}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/manrope-semibold.ttf)format("truetype")}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/manrope-bold.ttf)format("truetype")}@font-face{font-family:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(/fonts/manrope-extrabold.ttf)format("truetype")}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}:root{--surface:#16121f;--raised:#211b2e;--field-border:#82758f;--tabletop-line:#2c2540;--font-ui:"Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"DM Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--radius:12px;--tabletop-bg:#0d0b14;--scrim:#06050acc}.tabletop-shell{padding-top:env(safe-area-inset-top,0px);background:var(--tabletop-bg);height:100dvh;color:var(--ink);font:15px/1.45 var(--font-ui);grid-template:56px minmax(0,1fr)/minmax(0,1fr);display:grid}.tabletop-shell *,.tabletop-dialog *{min-width:0}.tabletop-wrap{width:100%;max-width:760px;margin-inline:auto;padding-inline:16px}.tabletop-shell button,.tabletop-dialog button{border:1px solid var(--tabletop-line);background:var(--raised);min-height:44px;color:var(--ink);font:inherit;border-radius:10px;padding:8px 12px}.tabletop-shell button:disabled,.tabletop-dialog button:disabled{opacity:.5;cursor:default}.tabletop-shell input,.tabletop-dialog input,.tabletop-dialog select,.tabletop-dialog textarea{border:1px solid var(--field-border);width:100%;min-height:44px;color:var(--ink);background:var(--tabletop-bg);border-radius:8px;padding:9px 12px;font-size:16px}.tabletop-shell h1,.tabletop-shell h2,.tabletop-shell h3,.tabletop-dialog h2,.tabletop-dialog h3{overflow-wrap:anywhere}.tabletop-shell h2{margin:0;font-size:24px}.tabletop-shell h3{margin:20px 0 10px;font-size:15px}.tabletop-shell small,.tabletop-dialog small,.tabletop-shell .field-hint{color:var(--muted)}.tabletop-shell .icon-button,.tabletop-dialog .icon-button{background:0 0;border:0;flex:none;place-items:center;width:44px;height:44px;padding:0;font-size:23px;display:grid}.tabletop-topbar{background:var(--surface);border-bottom:1px solid var(--tabletop-line);z-index:5;grid-row:1}.tabletop-topbar>div{align-items:center;gap:8px;height:56px;display:flex}.tabletop-shell .character-chip{text-align:left;border-radius:30px;flex:1;align-items:center;gap:10px;height:46px;padding:4px 12px 4px 4px;display:flex}.character-chip>span:nth-child(2){flex:1;line-height:1.2;display:grid}.character-chip strong{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.character-chip small{font-size:12px}.entity-avatar,.account-avatar{width:36px;height:36px;color:var(--tabletop-bg);border-radius:50%;flex:none;place-items:center;font-size:13px;font-weight:800;display:grid}.tabletop-shell .account-avatar{background:var(--muted);width:44px;height:44px;color:var(--tabletop-bg);border-radius:50%;padding:0}.tabletop-sidebar{display:none}.tabletop-main{flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}.entity-tabs,.unit-tabs{scrollbar-width:thin;flex:none;gap:6px;padding-block:10px;display:flex;overflow-x:auto}.entity-tabs button{text-overflow:ellipsis;white-space:nowrap;flex:none;max-width:240px;overflow:hidden}.unit-tabs{padding-top:0}.unit-tabs button{flex:none;font-size:13px}.tabletop-shell button[aria-pressed=true],.tabletop-dialog button[aria-pressed=true]{border-color:var(--violet);background:color-mix(in srgb, var(--violet) 18%, var(--surface))}.session-history{border-bottom:1px solid var(--tabletop-line);flex:none;min-height:0;overflow:hidden}.session-history.expanded{flex:30%;min-height:96px;overflow:auto}.tabletop-shell .history-toggle{text-align:left;background:0 0;border:0;align-items:center;gap:12px;width:100%;padding-inline:0;display:flex}.history-toggle>span:first-child{flex:none;font-weight:700}.history-toggle small{display:none}.history-toggle>span:nth-child(2){white-space:nowrap;text-overflow:ellipsis;color:var(--muted);flex:1;font-size:12px;overflow:hidden}.history-list{gap:5px;padding-bottom:12px;display:grid}.tabletop-shell .history-row{text-align:left;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.history-row>span{overflow-wrap:anywhere;font-size:13px;display:grid}.history-row strong{color:var(--lime);flex:none;font-size:24px}.history-row small{font-size:11px}.history-paging{gap:8px;display:flex}.actions-dock{background:var(--surface);border-top:1px solid var(--tabletop-line);flex-direction:column;flex:1;min-height:90px;display:flex;overflow:hidden}.actions-dock.resized{flex-grow:0;flex-shrink:1}.dock-heading{justify-content:space-between;align-items:center;gap:10px;padding-block:12px;display:flex}.dock-heading h2{font-size:16px}.dock-heading small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.dock-handle{cursor:row-resize;touch-action:none;flex:none;place-items:center;height:24px;display:grid}.dock-handle span{background:var(--field-border);border-radius:4px;width:42px;height:4px}.tile-scroll{flex:1;min-height:0;padding-bottom:16px;overflow-y:auto}.action-tiles{grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px;display:grid}.tabletop-shell .action-tile,.tabletop-dialog .action-tile{text-align:left;border:1px solid var(--tabletop-line);min-height:68px;box-shadow:inset 4px 0 0 var(--tile-color,var(--violet));border-radius:var(--radius);background:color-mix(in srgb, var(--tile-color,var(--violet)) 8%, var(--raised));-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:pan-y;flex-direction:column;justify-content:center;align-items:flex-start;gap:6px;padding:12px 10px 12px 14px;display:flex}.action-tile strong{overflow-wrap:anywhere;font-size:14px;line-height:1.3}.action-tile code{color:var(--muted);font:12px/1.3 var(--font-mono);overflow-wrap:anywhere}.tabletop-shell .add-tile{box-shadow:none;color:var(--violet);background:0 0;border-style:dashed}.tabletop-shell .action-tile.inactive{opacity:.65;border-style:dashed}.tabletop-shell .action-tile.dragging{outline:2px dashed var(--lime);opacity:.6;touch-action:none}.quick-roll-bar{background:var(--surface);border-top:1px solid var(--tabletop-line);padding:8px 0 max(10px, env(safe-area-inset-bottom));flex:none}.quick-hint{color:var(--muted);margin:0 0 6px;font-size:12px}.quick-roll-form{gap:8px;display:flex}.quick-roll-form input{flex:1}.tabletop-shell .primary-button,.tabletop-dialog .primary-button{background:var(--violet);color:var(--tabletop-bg);border-color:var(--violet);font-weight:800}.tabletop-shell .quick-dice{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:8px 0 0;display:grid}.tabletop-shell .quick-dice button{min-width:0;min-height:44px;font:500 15px var(--font-mono);padding-inline:0}.active-buffs{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.active-buffs span{color:var(--lime);background:color-mix(in srgb, var(--lime) 10%, var(--surface));border-radius:6px;padding:4px 8px;font-size:12px}.chain-strip{background:color-mix(in srgb, var(--violet) 12%, var(--surface));align-items:center;gap:12px;margin-bottom:10px;display:flex}.chain-strip span{flex:1;font-size:13px}.scroll-page{flex:1;min-height:0;padding-top:18px;padding-bottom:110px;overflow:auto}.view-heading{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.view-heading .eyebrow{margin:0 0 5px}.category-bar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.category-bar button{align-items:center;gap:6px;font-size:13px;display:flex}.category-dot{background:var(--category-color);border-radius:50%;width:9px;height:9px}.variable-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.variable-card>span{justify-content:space-between;width:100%;display:flex}.variable-card b{font:700 26px ui-monospace,Consolas,monospace}.variable-card small{font-size:12px}.tabletop-shell .add-button{width:100%;color:var(--violet);background:0 0;border-style:dashed;margin-top:16px}.buff-list{gap:10px;display:grid}.buff-row{align-items:center;gap:12px;display:flex}.buff-row .action-tile{flex:1}.tabletop-shell .buff-switch{background:0 0;border:0;flex:none;width:58px;height:44px;position:relative}.buff-switch:before{content:"";background:var(--field-border);border-radius:30px;position:absolute;inset:8px 0}.buff-switch span{background:var(--surface);border-radius:50%;width:22px;height:22px;position:absolute;top:11px;left:3px}.buff-switch[aria-checked=true] span{left:33px}.description-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.description-card,.companion-card{border:1px solid var(--tabletop-line);border-radius:var(--radius);background:var(--surface);overflow-wrap:anywhere;padding:12px}.description-card.width-full{grid-column:1/-1}.description-card header,.companion-card header{justify-content:space-between;align-items:center;gap:8px;display:flex}.description-card h3,.companion-card h3{margin:0}.description-card p{white-space:pre-wrap;color:var(--muted);font-size:14px;line-height:1.6}.tracker-value{justify-content:center;align-items:baseline;gap:8px;padding:10px 0;display:flex}.tracker-value strong{font:800 32px ui-monospace,Consolas,monospace}.tracker-value span{color:var(--muted)}.tracker-stepper{justify-content:center;gap:8px;display:flex}.tracker-stepper button{min-width:48px;font-size:20px}.tracker-pips{flex-wrap:wrap;justify-content:center;display:flex}.tabletop-shell .tracker-pips button{min-width:24px;color:var(--field-border);background:0 0;border:0;padding:4px}.tabletop-shell .tracker-pips button[aria-pressed=true]{color:var(--lime);background:0 0}.tracker-amounts{border:1px solid var(--violet);border-radius:10px;gap:8px;margin-top:12px;padding:10px;display:grid}.tracker-amounts>div{flex-wrap:wrap;gap:4px;display:flex}.tracker-amounts form{flex-wrap:wrap;align-items:flex-end;gap:8px;display:flex}.tracker-amounts label{flex:1}.add-buttons{gap:12px;margin-top:16px;display:flex}.companion-list{gap:12px;display:grid}.companion-card button{margin:4px}.summon-controls{flex-wrap:wrap;align-items:end;gap:8px;display:flex}.summon-controls label{max-width:90px}.floating-roll{bottom:max(20px, env(safe-area-inset-bottom));z-index:4;box-shadow:0 5px 25px var(--tabletop-bg);position:absolute;left:50%;transform:translate(-50%)}.tabletop-shell .floating-roll{background:var(--violet);color:var(--tabletop-bg);border-radius:30px;min-width:120px;height:50px;font-weight:800}.tabletop-dialog{color:var(--ink);background:var(--surface);border:1px solid var(--tabletop-line);width:min(560px,100%);max-width:100%;max-height:88dvh;box-shadow:0 18px 60px var(--scrim);border-radius:18px 18px 0 0;margin:auto auto 0;padding:20px;overflow-y:auto}.tabletop-dialog::backdrop{background:var(--scrim)}.tabletop-dialog .dialog-heading{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.dialog-heading h2{margin:0;font-size:20px}.editor-form{gap:14px;display:grid}.editor-form label{color:var(--muted);gap:6px;font-size:13px;display:grid}.editor-form .check-label{align-items:center;gap:10px;min-height:44px;display:flex}.check-label input{width:22px;height:22px;min-height:22px}.editor-form textarea{resize:vertical;font-family:inherit}.editor-form fieldset{border:1px solid var(--tabletop-line);border-radius:10px;padding:10px}.effect-row{grid-template-columns:minmax(0,1fr) minmax(64px,.5fr) 44px;align-items:end;gap:8px;margin-bottom:10px;display:grid}.dialog-buttons{flex-wrap:wrap;gap:8px;padding-top:10px;display:flex}.colour-preview{border-radius:5px;height:5px}.text-preview{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--muted)}.tabletop-dialog .danger-text,.editor-error,.tabletop-error{color:var(--coral)}.tabletop-error,.tabletop-notice{background:var(--surface);flex-wrap:wrap;flex:none;align-items:center;gap:8px;padding:8px 16px;display:flex}.tabletop-error>span,.tabletop-notice>span{flex:1}.tabletop-dialog.result-dialog{background:var(--raised);border-color:var(--violet);border-radius:18px;width:min(440px,100% - 32px);margin:auto;padding:14px 16px}.result-dialog .result-total{font:500 44px/1 var(--font-mono);color:var(--ink)}.result-dialog .result-source{color:var(--ink);text-align:left;margin:0;font-weight:700}.result-dialog .result-summary{text-align:left;justify-content:space-between;gap:12px}.snapshot-part{border-top:1px solid var(--tabletop-line);overflow-wrap:anywhere;padding:12px 0}.snapshot-part>strong{color:var(--muted);font-size:13px}.snapshot-part .result-summary{justify-content:space-between;font-size:13px}.snapshot-vars{flex-wrap:wrap;gap:10px;padding-left:0;font-size:12px;list-style:none;display:flex}.result-dialog .die-result.dropped,.result-dialog .die-result.replaced{color:var(--muted);opacity:.85;text-decoration:line-through}.character-menu-list{gap:6px;margin-block:16px;display:grid}.character-menu-list button{text-align:left;overflow-wrap:anywhere;gap:4px;display:grid}.sidebar-brand{align-items:center;gap:12px;padding:24px 18px;display:flex}.sidebar-brand small{color:var(--muted);font-size:12px;font-weight:400;display:block}.tabletop-sidebar nav,.navigation-dialog nav{gap:6px;padding:0 12px;display:grid}.tabletop-sidebar nav button,.navigation-dialog nav button{text-align:left;color:var(--muted);background:0 0;border:0;align-items:center;gap:14px;display:flex}.tabletop-sidebar nav button[aria-current],.navigation-dialog nav button[aria-current]{color:var(--ink);background:color-mix(in srgb, var(--violet) 18%, var(--surface))}.tabletop-sidebar nav span,.navigation-dialog nav span{text-align:center;width:24px;font-size:22px}.sidebar-foot{color:var(--muted);margin:auto 24px 24px;padding-top:40px;font-size:12px;line-height:1.8}.tabletop-dialog.navigation-dialog{border-radius:0;width:min(290px,90%);height:100dvh;max-height:100dvh;margin:0 auto 0 0}.tabletop-shell .characters-workspace{padding:0}.tabletop-shell .characters-intro{flex-wrap:wrap}.tabletop-shell .characters-intro h1{font-size:28px}.tabletop-shell .characters-intro p{max-width:55ch}.tabletop-shell .characters-layout{grid-template-columns:minmax(0,1fr)}.empty-state{text-align:center;color:var(--muted);grid-column:1/-1;padding:24px 4px}@media (width>=1024px){.tabletop-shell{grid-template-columns:264px minmax(0,1fr)}.tabletop-sidebar{background:var(--surface);border-right:1px solid var(--tabletop-line);flex-direction:column;grid-row:1/-1;display:flex}.tabletop-topbar,.tabletop-main{grid-column:2}.tabletop-shell.sidebar-collapsed{grid-template-columns:minmax(0,1fr)}.sidebar-collapsed .tabletop-sidebar{display:none}.sidebar-collapsed .tabletop-topbar,.sidebar-collapsed .tabletop-main{grid-column:1}.tabletop-wrap{max-width:920px;padding-inline:24px}.tabletop-shell .character-chip{flex:0 420px}.tabletop-shell .account-avatar{margin-left:auto}.tabletop-topbar>div{max-width:920px}.action-tiles{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.tabletop-shell .action-tile{min-height:80px}.tabletop-dialog{border-radius:18px;margin:auto}.history-toggle small{margin-left:12px;font-size:12px;font-weight:400;display:inline}}@media (hover:hover){.tabletop-shell button:hover:not(:disabled),.tabletop-dialog button:hover:not(:disabled){border-color:var(--violet);filter:brightness(1.08)}}@media (prefers-reduced-motion:no-preference){.result-dialog[open]{animation:.12s ease-out result-in}@keyframes result-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}}.tabletop-icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:22px;height:22px}.tabletop-shell [hidden]{display:none!important}.tabletop-shell .entity-tabs{flex-wrap:wrap;overflow:visible}.tabletop-shell .entity-tabs button,.tabletop-shell .unit-tabs button{border-radius:999px;align-items:center;gap:6px;font-size:13px;font-weight:700;display:inline-flex}.entity-tabs .entity-avatar{width:28px;height:28px;font-size:10px}.dock-navigation{padding-top:8px}.dock-navigation:empty{display:none}.dock-heading h2{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:700}.tabletop-shell .action-tile{justify-content:space-between;padding-block:10px}.tabletop-shell .action-tile:not([data-categorized]){box-shadow:none;background:var(--raised);padding-left:10px}.tabletop-shell .variable-card{background:var(--surface);align-items:stretch;position:relative}.tabletop-shell .variable-card b{font:500 22px/1 var(--font-mono)}.tabletop-shell .variable-card strong{font:500 14px/1.25 var(--font-mono);padding-right:20px}.tabletop-shell .variable-card{justify-content:flex-start;gap:4px;min-height:76px;padding:10px 12px}.tabletop-shell .variable-card[data-categorized]{background:color-mix(in srgb, var(--tile-color) 7%, var(--surface));padding-left:14px}.variable-grid{gap:8px}.variable-group-heading{align-items:center;gap:8px;display:flex}.category-count{color:var(--muted);font:500 12px var(--font-mono)}.view-heading{align-items:flex-start;margin-bottom:6px}.view-heading h2{font-size:22px;font-weight:800}.view-subtitle{color:var(--muted);margin:4px 0 0}.section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:16px 0 8px;font-size:11px}.editor-status{color:var(--muted);justify-content:space-between;gap:8px;margin:20px 0 8px;font-size:12px;display:flex}.editor-status>span:first-child{text-transform:uppercase;letter-spacing:.08em}.result-dialog .result-total.natural-max{color:var(--lime)}.result-dialog .result-total.natural-min{color:var(--coral)}.variable-card .variable-edit{color:var(--muted);font-size:14px;position:absolute;top:8px;right:10px}.tabletop-shell .history-toggle{background:var(--surface);border:1px solid var(--tabletop-line);border-radius:10px;margin-block:8px;padding:0 12px;font-size:13px}.history-toggle .history-count{border:1px solid var(--tabletop-line);font:500 12px var(--font-mono);border-radius:999px;flex:none;padding:1px 7px}.history-toggle>span.history-count{flex:none}.brand-mark{clip-path:none}.tabletop-shell .nav-count,.navigation-dialog .nav-count{border:1px solid var(--violet);width:auto;color:var(--violet);white-space:nowrap;border-radius:999px;margin-left:auto;padding:2px 8px;font-size:11px}.nav-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:14px 10px 4px;font-size:11px;font-weight:700}.tabletop-sidebar nav button:disabled .nav-count,.navigation-dialog nav button:disabled .nav-count{border-color:var(--tabletop-line);color:var(--muted)}.tabletop-shell .entity-tabs button{padding:4px 12px 4px 4px}.tabletop-shell .category-bar button{border-radius:999px;font-weight:700}.history-toggle>span:nth-child(3){text-overflow:ellipsis;white-space:nowrap;color:var(--muted);flex:1;overflow:hidden}.history-toggle b{color:var(--violet)}.session-history{border-bottom:0}.tabletop-shell .active-buffs button{border-color:var(--violet);background:color-mix(in srgb, var(--violet) 16%, var(--surface));border-radius:999px;align-items:center;gap:6px;font-size:13px;font-weight:700;display:inline-flex}.active-buffs button span{color:var(--muted);background:0 0;padding:0}.quick-roll-form input{font-family:var(--font-mono)}.quick-roll-form input::placeholder{font:400 14px var(--font-ui)}.quick-roll-form button{min-width:72px}.tabletop-shell .buff-switch{width:46px}.buff-switch:before{background:var(--tabletop-bg);border:1px solid var(--tabletop-line)}.buff-switch[aria-checked=true]:before{background:var(--violet)}.buff-switch span{background:var(--muted);width:18px;height:18px;top:13px;left:5px}.buff-switch[aria-checked=true] span{background:var(--ink);left:23px}.sidebar-brand{gap:10px;padding:16px}.sidebar-brand strong{font-size:15px}.brand-mark{background:var(--violet);width:34px;height:34px;color:var(--tabletop-bg);border-radius:10px;place-items:center;font-weight:800;display:grid}.tabletop-sidebar nav,.navigation-dialog nav{gap:4px}.tabletop-sidebar nav button,.navigation-dialog nav button{gap:12px;font-weight:600}.tabletop-dialog.character-menu-dialog,.tabletop-dialog.account-menu-dialog{background:var(--raised);border-radius:12px;width:min(340px,100vw - 32px);max-height:calc(100dvh - 72px);margin:0;padding:12px;position:fixed;inset:52px auto auto}.tabletop-dialog.character-menu-dialog{left:clamp(16px, var(--menu-left,64px), calc(100vw - min(340px, calc(100vw - 32px)) - 16px))}.tabletop-dialog.account-menu-dialog{inset-inline:auto max(16px, var(--menu-right,16px));width:min(260px,100vw - 32px)}.character-menu-dialog::backdrop,.account-menu-dialog::backdrop{background:0 0}.character-menu-list button{background:0 0;border-color:#0000}.character-menu-dialog .dialog-heading h2{font-size:13px}.result-dialog .dialog-heading{margin-bottom:8px}.result-dialog .dialog-heading h2{color:var(--muted);font-size:12px}.result-dialog .result-summary>div{justify-content:space-between;align-items:baseline;width:100%;display:flex}.result-dialog .result-label{margin:0}.result-dialog .snapshot-part{border-top-style:dashed;padding-block:8px}.result-dialog .die-result{min-width:26px;min-height:26px;font:500 13px var(--font-mono);background:var(--raised);height:26px;color:var(--ink);border:1px solid var(--tabletop-line);border-radius:7px;padding:0 5px}.result-dialog .result-tap-area{gap:8px;display:grid}.result-dialog .result-summary code{color:var(--muted);background:0 0;border-radius:0;padding:0;font-size:12px}.result-dialog .snapshot-vars{margin-block:8px 0}.result-dialog .field-hint{color:var(--muted);margin:0;font-size:12px}.result-dialog .pool-result,.result-dialog .roll-list{gap:4px}.tracker-body{gap:10px;display:grid}.tracker-row{flex-wrap:wrap;align-items:center;gap:8px 12px;display:flex}.tracker-row .tracker-value{justify-content:flex-start;margin-right:auto;padding:0}.tracker-row .tracker-value strong{font:500 30px/1 var(--font-mono)}.width-half .tracker-value strong{font-size:24px}.tracker-row .tracker-stepper{margin-left:auto}.tabletop-shell .tracker-reset{min-width:44px;color:var(--violet);padding:0;font-size:20px}.tracker-bar{border:1px solid var(--tabletop-line);background:var(--tabletop-bg);border-radius:999px;height:10px;overflow:hidden}.tracker-bar>span{background:var(--violet);border-radius:inherit;height:100%;display:block}.tracker-bar.low>span{background:var(--coral)}.tracker-pips{justify-content:flex-start;gap:8px}.tabletop-shell .tracker-pips button{border:2px solid var(--violet);border-radius:50%;width:44px;min-width:44px;height:44px;padding:0}.tabletop-shell .tracker-pips button[aria-pressed=true]{background:var(--violet)}.description-card:has(.tracker-amounts){grid-column:1/-1}.description-grid{gap:8px}.description-card{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;cursor:grab;padding:14px;position:relative}.description-card:focus-visible{outline:2px solid var(--violet);outline-offset:3px}.description-card.dragging{transform:translate(var(--drag-x,0px), var(--drag-y,0px)) scale(1.02);z-index:5;pointer-events:none;cursor:grabbing;outline:2px solid var(--violet);box-shadow:0 12px 30px #0008}.description-card.drop-target{outline:2px dashed var(--violet);outline-offset:3px}.result-dialog .dialog-buttons{flex-wrap:wrap}.result-dialog .snapshot-vars{font-family:var(--font-mono)}.tabletop-shell .floating-roll{justify-content:center;align-items:center;gap:8px;display:inline-flex}@media (width>=1024px){.tabletop-shell .action-tile{padding-block:12px}}
