:root{--ink: #0b0908;--panel: #14100d;--edge: #2b2118;--edge-soft: #1d1712;--bone: #e6dac2;--bone-dim: #c4b598;--muted: #8d7e66;--gold: #d4a93f;--gold-bright: #eec964;--gold-dim: #93783a;--ember: #b3541e;--serif: "Alegreya", "Iowan Old Style", Georgia, serif;--sc: "Alegreya SC", "Alegreya", Georgia, serif;--display: "Grenze Gotisch", "Luminari", "Alegreya", serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-top: env(safe-area-inset-top, 0px)}*{box-sizing:border-box}html,body{margin:0;background:var(--ink);color:var(--bone);font-family:var(--serif);font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}::selection{background:var(--gold);color:#16110a}#app{display:flex;flex-direction:column;min-height:100dvh}.grain{position:fixed;inset:0;z-index:50;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:.6rem;padding:calc(.5rem + var(--safe-top)) .9rem .5rem;background:color-mix(in srgb,var(--ink) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--edge-soft)}.topbar h1{font-family:var(--display);font-weight:700;font-size:1.18rem;letter-spacing:.04em;color:var(--gold);margin:0;flex:1}.topbar .iconbtn{font-family:var(--sc);font-size:.78rem;letter-spacing:.12em;color:var(--bone-dim);padding:.3rem .55rem;border:1px solid var(--edge);border-radius:4px}.topbar .iconbtn:active{color:var(--gold-bright);border-color:var(--gold-dim)}.status{margin:.65rem .75rem 0;border:1px solid var(--edge);border-radius:6px;background:var(--panel);position:relative;font-size:.92rem}.status:before,.status:after,.status .tick:before,.status .tick:after{content:"";position:absolute;width:7px;height:7px;border-color:var(--gold-dim);border-style:solid}.status:before{top:-1px;left:-1px;border-width:1px 0 0 1px}.status:after{top:-1px;right:-1px;border-width:1px 1px 0 0}.status .tick:before{bottom:-1px;left:-1px;border-width:0 0 1px 1px}.status .tick:after{bottom:-1px;right:-1px;border-width:0 1px 1px 0}.status-loc{padding:.7rem .85rem .15rem;font-style:italic;color:var(--bone);line-height:1.45}.status-row{display:flex;flex-wrap:wrap;gap:.35rem .9rem;padding:.35rem .85rem;color:var(--bone-dim)}.status-label{font-family:var(--sc);font-size:.68rem;letter-spacing:.22em;text-transform:uppercase;color:var(--muted);margin-right:.15rem}.status .pc{white-space:nowrap}.status .pc b{color:var(--bone);font-weight:500}.status .hp-ok{color:var(--bone-dim)}.status .hp-low{color:var(--gold-bright)}.status .hp-zero{color:var(--ember)}.status .luckdot{color:var(--gold)}.status .waiting{color:var(--gold-bright)}.status .resolving{color:var(--gold);font-style:italic}.status-foot{display:flex;justify-content:space-between;align-items:center;padding:.3rem .85rem .55rem;font-family:var(--sc);font-size:.72rem;letter-spacing:.14em;color:var(--muted)}.status.collapsed .status-row,.status.collapsed .status-loc{display:none}.status.collapsed .status-foot{padding-top:.55rem}.feed{flex:1;padding:.4rem .75rem 1rem;max-width:44rem;width:100%;margin:0 auto}.round-divider{display:flex;align-items:center;gap:.8rem;margin:1.4rem 0 .6rem;color:var(--gold-dim);font-family:var(--sc);font-size:.7rem;letter-spacing:.35em;text-transform:uppercase}.round-divider:before,.round-divider:after{content:"";flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--edge),transparent)}.narration{position:relative;margin:.9rem 0;padding:.9rem 1rem;background:linear-gradient(180deg,#121009,var(--panel));border:1px solid var(--edge);border-radius:4px;line-height:1.7}.narration p{margin:0 0 .8em}.narration p:last-child{margin-bottom:0}.narration strong{color:#f0e6cf}.narration em{color:var(--bone-dim)}.narration ul{margin:.4em 0;padding-left:1.3em}.narration li::marker{content:"\2726   ";color:var(--gold-dim);font-size:.82em}.narration blockquote{margin:.6em 0;padding:.1em 0 .1em .9em;border-left:2px solid var(--gold-dim);color:var(--bone);font-style:italic}.narration.opener>.md>p:first-child:first-letter{font-family:var(--display);font-size:3.05em;line-height:.82;float:left;padding:.07em .12em 0 0;color:var(--gold)}.narration.private{border-color:var(--gold-dim)}.whisper-tag{display:block;font-family:var(--sc);font-size:.68rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:.45rem}.whisper-tag:before{content:"\1f71d  "}.chat{margin:.55rem 0;display:flex}.chat .bubble{background:#171310;border:1px solid var(--edge-soft);border-radius:10px;padding:.45rem .75rem;max-width:85%;font-size:.95rem;line-height:1.5;white-space:pre-wrap;word-break:break-word}.chat.mine{justify-content:flex-end}.chat.mine .bubble{background:#1b150d;border-color:var(--edge)}.chat .who{font-family:var(--sc);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:.1rem}.chat .who.gm-flag{color:var(--gold-dim)}.chat .mention{color:var(--bone-dim);font-weight:600;background:#93783a1f;border-radius:4px;padding:0 .15em}.chat .mention.gm{color:var(--gold-bright);background:#d4a93f29}.sysline{margin:.45rem 0;font-size:.85rem;color:var(--bone-dim);display:flex;gap:.5rem;align-items:baseline}.sysline .die{color:var(--gold-dim);font-family:var(--sc);letter-spacing:.06em}.sysline .ok{color:var(--gold-bright)}.sysline .bad{color:var(--ember)}.sysline.notice{justify-content:center;font-family:var(--sc);font-size:.78rem;letter-spacing:.18em;color:var(--muted)}.sysline.danger{color:var(--ember);justify-content:center;font-family:var(--sc);letter-spacing:.18em}.decl-line{margin:.3rem 0;font-size:.88rem;color:var(--muted);font-style:italic}.decl-line b{color:var(--bone-dim);font-weight:500}.tray{border-top:1px solid var(--edge-soft);background:#0e0b09;padding:.5rem .75rem .25rem}.tray-title{font-family:var(--sc);font-size:.68rem;letter-spacing:.28em;text-transform:uppercase;color:var(--muted);margin:0 0 .35rem .15rem}.tray-row{display:flex;gap:.6rem;align-items:baseline;width:100%;text-align:left;padding:.32rem .45rem;border-radius:5px;border:1px solid transparent;font-size:.92rem}.tray-row .name{font-family:var(--sc);font-size:.8rem;letter-spacing:.1em;color:var(--bone-dim);min-width:4.6rem}.tray-row .text{color:var(--bone);flex:1}.tray-row .text.empty{color:var(--muted);font-style:italic}.tray-row.selected{border-color:var(--gold-dim);background:#15110b}.tray-row.mine .name{color:var(--gold)}.tray-row .proxy-flag{font-size:.7rem;color:var(--muted);font-style:italic}.composer{position:sticky;bottom:0;z-index:30;background:color-mix(in srgb,var(--ink) 92%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--edge-soft);padding:.5rem .75rem calc(.6rem + var(--safe-bottom))}.composer .modes{display:flex;gap:.3rem;margin-bottom:.45rem}.composer .mode{font-family:var(--sc);font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding:.22rem .65rem;border:1px solid var(--edge-soft);border-radius:99px}.composer .mode.on{color:var(--gold-bright);border-color:var(--gold-dim)}.composer .inputrow{display:flex;gap:.5rem;align-items:flex-end;position:relative}.mention-pop{position:absolute;left:0;right:0;bottom:calc(100% + .35rem);z-index:35;max-height:12rem;overflow-y:auto;background:var(--panel);border:1px solid var(--edge);border-radius:8px;box-shadow:0 -6px 20px #00000073}.mention-opt{display:block;width:100%;text-align:left;font:inherit;font-size:.92rem;color:var(--bone-dim);padding:.5rem .7rem;background:none;border:none;border-bottom:1px solid var(--edge-soft)}.mention-opt:last-child{border-bottom:none}.mention-opt:hover,.mention-opt:focus{background:#15110b;color:var(--gold-bright)}.mention-opt .dead-mark{color:var(--muted)}.composer textarea{flex:1;resize:none;font:inherit;font-size:.98rem;line-height:1.45;color:var(--bone);background:var(--panel);border:1px solid var(--edge);border-radius:8px;padding:.5rem .7rem;min-height:2.6rem;max-height:7rem;outline:none}.composer textarea:focus{border-color:var(--gold-dim)}.composer .send{font-family:var(--sc);font-size:.8rem;letter-spacing:.14em;color:#16110a;background:var(--gold);border-radius:8px;padding:.55rem .9rem}.composer .send:disabled{background:var(--edge);color:var(--muted)}.composer .hint{font-size:.74rem;color:var(--muted);margin-top:.3rem;font-style:italic}.drawer-veil{position:fixed;inset:0;background:#0000008c;z-index:40}.drawer{position:fixed;top:0;right:0;bottom:0;z-index:41;width:min(92vw,24rem);background:#100d0a;border-left:1px solid var(--edge);overflow-y:auto;padding:calc(1rem + var(--safe-top)) 1.1rem 2.5rem}.drawer-close{position:absolute;top:calc(.5rem + var(--safe-top));right:.6rem;width:2rem;height:2rem;line-height:1;font-size:1.5rem;color:var(--muted);background:none;border:none;cursor:pointer}.drawer-close:hover{color:var(--bone)}.drawer h2{font-family:var(--display);font-weight:700;font-size:1.7rem;color:var(--bone);margin:.3rem 0 0}.drawer .kicker{font-family:var(--sc);font-size:.72rem;letter-spacing:.4em;text-transform:uppercase;color:var(--gold-dim);margin:0}.drawer .subtitle{font-style:italic;color:var(--bone-dim);margin:.2rem 0 1rem}.drawer h3{font-family:var(--sc);font-size:.78rem;letter-spacing:.26em;text-transform:uppercase;color:var(--muted);margin:1.3rem 0 .4rem;border-bottom:1px solid var(--edge-soft);padding-bottom:.25rem}.statgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:.45rem}.stat{text-align:center;border:1px solid var(--edge-soft);border-radius:5px;padding:.35rem 0;background:var(--panel)}.stat .v{font-size:1.15rem;color:var(--bone)}.stat .m{font-size:.8rem;color:var(--gold-dim)}.stat .k{font-family:var(--sc);font-size:.66rem;letter-spacing:.2em;color:var(--muted);text-transform:uppercase}.kv{display:flex;justify-content:space-between;gap:1rem;font-size:.95rem;padding:.16rem 0}.kv .k{color:var(--muted)}.kv .v{color:var(--bone);text-align:right}.drawer ul{margin:.3rem 0;padding-left:1.2rem}.drawer li{margin:.22rem 0;font-size:.93rem}.drawer li::marker{content:"\2726   ";color:var(--gold-dim);font-size:.8em}.toggle{display:flex;align-items:center;gap:.6rem;padding:.3rem 0;font-size:.95rem}.toggle input{accent-color:var(--gold);width:1.05rem;height:1.05rem}.enable-push{display:inline-block;margin:.4rem 0 .2rem;font-family:var(--sc);letter-spacing:.12em;font-size:.82rem;color:var(--gold-bright);background:var(--panel);border:1px solid var(--gold-dim);border-radius:6px;padding:.45rem .9rem;cursor:pointer}.enable-push:active{background:#1a140d}.push-modal{position:fixed;z-index:41;left:50%;bottom:max(1.2rem,var(--safe-bottom));transform:translate(-50%);width:min(92vw,22rem);background:#100d0a;border:1px solid var(--edge);border-radius:10px;padding:1.2rem 1.3rem 1.3rem;text-align:center}.push-modal .kicker{font-family:var(--sc);font-size:.72rem;letter-spacing:.4em;text-transform:uppercase;color:var(--gold-dim);margin:0}.push-modal h2{font-family:var(--display);font-weight:700;font-size:1.45rem;color:var(--bone);margin:.25rem 0 .5rem}.push-modal p{color:var(--bone-dim);font-size:.92rem;margin:0 0 1rem;line-height:1.5}.push-modal .go{display:block;width:100%;font-family:var(--sc);letter-spacing:.16em;font-size:.9rem;color:#16110a;background:var(--gold);border:none;border-radius:8px;padding:.7rem;cursor:pointer}.push-modal .dismiss{display:block;width:100%;margin-top:.6rem;font-size:.85rem;color:var(--muted);background:none;border:none;cursor:pointer}.drawer .note{font-size:.82rem;color:var(--muted);font-style:italic}.drawer .note.ok{color:var(--gold-dim)}.drawer .note.warn{color:var(--ember);font-style:normal}.hpbar{height:4px;background:var(--edge-soft);border-radius:2px;margin:.3rem 0 .8rem}.hpbar>div{height:100%;border-radius:2px;background:var(--gold);transition:width .3s}.hpbar.low>div{background:var(--ember)}.version{margin-top:2rem;padding-top:.7rem;border-top:1px solid var(--edge-soft);font-size:.72rem;color:var(--muted);line-height:1.5}.version-label{font-family:var(--sc);letter-spacing:.22em;text-transform:uppercase;color:var(--gold-dim);margin-right:.5rem}.version-stale{color:var(--gold-bright)}.update-banner{position:sticky;top:0;z-index:31;width:100%;padding:calc(.5rem + var(--safe-top)) 1rem .5rem;font-family:var(--sc);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;text-align:center;color:#16110a;background:var(--gold);border:none;cursor:pointer;box-shadow:0 2px 10px #00000073}.update-banner:active{background:var(--gold-bright)}.join{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:2rem 1.4rem;position:relative}.join:before{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse 70% 45% at 50% 28%,rgba(212,169,63,.13),transparent 70%)}.join .medallion{width:58px;height:58px;margin:0 auto 1.5rem;transform:rotate(45deg);border:1px solid var(--gold-dim);outline:1px solid var(--edge);outline-offset:4px;display:flex;align-items:center;justify-content:center;background:var(--panel);text-decoration:none}a.medallion{cursor:pointer;color:var(--gold)}a.medallion:hover{border-color:var(--gold)}.join .medallion span{transform:rotate(-45deg);font-family:var(--display);font-weight:700;font-size:1.45rem;color:var(--gold)}.join h1{font-family:var(--display);font-weight:700;font-size:clamp(2.2rem,9vw,3rem);margin:0;color:var(--bone);line-height:1.05}.join .sub{font-style:italic;color:var(--bone-dim);margin:.8rem 0 2rem}.join input{font:inherit;font-size:1.05rem;text-align:center;color:var(--bone);background:var(--panel);border:1px solid var(--edge);border-radius:8px;padding:.65rem 1rem;width:min(80vw,18rem);outline:none}.join input:focus{border-color:var(--gold-dim)}.join .go{display:block;margin:1rem auto 0;font-family:var(--sc);letter-spacing:.18em;font-size:.9rem;color:#16110a;background:var(--gold);border-radius:8px;padding:.7rem 2.2rem;text-align:center;text-decoration:none}a.go{cursor:pointer}.join .err{color:var(--ember);margin-top:1rem;min-height:1.4em}.join .card{margin-top:2rem;text-align:left;border:1px solid var(--edge);border-radius:6px;background:var(--panel);padding:1rem 1.2rem;max-width:24rem;font-size:.95rem}.join .card h3{font-family:var(--sc);font-size:.76rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold-dim);margin:0 0 .5rem}.loading{text-align:center;color:var(--muted);font-style:italic;padding:3rem 1rem}
