@font-face{font-family:Cinzel;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/cinzel-latin-wght-normal.woff2) format("woff2-variations"),url(/fonts/cinzel-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Cinzel;font-style:normal;font-weight:400 900;font-display:swap;src:url(/fonts/cinzel-latin-ext-wght-normal.woff2) format("woff2-variations"),url(/fonts/cinzel-latin-ext-wght-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin-wght-normal.woff2) format("woff2-variations"),url(/fonts/inter-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-latin-ext-wght-normal.woff2) format("woff2-variations"),url(/fonts/inter-latin-ext-wght-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}:root{--bg: #111014;--surface: #1B171B;--primary: #B63A46;--accent: #E8B44A;--text: #F6F1E9;--primary-ink: #FFFFFF;--accent-ink: #0B0B0F;--primary-fg: #D9737B;--accent-fg: #E8B44A;--bg-2: color-mix(in oklab, var(--bg) 60%, var(--surface));--panel: var(--surface);--panel-2: color-mix(in oklab, var(--surface) 91%, var(--text));--panel-3: color-mix(in oklab, var(--surface) 84%, var(--text));--border: color-mix(in oklab, var(--surface) 86%, var(--text));--border-strong: color-mix(in oklab, var(--surface) 72%, var(--text));--muted: color-mix(in oklab, var(--text) 64%, var(--bg));--text-soft: color-mix(in oklab, var(--text) 86%, var(--bg));--primary-soft: color-mix(in oklab, var(--primary) 16%, transparent);--primary-line: color-mix(in oklab, var(--primary) 55%, transparent);--accent-soft: color-mix(in oklab, var(--accent) 14%, transparent);--accent-line: color-mix(in oklab, var(--accent) 50%, transparent);--glow: color-mix(in oklab, var(--primary) 30%, transparent);--danger: #E5484D;--danger-fg: #FF8A8F;--success: #3DD68C;--success-fg: #7EE8B5;--radius-lg: 16px;--radius: 12px;--radius-sm: 8px;--shadow: 0 10px 40px -12px rgb(0 0 0 / .55);--shadow-sm: 0 2px 10px -4px rgb(0 0 0 / .5);--font-display: "Cinzel", "Book Antiqua", Georgia, serif;--font-body: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--ease: cubic-bezier(.2, .7, .2, 1);color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}html{scroll-behavior:smooth}body{min-height:100vh;background:radial-gradient(900px 500px at 85% -10%,color-mix(in oklab,var(--primary) 16%,transparent),transparent 70%),radial-gradient(700px 420px at -10% 10%,color-mix(in oklab,var(--accent) 8%,transparent),transparent 70%),var(--bg);background-attachment:fixed;color:var(--text);font:15px/1.55 var(--font-body);font-feature-settings:"cv11","ss01";-webkit-font-smoothing:antialiased;transition:background-color .4s var(--ease),color .4s var(--ease)}::selection{background:var(--primary);color:var(--primary-ink)}a{color:var(--primary-fg);text-decoration:none}a:hover{text-decoration:underline;text-underline-offset:3px}h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;letter-spacing:.01em;margin:0 0 .5em;line-height:1.2}h1{font-size:clamp(1.7rem,3vw,2.2rem)}h2{font-size:1.3rem}h3{font-size:1.06rem;color:var(--accent-fg)}h4{font-size:.92rem;color:var(--accent-fg);margin-top:1.2em}p{margin:0 0 .8em}hr{border:0;border-top:1px solid var(--border);margin:1.4rem 0}ul{padding-left:1.2rem;margin:0 0 .8em}ul.plain{list-style:none;padding:0}ul.plain li{padding:3px 0}code{font:.8em ui-monospace,SF Mono,Menlo,Consolas,monospace}:focus-visible{outline:2px solid var(--primary-fg);outline-offset:2px}input,select,textarea{width:100%;background:var(--bg-2);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px;font:inherit;transition:border-color .15s,box-shadow .15s,background-color .4s}input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-soft)}input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary);padding:0;flex:none}textarea{resize:vertical}input:disabled,select:disabled{opacity:.5}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.accent{color:var(--accent-fg)}.big{font-size:2rem}.pad{padding:12px}.eyebrow{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--primary-fg);margin-bottom:6px}.app{min-height:100vh;display:flex;flex-direction:column}main{flex:1}.topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:20px;padding:10px 24px;background:color-mix(in oklab,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.3);backdrop-filter:blur(14px) saturate(1.3);border-bottom:1px solid var(--border)}.logo{display:flex;align-items:center;gap:10px;color:var(--primary);font:700 1.35rem var(--font-display);flex:none}.logo:hover{text-decoration:none}.logo svg{width:30px;height:30px;filter:drop-shadow(0 0 10px var(--glow))}.logo span{color:var(--text)}.topbar nav{order:1;display:flex;align-items:center;gap:2px;flex:1}.topbar-tools{order:2;display:flex;align-items:center;gap:8px}.topbar nav a:not(.btn){color:var(--muted);padding:7px 12px;border-radius:var(--radius-sm);font-weight:500;transition:color .15s,background .15s}.topbar nav a:not(.btn):hover{color:var(--text);background:var(--panel);text-decoration:none}.topbar nav a.active{color:var(--text);background:var(--primary-soft);box-shadow:inset 0 -2px 0 var(--primary)}.nav-spacer{flex:1}.icon-btn.menu-toggle{display:none}.footer{padding:28px 24px;text-align:center;color:var(--muted);font-size:.8rem;border-top:1px solid var(--border)}.page{max-width:none;margin:0 auto;padding:32px clamp(16px,3vw,48px) 72px}.page.narrow{max-width:520px}.page.wide{max-width:none}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;flex-wrap:wrap}.page-head p{max-width:720px;margin:0}.page>h2,.section-head{margin-top:36px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.section-head h2{margin:0}.section-head input{max-width:280px}.row{display:flex;align-items:center;gap:10px}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.row.wrap{flex-wrap:wrap}.stack{display:flex;flex-direction:column;gap:16px}.stack-sm{display:flex;flex-direction:column;gap:8px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.card{background:linear-gradient(180deg,color-mix(in oklab,var(--surface) 96%,var(--text)),var(--surface));border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow-sm);transition:background-color .4s,border-color .4s}.card>:last-child{margin-bottom:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--panel-2);color:var(--text);font:600 .9rem var(--font-body);cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s,transform .08s,box-shadow .2s,filter .15s}.btn:hover{text-decoration:none;border-color:var(--primary-line)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--primary-ink);border-color:transparent;box-shadow:0 6px 20px -8px var(--primary),inset 0 1px #ffffff2e}.btn-primary:hover:not(:disabled){filter:brightness(1.1);box-shadow:0 8px 26px -8px var(--primary),inset 0 1px #fff3}.btn-ghost{background:transparent}.btn-ghost:hover:not(:disabled){background:var(--panel-2)}.btn-danger{background:transparent;border-color:color-mix(in oklab,var(--danger) 50%,transparent);color:var(--danger-fg)}.btn-danger:hover{background:color-mix(in oklab,var(--danger) 12%,transparent);border-color:var(--danger)}.btn-sm{padding:5px 11px;font-size:.82rem}.btn-lg{padding:13px 24px;font-size:1rem;border-radius:var(--radius)}.btn-block{width:100%}.icon-btn{display:inline-grid;place-items:center;width:32px;height:32px;padding:0;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-2);color:var(--text);cursor:pointer;font-size:.95rem;transition:border-color .15s,background .15s}.icon-btn:hover:not(:disabled){border-color:var(--primary-line);background:var(--panel-2)}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.link{background:none;border:0;color:var(--primary-fg);cursor:pointer;padding:0;font:inherit}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field-label{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.field-hint{font-size:.78rem;color:var(--muted)}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:0 16px}.form-grid-3{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 13px;border-radius:999px;border:1px solid var(--border);background:var(--bg-2);color:var(--muted);font:500 .85rem var(--font-body);cursor:pointer;transition:all .15s}.chip:hover:not(:disabled){color:var(--text);border-color:var(--border-strong)}.chip.active{background:var(--primary-soft);border-color:var(--primary-line);color:var(--text)}.chip:disabled{opacity:.35;cursor:not-allowed}.chip.removable button{background:none;border:0;color:inherit;cursor:pointer;padding:0;font-size:.75rem;opacity:.7}.chip.removable button:hover{opacity:1}.chips-sm .chip{padding:3px 9px;font-size:.78rem}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px;overflow-x:auto}.tab{background:none;border:0;border-bottom:2px solid transparent;color:var(--muted);padding:10px 14px;font:600 .9rem var(--font-body);cursor:pointer;white-space:nowrap}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--primary)}.tab-count{margin-left:6px;font-size:.72rem;background:var(--panel-2);border-radius:999px;padding:1px 7px;color:var(--muted)}.error-box,.success-box,.warn-box{padding:11px 14px;border-radius:var(--radius-sm);margin-bottom:14px;font-size:.9rem}.error-box{background:color-mix(in oklab,var(--danger) 12%,transparent);border:1px solid color-mix(in oklab,var(--danger) 45%,transparent);color:var(--danger-fg)}.success-box{background:color-mix(in oklab,var(--success) 12%,transparent);border:1px solid color-mix(in oklab,var(--success) 45%,transparent);color:var(--success-fg)}.warn-box{background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-fg)}.spinner{display:flex;align-items:center;justify-content:center;gap:10px;padding:60px;color:var(--muted)}.spinner span{width:18px;height:18px;border:2px solid var(--border-strong);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.empty{text-align:center;padding:48px 20px;border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--muted)}.empty-title{font:700 1.2rem var(--font-display);color:var(--text);margin-bottom:8px}.modal-backdrop{position:fixed;inset:0;z-index:100;background:color-mix(in oklab,var(--bg) 70%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;padding:20px;animation:fade-in .15s}.modal{width:min(560px,100%);max-height:calc(100vh - 40px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow);animation:pop-in .2s var(--ease)}.modal-wide{width:min(1100px,100%)}.modal-head{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid var(--border)}.modal-head h2{margin:0;font-size:1.15rem}.modal-body{padding:20px;overflow:auto}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px) scale(.98)}}.stars{color:var(--border-strong);letter-spacing:1px;white-space:nowrap}.stars .on{color:var(--accent)}.stars-sm{font-size:.85rem}.stars-lg{font-size:1.8rem}.stars-input span{cursor:pointer;transition:transform .1s;display:inline-block}.stars-input span:hover{transform:scale(1.15)}.badge{display:inline-block;padding:2px 8px;border-radius:5px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;background:var(--panel-2);color:var(--muted)}.badge-race,.badge-subrace{background:color-mix(in oklab,#3DD68C 16%,transparent);color:#86e8b8}.badge-class,.badge-subclass{background:color-mix(in oklab,#E5484D 16%,transparent);color:#ff9ca0}.badge-background{background:color-mix(in oklab,#A77BF3 18%,transparent);color:#cbb2fa}.badge-spell{background:color-mix(in oklab,#3B82F6 18%,transparent);color:#a6c6ff}.badge-feat{background:color-mix(in oklab,#E8B44A 16%,transparent);color:#f2cd7e}.badge-item{background:color-mix(in oklab,#A1A8B8 16%,transparent);color:#cdd2dc}.badge-draft{background:var(--panel-2);color:var(--muted)}.badge-live{background:color-mix(in oklab,var(--success) 16%,transparent);color:var(--success-fg)}.badge-beta{background:#facc15;color:#18181b}.hb-dot{font-size:.64rem;font-weight:800;color:var(--accent-ink);background:var(--accent);border-radius:4px;padding:1px 5px}.tags{display:flex;flex-wrap:wrap;gap:4px;margin:4px 0}.tag{font-size:.74rem;color:var(--muted);background:var(--bg-2);border:1px solid var(--border);border-radius:999px;padding:1px 8px}.content-view header{margin-bottom:12px}.content-view header h3{font-size:1.4rem;color:var(--text);margin-bottom:6px}.content-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.source{font-size:.8rem;color:var(--muted)}.source.homebrew{color:var(--accent-fg)}.prose{white-space:pre-wrap;margin-bottom:.8em}.props{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px 18px;margin:0 0 16px;padding:14px 16px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.props div{min-width:0}.props dt{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.props dd{margin:0;font-size:.9rem}.feature{padding:11px 0;border-top:1px solid var(--border)}.feature:first-of-type{border-top:0}.feature-name{font-weight:700;margin-bottom:3px}.feature .prose{color:var(--text-soft);font-size:.92rem;margin:0}.lvl{display:inline-block;font-size:.68rem;font-weight:800;color:var(--accent-ink);background:var(--accent);border-radius:4px;padding:1px 6px;margin-right:8px;vertical-align:2px}.spell-line{font-style:italic;color:var(--muted)}.browser{display:grid;grid-template-columns:320px 1fr;gap:16px;min-height:480px}.browser-list{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;max-height:72vh}.browser-list .search{margin-bottom:10px}.browser-list ul{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1}.browser-item{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;background:none;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text);padding:8px 10px;cursor:pointer;text-align:left;font:inherit;transition:background .12s}.browser-item:hover{background:var(--panel-2)}.browser-item.focused{background:var(--primary-soft);border-color:var(--primary-line)}.browser-item.selected .browser-item-name:before{content:"✓ ";color:var(--accent-fg)}.browser-item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.browser-item-meta{display:flex;gap:6px;align-items:center;font-size:.78rem;color:var(--muted);flex:none}.browser-detail{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;max-height:72vh;overflow-y:auto}.browser-actions{display:flex;align-items:center;gap:12px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid var(--border)}.selected-label{color:var(--success-fg);font-weight:600}.home{max-width:none;margin:0 auto;padding:56px clamp(16px,3vw,48px) 72px}.hero{text-align:center;padding:36px 0 56px}.hero h1{font-size:clamp(2.4rem,7vw,4.4rem);line-height:1.05;margin-bottom:18px;background:linear-gradient(120deg,var(--text) 10%,var(--accent) 55%,var(--primary) 95%);-webkit-background-clip:text;background-clip:text;color:transparent}.hero p{max-width:640px;margin:0 auto 30px;color:var(--muted);font-size:1.12rem}.hero-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.feature-card{position:relative;overflow:hidden}.feature-card .feature-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--primary-soft);border:1px solid var(--primary-line);font-size:1.25rem;margin-bottom:14px}.feature-card p{color:var(--muted);margin:0}.showcase{margin-top:64px}.showcase-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.showcase-item{display:flex;flex-direction:column;gap:10px;text-align:left;padding:14px;border-radius:var(--radius);cursor:pointer;border:1px solid var(--border);font:inherit;transition:transform .15s var(--ease),border-color .15s,box-shadow .2s}.showcase-item:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.showcase-item.active{outline:2px solid var(--primary);outline-offset:2px}.showcase-item strong{font:700 .95rem var(--font-display)}.showcase-item span.small{opacity:.7}.auth-card{margin-top:40px}.dash-hero{position:relative;overflow:hidden;display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;padding:28px;border-radius:var(--radius-lg);background:radial-gradient(600px 240px at 100% 0%,color-mix(in oklab,var(--primary) 35%,transparent),transparent 70%),radial-gradient(400px 200px at 0% 100%,color-mix(in oklab,var(--accent) 18%,transparent),transparent 70%),var(--surface);border:1px solid var(--border)}.dash-hero h1{margin-bottom:6px}.dash-hero p{margin:0;color:var(--muted)}.dash-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-top:16px}.dash-stat{display:flex;align-items:center;gap:14px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.dash-stat-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:10px;background:var(--primary-soft);font-size:1.15rem;flex:none}.dash-stat-value{font:700 1.5rem/1 var(--font-display);color:var(--text)}.dash-stat-label{font-size:.78rem;color:var(--muted)}.quick-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.quick-action{display:flex;align-items:center;gap:14px;padding:16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);transition:border-color .15s,transform .15s var(--ease)}.quick-action:hover{text-decoration:none;border-color:var(--primary-line);transform:translateY(-2px)}.quick-action .qa-icon{font-size:1.4rem}.quick-action strong{display:block}.quick-action span.small{color:var(--muted)}.char-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}.char-card{display:flex;flex-direction:column;padding:0;overflow:hidden;transition:transform .18s var(--ease),box-shadow .2s,border-color .2s}.char-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:var(--primary-line)}.char-banner{position:relative;height:84px;background:linear-gradient(135deg,color-mix(in oklab,var(--primary) 70%,var(--bg)),color-mix(in oklab,var(--accent) 45%,var(--bg)))}.char-banner:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(45deg,rgb(255 255 255 / .04) 0 10px,transparent 10px 20px)}.char-banner .portrait{position:absolute;left:18px;bottom:-30px;z-index:1;box-shadow:0 0 0 4px var(--surface)}.char-level{position:absolute;right:12px;top:12px;z-index:1;font:700 .78rem var(--font-body);padding:3px 10px;border-radius:999px;background:#00000059;color:#fff;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.char-card-main{display:block;padding:38px 18px 10px;color:var(--text)}.char-card-main:hover{text-decoration:none}.char-card-main h3{color:var(--text);margin-bottom:2px;font-size:1.15rem}.char-card-main:hover h3{color:var(--primary-fg)}.char-card-actions{display:flex;gap:6px;flex-wrap:wrap;border-top:1px solid var(--border);padding:12px 18px;margin-top:auto}.new-char-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:220px;border:1px dashed var(--border-strong);border-radius:var(--radius);background:transparent;color:var(--muted);font:600 .95rem var(--font-body);cursor:pointer;transition:all .15s}.new-char-tile span{font-size:2rem;color:var(--primary-fg);line-height:1}.new-char-tile:hover{border-color:var(--primary);color:var(--text);background:var(--primary-soft)}.portrait{width:64px;height:64px;flex:none;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:linear-gradient(135deg,var(--panel-3),var(--bg-2));border:2px solid var(--accent);font:700 1.5rem var(--font-display);color:var(--accent-fg)}.portrait img{width:100%;height:100%;object-fit:cover}.portrait-lg{width:72px;height:72px}.portrait-xl{width:120px;height:120px;font-size:2.5rem}.builder{display:grid;grid-template-columns:230px minmax(0,1fr) 300px;gap:20px;max-width:none;margin:0;padding:20px clamp(12px,1.5vw,28px);align-items:start}.builder-steps,.builder-summary{position:sticky;top:76px}.builder-steps{display:flex;flex-direction:column;gap:14px}.builder-title{padding:0 6px}.builder-name{font:700 1.1rem var(--font-display);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.save-status{font-size:.78rem;color:var(--muted)}.save-status:before{content:"●";margin-right:5px}.save-status.saved{color:var(--success-fg)}.save-status.saving,.save-status.dirty{color:var(--accent-fg)}.save-status.error{color:var(--danger-fg)}.builder-steps nav{display:flex;flex-direction:column;gap:2px;position:relative}.step{display:flex;align-items:center;gap:10px;background:none;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--muted);padding:9px 10px;font:600 .92rem var(--font-body);cursor:pointer;text-align:left;transition:all .15s}.step:hover{color:var(--text);background:var(--surface)}.step.active{color:var(--text);background:var(--primary-soft);border-color:var(--primary-line)}.step-num{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--bg-2);border:1px solid var(--border-strong);font-size:.74rem;transition:all .15s}.step.active .step-num{background:var(--primary);color:var(--primary-ink);border-color:var(--primary);box-shadow:0 0 12px var(--glow)}.builder-links{display:flex;flex-direction:column;gap:8px}.step-title{margin-bottom:18px}.builder-main{animation:fade-in .25s}.step-nav{display:flex;gap:10px;margin-top:24px;padding-top:16px;border-top:1px solid var(--border)}.builder-summary{display:flex;flex-direction:column;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px;max-height:calc(100vh - 96px);overflow-y:auto;box-shadow:var(--shadow-sm)}.summary-head{display:flex;gap:12px;align-items:center}.summary-name{font:700 1.05rem var(--font-display)}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat-grid.compact{display:flex;flex-wrap:wrap;gap:8px}.stat-grid.compact .stat{min-width:76px}.stat-grid.wide-stats{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));margin-bottom:20px}.stat{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 6px;text-align:center}.stat-value{font:700 1.25rem var(--font-display);color:var(--accent-fg)}.stat-label{font-size:.66rem;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.stat-sub{font-size:.72rem;color:var(--muted)}.ability-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.ability{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);text-align:center;padding:6px;cursor:help}.ability-short{font-size:.68rem;font-weight:700;color:var(--muted);letter-spacing:.08em}.ability-mod{font:700 1.3rem var(--font-display)}.ability-score{display:inline-block;font-size:.76rem;background:var(--panel-3);border-radius:999px;padding:0 8px}.todo{background:var(--accent-soft);border:1px solid var(--accent-line);border-radius:var(--radius-sm);padding:10px 12px;font-size:.84rem}.todo-title{font-weight:700;color:var(--accent-fg);margin-bottom:4px}.todo ul{margin:0;padding-left:1.1rem}.todo li{margin:2px 0}.todo.done{background:color-mix(in oklab,var(--success) 10%,transparent);border-color:color-mix(in oklab,var(--success) 40%,transparent);color:var(--success-fg)}.selection-card{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;border-left:3px solid var(--primary)}.selection-card h2{margin:2px 0}.option-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}.option-card{display:flex;flex-direction:column;gap:4px;text-align:left;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px;color:var(--text);cursor:pointer;font:inherit;transition:all .15s}.option-card:hover{border-color:var(--border-strong)}.option-card.active{border-color:var(--primary);background:var(--primary-soft)}.class-entry{display:flex;flex-direction:column;gap:14px}.class-entry-head{display:flex;justify-content:space-between;align-items:center;gap:16px}.class-entry-head h2{margin:0}.level-stepper{display:flex;align-items:center;gap:10px;text-align:center}.level-stepper>div{display:flex;flex-direction:column;line-height:1.1;min-width:44px}.level-value{font:700 1.6rem var(--font-display);color:var(--accent-fg)}.level-stepper.small .level-value{font-size:1.1rem;min-width:26px}.asi-list{display:flex;flex-direction:column;gap:8px}.asi{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.asi select{width:auto;min-width:150px;flex:1}.asi-level{font-weight:700;min-width:70px;color:var(--accent-fg)}.hp-rolls{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}.hp-roll{display:flex;flex-direction:column;width:64px}.features-details summary{cursor:pointer;color:var(--primary-fg);font-weight:600;padding:6px 0}.table{width:100%;border-collapse:collapse;font-size:.92rem}.table th{text-align:left;font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--border-strong)}.table td{padding:9px 10px;border-bottom:1px solid var(--border);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr{transition:background .12s}.table tbody tr:hover{background:color-mix(in oklab,var(--surface) 92%,var(--text))}.table.compact td,.table.compact th{padding:5px 8px}.ability-control{width:150px}.ability-control select,.ability-control input{width:100px}.mod-pill{display:inline-block;min-width:40px;text-align:center;background:var(--bg-2);border:1px solid var(--border-strong);border-radius:999px;padding:2px 8px;font-weight:700}.skill-table tr.proficient td:first-child{color:var(--text);font-weight:600}.prof-dot{display:inline-block;width:10px;height:10px;border-radius:50%;border:1.5px solid var(--muted);margin-right:8px;vertical-align:-1px}.prof-dot.on{background:var(--primary);border-color:var(--primary)}.prof-dot.expert{background:var(--accent);border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.slot-table{display:flex;flex-wrap:wrap;gap:8px}.slot{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;text-align:center}.slot.pact{border-color:var(--accent-line)}.slot-level{font-size:.75rem;color:var(--muted);font-weight:700}.slot-pips{display:flex;gap:3px;justify-content:center;margin-top:3px}.slot-pips span{width:10px;height:10px;border-radius:50%;border:1.5px solid var(--primary-fg)}.chosen-spells{display:flex;flex-direction:column;gap:4px;margin:12px 0}.coins{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.coins .field{margin-bottom:8px}.inventory .qty input{width:70px}.custom-item{margin-top:12px}.custom-item input[type=number]{width:90px;flex:none}.market-filters{display:flex;gap:10px;margin-bottom:12px}.market-filters select{width:220px;flex:none}.listing-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:16px}.listing{display:flex;flex-direction:column;gap:6px;transition:transform .18s var(--ease),border-color .2s,box-shadow .2s}.listing:hover{transform:translateY(-3px);border-color:var(--primary-line);box-shadow:var(--shadow)}.listing-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.listing-title{font:700 1.12rem var(--font-display);color:var(--text)}.listing-title:hover{color:var(--primary-fg);text-decoration:none}.listing-summary{font-size:.9rem;color:var(--text-soft);flex:1;margin:4px 0}.listing-actions{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:6px}.listing-meta{display:flex;gap:14px;font-size:.8rem;color:var(--muted)}.pager{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:20px}.detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;margin-top:14px;align-items:start}.detail-head{margin-bottom:12px}.lead{font-size:1.05rem;color:var(--text-soft)}.big-rating{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:14px;font:700 1.3rem var(--font-display)}.big-rating .muted{font-family:var(--font-body);font-weight:400;width:100%}.review{padding:10px 0;border-top:1px solid var(--border)}.review:first-of-type{border-top:0}.create-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.create-tile{display:flex;flex-direction:column;align-items:center;gap:4px;padding:18px 10px;border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text);font-weight:600;transition:all .15s}.create-tile span{font-size:1.5rem;color:var(--primary-fg);line-height:1}.create-tile:hover{text-decoration:none;border-color:var(--primary);background:var(--primary-soft);transform:translateY(-2px)}.editor-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:20px;align-items:start}.editor-preview{position:sticky;top:76px;max-height:calc(100vh - 96px);overflow-y:auto}.editor-actions{border-top:1px solid var(--border);margin-top:20px;padding-top:16px}.sub-editor{border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;margin:0 0 14px}.sub-editor legend{padding:0 6px;font-weight:700;color:var(--accent-fg);font-size:.9rem}.ability-bonus-editor{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}.ability-bonus-editor label{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:.75rem;font-weight:700;color:var(--muted)}.ability-bonus-editor input{text-align:center;padding:6px 4px}.named-list{display:flex;flex-direction:column;gap:10px;align-items:flex-start}.named-item{width:100%;display:flex;flex-direction:column;gap:6px;padding:10px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.named-item-head{display:flex;gap:6px;align-items:center}.lvl-input{display:flex;align-items:center;gap:4px;font-size:.78rem;color:var(--muted)}.lvl-input input{width:58px}.theme-switcher{position:relative}.theme-trigger{display:flex;align-items:center;gap:8px;padding:5px 10px 5px 6px;border-radius:999px;background:var(--bg-2);border:1px solid var(--border);color:var(--text);font:600 .82rem var(--font-body);cursor:pointer;transition:border-color .15s,box-shadow .2s}.theme-trigger:hover,.theme-trigger.open{border-color:var(--primary-line);box-shadow:0 0 0 3px var(--primary-soft)}.theme-orb{width:22px;height:22px;border-radius:50%;box-shadow:0 0 0 2px var(--surface),0 0 12px var(--glow)}.caret{font-size:.7rem;color:var(--muted)}.theme-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;width:min(340px,calc(100vw - 24px));max-height:calc(100vh - 80px);padding:8px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);animation:pop-in .16s var(--ease)}.theme-menu.up{top:auto;bottom:calc(100% + 8px)}.theme-menu.align-left{right:auto;left:0}.theme-option .swatches{flex:none;width:auto}.theme-option-text strong,.theme-option-text .muted{overflow-wrap:anywhere}.theme-menu-head{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);padding:6px 8px 8px}.theme-menu-head .muted{text-transform:none;letter-spacing:0;font-weight:500}.theme-option{width:100%;display:flex;align-items:center;gap:12px;padding:9px 8px;border-radius:var(--radius-sm);border:1px solid transparent;background:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}.theme-option:hover,.theme-option:focus-visible{background:var(--panel-2);outline:none}.theme-option.active{background:var(--primary-soft);border-color:var(--primary-line)}.theme-option-text{display:flex;flex-direction:column;line-height:1.3;flex:1;min-width:0}.theme-option-text strong{font-size:.9rem}.theme-option .check{color:var(--primary-fg);font-weight:800}.theme-menu-sep{height:1px;background:var(--border);margin:6px 4px}.light-option .sun{width:50px;text-align:center;font-size:1.3rem;animation:spin 12s linear infinite}.new-tag{font-size:.62rem;font-weight:800;letter-spacing:.06em;background:#facc15;color:#18181b;padding:2px 6px;border-radius:4px;animation:wiggle 2.4s ease-in-out infinite}@keyframes wiggle{0%,88%,to{transform:rotate(0)}92%{transform:rotate(-8deg)}96%{transform:rotate(8deg)}}.theme-menu-footer{display:block;text-align:center;padding:9px;margin-top:4px;font-size:.84rem;font-weight:600;border-top:1px solid var(--border)}.swatches{display:inline-flex;border-radius:6px;overflow:hidden;flex:none;box-shadow:0 0 0 1px #ffffff14}.swatches span{width:10px;height:26px}.swatches-md span{width:16px;height:32px}.theme-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:20px}.theme-card{display:flex;flex-direction:column;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);transition:transform .2s var(--ease),box-shadow .25s,border-color .2s}.theme-card:hover{transform:translateY(-4px);box-shadow:0 18px 40px -18px var(--card-primary, var(--primary));border-color:color-mix(in oklab,var(--card-primary, var(--primary)) 60%,transparent)}.theme-card.is-active{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary),0 18px 40px -20px var(--primary)}.theme-card.is-preview{outline:2px dashed var(--accent);outline-offset:3px}.theme-card-body{display:flex;flex-direction:column;gap:14px;padding:18px;flex:1}.theme-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.theme-card-head h3{color:var(--text);margin-bottom:6px;font-size:1.2rem}.mood{display:flex;flex-wrap:wrap;gap:4px}.swatch-row{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.swatch{display:flex;flex-direction:column;gap:4px;padding:0;background:none;border:0;color:var(--text);cursor:copy;font:inherit;text-align:left}.swatch-color{height:40px;border-radius:8px;box-shadow:inset 0 0 0 1px #ffffff1a;transition:transform .15s var(--ease)}.swatch:hover .swatch-color{transform:scale(1.06)}.swatch-label{font-size:.66rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.swatch code{font-size:.7rem;color:var(--text-soft)}.contrast-row{display:flex;flex-wrap:wrap;gap:6px}.contrast{display:inline-flex;align-items:center;gap:6px;font-size:.74rem;padding:3px 8px 3px 3px;border-radius:999px;background:var(--bg-2);border:1px solid var(--border);color:var(--muted)}.contrast strong{color:var(--text)}.contrast-sample{display:grid;place-items:center;width:24px;height:20px;border-radius:999px;font-size:.66rem;font-weight:800}.contrast-ok{border-color:color-mix(in oklab,var(--success) 40%,transparent)}.contrast-mid{border-color:var(--accent-line)}.contrast-low{border-color:color-mix(in oklab,var(--danger) 50%,transparent)}.theme-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto}.copy-menu{position:relative}.copy-dropdown{position:absolute;bottom:calc(100% + 6px);left:0;z-index:5;min-width:200px;padding:6px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow);animation:pop-in .14s var(--ease)}.copy-dropdown button{display:block;width:100%;text-align:left;padding:8px 10px;background:none;border:0;border-radius:6px;color:var(--text);font:inherit;font-size:.86rem;cursor:pointer}.copy-dropdown button:hover{background:var(--panel-2)}.light-card{border-style:dashed}.mock{display:flex;flex-direction:column;height:176px;font-family:var(--font-body);transition:background .3s}.mock-bar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid}.mock-logo{font-size:1.1rem;line-height:1}.mock-line{height:6px;border-radius:3px}.mock-pill{margin-left:auto;width:34px;height:14px;border-radius:999px}.mock-body{display:flex;flex-direction:column;gap:12px;padding:16px 14px;flex:1;justify-content:center}.mock-card{display:flex;align-items:center;gap:12px;padding:12px;border-radius:10px;border:1px solid}.mock-portrait{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;border:2px solid;font:700 .95rem var(--font-display);flex:none}.mock-text{flex:1;min-width:0}.mock-title{font:700 .95rem var(--font-display)}.mock-sub{font-size:.72rem}.mock-stat{display:flex;flex-direction:column;align-items:center;padding:4px 10px;border:1px solid;border-radius:8px;font:700 1rem/1.1 var(--font-display)}.mock-stat small{font:700 .55rem var(--font-body);letter-spacing:.08em;opacity:.8}.mock-row{display:flex;align-items:center;gap:8px}.mock-btn{padding:6px 14px;border-radius:7px;font-size:.76rem;font-weight:700}.mock-chip{padding:3px 10px;border-radius:999px;font-size:.72rem;border:1px solid}.mock-light{filter:saturate(1.2)}.hint{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;margin-bottom:16px;background:linear-gradient(90deg,var(--primary-soft),transparent 80%),var(--surface);border:1px solid var(--primary-line);border-left-width:3px;border-radius:var(--radius-sm);animation:fade-in .25s}.hint-icon{font-size:1.25rem;line-height:1.3}.hint-body{flex:1;min-width:0;font-size:.9rem;color:var(--text-soft)}.hint-body p{margin:0 0 .4em}.hint-body p:last-child{margin:0}.hint-title{display:block;color:var(--text);margin-bottom:2px}.hint-close{flex:none;background:none;border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:3px 10px;font:600 .75rem var(--font-body);cursor:pointer}.hint-close:hover{color:var(--text);border-color:var(--primary-line)}.tip{position:relative;display:inline-grid;place-items:center;width:16px;height:16px;margin-left:5px;border-radius:50%;font:800 .66rem/1 var(--font-body);color:var(--primary-fg);background:var(--primary-soft);cursor:help;vertical-align:1px;text-transform:none;letter-spacing:0}.tip-bubble{position:fixed;z-index:300;padding:8px 11px;border-radius:8px;background:var(--text);color:var(--bg);font:500 .8rem/1.45 var(--font-body);text-align:left;text-transform:none;letter-spacing:0;box-shadow:var(--shadow);pointer-events:none;animation:fade-in .12s}.tip-bubble.above{transform:translateY(-100%)}.tip-bubble:after{content:"";position:absolute;left:var(--arrow);margin-left:-5px;border:5px solid transparent}.tip-bubble.above:after{top:100%;border-top-color:var(--text)}.tip-bubble.below:after{bottom:100%;border-bottom-color:var(--text)}.stat-label .tip{margin-left:3px}.help-toggle{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 12px;border-radius:var(--radius-sm);border:1px dashed var(--border-strong);background:transparent;color:var(--muted);font:600 .84rem var(--font-body);cursor:pointer}.help-toggle.on{color:var(--text);border-style:solid;border-color:var(--primary-line);background:var(--primary-soft)}.onboarding-steps{margin:6px 0 0;padding-left:1.2rem;display:grid;gap:4px}.onboarding-steps span{color:var(--muted)}.tpl-textarea{position:relative}.tpl-textarea textarea{padding-right:104px}.tpl-menu{position:absolute;top:6px;right:6px}.tpl-trigger{padding:3px 9px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--muted);font:600 .74rem var(--font-body);cursor:pointer}.tpl-trigger:hover,.tpl-trigger[aria-expanded=true]{color:var(--text);border-color:var(--primary-line)}.tpl-dropdown{position:absolute;right:0;top:calc(100% + 6px);z-index:30;width:320px;padding:6px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow);animation:pop-in .14s var(--ease)}.tpl-head,.tpl-foot{font-size:.72rem;color:var(--muted);padding:6px 8px}.tpl-head{font-weight:700;text-transform:uppercase;letter-spacing:.08em}.tpl-foot{border-top:1px solid var(--border);margin-top:4px}.tpl-dropdown button{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:8px;border:0;border-radius:6px;background:none;color:var(--text);font:inherit;cursor:pointer}.tpl-dropdown button:hover{background:var(--primary-soft)}.tpl-dropdown button strong{font-size:.86rem}.tpl-dropdown button span{font-size:.76rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.playset-card{display:flex;flex-direction:column;gap:10px;transition:transform .18s var(--ease),border-color .2s,box-shadow .2s}.playset-card:hover{transform:translateY(-3px);border-color:var(--primary-line);box-shadow:var(--shadow)}.playset-card-head{display:flex;gap:12px;align-items:flex-start}.playset-icon{display:grid;place-items:center;width:42px;height:42px;flex:none;border-radius:12px;background:var(--accent-soft);border:1px solid var(--accent-line);font-size:1.3rem}.playset-card-title{flex:1;min-width:0}.playset-card-title h3{color:var(--text);margin:0 0 2px}.playset-card-title a:hover h3{color:var(--primary-fg)}.playset-desc{color:var(--text-soft);font-size:.9rem;margin:0;flex:1}.playset-meta{margin-top:-4px}.playset-hero{margin:14px 0 16px}.playset-view-grid{display:grid;grid-template-columns:2fr 1fr;gap:16px}.playset-chip,.char-playset{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;font-weight:600;padding:2px 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent-fg);border:1px solid var(--accent-line);margin:4px 0}.char-playset{position:absolute;left:96px;bottom:8px;z-index:1;max-width:calc(100% - 110px);background:#00000059;color:#fff;border-color:transparent;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dm-callout{display:flex;align-items:center;gap:16px;padding:18px;border:1px dashed var(--accent-line);border-radius:var(--radius);background:var(--accent-soft);flex-wrap:wrap}.dm-callout>div{flex:1;min-width:200px}.dm-callout p{margin:2px 0 0}.dm-callout-icon{font-size:1.8rem}.step-card{display:flex;flex-direction:column;gap:4px}.step-card-head{display:flex;align-items:center;gap:12px;margin-bottom:10px}.step-card-head h2{margin:0}.step-badge{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--primary);color:var(--primary-ink);font:700 .9rem var(--font-display);box-shadow:0 0 14px var(--glow)}.segmented{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius)}.segmented button{display:flex;flex-direction:column;gap:2px;padding:9px 10px;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:var(--muted);font:600 .88rem var(--font-body);text-align:left;cursor:pointer;transition:all .15s}.segmented button small{font-weight:400;font-size:.74rem}.segmented button:hover{color:var(--text)}.segmented button.active{background:var(--surface);color:var(--text);border-color:var(--primary-line);box-shadow:var(--shadow-sm)}.switch-row{display:flex;gap:12px;align-items:flex-start;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;margin:6px 0 10px}.switch-row>span{display:flex;flex-direction:column;gap:2px}.switch-row input{margin-top:3px}.source-groups{display:flex;flex-direction:column;gap:8px;margin-top:10px}.source-group{border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 12px}.source-group[open]{padding-bottom:12px}.source-group summary{display:flex;align-items:center;gap:10px;padding:10px 0;cursor:pointer;list-style:none}.source-group summary::-webkit-details-marker{display:none}.source-group summary:before{content:"▸";color:var(--muted);transition:transform .15s}.source-group[open] summary:before{transform:rotate(90deg)}.source-group-name{font-weight:700}.source-group-count{font-size:.76rem;color:var(--muted);padding:1px 8px;border-radius:999px;background:var(--bg-2)}.source-group-count.on{color:var(--primary-fg);background:var(--primary-soft)}.source-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px;margin-top:6px}.source-tile{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2);cursor:pointer;transition:all .12s}.source-tile:hover{border-color:var(--border-strong)}.source-tile.on{border-color:var(--primary-line);background:var(--primary-soft)}.source-abbr{display:grid;place-items:center;min-width:40px;height:28px;padding:0 5px;border-radius:6px;background:var(--panel-3);font:700 .7rem var(--font-body);letter-spacing:.04em}.source-tile.on .source-abbr{background:var(--primary);color:var(--primary-ink)}.source-text{display:flex;flex-direction:column;min-width:0;line-height:1.3}.source-text strong{font-size:.86rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-filters{display:grid;grid-template-columns:1fr 220px auto;gap:8px;align-items:center;margin-bottom:8px}.picker-bulk{margin-bottom:8px}.picker-list{list-style:none;padding:0;margin:0 0 10px;max-height:520px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--radius-sm)}.picker-row{display:flex;align-items:center;gap:10px;padding:7px 12px;border-bottom:1px solid var(--border);cursor:pointer;font-size:.9rem}.picker-list li:last-child .picker-row{border-bottom:0}.picker-row:hover{background:var(--panel-2)}.picker-row.on{background:color-mix(in oklab,var(--primary) 7%,transparent)}.picker-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.summary-counts{list-style:none;padding:0;margin:0 0 14px}.summary-counts li{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border)}.summary-counts strong{color:var(--accent-fg);font-family:var(--font-display)}.playset-summary{display:flex;flex-direction:column;gap:10px}.src-abbr{font-size:.64rem;font-weight:700;letter-spacing:.03em;padding:1px 5px;border-radius:4px;background:var(--panel-3);color:var(--muted)}.source-filter{margin-bottom:10px;font-size:.85rem;padding:7px 10px}.import-grid{display:grid;gap:12px}.import-card h3{color:var(--text);margin:6px 0 2px}.import-files{margin-top:12px;display:flex;flex-direction:column;gap:8px}.import-file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));border:1px solid var(--border);border-radius:var(--radius-sm);max-height:360px;overflow-y:auto}.job{padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);display:flex;flex-direction:column;gap:6px}.job-running{border-color:var(--accent-line)}.job-failed{border-color:color-mix(in oklab,var(--danger) 45%,transparent)}.progress{height:8px;border-radius:999px;background:var(--bg-2);overflow:hidden}.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));transition:width .4s var(--ease)}.preview-bar{position:fixed;left:50%;bottom:20px;transform:translate(-50%);z-index:90;display:flex;align-items:center;gap:12px;padding:10px 12px 10px 18px;background:var(--surface);border:1px solid var(--primary-line);border-radius:999px;box-shadow:var(--shadow),0 0 30px -10px var(--primary);animation:toast-in .2s var(--ease)}.toast{position:fixed;left:50%;top:76px;transform:translate(-50%);z-index:120;padding:10px 18px;border-radius:999px;font-weight:600;font-size:.9rem;background:var(--text);color:var(--bg);box-shadow:var(--shadow);animation:toast-in .25s var(--ease)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-10px)}}.rr-flash{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;background:radial-gradient(circle at 50% 40%,#fff,#fff9db 55%,#fde68a);color:#18181b;font-family:var(--font-body);text-align:center;padding:24px;animation:blind .5s ease-out}@keyframes blind{0%{filter:brightness(3);opacity:.2}}.rr-sun{font-size:5rem;animation:spin 3s linear infinite;filter:drop-shadow(0 0 30px #FACC15)}.rr-flash-title{font:700 1.8rem var(--font-display)}.rr-flash-sub{color:#52525b;font-size:.95rem}.rr-bar{width:min(360px,80vw);height:10px;border-radius:999px;background:#e4e4e7;overflow:hidden}.rr-bar span{display:block;height:100%;background:linear-gradient(90deg,#facc15,#f97316);animation:load 2.1s ease-in forwards}@keyframes load{0%{width:0}70%{width:93%}to{width:99%}}.rr-backdrop{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:20px;background:color-mix(in oklab,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:fade-in .3s;overflow-y:auto}.rr-card{position:relative;width:min(720px,100%);padding:28px;text-align:center;background:var(--surface);border:1px solid var(--primary-line);border-radius:var(--radius-lg);box-shadow:0 30px 80px -20px var(--primary);animation:pop-in .35s var(--ease)}.rr-card h2{font-size:clamp(1.4rem,4vw,2rem);color:var(--text);margin-bottom:6px}.rr-lead{font-size:1.1rem;color:var(--text-soft)}.rr-lead strong{color:var(--accent-fg)}.rr-video{position:relative;aspect-ratio:16 / 9;margin:18px 0;border-radius:var(--radius);overflow:hidden;background:#000;box-shadow:0 0 0 1px var(--border-strong)}.rr-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.rr-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:12px}.rr-notes{position:absolute;inset:0;pointer-events:none;overflow:hidden;border-radius:inherit}.rr-notes span{position:absolute;bottom:-30px;font-size:1.6rem;color:var(--accent-fg);opacity:.7;animation:float-up 4s linear infinite}.rr-notes span:nth-child(1){left:6%}.rr-notes span:nth-child(2){left:22%;animation-delay:1s}.rr-notes span:nth-child(3){right:20%;animation-delay:2s}.rr-notes span:nth-child(4){right:5%;animation-delay:3s}@keyframes float-up{to{transform:translateY(-560px) rotate(25deg);opacity:0}}.sheet-page{background:#ece7da;min-height:100vh;color:#1d1a14;padding-bottom:40px}.sheet-toolbar{position:sticky;top:0;z-index:10;display:flex;gap:10px;padding:10px 20px;background:var(--bg);border-bottom:1px solid var(--border)}.sheet{--ink: #1D1A14;--line: #B9AE96;--paper: #FBF8F0;--sheet-accent: color-mix(in oklab, var(--primary) 70%, #1D1A14);max-width:1100px;margin:20px auto;padding:28px;background:var(--paper);box-shadow:0 6px 30px #00000040;border-radius:4px;font-size:13px}.sheet .muted{color:#6f6655}.sheet h1,.sheet h2,.sheet h3{color:var(--sheet-accent)}.sheet h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;text-align:center;margin-bottom:8px}.sheet-header{display:flex;gap:18px;align-items:center;border-bottom:2px solid var(--sheet-accent);padding-bottom:14px;margin-bottom:16px}.sheet-portrait{width:86px;height:86px;object-fit:cover;border-radius:50%;border:2px solid var(--sheet-accent)}.sheet-name h1{margin:0;font-size:1.8rem}.sheet-meta{flex:1;display:grid;grid-template-columns:repeat(3,1fr);gap:6px 16px;margin:0}.sheet-meta dt{font-size:.65rem;text-transform:uppercase;letter-spacing:.06em;color:#6f6655}.sheet-meta dd{margin:0;font-weight:600;border-bottom:1px solid var(--line)}.sheet-grid{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:14px}.sheet-col{display:flex;flex-direction:column;gap:12px}.sheet-box{border:1.5px solid var(--line);border-radius:8px;padding:10px 12px}.sheet-line{display:flex;justify-content:space-between;gap:8px;padding:2px 0;border-bottom:1px dotted #D8CFBB}.sheet-line:last-child{border-bottom:0}.sheet .prof-dot{border-color:#6f6655}.sheet .prof-dot.on{background:var(--sheet-accent);border-color:var(--sheet-accent)}.sheet .prof-dot.expert{background:#b3862f;border-color:var(--sheet-accent);box-shadow:none}.sheet-abilities{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.sheet-ability{border:1.5px solid var(--line);border-radius:8px;text-align:center;padding:6px 4px 8px}.sheet-ability .label{font-size:.6rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700}.sheet-ability .mod{font:700 1.6rem var(--font-display);color:var(--ink)}.sheet-ability .score{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:0 10px;font-weight:700}.sheet-vitals{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.vital{border:1.5px solid var(--line);border-radius:8px;text-align:center;padding:8px 4px}.vital.wide{grid-column:span 2}.vital .v{font:700 1.5rem var(--font-display)}.vital .v.small-v{font-size:1rem;padding:5px 0}.vital .l{font-size:.6rem;text-transform:uppercase;letter-spacing:.06em;color:#6f6655}.sheet .table th{color:#6f6655;border-bottom-color:var(--line)}.sheet .table td{border-bottom-color:#e2d9c5}.sheet .table tbody tr:hover{background:none}.sheet-feature{padding:4px 0;border-bottom:1px dotted #D8CFBB}.sheet-feature:last-child{border-bottom:0}.sheet p.small{margin:0 0 4px}.sheet-section{margin-top:20px}.sheet-section h2{border-bottom:2px solid var(--sheet-accent);padding-bottom:4px}.sheet-spell-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:10px}.sheet .slot{background:transparent;border-color:var(--line)}.sheet .slot-level{color:#6f6655}.sheet .slot-pips span{border-color:var(--sheet-accent)}.sheet .prose{color:var(--ink)}@media print{@page{margin:10mm}body{background:#fff}.no-print,.preview-bar,.toast{display:none!important}.sheet-page{background:#fff;padding:0}.sheet{box-shadow:none;margin:0;max-width:none;padding:0;background:#fff}.page-break{break-before:page}.sheet-box,.sheet-feature,.spells-table tr{break-inside:avoid}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(max-width:1280px){.builder{grid-template-columns:210px minmax(0,1fr)}.builder-summary{grid-column:1 / -1;position:static;max-height:none;order:-1;display:grid;grid-template-columns:auto 1fr 1fr;align-items:start}.builder-summary .todo{grid-column:1 / -1}.theme-trigger-label{display:none}}@media(max-width:900px){.topbar{flex-wrap:wrap;padding:10px 16px;gap:10px}.topbar-tools{margin-left:auto;order:1}.icon-btn.menu-toggle{display:inline-grid}.topbar nav{order:2;display:none;flex-basis:100%;flex-direction:column;align-items:stretch}.topbar nav.open{display:flex}.nav-spacer{display:none}.theme-menu,.theme-menu.up,.theme-menu.align-left{position:fixed;inset:60px 12px auto;width:auto;max-height:calc(100vh - 72px)!important}.builder{grid-template-columns:minmax(0,1fr);padding:12px}.builder>*{min-width:0}.builder-summary{order:2;grid-template-columns:1fr}.builder-steps{position:static}.builder-steps nav{flex-direction:row;overflow-x:auto}.step{white-space:nowrap}.builder-links{flex-direction:row}.browser{grid-template-columns:1fr}.browser-list{max-height:320px}.grid-2,.detail-layout,.editor-layout{grid-template-columns:1fr}.editor-preview{position:static}.sheet-grid{grid-template-columns:1fr}.sheet-meta{grid-template-columns:repeat(2,1fr)}.coins{grid-template-columns:repeat(3,1fr)}.page{padding:20px 16px 48px}.market-filters{flex-direction:column}.market-filters select{width:100%}.table{display:block;overflow-x:auto}.theme-grid{grid-template-columns:1fr}.preview-bar{left:12px;right:12px;transform:none;border-radius:var(--radius);flex-wrap:wrap;animation:none}.dash-hero{padding:20px}.playset-view-grid,.picker-filters,.segmented{grid-template-columns:1fr}.tpl-dropdown{width:min(320px,calc(100vw - 48px))}}.badge-pending{background:color-mix(in oklab,var(--accent) 18%,transparent);color:var(--accent-fg)}.badge-banned{background:color-mix(in oklab,var(--danger) 18%,transparent);color:var(--danger-fg)}.badge-translated{background:color-mix(in oklab,#3b82f6 16%,transparent);color:#a6c6ff;text-transform:none;letter-spacing:0}.tr-done{color:var(--success-fg)}.tr-manual{color:var(--accent-fg)}.tr-failed{color:var(--danger-fg)}.admin-stats{margin:0 0 12px}.mod-log{list-style:none;padding:0;margin:0;border:1px solid var(--border);border-radius:var(--radius-sm)}.mod-log li{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline;padding:9px 12px;border-bottom:1px solid var(--border)}.mod-log li:last-child{border-bottom:0}.admin-users td{vertical-align:top}.row-banned{background:color-mix(in oklab,var(--danger) 6%,transparent)}.row-expired{opacity:.5}.ip-row td{background:var(--bg-2)}.ip-list{display:flex;flex-wrap:wrap;gap:6px}.ip-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border:1px solid var(--border);border-radius:999px;font-size:.8rem}.ip-chip.banned{border-color:color-mix(in oklab,var(--danger) 50%,transparent);color:var(--danger-fg)}.big-progress{height:12px;margin:12px 0 6px}.tr-pair{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:10px 0;border-bottom:1px solid var(--border)}.tr-original{max-height:260px;overflow-y:auto;padding:8px 10px;background:var(--bg-2);border-radius:var(--radius-sm);margin-top:6px}.picker-row.as-button{width:100%;background:none;border:0;border-bottom:1px solid var(--border);color:var(--text);font:inherit;text-align:left}.monster-token{width:96px;height:96px;border-radius:50%;object-fit:cover;border:3px solid var(--accent);float:right;margin:0 0 10px 14px}.monster-abilities{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin:0 0 14px}.monster-abilities div{display:flex;flex-direction:column;align-items:center;padding:6px 2px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm)}.monster-abilities span{font-size:.68rem;font-weight:700;color:var(--muted)}.monster-abilities small{color:var(--muted)}.token-upload{display:flex;gap:16px;align-items:center;margin-bottom:14px}.token-upload label.btn{cursor:pointer;align-self:flex-start}.join-card h3{margin-bottom:10px}.join-grid{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:end}.join-grid .field{margin:0}.levelup-banner{display:flex;flex-wrap:wrap;gap:6px;align-items:center;width:100%;text-align:left;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--accent-line);background:linear-gradient(90deg,var(--accent-soft),transparent),var(--surface);color:var(--text);font:inherit;cursor:pointer;animation:glow-pulse 2.4s ease-in-out infinite}.levelup-banner.static{cursor:default;animation:none;font-size:.88rem}.levelup-banner span{color:var(--muted);font-size:.85rem}@keyframes glow-pulse{50%{box-shadow:0 0 0 3px var(--accent-soft)}}.vtt{position:fixed;inset:0;display:flex;flex-direction:column;background:var(--bg)}.vtt-message{min-height:100vh;display:flex;flex-direction:column;gap:16px;align-items:center;justify-content:center;text-align:center;padding:20px}.vtt-message.small-msg{min-height:0;height:100%;color:var(--muted)}.vtt-bar{position:relative;display:flex;align-items:center;gap:12px;padding:8px 14px;border-bottom:1px solid var(--border);background:var(--surface);z-index:20}.vtt-title{display:flex;flex-direction:column;line-height:1.2;min-width:0}.vtt-title strong{font-family:var(--font-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}.vtt-map-tabs{display:flex;gap:4px;overflow-x:auto;max-width:40vw}.vtt-map-tabs button{padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:var(--bg-2);color:var(--muted);font:600 .8rem var(--font-body);cursor:pointer;white-space:nowrap}.vtt-map-tabs button.active{background:var(--primary);color:var(--primary-ink);border-color:var(--primary)}.vtt-map-name{font-size:.85rem;color:var(--muted)}.vtt-round{font:700 .85rem var(--font-display);padding:4px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent-fg)}.vtt-online{display:flex}.vtt-online .avatar{display:grid;place-items:center;width:26px;height:26px;margin-left:-6px;border-radius:50%;background:var(--primary);color:var(--primary-ink);font:700 .75rem var(--font-body);border:2px solid var(--surface)}.conn{width:10px;height:10px;border-radius:50%;background:var(--accent)}.conn-online{background:var(--success);box-shadow:0 0 8px var(--success)}.conn-offline{background:var(--danger)}.vtt-main{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 360px;min-height:0}.vtt-stage{position:relative;overflow:hidden;min-width:0}.vtt-side{position:relative;z-index:6;isolation:isolate;display:flex;flex-direction:column;min-height:0;min-width:0;border-left:1px solid var(--border);background:var(--surface)}.vtt-side .tabs{margin:0;padding:0 8px;flex:none}.vtt-side .tab{padding:10px 8px;font-size:.82rem}.vtt-side-body{flex:1;overflow-y:auto;overflow-x:hidden;padding:12px;contain:paint}.vtt-viewport{position:absolute;inset:0;overflow:hidden;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:radial-gradient(circle at 50% 50%,color-mix(in oklab,var(--surface) 70%,var(--bg)),var(--bg))}.vtt-viewport:active{cursor:grabbing}.vtt-world{position:absolute;left:0;top:0;transform-origin:0 0;box-shadow:0 20px 80px #0009}.vtt-map-image{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none}.vtt-map-blank{position:absolute;inset:0;background:linear-gradient(135deg,#3a3326,#2a251c)}.vtt-grid{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(to right,rgb(0 0 0 / .35) 1px,transparent 1px),linear-gradient(to bottom,rgb(0 0 0 / .35) 1px,transparent 1px)}.vtt-range{position:absolute;pointer-events:none;border:2px dashed color-mix(in oklab,var(--success) 70%,transparent);background:color-mix(in oklab,var(--success) 12%,transparent);border-radius:6px}.vtt-token{position:absolute;transition:left .18s var(--ease),top .18s var(--ease);z-index:2}.vtt-viewport.dragging .vtt-token{transition:none}.vtt-token.movable{cursor:grab}.vtt-token-face{position:absolute;inset:5%;border-radius:50%;overflow:hidden;display:grid;place-items:center;background:color-mix(in oklab,var(--token-color) 70%,#000);border:3px solid var(--token-color);box-shadow:0 4px 14px #0000008c;color:#fff;font:700 1.4rem var(--font-display)}.vtt-token-face img{width:100%;height:100%;object-fit:cover;pointer-events:none}.vtt-token.kind-character .vtt-token-face{border-color:var(--success)}.vtt-token.own .vtt-token-face{border-color:var(--accent)}.vtt-token.selected .vtt-token-face{outline:3px solid var(--text);outline-offset:2px}.vtt-token.hidden-token{opacity:.45}.vtt-hp{position:absolute;left:12%;right:12%;bottom:-2px;height:6px;border-radius:3px;background:#0009;overflow:hidden}.vtt-hp span{display:block;height:100%}.vtt-token-name{position:absolute;left:50%;top:100%;transform:translate(-50%);margin-top:4px;padding:1px 7px;border-radius:999px;background:#000000b3;color:#fff;font:600 11px var(--font-body);white-space:nowrap;pointer-events:none}.vtt-distance{position:absolute;transform:translate(-50%,-100%) scale(var(--inv, 1));transform-origin:bottom center;padding:3px 10px;border-radius:999px;background:var(--success);color:#062;font:700 13px var(--font-body);z-index:5;pointer-events:none;white-space:nowrap}.vtt-distance.too-far{background:var(--danger);color:#fff}.vtt-ping{position:absolute;width:0;height:0;z-index:6;pointer-events:none}.vtt-ping:before,.vtt-ping:after{content:"";position:absolute;left:-30px;top:-30px;width:60px;height:60px;border-radius:50%;border:4px solid var(--accent);transform:scale(calc(var(--inv, 1) * .2));animation:ping 1.3s ease-out 2}.vtt-ping:after{animation-delay:.3s}.vtt-ping-label{position:absolute;left:0;top:18px;transform:translate(-50%) scale(var(--inv, 1));transform-origin:top center;padding:1px 8px;border-radius:999px;background:var(--accent);color:var(--accent-ink);font:700 12px var(--font-body);white-space:nowrap}@keyframes ping{to{transform:scale(calc(var(--inv, 1) * 1.6));opacity:0}}.vtt-zoom{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:4px;z-index:4}.vtt-zoom button{width:36px;height:36px;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:1.1rem;cursor:pointer}.vtt-zoom button:hover{border-color:var(--primary)}.vtt-overlay-hints{position:absolute;left:12px;top:12px;max-width:420px;z-index:4}.vtt-paused{position:absolute;left:50%;top:14px;transform:translate(-50%);z-index:6;display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 22px;border-radius:var(--radius);background:color-mix(in oklab,var(--bg) 85%,transparent);border:1px solid var(--accent-line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);text-align:center}.vtt-paused strong{font:700 1.2rem var(--font-display);color:var(--accent-fg)}.vtt-paused span{font-size:.82rem;color:var(--muted)}.vtt.is-paused .vtt-world{filter:saturate(.55) brightness(.8);transition:filter .4s}.vtt-notice{position:absolute;left:50%;bottom:20px;transform:translate(-50%);z-index:8;padding:10px 18px;border-radius:999px;font-weight:600;font-size:.9rem;animation:toast-in .2s var(--ease)}.vtt-notice.error{background:var(--danger);color:#fff}.vtt-notice.info{background:var(--text);color:var(--bg)}.vtt-last-roll{position:absolute;left:12px;bottom:12px;z-index:5;width:300px;list-style:none;animation:roll-in 4s var(--ease) forwards;pointer-events:none}.vtt-last-roll .roll{box-shadow:var(--shadow)}@keyframes roll-in{0%{opacity:0;transform:translateY(12px)}8%,80%{opacity:1;transform:none}to{opacity:0}}.token-inspector{position:absolute;right:12px;top:12px;z-index:6;width:300px;padding:12px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px}.inspector-stats{display:flex;flex-wrap:wrap;gap:10px}.hp-controls input{width:64px;text-align:center;padding:5px}.inspector-actions{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--border);padding-top:8px;max-height:200px;overflow-y:auto}.handout{display:flex;flex-direction:column;gap:14px}.handout img{max-width:100%;max-height:70vh;object-fit:contain;border-radius:var(--radius-sm);align-self:center}.handout-text{font-size:1.02rem}.dice-panel{display:flex;flex-direction:column;gap:10px;height:100%}.dice-buttons{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.die-btn{position:relative;aspect-ratio:1;display:grid;place-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2);cursor:pointer;transition:transform .1s,border-color .15s}.die-btn:hover{border-color:var(--primary);transform:translateY(-2px)}.die-btn:active{transform:scale(.94)}.die{display:grid;place-items:center;width:30px;height:30px;font:800 .72rem var(--font-body);color:var(--primary-ink);background:var(--primary);clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}.die-d4{clip-path:polygon(50% 0,100% 100%,0 100%);padding-top:8px}.die-d6{clip-path:none;border-radius:5px}.die-d8{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.die-d10,.die-d100{clip-path:polygon(50% 0,100% 40%,82% 100%,18% 100%,0 40%)}.die-d12{clip-path:polygon(50% 0,95% 30%,80% 100%,20% 100%,5% 30%)}.die-d20{background:var(--accent);color:var(--accent-ink)}.die-d100{font-size:.6rem}.die-count{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;border-radius:999px;background:var(--text);color:var(--bg);font:800 .72rem/20px var(--font-body);text-align:center}.dice-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.dice-mod{display:flex;align-items:center;gap:6px;font-size:.82rem;color:var(--muted)}.dice-mod input{width:64px;padding:5px 8px}.segmented.mini{grid-template-columns:repeat(3,auto);padding:2px;gap:2px}.segmented.mini button{padding:4px 9px;font-size:.78rem}.dice-roll{flex:1}.roll-log{list-style:none;margin:0;padding:0;flex:1;min-height:160px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}.roll{padding:8px 10px;background:var(--bg-2);border:1px solid var(--border);border-radius:var(--radius-sm);animation:fade-in .2s}.roll.mine{border-left:3px solid var(--primary)}.roll.crit{border-color:var(--success);background:color-mix(in oklab,var(--success) 10%,var(--bg-2))}.roll.fumble{border-color:color-mix(in oklab,var(--danger) 60%,transparent)}.roll-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;font-size:.85rem}.roll-label{color:var(--accent-fg);font-weight:600}.roll-head .muted{margin-left:auto}.roll-body{display:flex;align-items:center;gap:8px;margin-top:4px}.roll-faces{display:flex;flex-wrap:wrap;gap:3px;flex:1}.face{min-width:24px;height:24px;padding:0 4px;display:grid;place-items:center;border-radius:5px;background:var(--panel-3);font:700 .78rem var(--font-body)}.face.dropped{opacity:.35;text-decoration:line-through}.face.nat20{background:var(--success);color:#032}.face.nat1{background:var(--danger);color:#fff}.mod{font-size:.8rem;color:var(--muted);align-self:center}.roll-total{font:700 1.5rem var(--font-display);color:var(--text);min-width:40px;text-align:right}.roll-flag{font-size:.78rem;color:var(--accent-fg);margin-top:2px}.char-panel{display:flex;flex-direction:column;gap:10px}.char-panel h4{margin:6px 0 0}.char-panel-head{display:flex;gap:10px;align-items:center}.char-panel-head .portrait{width:48px;height:48px;font-size:1.1rem}.vtt-abilities{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.vtt-ability{display:flex;flex-direction:column;gap:3px}.vtt-ability>button{display:flex;flex-direction:column;align-items:center;padding:6px 4px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2);color:var(--text);cursor:pointer;font:inherit}.vtt-ability>button:hover{border-color:var(--primary-line)}.vtt-ability>button span{font-size:.66rem;font-weight:700;color:var(--muted)}.vtt-ability>button strong{font:700 1.1rem var(--font-display)}.vtt-ability>button small{font-size:.7rem;color:var(--muted)}.vtt-ability .save{flex-direction:row;justify-content:center;padding:3px;font-size:.72rem}.vtt-ability .save.prof{border-color:var(--primary-line);color:var(--primary-fg)}.vtt-attacks li{display:flex;align-items:center;gap:6px;padding:4px 0}.vtt-attacks li span{flex:1}.vtt-attacks .chip{margin:0;padding:3px 9px}.vtt-skills{display:grid;grid-template-columns:1fr 1fr;gap:3px}.vtt-skills button{display:flex;justify-content:space-between;gap:4px;padding:4px 8px;border:1px solid transparent;border-radius:6px;background:none;color:var(--muted);font:.8rem var(--font-body);cursor:pointer;text-align:left}.vtt-skills button:hover{background:var(--panel-2);color:var(--text)}.vtt-skills button.prof{color:var(--text)}.compact-card{padding:12px;display:flex;flex-direction:column;gap:8px}.compact-card .field{margin-bottom:6px}.vtt-map-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.vtt-map-list li{display:flex;align-items:center;gap:6px}.vtt-map-list li>button:first-child{flex:1;display:flex;align-items:center;gap:10px;padding:6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2);color:var(--text);cursor:pointer;font:inherit;text-align:left}.vtt-map-list li.active>button:first-child{border-color:var(--primary);background:var(--primary-soft)}.vtt-map-thumb{position:relative;width:44px;height:32px;flex:none;overflow:hidden;border-radius:4px;background:#3a3326 center / cover}.vtt-map-thumb>img,.vtt-map-thumb>span{display:block;width:100%;height:100%;object-fit:cover}.vtt-map-list li>button:first-child{min-width:0;overflow:hidden}.vtt-map-list li>button:first-child>span:nth-child(2){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monster-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.monster-row{display:flex;align-items:center;gap:8px;padding:6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2)}.monster-avatar{display:grid;place-items:center;width:34px;height:34px;flex:none;border-radius:50%;overflow:hidden;background:color-mix(in oklab,var(--primary) 60%,#000);color:#fff;font-weight:700}.monster-avatar img{width:100%;height:100%;object-fit:cover}.monster-name{flex:1;min-width:0;display:flex;flex-direction:column;background:none;border:0;color:var(--text);text-align:left;cursor:pointer;font:inherit}.monster-name strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.monster-preview{padding:6px 10px}.monster-preview p{margin:0 0 4px}.handout-row{display:flex;align-items:center;gap:8px;padding:6px;border:1px solid var(--border);border-radius:var(--radius-sm)}.handout-row strong{flex:1}.invite-code{font:700 1.3rem var(--font-body);letter-spacing:.15em;color:var(--accent-fg)}.member-row{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--border);border-radius:var(--radius-sm);flex-wrap:wrap}.member-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:120px}.member-actions{display:flex;flex-wrap:wrap;gap:4px}.online-dot{width:10px;height:10px;border-radius:50%;background:var(--border-strong);flex:none}.online-dot.on{background:var(--success);box-shadow:0 0 6px var(--success)}@media(max-width:1000px){.vtt-main{grid-template-columns:1fr;grid-template-rows:1fr 45vh}.vtt-side{border-left:0;border-top:1px solid var(--border)}.vtt-bar{flex-wrap:wrap}.vtt-map-tabs{max-width:100%;order:5;flex-basis:100%}.token-inspector{inset:auto 12px 60px;width:auto}.vtt-overlay-hints{right:12px}.join-grid,.tr-pair{grid-template-columns:1fr}}.glossary-page .row input[type=search]{flex:1;min-width:220px}.glossary{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:10px;margin-top:16px}.glossary-entry{padding:12px 14px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border)}.glossary-entry dt{margin-bottom:4px}.glossary-entry dd{margin:0;color:var(--muted);line-height:1.5}.journal-search{width:100%;margin-bottom:6px}.workshop-head{max-width:none;margin:0 auto;padding:28px clamp(16px,3vw,48px) 8px;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}.workshop-head h1{margin:2px 0 0}.workshop-head p{max-width:520px;margin:0}.workshop-tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:thin;max-width:none;margin:0 auto;padding:8px clamp(16px,3vw,48px);background:color-mix(in oklab,var(--bg) 92%,transparent);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.workshop-tabs a{flex:none;padding:8px 14px;border-radius:999px;color:var(--muted);font-weight:600;white-space:nowrap;transition:background .15s,color .15s}.workshop-tabs a:hover{color:var(--text);background:var(--panel);text-decoration:none}.workshop-tabs a.active{color:var(--primary-ink);background:var(--primary)}.workshop-body>.page{padding-top:20px}.workshop-body>.page>.page-head h1{font-size:1.5rem}.workshop-filter{margin:12px 0}.workshop-filter input[type=search]{flex:1;min-width:220px}.badge-warn{background:color-mix(in oklab,#e8b44a 22%,transparent);color:var(--text)}.asset-grid,.tileset-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.tileset-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.asset-card,.tileset-card{display:flex;flex-direction:column;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);overflow:hidden;transition:transform .15s var(--ease),box-shadow .15s}.asset-card:hover,.tileset-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.asset-img{aspect-ratio:4 / 3;display:grid;place-items:center;padding:10px}.asset-img img{max-width:100%;max-height:100%;object-fit:contain}.checker{background:repeating-conic-gradient(color-mix(in oklab,var(--text) 8%,transparent) 0% 25%,transparent 0% 50%) 50% / 20px 20px}.admin-preview{aspect-ratio:auto;height:120px}.asset-body{display:flex;flex-direction:column;gap:6px;padding:12px}.asset-body p{margin:0}.asset-form{margin:12px 0;max-width:760px}.wide-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.tileset-demo{display:block;width:100%;height:auto}.demo-bg{fill:color-mix(in oklab,var(--bg) 70%,#6b6552)}.tile-maker-grid{display:grid;grid-template-columns:minmax(300px,1fr) minmax(360px,1.2fr) minmax(360px,1.4fr);gap:16px;align-items:start}@media(max-width:1300px){.tile-maker-grid{grid-template-columns:1fr 1fr}}@media(max-width:860px){.tile-maker-grid{grid-template-columns:1fr}}.sprite-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:6px}.sprite-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px;border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--border);text-align:center}.sprite-item.default{border-color:var(--primary)}.sprite-item code{font-size:.75rem}.sprite-preview{background:color-mix(in oklab,var(--bg) 70%,#6b6552);border-radius:4px}.rule-row{display:flex;gap:12px;align-items:flex-start;padding:8px;border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--border)}.rule-grid{display:grid;grid-template-columns:repeat(3,38px);grid-template-rows:repeat(3,38px);gap:3px;flex:none}.rule-cell{border:1px solid var(--border-strong);border-radius:5px;background:var(--surface);color:var(--text);font-weight:800;cursor:pointer;transition:background .12s,transform .1s}.rule-cell:active{transform:scale(.92)}.rule-cell.v1{background:color-mix(in oklab,var(--success) 30%,var(--surface))}.rule-cell.v2{background:color-mix(in oklab,var(--danger) 30%,var(--surface))}.rule-center{display:grid;place-items:center;border-radius:5px;outline:2px solid var(--primary)}.tile-test{width:100%;height:auto;touch-action:none;cursor:crosshair;border-radius:var(--radius-sm)}.test-grid{stroke:#0000002e;stroke-width:2;fill:none;pointer-events:none}.translation-layout{display:grid;grid-template-columns:minmax(280px,1fr) minmax(360px,1.4fr);gap:16px;align-items:start;margin-top:12px}@media(max-width:900px){.translation-layout{grid-template-columns:1fr}}.translation-list li .linkish{width:100%;text-align:left;padding:8px;border-radius:var(--radius-sm);background:none;border:0;color:var(--text);cursor:pointer;font:inherit}.translation-list li .linkish:hover,.translation-list li .linkish.active{background:var(--primary-soft)}.legal{max-width:860px;line-height:1.65}.legal h2{margin-top:28px;font-size:1.2rem}.legal h3{margin:16px 0 4px;font-size:1rem}.legal address{font-style:normal;padding:10px 14px;border-left:3px solid var(--primary);background:var(--surface);border-radius:var(--radius-sm)}.legal .placeholder{color:var(--danger-fg);font-weight:700}.ed-tag{display:inline-block;padding:1px 6px;border-radius:4px;font-size:.66rem;font-weight:800;letter-spacing:.04em;background:color-mix(in oklab,#4e8df5 22%,transparent);color:var(--text);border:1px solid color-mix(in oklab,#4e8df5 45%,transparent);white-space:nowrap}.edition-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.trait-search{display:flex;flex-direction:column;gap:6px;margin:6px 0}.trait-search input[type=search],.trait-search select{width:100%}.trait-search .row select{flex:1;min-width:0}.hb-library{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);gap:20px;align-items:start;margin-top:16px}@media(max-width:900px){.hb-library{grid-template-columns:1fr}}.hb-folders{position:sticky;top:76px;display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);max-height:calc(100vh - 96px);overflow-y:auto}.folder-tree{list-style:none;margin:0;padding:0}.folder-row{display:flex;align-items:center;gap:2px;padding-left:calc(var(--depth, 0) * 14px);border-radius:var(--radius-sm);border-left:3px solid var(--folder, transparent);transition:background .12s}.folder-row:hover,.folder-row.active{background:var(--primary-soft)}.folder-row.drop{background:color-mix(in oklab,var(--success) 22%,transparent);outline:2px dashed var(--success)}.folder-name{flex:1;min-width:0;display:flex;align-items:center;gap:6px;padding:6px;border:0;background:none;color:var(--text);font:inherit;text-align:left;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.folder-name .muted{margin-left:auto}.folder-actions{display:flex;opacity:0;transition:opacity .12s}.folder-row:hover .folder-actions,.folder-row:focus-within .folder-actions{opacity:1}.folder-actions .icon-btn{width:24px;height:24px;font-size:.75rem}.folder-form{padding-top:8px;border-top:1px solid var(--border)}.folder-chip{display:inline-block;align-self:flex-start;padding:1px 8px;border-radius:999px;border-left:3px solid var(--folder, var(--border-strong));background:var(--bg-2)}.hb-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.hb-filters input[type=search]{flex:1;min-width:220px}.hb-selection{position:sticky;top:64px;z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:8px 12px;margin:8px 0;border-radius:var(--radius);background:var(--surface);border:1px solid var(--primary-line);box-shadow:var(--shadow)}.hb-card{cursor:grab}.hb-card.selected{border-color:var(--primary);box-shadow:0 0 0 1px var(--primary)}.hb-check{display:inline-flex;align-items:center}.danger-zone{margin-top:12px;padding:12px;border-radius:var(--radius-sm);border:1px solid color-mix(in oklab,var(--danger) 50%,transparent);background:color-mix(in oklab,var(--danger) 7%,transparent);display:flex;flex-direction:column;gap:6px;align-items:flex-start}.danger-zone p{margin:0}.trash{margin-top:24px}.trash summary{cursor:pointer;font-weight:700}.trash-list li{padding:10px 0;border-bottom:1px solid var(--border)}.purge-box{margin-top:8px;padding:10px;border-radius:var(--radius-sm);background:color-mix(in oklab,var(--danger) 8%,transparent)}.account-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;align-items:start}.account-grid>.card{margin:0}.lang-switch{grid-template-columns:repeat(2,auto);width:max-content;max-width:100%}.hb-filters select{width:auto;flex:0 1 200px;min-width:150px}.hb-selection select{width:auto}.dice-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,400px);gap:18px;align-items:start}@media(max-width:1000px){.dice-layout{grid-template-columns:1fr}}.dice-preview{position:relative;aspect-ratio:2.1 / 1;border-radius:var(--radius-lg);overflow:hidden;background:#06060a;border:1px solid var(--border);box-shadow:var(--shadow)}.dice-preview canvas{width:100%;height:100%;display:block}.dice-stage-bar{margin:10px 0}.dice-stage-bar select{width:auto}.dice-render-card{margin-bottom:10px}.dice-render-card select{width:auto;max-width:100%}.dice-caps{line-height:1.5;overflow-wrap:anywhere}.dice-gpu{opacity:.8}.dice-texture-row{align-items:center}.dice-texture-thumb{width:64px;height:64px;object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);background:#111}.dice-upload{cursor:pointer;align-self:flex-start}.dice-custom-controls{position:sticky;top:76px;max-height:calc(100vh - 96px);overflow-y:auto;display:flex;flex-direction:column;gap:10px}.dice-presets{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.dice-set-swatch{position:relative;display:grid;place-items:center;min-height:58px;padding:6px 4px 18px;border-radius:var(--radius-sm);border:1px solid var(--border);cursor:pointer;overflow:hidden;color:var(--ink);background:radial-gradient(circle at 30% 25%,color-mix(in oklab,var(--c1) 70%,white),var(--c1) 45%,var(--c2));transition:transform .12s var(--ease),box-shadow .15s}.dice-set-swatch:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm)}.dice-set-swatch b{font:800 1.1rem var(--font-display);text-shadow:0 1px 2px rgb(0 0 0 / .5)}.dice-set-swatch small{position:absolute;left:0;right:0;bottom:2px;font-size:.62rem;color:#fff;text-shadow:0 1px 2px #000;text-align:center}.dice-sets li{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);flex-wrap:wrap}.dice-sets .dice-set-swatch{width:54px;min-height:48px;padding-bottom:6px}.dice-set-text{display:flex;flex-direction:column;flex:1;min-width:160px}.dice-colors{display:grid;grid-template-columns:1fr 1fr;gap:6px}.dice-color{display:flex;align-items:center;gap:6px}.dice-color input[type=color]{width:36px;height:28px;padding:0;border:0;background:none}.dice-slider{display:flex;flex-direction:column;gap:2px;margin:4px 0}.dice-slider span{display:flex;justify-content:space-between}.dice-custom-controls details summary{cursor:pointer}.resize-handle{position:relative;width:8px;flex:none;cursor:col-resize;touch-action:none;background:transparent;transition:background .15s var(--ease)}.resize-handle:before{content:"";position:absolute;inset:0 3px;border-radius:2px;background:var(--border);transition:background .15s,inset .15s}.resize-handle:hover:before,.resize-handle:focus-visible:before,body.is-resizing .resize-handle:before{inset:0 2px;background:var(--primary)}.resize-grip{position:absolute;left:50%;top:50%;width:4px;height:36px;transform:translate(-50%,-50%);border-radius:2px;background:repeating-linear-gradient(var(--muted) 0 3px,transparent 3px 6px);opacity:.55}body.is-resizing,body.is-resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}body.is-resizing iframe,body.is-dragging-window iframe{pointer-events:none}.vtt-main{grid-template-columns:minmax(0,1fr) 8px var(--side-width, 380px)}.vtt-main>.resize-handle{height:100%}.builder.resizable{grid-template-columns:var(--builder-left, 230px) 8px minmax(0,1fr) 8px var(--builder-right, 300px);gap:12px}.builder.resizable>.resize-handle{align-self:stretch;min-height:60vh}@media(max-width:1280px){.builder.resizable{grid-template-columns:var(--builder-left, 210px) 8px minmax(0,1fr)}.builder.resizable>.resize-handle:nth-of-type(2){display:none}}@media(max-width:900px){.builder.resizable{grid-template-columns:minmax(0,1fr)}.builder.resizable>.resize-handle{display:none}}@media(max-width:1000px){.vtt-main{grid-template-columns:1fr}.vtt-main>.resize-handle{display:none}}.vtt-side .tabs{overflow-x:auto;scrollbar-width:thin;flex-wrap:nowrap}.vtt-side .tab{white-space:nowrap}.vtt-side-body{animation:panel-in .28s var(--ease)}@keyframes panel-in{0%{opacity:0;transform:translate(10px)}}.vtt-mode{font:700 .82rem var(--font-display);padding:4px 12px;border-radius:999px;background:var(--primary-soft);color:var(--primary-fg);white-space:nowrap;transition:background .3s,color .3s}.vtt-mode.mode-combat{background:color-mix(in oklab,var(--danger) 22%,transparent);color:var(--danger-fg);animation:mode-pulse 2.4s ease-in-out infinite}@keyframes mode-pulse{50%{box-shadow:0 0 0 4px color-mix(in oklab,var(--danger) 18%,transparent)}}.vtt.mode-combat .vtt-bar{border-bottom-color:color-mix(in oklab,var(--danger) 45%,var(--border))}.vtt-map-blank.bg-stone{background:repeating-conic-gradient(from 45deg,#55524c 0 25%,#4d4a45 0 50%) 0 0 / 70px 70px}.vtt-map-blank.bg-wood{background:repeating-linear-gradient(90deg,#6b4a2f 0 34px,#5e4128 34px 36px,#744f33 36px 70px)}.vtt-map-blank.bg-grass{background:radial-gradient(circle at 20% 30%,#4b6d35 0 8%,transparent 9%) 0 0 / 90px 90px,radial-gradient(circle at 70% 60%,#35512a 0 6%,transparent 7%) 0 0 / 70px 70px,#3d5a2c}.vtt-map-blank.bg-cave{background:radial-gradient(ellipse at 30% 40%,#463d33,transparent 60%),radial-gradient(ellipse at 70% 70%,#2d2721,transparent 55%),#3a332b}.vtt-map-blank.bg-sand{background:radial-gradient(circle at 50% 50%,#c7b284 0 2px,transparent 3px) 0 0 / 22px 22px,#b8a276}.vtt-map-blank.bg-dungeon{background:repeating-linear-gradient(0deg,#2c2b30 0 2px,transparent 2px 35px),repeating-linear-gradient(90deg,#2c2b30 0 2px,transparent 2px 70px),#35343a}.vtt-map-blank.bg-snow{background:radial-gradient(circle at 30% 30%,#fff 0 2px,transparent 3px) 0 0 / 40px 40px,#d9dee6}.vtt-map-blank.bg-plain{background:#4a4a4a}.vtt-world{animation:world-in .35s var(--ease)}@keyframes world-in{0%{opacity:0;filter:blur(3px)}}.vtt-object{position:absolute;z-index:1;transition:left .15s var(--ease),top .15s var(--ease)}.vtt-object svg{width:100%;height:100%;display:block;filter:drop-shadow(0 3px 4px rgb(0 0 0 / .45))}.vtt-object.dm-only{opacity:.55;outline:2px dashed var(--accent);outline-offset:2px}.vtt-object.selected{outline:2px solid var(--primary);outline-offset:3px}.vtt-viewport.editing.tool-select .vtt-object{cursor:move}.vtt-viewport.editing.tool-erase .vtt-object:hover{outline:2px solid var(--danger)}.vtt-object-label{position:absolute;left:50%;bottom:-18px;transform:translate(-50%);padding:0 6px;border-radius:4px;background:#000000b3;color:#fff;font:600 10px var(--font-body);white-space:nowrap}.art-flame{transform-origin:50% 70%;animation:flame .9s ease-in-out infinite alternate}.art-flame.delay{animation-delay:-.4s}.art-glow{animation:flame-glow 1.6s ease-in-out infinite alternate;transform-origin:center}.art-wave{animation:wave 3s ease-in-out infinite}.art-wave.delay{animation-delay:-1.5s}@keyframes flame{to{transform:scale(1.08,.92) skew(3deg)}}@keyframes flame-glow{to{opacity:.45;transform:scale(1.1)}}@keyframes wave{50%{transform:translate(4px)}}.vtt-walls,.vtt-fog,.vtt-darkness,.vtt-light-glow{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}.vtt-walls{z-index:3}.wall{stroke-linecap:round;stroke-width:6;stroke:#f4f1ea;opacity:.85}.wall-door{stroke:#c89b3c;stroke-width:8}.wall-door.open{stroke-dasharray:6 10;opacity:.6}.wall-door.locked{stroke:#e5484d}.wall-window{stroke:#7fb4dd;stroke-dasharray:10 6}.wall.subtle{opacity:0}.wall.preview{opacity:.6;stroke-dasharray:8 8;animation:dash .8s linear infinite}@keyframes dash{to{stroke-dashoffset:-32}}.snap-dot{fill:var(--accent);stroke:#000;stroke-width:1.5}.vtt-viewport.editing:not(.tool-select){cursor:crosshair}.vtt-door{position:absolute;z-index:4;width:30px;height:30px;margin:-15px 0 0 -15px;padding:0;display:grid;place-items:center;border-radius:50%;border:2px solid #c89b3c;background:#14100ad9;font-size:15px;cursor:pointer;transform:scale(var(--inv, 1));transition:transform .15s var(--ease),background .2s}.vtt-door:hover{transform:scale(calc(var(--inv, 1) * 1.15));background:#3a2c15}.vtt-door.open{border-color:var(--success);opacity:.8}.vtt-door.locked{border-color:#e5484d}.vtt-fog{z-index:5}.vtt-fog.fog-preview{opacity:.55}.vtt-fog-grey{mix-blend-mode:saturation;z-index:4}.vtt-fog polygon,.vtt-darkness polygon{transition:none}.vtt-darkness{z-index:5}.vtt-darkness rect{transition:opacity .6s var(--ease)}.vtt-light-glow{z-index:1;mix-blend-mode:screen}.anim-flicker{animation:light-flicker 2.3s steps(1) infinite,light-sway .18s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}.anim-pulse{animation:light-pulse 3s ease-in-out infinite;transform-box:fill-box;transform-origin:center}@keyframes light-flicker{0%,to{opacity:1}12%{opacity:.9}23%{opacity:1}47%{opacity:.86}60%{opacity:.97}81%{opacity:.9}}@keyframes light-sway{to{transform:scale(1.012)}}@keyframes light-pulse{50%{opacity:.75;transform:scale(.97)}}.vtt-light-handle{position:absolute;z-index:7;width:30px;height:30px;margin:-15px 0 0 -15px;padding:0;display:grid;place-items:center;border-radius:50%;border:2px solid var(--light, #ffc46b);background:#000000a6;cursor:grab;box-shadow:0 0 14px var(--light, #ffc46b);transform:scale(var(--inv, 1));font-size:14px}.vtt-light-handle.selected{outline:3px solid var(--primary);outline-offset:2px}.vtt-light-handle.off{box-shadow:none;opacity:.5;filter:grayscale(1)}.vtt-token-light{position:absolute;right:2%;top:2%;font-size:12px;filter:drop-shadow(0 0 4px #ffb347);animation:flame .7s ease-in-out infinite alternate}.vtt-note{position:absolute;z-index:7;width:34px;height:34px;margin:-34px 0 0 -17px;padding:0;border:0;background:none;cursor:pointer;transform:scale(var(--inv, 1));transform-origin:bottom center;transition:transform .18s var(--ease)}.vtt-note span{display:grid;place-items:center;width:34px;height:34px;font-size:17px;border-radius:50% 50% 50% 0;rotate:-45deg;background:var(--surface);border:2px solid var(--accent);box-shadow:0 4px 10px #00000080}.vtt-note span>*,.vtt-note span{line-height:1}.vtt-note:hover{transform:scale(calc(var(--inv, 1) * 1.15)) translateY(-3px)}.vtt-note.dm-only span{border-style:dashed;opacity:.75}.note-view h2{margin:0 0 10px}.note-view .prose{white-space:pre-wrap}.journal-list li{display:flex;flex-direction:column;gap:1px;padding:6px 0;border-bottom:1px solid var(--border)}.vtt-token.active-turn .vtt-token-face{box-shadow:0 0 0 4px var(--accent),0 0 26px var(--accent);animation:active-token 1.6s ease-in-out infinite}@keyframes active-token{50%{box-shadow:0 0 0 6px var(--accent-soft),0 0 34px var(--accent)}}.vtt-token-face{transition:transform .2s var(--ease),box-shadow .3s}.vtt-token.movable:hover .vtt-token-face{transform:scale(1.05)}.level-switcher{position:absolute;left:12px;top:50%;transform:translateY(-50%);z-index:6;display:flex;flex-direction:column;gap:4px;padding:6px;border-radius:var(--radius);background:color-mix(in oklab,var(--surface) 88%,transparent);border:1px solid var(--border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.level-switcher button{display:flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:var(--muted);font:600 .8rem var(--font-body);cursor:pointer;text-align:left;transition:background .15s,color .15s}.level-switcher button:hover:not(:disabled){background:var(--panel-2);color:var(--text)}.level-switcher button.active{background:var(--primary);color:var(--primary-ink)}.level-switcher button:disabled{opacity:.35;cursor:default}.level-elev{font:700 .7rem var(--font-display);min-width:30px}.level-chips{display:flex;flex-wrap:wrap;gap:4px}.level-chips .chip small{opacity:.7;margin-left:4px}.turn-banner{position:absolute;left:50%;top:12px;transform:translate(-50%);z-index:9;display:flex;align-items:center;gap:14px;padding:8px 10px 8px 14px;max-width:calc(100% - 24px);border-radius:999px;background:color-mix(in oklab,var(--surface) 92%,transparent);border:1px solid color-mix(in oklab,var(--danger) 45%,var(--border));box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:banner-in .45s var(--ease)}.turn-banner.phase-initiative{border-color:var(--accent-line);gap:10px;padding:8px 16px;flex-wrap:wrap;justify-content:center;border-radius:var(--radius)}.turn-banner.your-turn{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft),var(--shadow);animation:banner-in .45s var(--ease),your-turn 1.8s ease-in-out .45s infinite}@keyframes banner-in{0%{opacity:0;transform:translate(-50%,-14px) scale(.96)}}@keyframes your-turn{50%{box-shadow:0 0 0 7px var(--accent-soft),var(--shadow)}}.turn-round{font:700 .75rem var(--font-display);color:var(--danger-fg);text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}.turn-kicker{display:block;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.turn-now{display:flex;align-items:center;gap:10px;padding:0;border:0;background:none;color:var(--text);cursor:pointer;text-align:left;font:inherit;animation:turn-swap .5s var(--ease);min-width:0}.turn-now strong{font:700 1.05rem var(--font-display);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px;display:block}.turn-banner.your-turn .turn-now .turn-kicker{color:var(--accent-fg)}.turn-next{padding-left:14px;border-left:1px solid var(--border);font-size:.85rem;color:var(--text-soft, var(--muted));animation:turn-swap .5s var(--ease) .08s both;white-space:nowrap}.turn-next .row{gap:6px}@keyframes turn-swap{0%{opacity:0;transform:translate(16px)}}.turn-timer{font:700 .85rem var(--font-body);padding:3px 10px;border-radius:999px;background:var(--panel-2);font-variant-numeric:tabular-nums}.turn-timer.warn{background:color-mix(in oklab,var(--accent) 30%,transparent);color:var(--accent-fg)}.turn-timer.over{background:var(--danger);color:#fff;animation:shake .4s ease-in-out 2}@keyframes shake{25%{transform:translate(-3px)}75%{transform:translate(3px)}}.combat-avatar{display:grid;place-items:center;flex:none;border-radius:50%;overflow:hidden;background:color-mix(in oklab,var(--danger) 55%,#000);color:#fff;font:700 .8rem var(--font-body);border:2px solid var(--danger)}.combat-avatar.kind-character{background:color-mix(in oklab,var(--success) 45%,#000);border-color:var(--success)}.combat-avatar.md{width:40px;height:40px}.combat-avatar.sm{width:26px;height:26px;font-size:.66rem}.combat-avatar img{width:100%;height:100%;object-fit:cover}.pulse{animation:glow-pulse 1.6s ease-in-out infinite}.combat-splash{position:absolute;inset:0;z-index:12;display:grid;place-items:center;pointer-events:none}.combat-splash span{font:800 clamp(2.2rem,7vw,5rem) var(--font-display);letter-spacing:.04em;color:#fff;text-shadow:0 0 30px var(--danger),0 6px 24px rgb(0 0 0 / .8);animation:splash 1.7s var(--ease) forwards}.combat-splash.tone-ended span{text-shadow:0 0 30px var(--success),0 6px 24px rgb(0 0 0 / .8)}.combat-splash.tone-turn span,.combat-splash.tone-active span{font-size:clamp(1.6rem,5vw,3.2rem);text-shadow:0 0 24px var(--accent),0 6px 24px rgb(0 0 0 / .8)}@keyframes splash{0%{opacity:0;transform:scale(1.6);filter:blur(8px)}18%{opacity:1;transform:scale(1);filter:none}75%{opacity:1}to{opacity:0;transform:scale(.94) translateY(-10px)}}.initiative-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.init-row{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2);animation:row-in .35s var(--ease) both;animation-delay:calc(var(--i, 0) * 35ms);transition:border-color .2s,background .2s,transform .2s var(--ease)}@keyframes row-in{0%{opacity:0;transform:translateY(6px)}}.init-row.current{border-color:var(--accent);background:linear-gradient(90deg,var(--accent-soft),transparent 70%),var(--bg-2);transform:translate(4px)}.init-row.current:before{content:"▶";color:var(--accent-fg);font-size:.7rem;margin-right:-2px}.init-row.defeated{opacity:.45}.init-row.defeated .init-name strong{text-decoration:line-through}.init-row.dm-hidden{border-style:dashed}.init-row.own .init-name strong{color:var(--primary-fg)}.init-row.selected{outline:2px solid var(--primary-line)}.init-who{flex:1;min-width:0;display:flex;align-items:center;gap:8px;padding:0;border:0;background:none;color:var(--text);cursor:pointer;text-align:left;font:inherit}.init-name{display:flex;flex-direction:column;min-width:0}.init-name strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.init-input{width:56px;padding:4px 6px;text-align:center;font-weight:700}.init-value{min-width:36px;text-align:center;font:700 1.1rem var(--font-display)}.init-actions{display:flex;gap:2px}.init-actions .icon-btn{width:28px;height:28px;font-size:.85rem}.mode-card{border-left:3px solid var(--primary)}.dice-toasts{position:absolute;left:12px;bottom:12px;z-index:8;width:min(320px,calc(100% - 24px));margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:6px;pointer-events:none}.dice-toast{position:relative;display:grid;grid-template-columns:44px 1fr auto;align-items:center;gap:10px;padding:8px 12px 8px 8px;border-radius:var(--radius);background:color-mix(in oklab,var(--surface) 92%,transparent);border:1px solid var(--border);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:toast-rise .4s var(--ease),toast-out .5s ease-in 5.5s forwards}.dice-toast.mine{border-left:3px solid var(--primary)}.dice-toast.crit{border-color:var(--success);box-shadow:0 0 18px color-mix(in oklab,var(--success) 40%,transparent)}.dice-toast.fumble{border-color:color-mix(in oklab,var(--danger) 70%,transparent)}@keyframes toast-rise{0%{opacity:0;transform:translateY(14px) scale(.96)}}@keyframes toast-out{to{opacity:0;transform:translate(-12px)}}.toast-die{width:40px;height:40px;overflow:visible}.toast-die path{fill:var(--primary);stroke:color-mix(in oklab,var(--primary) 60%,#000);stroke-width:3;stroke-linejoin:round}.toast-die.d20 path{fill:var(--accent);stroke:color-mix(in oklab,var(--accent) 60%,#000)}.toast-die text{font:800 30px var(--font-body);fill:var(--primary-ink);dominant-baseline:middle}.toast-die.d20 text{fill:var(--accent-ink)}.toast-die.rolling{animation:die-tumble .75s cubic-bezier(.3,.7,.4,1);transform-origin:center}.toast-die.settled{animation:die-land .35s var(--ease);transform-origin:center}@keyframes die-tumble{0%{transform:translate(-18px,10px) rotate(-200deg) scale(.6)}60%{transform:translate(3px,-4px) rotate(20deg) scale(1.05)}to{transform:none}}@keyframes die-land{40%{transform:scale(1.15)}}.dice-toast.crit .toast-die{filter:drop-shadow(0 0 8px var(--success))}.dice-toast-text{display:flex;flex-direction:column;min-width:0;line-height:1.25}.dice-toast-who{font-size:.7rem;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.05em}.dice-toast-label{font-weight:600;font-size:.85rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dice-toast-detail{font-size:.72rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dice-toast-total{font:800 1.6rem var(--font-display);min-width:36px;text-align:right}.dice-toast.done .dice-toast-total{animation:die-land .35s var(--ease)}.dice-toast-flag{position:absolute;right:10px;top:-9px;padding:1px 8px;border-radius:999px;background:var(--success);color:#032;font:700 .66rem var(--font-body)}.dice-toast.fumble .dice-toast-flag{background:var(--danger);color:#fff}.audio-chip{position:absolute;right:60px;bottom:12px;z-index:6;display:flex;align-items:center;gap:8px;padding:6px 12px;max-width:320px;border-radius:999px;background:color-mix(in oklab,var(--surface) 90%,transparent);border:1px solid var(--border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-size:.8rem;animation:toast-rise .35s var(--ease)}.audio-chip input[type=range]{width:80px}.audio-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.eq{display:flex;align-items:flex-end;gap:2px;height:14px}.eq i{width:3px;height:30%;background:var(--accent);border-radius:1px}.audio-chip.playing .eq i{animation:eq .9s ease-in-out infinite alternate}.audio-chip.playing .eq i:nth-child(2){animation-delay:-.3s}.audio-chip.playing .eq i:nth-child(3){animation-delay:-.6s}@keyframes eq{to{height:100%}}.track-list li{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:3px 0}.track-list li.active .link{color:var(--accent-fg);font-weight:700}.now-playing{border-left:3px solid var(--accent)}.float-window{position:fixed;display:flex;flex-direction:column;min-width:280px;min-height:42px;overflow:hidden;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border-strong);box-shadow:0 24px 60px #0000008c;animation:window-in .28s var(--ease)}@keyframes window-in{0%{opacity:0;transform:translateY(12px) scale(.97)}}.float-window-bar{display:flex;align-items:center;gap:8px;padding:6px 8px 6px 12px;background:var(--panel-2);border-bottom:1px solid var(--border);cursor:move;touch-action:none;-webkit-user-select:none;user-select:none}.float-window-bar strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.9rem}.float-window-bar .icon-btn{width:28px;height:28px}.float-window-body{flex:1;min-height:0;overflow:auto;padding:12px}.float-window-body:has(>.float-window-frame){padding:0;overflow:hidden}.float-window-frame{width:100%;height:100%;border:0;display:block;background:var(--bg)}.float-window-resize{position:absolute;right:0;bottom:0;width:18px;height:18px;cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg,transparent 50%,var(--border-strong) 50% 60%,transparent 60% 70%,var(--border-strong) 70% 80%,transparent 80%)}.float-window.collapsed .float-window-bar{border-bottom:0}body.is-dragging-window{-webkit-user-select:none;user-select:none;cursor:move}.app.embed main{padding:0}.app.embed .builder{padding:12px}.sheet-page.embed .sheet-toolbar{padding:8px 12px}.editor-toolbar{position:absolute;left:50%;bottom:14px;transform:translate(-50%);z-index:8;display:flex;gap:4px;padding:6px;border-radius:var(--radius);background:color-mix(in oklab,var(--surface) 94%,transparent);border:1px solid var(--border-strong);box-shadow:var(--shadow);animation:banner-in .35s var(--ease)}.editor-toolbar button{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:56px;padding:6px 8px;border:1px solid transparent;border-radius:var(--radius-sm);background:none;color:var(--muted);cursor:pointer;font:inherit;transition:background .15s,color .15s,transform .12s}.editor-toolbar button span{font-size:1.15rem}.editor-toolbar button small{font-size:.66rem;font-weight:700}.editor-toolbar button:hover{background:var(--panel-2);color:var(--text);transform:translateY(-2px)}.editor-toolbar button.active{background:var(--primary);color:var(--primary-ink)}.editor-panel .field-label{margin-top:6px}.object-palette{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:4px}.object-palette button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2);color:var(--muted);cursor:pointer;font:inherit;transition:border-color .15s,transform .12s}.object-palette button:hover{border-color:var(--primary-line);transform:translateY(-2px)}.object-palette button.active{border-color:var(--primary);background:var(--primary-soft);color:var(--text)}.object-palette small{font-size:.66rem;text-align:center;line-height:1.2}.palette-art{width:36px;height:36px;display:block}.palette-art svg{width:100%;height:100%}.object-inspector,.light-inspector{border-left:3px solid var(--primary)}.light-inspector{display:flex;flex-direction:column;gap:6px;padding-top:8px;border-top:1px solid var(--border)}.inspector-grid{gap:6px}.inspector-grid .field{margin:0}.map-search{width:100%}.map-preview{width:100%;height:90px;display:block;border-radius:var(--radius-sm);background:var(--bg-2)}.template-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px}.template-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:var(--bg-2);transition:border-color .15s,transform .15s var(--ease)}.template-card:hover{border-color:var(--primary-line);transform:translateY(-2px)}.template-body{display:flex;flex-direction:column;gap:4px;padding:8px}.playset-monster{display:flex;align-items:center;gap:8px}.addon-toggle{transition:border-color .2s}.addon-toggle.on{border-color:var(--primary-line);background:linear-gradient(90deg,var(--primary-soft),transparent 60%),var(--surface)}.module-list{display:flex;flex-direction:column;gap:6px}.module-row{padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2);transition:border-color .2s}.module-row.on{border-color:var(--primary-line)}.module-row .field{margin:6px 0 0 28px;max-width:260px}.module-summary{list-style:none;padding:0;display:grid;gap:8px}.module-summary li{display:flex;flex-direction:column;gap:4px}.addon-card .listing-title{font-size:1.05rem}.invite-banner{display:flex;flex-direction:column;gap:4px;padding:12px 14px;margin-bottom:12px;border-radius:var(--radius-sm);border:1px solid var(--accent-line);background:linear-gradient(135deg,var(--accent-soft),transparent 70%);animation:pop-in .35s var(--ease)}.invite-banner blockquote{margin:4px 0;padding-left:10px;border-left:3px solid var(--accent);color:var(--text-soft, var(--muted));font-style:italic}.invite-link .row{margin-top:8px}.invite-link input{flex:1;font-family:ui-monospace,monospace;font-size:.8rem}.error-text{color:var(--danger-fg)}.theme-import{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:20px;flex-wrap:wrap}.theme-import h3{margin:0 0 4px}.tag.tag-local{color:var(--accent-fg);border-color:var(--accent-line)}.race-art{position:relative;display:inline-grid;place-items:center;flex:none;border-radius:50%;isolation:isolate}.race-art-sm{width:26px;height:26px;font-size:15px;margin-right:6px}.race-art-md{width:56px;height:56px;font-size:30px}.race-art-lg{width:96px;height:96px;font-size:52px}.race-art.has-image{overflow:hidden;border:2px solid var(--accent);box-shadow:0 0 18px var(--accent-soft)}.race-art.has-image img{width:100%;height:100%;object-fit:cover}.race-art-glow{position:absolute;inset:0;z-index:-1;border-radius:50%;background:radial-gradient(circle,color-mix(in oklab,var(--race-color) 55%,transparent),transparent 70%);animation:race-glow 3.2s ease-in-out infinite}.race-art-icon{display:block;animation:race-float 3.2s ease-in-out infinite;filter:drop-shadow(0 4px 8px rgb(0 0 0 / .45))}.race-art-sparks{position:absolute;inset:0;pointer-events:none}.race-art-sparks i{position:absolute;width:4px;height:4px;border-radius:50%;background:var(--race-color);box-shadow:0 0 6px var(--race-color);opacity:0;animation:spark 2.8s ease-in-out infinite}.race-art-sparks i:nth-child(1){left:12%;top:60%}.race-art-sparks i:nth-child(2){left:78%;top:30%;animation-delay:.9s}.race-art-sparks i:nth-child(3){left:50%;top:85%;animation-delay:1.8s}.race-art-sm .race-art-sparks{display:none}@keyframes race-float{50%{transform:translateY(-8%) rotate(-3deg) scale(1.04)}}@keyframes race-glow{50%{transform:scale(1.18);opacity:.7}}@keyframes spark{0%{opacity:0;transform:translateY(0) scale(.5)}30%{opacity:1}to{opacity:0;transform:translateY(-26px) scale(1.2)}}.browser-item .race-art-sm{vertical-align:middle}.browser-item:hover .race-art-icon{animation-duration:1.2s}.browser-art{display:flex;justify-content:center;padding:8px 0 4px;animation:pop-in .35s var(--ease)}.selection-card .race-art{margin-right:6px}.btn{transition:transform .14s var(--ease),box-shadow .2s,background .2s,border-color .2s,color .2s}.btn:not(:disabled):hover{transform:translateY(-1px)}.btn:not(:disabled):active{transform:translateY(0) scale(.97)}.btn-primary:not(:disabled):hover{box-shadow:0 6px 18px color-mix(in oklab,var(--primary) 35%,transparent)}.card{transition:border-color .2s,box-shadow .25s,transform .25s var(--ease)}.listing.card:hover,.template-card:hover,.addon-card:hover{transform:translateY(-3px);box-shadow:var(--shadow)}.listing-grid>*{animation:row-in .4s var(--ease) both}.listing-grid>*:nth-child(2){animation-delay:40ms}.listing-grid>*:nth-child(3){animation-delay:80ms}.listing-grid>*:nth-child(4){animation-delay:.12s}.listing-grid>*:nth-child(n+5){animation-delay:.16s}main>.page,main>.builder{animation:page-in .35s var(--ease)}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}}.tab{transition:color .15s,border-color .2s,background .2s}.modal{animation:pop-in .25s var(--ease)}.modal-backdrop{animation:fade-in .2s}.chip{transition:background .15s,border-color .15s,transform .12s}.chip:not(:disabled):active{transform:scale(.95)}.vtt-notice{animation:toast-in .25s var(--ease),notice-out .4s ease-in 3.1s forwards}@keyframes notice-out{to{opacity:0;transform:translate(-50%,8px)}}@media(max-width:1000px){.turn-banner{top:auto;bottom:64px;border-radius:var(--radius);flex-wrap:wrap;justify-content:center}.turn-next{border-left:0;padding-left:0}.level-switcher{top:60px;transform:none}.audio-chip{right:12px;bottom:60px}.float-window{left:8px!important;right:8px;width:auto!important}}@media(prefers-reduced-motion:reduce){.anim-flicker,.anim-pulse,.race-art-icon,.race-art-glow,.race-art-sparks i,.vtt-mode.mode-combat,.turn-banner.your-turn{animation:none!important}}.browser-item-name{flex:1 1 auto;min-width:6.5em;text-align:left}.browser-item-meta{flex:0 1 auto;min-width:0;overflow:hidden;white-space:nowrap}.browser-item-name .race-art-sm{vertical-align:-7px}.topbar nav a{white-space:nowrap}.invite-banner,.invite-banner blockquote,.invite-banner .small{display:block}.vtt.mode-combat .vtt-overlay-hints{top:86px}.editor-toolbar~.audio-chip{bottom:86px}@media(max-width:1500px)and (min-width:901px){.topbar nav a:not(.btn){padding:7px 8px;font-size:.92rem}}.vtt-token.own{z-index:3}.vtt-token.selected{z-index:4}.vtt-tiles{position:absolute;inset:0;pointer-events:none}.vtt-tiles.overhead{z-index:4}.vtt-tile{position:absolute;transform-origin:center;transition:opacity .35s var(--ease)}.vtt-tile img{width:100%;height:100%;object-fit:fill;display:block;-webkit-user-select:none;user-select:none}.vtt-tile.interactive{pointer-events:auto;cursor:move}.vtt-tile.dm-only{outline:2px dashed color-mix(in oklab,var(--accent) 70%,transparent)}.vtt-tile.selected{outline:2px solid var(--primary);outline-offset:2px}.vtt-drawings,.vtt-templates,.vtt-regions,.vtt-rulers,.vtt-attack-fx{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}.vtt-drawings,.vtt-templates,.vtt-regions{z-index:1}.vtt-drawings.erasable .can-erase,.vtt-templates.erasable .can-erase,.vtt-regions.interactive .vtt-region{pointer-events:auto;cursor:pointer}.vtt-drawings.erasable .can-erase:hover,.vtt-templates.erasable .can-erase:hover{filter:drop-shadow(0 0 6px var(--danger));opacity:.7}.vtt-drawing.dm-only,.vtt-template.dm-only{opacity:.55}.vtt-drawing.preview{opacity:.8}.vtt-drawing-text{font-family:var(--font-display);font-weight:700;paint-order:stroke;stroke:#000000a6;stroke-width:3px}.vtt-template polygon{fill:color-mix(in oklab,var(--tpl) 22%,transparent);stroke:var(--tpl);stroke-width:2.5px;vector-effect:non-scaling-stroke}.vtt-template.preview polygon{stroke-dasharray:8 5;animation:tpl-dash .9s linear infinite}@keyframes tpl-dash{to{stroke-dashoffset:-26}}.tpl-label{fill:#fff;font:700 14px var(--font-body);text-anchor:middle;paint-order:stroke;stroke:#000000bf;stroke-width:3px}.vtt-region polygon{fill:color-mix(in oklab,var(--region) 16%,transparent);stroke:var(--region);stroke-width:2px;vector-effect:non-scaling-stroke}.vtt-region.secret polygon{stroke-dasharray:6 5;fill:color-mix(in oklab,var(--region) 9%,transparent)}.vtt-region.selected polygon{stroke-width:4px;fill:color-mix(in oklab,var(--region) 28%,transparent)}.region-label{fill:#fff;font:700 13px var(--font-body);paint-order:stroke;stroke:#000000b3;stroke-width:3px}.vtt-region.draft polyline{fill:none;stroke:var(--primary);stroke-width:2.5px;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}.vtt-region.draft circle{fill:var(--primary)}.vtt-region.draft circle.first{fill:var(--accent);stroke:#fff;stroke-width:2px}.vtt-sound-handle{position:absolute;z-index:7;width:30px;height:30px;margin:-15px 0 0 -15px;padding:0;border-radius:50%;border:2px solid var(--info, #4e8df5);background:var(--surface);cursor:grab;font-size:13px;transform:scale(var(--inv, 1));box-shadow:0 0 12px color-mix(in oklab,var(--info, #4e8df5) 60%,transparent)}.vtt-sound-handle.selected{outline:3px solid var(--primary);outline-offset:2px}.vtt-sound-handle.off{opacity:.45}.vtt-sound-range{position:absolute;z-index:1;border-radius:50%;border:2px dashed color-mix(in oklab,var(--info, #4e8df5) 70%,transparent);background:radial-gradient(circle,color-mix(in oklab,var(--info, #4e8df5) 14%,transparent),transparent 70%);pointer-events:none}.vtt-sound-range.off{opacity:.35}.vtt-rulers{z-index:6}.vtt-ruler polyline{fill:none;stroke:#ffd24a;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 3px rgb(0 0 0 / .8))}.vtt-ruler:not(.own) polyline{stroke:#7fd1ff}.vtt-ruler circle{fill:#fff}.vtt-ruler rect{fill:#0a0a0ed9;stroke:#ffd24a;stroke-width:1.5px}.vtt-ruler:not(.own) rect{stroke:#7fd1ff}.vtt-ruler text{fill:#fff;font:700 13px var(--font-body);text-anchor:middle;dominant-baseline:middle}.vtt-viewport.canvas-tool{cursor:crosshair}.vtt-viewport.ctool-erase{cursor:not-allowed}.vtt-viewport.targeting{cursor:crosshair}.vtt-attack-range{position:absolute;z-index:1;pointer-events:none;border:2px solid color-mix(in oklab,var(--danger) 75%,transparent);background:color-mix(in oklab,var(--danger) 8%,transparent);border-radius:8px;animation:range-in .25s var(--ease)}.vtt-attack-range.long{border-style:dashed;background:none;opacity:.55}@keyframes range-in{0%{opacity:0;transform:scale(.96)}}.vtt-token.targetable{cursor:crosshair}.vtt-token.targetable:hover .vtt-token-face{box-shadow:0 0 0 3px var(--danger),0 0 16px var(--danger)}.vtt-token.targeted .vtt-token-face{box-shadow:0 0 0 4px var(--danger),0 0 22px var(--danger)}.vtt-target-mark{position:absolute;inset:-12%;pointer-events:none;border-radius:50%;background:linear-gradient(var(--danger),var(--danger)) center top / 3px 22% no-repeat,linear-gradient(var(--danger),var(--danger)) center bottom / 3px 22% no-repeat,linear-gradient(var(--danger),var(--danger)) left center / 22% 3px no-repeat,linear-gradient(var(--danger),var(--danger)) right center / 22% 3px no-repeat;animation:target-spin 3s linear infinite}@keyframes target-spin{to{transform:rotate(90deg)}}.vtt-token.is-down .vtt-token-face{filter:grayscale(.9) brightness(.6)}.vtt-token-effects{position:absolute;left:-4px;top:-8px;display:flex;flex-wrap:wrap;gap:1px;max-width:110%;pointer-events:auto}.vtt-token-effects span{display:grid;place-items:center;min-width:18px;height:18px;padding:0 2px;font-size:11px;line-height:1;border-radius:6px;background:#0a0a0ed1;border:1px solid rgb(255 255 255 / .2);animation:fx-pop-in .3s var(--ease)}.vtt-token-effects .more{font-size:10px;color:#fff;font-weight:700}@keyframes fx-pop-in{0%{transform:scale(.3);opacity:0}}.vtt-attack-fx{z-index:4}.vtt-attack-fx line{stroke-linecap:round;stroke-dasharray:1400;stroke-dashoffset:1400;animation:tracer .45s var(--ease) forwards,tracer-fade 1.6s .5s ease-out forwards}.vtt-attack-fx.fx-melee line{stroke:#fff;stroke-dasharray:18 1400;animation:slash .35s ease-out forwards,tracer-fade .8s .35s ease-out forwards}.vtt-attack-fx.fx-ranged line{stroke:#f2d38a}.vtt-attack-fx.fx-spell line{stroke:#b884ff;filter:drop-shadow(0 0 6px #b884ff)}.vtt-attack-fx.fx-heal line{stroke:#3dd68c;filter:drop-shadow(0 0 6px #3dd68c)}.vtt-attack-fx line.miss{opacity:.5;stroke-dasharray:10 10}@keyframes tracer{to{stroke-dashoffset:0}}@keyframes slash{0%{stroke-dashoffset:40}to{stroke-dashoffset:-60}}@keyframes tracer-fade{to{opacity:0}}.vtt-float-text{position:absolute;z-index:6;pointer-events:none;transform:translate(-50%,-100%) scale(var(--inv, 1));transform-origin:bottom center;font:800 22px var(--font-display);color:#fff;text-shadow:0 2px 6px rgb(0 0 0 / .9),0 0 2px #000;white-space:nowrap;opacity:0;animation:fx-float-up 1.8s var(--ease) forwards}.vtt-float-text.tone-hit{color:#ff6b5e}.vtt-float-text.tone-crit{color:#ffd24a;font-size:28px}.vtt-float-text.tone-miss{color:#cfd3dc;font-size:18px}.vtt-float-text.tone-heal{color:#3dd68c}@keyframes fx-float-up{0%{opacity:0;margin-top:10px}15%{opacity:1;margin-top:0}75%{opacity:1}to{opacity:0;margin-top:-34px}}.canvas-toolbar{position:absolute;left:12px;top:50%;transform:translateY(-50%);z-index:8;display:flex;flex-direction:column;gap:4px;padding:6px;border-radius:var(--radius);background:color-mix(in oklab,var(--surface) 94%,transparent);border:1px solid var(--border-strong);box-shadow:var(--shadow)}.canvas-toolbar>button{display:flex;flex-direction:column;align-items:center;gap:1px;width:58px;padding:6px 4px;border:0;border-radius:var(--radius-sm);background:none;color:var(--muted);cursor:pointer;font:inherit;transition:background .15s,color .15s,transform .12s}.canvas-toolbar>button span{font-size:1.1rem}.canvas-toolbar>button small{font-size:.64rem;font-weight:700}.canvas-toolbar>button:hover{background:var(--panel-2);color:var(--text);transform:translate(2px)}.canvas-toolbar>button.active{background:var(--primary);color:var(--primary-ink)}.canvas-options{position:absolute;left:calc(100% + 8px);top:0;width:220px;display:flex;flex-wrap:wrap;gap:6px;padding:10px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow);animation:panel-in .2s var(--ease)}.canvas-options label{display:flex;flex-direction:column;gap:2px;width:100%}.canvas-options label.row{flex-direction:row;align-items:center}.color-dots{display:flex;gap:4px;flex-wrap:wrap;width:100%}.color-dot{width:22px;height:22px;border-radius:50%;border:2px solid var(--border-strong);cursor:pointer;padding:0;transition:transform .12s}.color-dot.active{outline:2px solid var(--primary);outline-offset:2px;transform:scale(1.1)}.editor-toolbar{flex-wrap:wrap;justify-content:center;max-width:calc(100% - 24px)}.action-bar{position:absolute;left:50%;bottom:14px;transform:translate(-50%);z-index:8;width:min(760px,calc(100% - 180px));max-height:42%;display:flex;flex-direction:column;gap:6px;padding:8px 10px;overflow:auto;border-radius:var(--radius);background:color-mix(in oklab,var(--surface) 95%,transparent);border:1px solid var(--border-strong);box-shadow:var(--shadow);animation:banner-in .3s var(--ease)}.action-bar.collapsed{width:auto}.action-bar-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.action-filter{margin-left:auto;max-width:160px;padding:4px 8px}.economy{display:flex;gap:4px}.economy span{padding:1px 8px;border-radius:999px;font-size:.72rem;font-weight:700;background:color-mix(in oklab,var(--success) 22%,transparent);color:var(--text);transition:background .2s,opacity .2s}.economy span.used{background:var(--bg-2);opacity:.55;text-decoration:line-through}.action-groups{display:flex;flex-direction:column;gap:6px}.action-group .field-label{margin:0 0 2px}.action-buttons{display:flex;flex-wrap:wrap;gap:5px}.action-btn-wrap{position:relative}.action-btn{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:116px;padding:6px 10px;text-align:left;border:1px solid var(--border);border-left:3px solid var(--primary);border-radius:var(--radius-sm);background:var(--bg-2);color:var(--text);cursor:pointer;font:inherit;transition:transform .12s var(--ease),border-color .15s,box-shadow .15s}.action-btn strong{font-size:.82rem}.action-btn small{font-size:.7rem;color:var(--muted)}.action-btn:hover{transform:translateY(-2px);border-color:var(--primary-line);box-shadow:var(--shadow-sm)}.action-btn:active{transform:scale(.97)}.action-btn.kind-save{border-left-color:var(--accent)}.action-btn.kind-heal{border-left-color:var(--success)}.action-btn.kind-utility,.action-btn.kind-multiattack{border-left-color:var(--border-strong)}.action-btn.spent{opacity:.45}.slot-badge{position:absolute;right:4px;top:3px;font-size:.62rem;font-weight:700;color:var(--muted)}.slot-picker{position:absolute;bottom:calc(100% + 4px);left:0;z-index:2;display:flex;flex-wrap:wrap;gap:4px;width:220px;padding:6px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border-strong);box-shadow:var(--shadow)}.targeting-bar{border-color:color-mix(in oklab,var(--danger) 60%,var(--border-strong));box-shadow:0 0 0 1px color-mix(in oklab,var(--danger) 40%,transparent),var(--shadow)}.targeting-bar .segmented{grid-template-columns:repeat(3,auto);width:max-content}.segmented.mini button{padding:4px 10px;font-size:.76rem}.effects-panel{display:flex;flex-direction:column;gap:6px;margin:6px 0}.effect-list{display:flex;flex-wrap:wrap;gap:4px}.effect-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 4px 2px 7px;border-radius:999px;font-size:.76rem;background:var(--primary-soft);border:1px solid var(--primary-line);animation:fx-pop-in .25s var(--ease)}.effect-chip.condition{background:color-mix(in oklab,var(--danger) 16%,transparent);border-color:color-mix(in oklab,var(--danger) 45%,transparent)}.effect-chip .icon-btn{width:18px;height:18px;font-size:.7rem}.effects-panel select{max-width:150px}.icon-input{width:48px;text-align:center}.chat-panel{display:flex;flex-direction:column;gap:8px;height:100%;min-height:0}.vtt-side-body:has(.chat-panel){display:flex;flex-direction:column}.chat-log{flex:1;min-height:200px;max-height:none}.chat-input{position:sticky;bottom:0;background:var(--surface);padding-top:6px}.chat-input input{flex:1}.chat-msg{list-style:none;padding:6px 8px;border-radius:var(--radius-sm);animation:panel-in .25s var(--ease)}.chat-msg.whisper{background:color-mix(in oklab,#a66bf5 12%,transparent);border-left:3px solid #a66bf5}.chat-msg.kind-system{border-left:3px solid var(--accent);background:color-mix(in oklab,var(--accent) 8%,transparent)}.chat-msg .chat-text{margin:2px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.chat-msg .emote{margin:2px 0 0;font-style:italic;color:var(--muted)}.chat-del{margin-left:auto;opacity:0;transition:opacity .15s}.chat-msg:hover .chat-del{opacity:.7}.chat-card{margin-top:4px;padding:8px;border-radius:var(--radius-sm);background:var(--bg-2);border:1px solid var(--border)}.chat-card.undone{opacity:.55}.chat-card-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin-bottom:4px}.attack-card.kind-save{border-left:3px solid var(--accent)}.attack-card.kind-attack{border-left:3px solid var(--danger)}.attack-card.kind-heal{border-left:3px solid var(--success)}.card-targets{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.card-targets li{padding:6px;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border)}.card-targets li.miss .result{color:var(--muted)}.card-targets li.crit{border-color:#ffd24a;box-shadow:0 0 10px color-mix(in oklab,#ffd24a 40%,transparent)}.card-targets .result{font-weight:700;font-size:.82rem}.card-roll{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:3px}.card-roll>span:first-child{min-width:58px;color:var(--muted)}.card-roll b{font-size:1rem}.card-roll.damage b{color:var(--danger)}.dmg-part{display:inline-flex;align-items:center;gap:3px}.card-actions{margin-top:6px}.card-conditions{margin-top:4px}.table-card p{margin:4px 0 0;font-weight:600}.tile-palette{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:4px}.tile-palette button{aspect-ratio:1;padding:3px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2);cursor:pointer}.tile-palette button.active{border-color:var(--primary);box-shadow:0 0 0 2px var(--primary-soft)}.tile-palette img{width:100%;height:100%;object-fit:contain}.file-btn{cursor:pointer;align-self:flex-start}.region-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.region-list .linkish{width:100%;text-align:left;padding:4px 6px;border-radius:var(--radius-sm);background:none;border:0;color:var(--text);cursor:pointer;font:inherit}.region-list .linkish:hover,.region-list .linkish.active{background:var(--primary-soft)}.swatch-dot{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle}.behavior{gap:6px;border-left:3px solid var(--accent)}.behavior textarea{width:100%}.behavior input[type=number]{width:70px}.table-row{padding:4px 0;border-bottom:1px solid var(--border)}.ambient-chip{position:absolute;right:12px;bottom:60px;z-index:8;display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:999px;background:color-mix(in oklab,var(--surface) 92%,transparent);border:1px solid var(--border-strong)}.ambient-chip input[type=range]{width:70px}@media(prefers-reduced-motion:reduce){.vtt-target-mark,.vtt-template.preview polygon{animation:none}.vtt-attack-fx line,.vtt-float-text{animation-duration:.01s}}.vtt-ruletiles{position:absolute;left:0;top:0;pointer-events:none;overflow:visible}.tileset-palette{display:grid;grid-template-columns:repeat(auto-fill,minmax(76px,1fr));gap:4px}.tileset-palette button{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2);color:var(--muted);cursor:pointer;font:inherit}.tileset-palette button.active{border-color:var(--primary);background:var(--primary-soft);color:var(--text)}.tileset-palette small{font-size:.66rem;text-align:center;line-height:1.2}.vtt-viewport.tool-brush{cursor:cell}.dice3d-overlay{position:absolute;inset:0;width:100%;height:100%;z-index:9;pointer-events:none}.cinematic{position:fixed;inset:0;z-index:200;display:grid;place-items:center;overflow:hidden;cursor:pointer;background:radial-gradient(ellipse at 50% 55%,color-mix(in oklab,var(--primary) 22%,#07070a),#050507 55%,#000);color:#fff;transition:opacity .9s var(--ease),filter .9s var(--ease)}.cinematic.leaving{opacity:0;filter:blur(6px) brightness(1.6);pointer-events:none}.cine-bar{position:absolute;left:0;right:0;height:12vh;background:#000;z-index:3;animation:cine-bars 1.1s cubic-bezier(.7,0,.3,1) both}.cine-bar.top{top:0;transform-origin:top}.cine-bar.bottom{bottom:0;transform-origin:bottom}.cinematic.leaving .cine-bar{animation:cine-bars-out .8s cubic-bezier(.7,0,.3,1) forwards}@keyframes cine-bars{0%{transform:scaleY(4.2)}}@keyframes cine-bars-out{to{transform:scaleY(0)}}.cine-vignette{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 40%,rgb(0 0 0 / .85));z-index:2;pointer-events:none}.cine-embers{position:absolute;inset:0;z-index:1;pointer-events:none}.cine-embers i{position:absolute;bottom:-10px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent),0 0 18px var(--primary);opacity:0;animation:ember 5s linear infinite}@keyframes ember{0%{opacity:0;transform:translate(0) scale(.6)}15%{opacity:.9}to{opacity:0;transform:translate(40px,-95vh) scale(1.2)}}.cine-stage{position:relative;z-index:4;display:flex;flex-direction:column;align-items:center;gap:18px;text-align:center}.cine-logo{width:min(34vmin,220px);height:auto;overflow:visible;filter:drop-shadow(0 0 22px color-mix(in oklab,var(--primary) 70%,transparent));animation:cine-logo-in 1.6s var(--ease) both,cine-breathe 4s ease-in-out 2.2s infinite}@keyframes cine-logo-in{0%{transform:scale(.72) rotate(-8deg);opacity:0}40%{opacity:1}}@keyframes cine-breathe{50%{transform:scale(1.035);filter:drop-shadow(0 0 34px var(--primary))}}.cine-hex{fill:none;stroke:var(--primary);stroke-width:3.5;stroke-linejoin:round;stroke-dasharray:100;stroke-dashoffset:100;animation:cine-draw 1.4s cubic-bezier(.65,0,.35,1) .35s forwards}.cine-hex-fill{fill:color-mix(in oklab,var(--primary) 18%,#000);opacity:0;animation:cine-fade .9s ease 1.4s forwards}.cine-h{fill:none;stroke:#fff;stroke-width:4;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100}.cine-h1{animation:cine-draw .45s ease-out 1.35s forwards}.cine-h2{animation:cine-draw .45s ease-out 1.55s forwards}.cine-h3{animation:cine-draw .35s ease-out 1.8s forwards,cine-forge .6s ease-out 2.1s}@keyframes cine-draw{to{stroke-dashoffset:0}}@keyframes cine-fade{to{opacity:1}}@keyframes cine-forge{0%{stroke:#fff}30%{stroke:var(--accent)}to{stroke:#fff}}.cine-sweep{animation:cine-sweep 1.2s ease-in-out 2.2s both}@keyframes cine-sweep{0%{transform:skew(-18deg) translate(0)}to{transform:skew(-18deg) translate(130px)}}.cine-wordmark{font:700 clamp(1.4rem,4.2vw,2.6rem) var(--font-display);letter-spacing:.55em;padding-left:.55em;background:linear-gradient(90deg,#fff 0%,var(--accent) 50%,#fff 100%) 0 0 / 200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:cine-word 1.2s var(--ease) 1.9s both,cine-shimmer 3s linear 3.1s infinite}@keyframes cine-word{0%{opacity:0;letter-spacing:1.2em;filter:blur(8px)}}@keyframes cine-shimmer{to{background-position:-200% 0}}.cine-title{display:flex;flex-direction:column;gap:6px;min-height:5.5em}.cine-kicker{font-size:.72rem;font-weight:700;letter-spacing:.3em;text-transform:uppercase;color:#ffffff8c;animation:cine-fade-up .8s var(--ease) 2.4s both}.cine-title strong{font:700 clamp(1.3rem,3.4vw,2.2rem) var(--font-display);color:#fff;text-shadow:0 0 24px var(--primary);animation:cine-fade-up .9s var(--ease) 2.6s both}.cine-sub{color:#fff9;font-size:.9rem;animation:cine-fade-up .9s var(--ease) 2.8s both}@keyframes cine-fade-up{0%{opacity:0;transform:translateY(12px)}}.cine-skip{position:absolute;bottom:calc(12vh + 14px);right:24px;z-index:5;font-size:.72rem;color:#ffffff73;letter-spacing:.06em;opacity:0;animation:cine-fade 1s ease 1.5s forwards}@media(prefers-reduced-motion:reduce){.cinematic,.cinematic *{animation-duration:.01ms!important;animation-delay:0s!important}}.notes{display:flex;flex-direction:column;gap:10px;min-height:0}.notes-warning{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid color-mix(in oklab,var(--accent) 55%,transparent);background:color-mix(in oklab,var(--accent) 12%,var(--surface));font-size:.85rem}.notes-warning strong{color:var(--accent-fg)}.notes-files{gap:6px}.notes-body{display:grid;grid-template-columns:240px minmax(0,1fr);gap:12px;min-height:460px}.notes-list{display:flex;flex-direction:column;gap:8px;min-height:0}.notes-list ul{margin:0;overflow-y:auto;display:flex;flex-direction:column;gap:4px}.notes-list ul li{padding:0}.notes-item{width:100%;display:flex;flex-direction:column;gap:2px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2);color:var(--text);text-align:left;cursor:pointer;font:inherit;transition:border-color .15s,transform .15s var(--ease)}.notes-item:hover{border-color:var(--primary-line);transform:translate(2px)}.notes-item.active{border-color:var(--primary);background:var(--primary-soft)}.notes-item span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notes-editor{display:flex;flex-direction:column;gap:8px;min-width:0}.notes-title{flex:1;font:700 1.15rem var(--font-display)}.notes-toolbar{display:flex;flex-wrap:wrap;gap:2px;padding:4px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2)}.notes-toolbar button{min-width:32px;height:30px;padding:0 8px;border:1px solid transparent;border-radius:6px;background:none;color:var(--text);cursor:pointer;font:600 .85rem var(--font-body)}.notes-toolbar button:hover{background:var(--panel-2);border-color:var(--border)}.notes-toolbar .sep{width:1px;margin:4px;background:var(--border)}.notes-content{flex:1;min-height:320px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);overflow-y:auto;outline:none;line-height:1.6}.notes-content:focus{border-color:var(--primary-line);box-shadow:0 0 0 3px var(--primary-soft)}.notes-content:empty:before{content:attr(data-placeholder);color:var(--muted)}.notes-content img{max-width:100%;height:auto;border-radius:var(--radius-sm);margin:6px 0;display:block}.notes-content blockquote{border-left:3px solid var(--accent);margin:8px 0;padding:2px 12px;color:var(--text-soft, var(--muted))}.notes-status{text-align:right}.notes.compact .notes-body{grid-template-columns:170px minmax(0,1fr);min-height:0;flex:1}.notes.compact .notes-content{min-height:220px}.notes.compact .notes-warning{font-size:.78rem}.float-window-body>.notes{height:100%}@media(max-width:800px){.notes-body,.notes.compact .notes-body{grid-template-columns:1fr}.notes-list ul{max-height:160px}}.theme-editor{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}.theme-editor-preview{position:sticky;top:0}.color-row{display:grid;grid-template-columns:44px 1fr 100px;gap:10px;align-items:center;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2)}.color-row input[type=color]{width:44px;height:36px;padding:0;border:1px solid var(--border-strong);border-radius:8px;background:none;cursor:pointer}.color-row-text{display:flex;flex-direction:column}.hex-input{font-family:ui-monospace,monospace;text-transform:uppercase}.hex-input.invalid{border-color:var(--danger)}.theme-editor-actions{margin-top:12px}.theme-submissions{margin-top:16px}.theme-submissions li{gap:10px;padding:6px 0}.theme-review-preview{padding:14px;border-radius:var(--radius-sm)}.theme-review-card{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:10px 12px;border-radius:8px}.theme-review-btn{padding:3px 10px;border-radius:6px;font-size:.8rem}@media(max-width:900px){.theme-editor{grid-template-columns:1fr}}.play-tracker{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-2)}.play-tracker h4{margin:0}.tracker-group{display:flex;flex-direction:column;gap:4px}.tracker-row{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:28px}.tracker-name{font-size:.84rem}.pips{display:inline-flex;flex-wrap:wrap;gap:4px;justify-content:flex-end}.pip{width:16px;height:16px;padding:0;border-radius:50%;border:2px solid var(--primary-line);background:transparent;cursor:pointer;transition:transform .12s var(--ease),background .15s}.pip.on{background:var(--primary);border-color:var(--primary);box-shadow:0 0 6px color-mix(in oklab,var(--primary) 50%,transparent)}.pip:hover{transform:scale(1.2)}.pool{display:inline-flex;align-items:center;gap:6px}.pool strong{font:700 1.05rem var(--font-display);min-width:24px;text-align:center}.pool .icon-btn{width:26px;height:26px}.rest-card{border-left:3px solid var(--accent)}.rest-card label.chip{cursor:pointer}.senses-editor{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;margin-top:4px}.senses-editor label{display:inline-flex;align-items:center;gap:4px;color:var(--muted)}.senses-editor input{width:64px;padding:2px 6px}.journal{display:flex;flex-direction:column;gap:10px}.journal .field-label{margin-bottom:2px}.mini-select{padding:2px 4px;font-size:.75rem;max-width:110px}.notes-tab{height:100%}.notes-tab .notes.compact .notes-body{grid-template-columns:1fr}.notes-tab .notes-list ul{max-height:140px}
