:root,:root[data-world=dragonlance]{--bg: #e9f0dc;--scene-w: clamp(560px, var(--vw, 100vw), 660px);--bg-art: linear-gradient(#bfe4f2, #e9f0dc 360px);--scene: 112px;--card: #fcf8ea;--card-2: #efead4;--ink: #22301f;--ink-soft: #5c6b52;--on-bg: #1d3524;--on-bg-soft: #4c6650;--accent: #2f7d4a;--on-accent: #fcf8ea;--metal: #8a5f12;--line: rgba(34, 48, 31, .16);--display: "Cinzel", serif;--radius: 8px;--card-shadow: 0 1px 2px rgba(34, 48, 31, .1), 0 8px 22px rgba(34, 60, 40, .14)}:root[data-world=ravenloft]{--scene: 0px;--scene-w: 0px;--bg: #0c0b10;--bg-art: radial-gradient(140% 70% at 50% 0%, #2a2636 0%, #0c0b10 65%);--card: #1c1a23;--card-2: #26232f;--ink: #dcd7e2;--ink-soft: #948da3;--on-bg: #dcd7e2;--on-bg-soft: #7f788f;--accent: #a3202c;--on-accent: #f6e9ea;--metal: #9aa0b4;--line: rgba(154, 160, 180, .2);--display: "IM Fell English SC", serif;--radius: 2px;--card-shadow: 0 0 0 1px rgba(154, 160, 180, .12), 0 10px 28px rgba(0, 0, 0, .7)}:root[data-world=forgotten-realms]{--scene: 0px;--scene-w: 0px;--bg: #efe6d2;--bg-art: radial-gradient(120% 60% at 50% 0%, #cfe0ee 0%, #efe6d2 60%);--card: #fffaf0;--card-2: #f3ead7;--ink: #1d2b3c;--ink-soft: #5d6c7e;--on-bg: #1d2b3c;--on-bg-soft: #5d6c7e;--accent: #1f5fa8;--on-accent: #ffffff;--metal: #b0842a;--line: rgba(29, 43, 60, .16);--display: "Uncial Antiqua", serif;--radius: 14px;--card-shadow: 0 1px 2px rgba(29, 43, 60, .08), 0 8px 20px rgba(29, 43, 60, .1)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--on-bg);font:400 18px/1.45 EB Garamond,Georgia,serif;-webkit-font-smoothing:antialiased;transition:background .4s}.page{min-height:100dvh;background:var(--bg-art) no-repeat;background-color:var(--bg);position:relative;isolation:isolate}.scene{position:absolute;top:0;left:0;right:0;height:calc(var(--scene-w) / 2);overflow:hidden;z-index:-1;pointer-events:none}.scene svg{position:absolute;top:0;left:50%;width:var(--scene-w);height:auto;transform:translate(-50%);display:block}.scene .sun-rays{animation:sun-turn 90s linear infinite}.scene .sun-glow{animation:sun-beam 5s ease-in-out infinite alternate;transform-box:fill-box;transform-origin:center}@keyframes sun-turn{to{transform:rotate(360deg)}}@keyframes sun-beam{0%{transform:scale(.9);opacity:.75}to{transform:scale(1.12);opacity:1}}.scene .tree{transform-box:fill-box;transform-origin:50% 100%;animation:sway var(--time) ease-in-out var(--delay) infinite alternate}@keyframes sway{0%{transform:rotate(calc(var(--sway) * -1))}to{transform:rotate(var(--sway))}}.scene .fly{transform:translate(var(--x0));animation:fly var(--dur) linear var(--delay) infinite;will-change:transform}@keyframes fly{0%{transform:translate(-150px)}to{transform:translate(950px)}}.scene .bob{animation:bob 6s ease-in-out infinite alternate}@keyframes bob{0%{transform:translateY(-4px)}to{transform:translateY(5px)}}.scene .wing{transform-box:fill-box;transform-origin:60% 100%;animation:flap var(--flap) ease-in-out infinite alternate}.scene .wing.far{animation-delay:-.2s}@keyframes flap{0%{transform:scaleY(1)}to{transform:scaleY(.72)}}:root[data-mobile]{--vw: 390px}:root[data-mobile] body{background:#1f2420}:root[data-mobile] #root{width:390px;max-width:100%;height:100dvh;margin:0 auto;transform:translateZ(0);overflow:hidden;box-shadow:0 0 0 1px #ffffff14,0 20px 60px #00000080}:root[data-mobile] .page{height:100%;min-height:0;overflow-y:auto;background-attachment:local}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}h1,h2,h3{font-family:var(--display);font-weight:700;margin:0;line-height:1.15;text-wrap:balance}h1{font-size:26px}h2{font-size:15px;letter-spacing:.12em;text-transform:uppercase;color:var(--metal);margin:26px 2px 10px}p{margin:0 0 10px}.muted{color:var(--ink-soft)}.on-bg-muted{color:var(--on-bg-soft)}.num{font-variant-numeric:tabular-nums lining-nums}.app{max-width:520px;margin:0 auto;padding:calc(env(safe-area-inset-top) + 14px) 16px 24px}.topbar{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:calc(14px + var(--scene, 0px))}.topbar .world{font-size:14px;letter-spacing:.08em;text-transform:uppercase;color:var(--on-bg-soft)}.card{background:var(--card);color:var(--ink);border-radius:var(--radius);box-shadow:var(--card-shadow);padding:14px}:where(button.card){display:block;width:100%;border:0;text-align:left}.grid{display:grid;gap:10px}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.grow{flex:1;min-width:0}.btn{border:1px solid var(--metal);background:color-mix(in srgb,var(--bg) 78%,transparent);color:var(--on-bg);border-radius:var(--radius);padding:11px 16px;min-height:46px;font-family:var(--display);font-size:14px;letter-spacing:.06em;display:inline-flex;align-items:center;justify-content:center;gap:8px}.card .btn,.sheet .btn{color:var(--ink);background:transparent}.btn.primary,.card .btn.primary,.sheet .btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.block{width:100%}.btn.small{min-height:36px;padding:6px 12px;font-size:12px}.btn:disabled{opacity:.5}.btn.danger{border-color:var(--accent);color:var(--accent)}.icon-btn{width:46px;height:46px;flex:none;border-radius:50%;border:1px solid var(--metal);background:transparent;display:inline-grid;place-items:center}.icon-btn.live{background:var(--accent);border-color:var(--accent);color:var(--on-accent);animation:pulse 1.2s infinite}.icon-btn svg,.btn svg,.tabs svg,.portrait svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}@keyframes pulse{50%{box-shadow:0 0 0 8px transparent}0%,to{box-shadow:0 0 0 0 var(--accent)}}input[type=text],input[type=email],input[type=password],input[type=number],input[type=search],select,textarea{width:100%;background:var(--card-2);color:var(--ink);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;min-height:46px}textarea{resize:vertical;min-height:80px}label.field{display:block;font-size:14px;color:var(--ink-soft);margin-bottom:10px}label.field>span{display:block;margin-bottom:3px;letter-spacing:.04em}:focus-visible{outline:2px solid var(--metal);outline-offset:2px}.chip{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:999px;padding:6px 12px;font-size:15px;min-height:36px}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.on-bg .chip{color:var(--on-bg);border-color:var(--on-bg-soft)}.on-bg .chip.on{color:var(--on-accent);border-color:var(--accent)}.hero-card{display:flex;gap:14px;align-items:center}.portrait{width:104px;height:104px;flex:none;padding:0;overflow:hidden;border-radius:var(--radius);border:2px solid var(--metal);background:var(--card-2);display:grid;place-items:center;color:var(--ink-soft);font-size:13px;text-align:center;line-height:1.2}.portrait img,.art img{width:100%;height:100%;object-fit:cover;display:block}.hero-card h1{overflow-wrap:anywhere}.stat{text-align:center;padding:12px 6px}.stat .k{font-family:var(--display);font-size:12px;letter-spacing:.12em;color:var(--ink-soft);text-transform:uppercase}.stat .v{font-family:var(--display);font-size:28px;line-height:1.1}.stat .s{font-size:14px;color:var(--ink-soft)}.stat.fact{display:grid;align-content:center;gap:2px}.stat.fact .k{font-size:11px;letter-spacing:.08em}.stat.fact .v{font-size:22px}.skills{columns:2;column-gap:18px;padding:10px 14px}.skill{display:flex;justify-content:space-between;gap:6px;width:100%;break-inside:avoid;background:none;border:0;border-bottom:1px solid var(--line);padding:8px 0;color:var(--ink);text-align:left;font-size:16px}.skill.prof{font-weight:600}.skill.prof:before{content:"◆";color:var(--accent);font-size:10px;align-self:center;margin-right:-2px}.skill span:first-of-type{flex:1}ul.plain{list-style:none;margin:0;padding:0}ul.plain li{padding:8px 0;border-bottom:1px solid var(--line)}ul.plain li:last-child{border:0}.art{aspect-ratio:1;background:var(--card-2);border-radius:calc(var(--radius) - 1px);overflow:hidden;display:grid;place-items:center;color:var(--ink-soft);font-size:13px}.item{padding:8px;display:flex;flex-direction:column}.item .name{font-weight:600;margin-top:8px;line-height:1.2;overflow-wrap:anywhere}.shimmer{animation:shimmer 1.4s ease-in-out infinite}@keyframes shimmer{50%{opacity:.45}}.slots{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--line)}.slots:last-of-type{border:0}.slots .lvl{width:86px;font-size:15px;color:var(--ink-soft)}.pip{width:30px;height:30px;border-radius:50%;border:2px solid var(--metal);background:var(--metal);padding:0}.pip.used{background:transparent;opacity:.55}.spell{display:flex;align-items:center;gap:10px;padding:4px 0;border-bottom:1px solid var(--line)}.spell:last-child{border:0}.spell .open{flex:1;min-width:0;background:none;border:0;text-align:left;padding:9px 0;color:var(--ink)}.spell .tag{font-size:12px;color:var(--ink-soft);letter-spacing:.06em;margin-left:6px}.spell.unprepared .open{opacity:.55}.facts{display:grid;grid-template-columns:auto 1fr;gap:2px 12px;font-size:16px;margin-bottom:12px}.facts dt{color:var(--ink-soft)}.facts dd{margin:0}.chat{display:flex;flex-direction:column;gap:10px}.bubble{max-width:92%}.bubble.user{align-self:flex-end;background:var(--accent);color:var(--on-accent)}.bubble ul{margin:6px 0;padding-left:20px}.bubble p:last-child{margin:0}.composer{position:fixed;left:0;right:0;bottom:calc(64px + env(safe-area-inset-bottom));padding:10px 16px;background:linear-gradient(transparent,var(--bg) 30%)}.composer .inner{max-width:488px;margin:0 auto;display:flex;gap:8px;align-items:flex-end;color:var(--on-bg)}.composer textarea{min-height:46px;height:46px;max-height:120px}.has-composer{padding-bottom:40px}.tabs{position:fixed;left:0;right:0;bottom:0;z-index:5;display:flex;justify-content:center;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line);padding-bottom:env(safe-area-inset-bottom)}.tabs button{flex:1;max-width:104px;height:64px;border:0;background:none;color:var(--on-bg-soft);display:grid;place-items:center;align-content:center;gap:2px;font-family:var(--display);font-size:11px;letter-spacing:.08em}.tabs button[aria-current=page]{color:var(--metal)}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;background:#0000008c;display:flex;align-items:flex-end;justify-content:center}.sheet{width:100%;max-width:520px;max-height:88dvh;overflow-y:auto;background:var(--card);color:var(--ink);border-radius:16px 16px 0 0;padding:18px 16px calc(22px + env(safe-area-inset-bottom));box-shadow:0 -10px 40px #00000080;animation:rise .22s ease-out}.sheet h3{font-size:20px;margin-bottom:10px;padding-right:44px}.sheet .close{position:sticky;top:0;float:right;margin:-6px -4px 0 0;border:0;background:none;width:44px;height:44px;font-size:26px;line-height:1;color:var(--ink-soft)}@keyframes rise{0%{transform:translateY(24px);opacity:0}}.toast{position:fixed;left:16px;right:16px;bottom:calc(80px + env(safe-area-inset-bottom));z-index:20;max-width:488px;margin:0 auto;background:var(--ink);color:var(--card);padding:12px 14px;border-radius:var(--radius);box-shadow:0 8px 24px #0006}.spinner{width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .8s linear infinite;display:inline-block;flex:none}@keyframes spin{to{transform:rotate(360deg)}}.login{min-height:calc(100dvh - 76px);display:grid;align-content:center;padding-top:calc(32px + var(--scene-w, 0px) * .4)!important;gap:14px;max-width:420px;margin:0 auto;padding:32px 24px;text-align:center}.login h1{font-size:40px;color:var(--metal)}.login .tagline{margin:-4px 0 12px;font-style:italic;font-size:19px;color:var(--on-bg-soft)}.login .rule{height:1px;background:linear-gradient(90deg,transparent,var(--metal),transparent);margin:6px 0 14px}.world-card{display:flex;align-items:center;gap:12px}.world-card .swatch{width:54px;height:54px;flex:none;border-radius:8px;border:2px solid;display:grid;place-items:center;font-size:22px}.world-card.on{outline:2px solid var(--metal);outline-offset:2px}.admin{max-width:900px}.admin table{width:100%;border-collapse:collapse;font-size:16px}.admin th{text-align:left;font-family:var(--display);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);padding:6px 8px}.admin td{padding:9px 8px;border-top:1px solid var(--line);vertical-align:top}.admin tr.pick{cursor:pointer}.admin .scroll{overflow-x:auto}.admin .scroll table{min-width:520px}.footer{max-width:520px;margin:0 auto;min-height:70px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));color:var(--on-bg-soft);font-size:15px}.tabs+.footer{padding-bottom:calc(80px + env(safe-area-inset-bottom))}.has-composer+.tabs+.footer{padding-bottom:calc(160px + env(safe-area-inset-bottom))}.footer.plain{justify-content:center;min-height:48px}.link{border:0;background:none;padding:8px 6px;color:var(--on-bg-soft);font-size:14px;text-decoration:underline;text-underline-offset:3px}.switch{display:inline-flex;align-items:center;gap:10px;min-height:44px;border:0;background:none;color:inherit;padding:0}.switch .track{width:44px;height:26px;border-radius:13px;background:var(--line);border:1px solid var(--on-bg-soft);position:relative;transition:background .15s}.switch .thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:var(--on-bg-soft);transition:transform .15s,background .15s}.switch[aria-checked=true] .track{background:var(--accent);border-color:var(--accent)}.switch[aria-checked=true] .thumb{transform:translate(18px);background:var(--on-accent)}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}
