:root{--bg: #0d1514;--surface: #14201e;--raised: #1c2d2a;--line: #2d4742;--text: #e4e9de;--muted: #9aaba2;--gold: #d6ab4c;--gold-ink: #1b1406;--marsh: #62a898;--ember: #e0705a;--good: #86c47f;--pell: #aa9cea;--display: "Pixelify Sans", ui-monospace, "SF Mono", Menlo, monospace;--body: "Literata", Georgia, "Times New Roman", serif;--story: 1.06rem;--die: #e6dcc2;--die-ink: #2a2216;--die-edge: #8c7f5e;color-scheme:dark}@media (prefers-color-scheme: light){:root{--bg: #e7ebe4;--surface: #f4f6f1;--raised: #dbe2d8;--line: #b3c0b4;--text: #14211d;--muted: #4f6259;--gold: #8a6410;--gold-ink: #ffffff;--marsh: #2c6b5b;--ember: #b13f28;--good: #2c7338;--pell: #5846b4;color-scheme:light}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);font-size:16px;line-height:1.55}button,input,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.app{position:relative;max-width:34rem;height:100%;margin:0 auto;display:flex;flex-direction:column;min-height:0;background:var(--bg);border-inline:1px solid var(--line);overflow:hidden}.top{display:flex;align-items:center;gap:.75rem;padding:calc(.6rem + env(safe-area-inset-top,0px)) 1rem .6rem;border-bottom:2px solid var(--line);background:var(--surface)}.iconbtn{position:relative;flex:none;width:44px;height:44px;display:grid;place-items:center;background:var(--raised);border:2px solid var(--line);border-radius:2px;box-shadow:0 3px 0 var(--line)}.iconbtn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--line)}.iconbtn svg{width:20px;height:20px;fill:var(--text)}.badge-dot{position:absolute;top:-6px;right:-6px;min-width:20px;height:20px;padding:0 4px;display:grid;place-items:center;background:var(--ember);color:#fff;font:600 .72rem/1 var(--display);border-radius:2px}.title{flex:1;min-width:0;display:flex;align-items:center;gap:.6rem}.title>div{min-width:0}.title h1{margin:0;font:600 1.05rem/1.1 var(--display);letter-spacing:.02em;text-wrap:balance}.title p{margin:.15rem 0 0;font-size:.74rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.emblem{flex:none;width:30px;height:30px}.pill{flex:none;max-width:9rem;padding:.3rem .55rem;font:500 .78rem/1.1 var(--display);letter-spacing:.04em;text-transform:uppercase;border:2px solid var(--gold);color:var(--gold);border-radius:2px;text-align:center}.pill.live{background:var(--gold);color:var(--gold-ink)}.feed{flex:1;min-height:0;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1.15rem;scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){.feed{scroll-behavior:auto}}.who{display:flex;align-items:center;gap:.4rem;margin-bottom:.25rem}.tag{font:600 .74rem/1 var(--display);letter-spacing:.09em;text-transform:uppercase;color:var(--gold)}.ai{font:600 .64rem/1 var(--display);padding:.15rem .3rem;border:1px solid var(--muted);color:var(--muted);border-radius:2px}.sp{flex:1}.mini{display:inline-flex;min-height:30px;padding:0 .5rem;align-items:center;font:500 .72rem/1 var(--display);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:none;border:1px solid var(--line);border-radius:2px}.guide p{margin:0 0 .7rem;font-size:var(--story);max-width:65ch}.guide p:last-child{margin-bottom:0}.npc p{margin:0;font-size:var(--story);font-style:italic;padding-left:.85rem;border-left:3px solid var(--marsh)}.npc b{font:600 .78rem/1 var(--display);letter-spacing:.06em;text-transform:uppercase;font-style:normal;color:var(--marsh);margin-right:.45rem}.you{align-self:flex-end;max-width:88%;text-align:right}.you .who{justify-content:flex-end}.you .tag{color:var(--text)}.you p{margin:0;padding:.55rem .8rem;background:var(--raised);border:2px solid var(--line);border-radius:2px;font-size:calc(var(--story) - .06rem);text-align:left;overflow-wrap:anywhere}.sys{display:flex;align-items:center;gap:.7rem;font:500 .74rem/1 var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.sys:before,.sys:after{content:"";flex:1;height:2px;background:repeating-linear-gradient(90deg,var(--line) 0 6px,transparent 6px 10px)}.resline{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .5rem;padding:.5rem .7rem;border:2px dashed var(--line);border-radius:2px;font-size:.88rem;color:var(--muted)}.resline b{font:600 .85rem/1 var(--display);letter-spacing:.05em;text-transform:uppercase;color:var(--text)}.num{font:700 1rem/1 var(--display);color:var(--text);font-variant-numeric:tabular-nums}.badge{font:600 .68rem/1 var(--display);letter-spacing:.07em;text-transform:uppercase;padding:.2rem .4rem;border-radius:2px}.badge.good{background:var(--good);color:var(--bg)}.badge.bad{background:var(--ember);color:var(--bg)}.px{clip-path:polygon(0 6px,3px 6px,3px 3px,6px 3px,6px 0,calc(100% - 6px) 0,calc(100% - 6px) 3px,calc(100% - 3px) 3px,calc(100% - 3px) 6px,100% 6px,100% calc(100% - 6px),calc(100% - 3px) calc(100% - 6px),calc(100% - 3px) calc(100% - 3px),calc(100% - 6px) calc(100% - 3px),calc(100% - 6px) 100%,6px 100%,6px calc(100% - 3px),3px calc(100% - 3px),3px calc(100% - 6px),0 calc(100% - 6px))}.scene{margin:0;background:var(--surface);border:2px solid var(--line)}.scene svg{display:block;width:100%;height:auto}.scene figcaption{padding:.45rem .7rem;font-size:.74rem;color:var(--muted)}.roll{background:var(--surface);border:2px solid var(--gold);padding:.85rem .95rem 1rem}.rhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem .6rem}.rhead b{font:600 1rem/1.2 var(--display)}.hint{margin:.5rem 0 0;font-size:.88rem;color:var(--muted)}.rbody{margin-top:.8rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.diecell{flex:none}.die{display:block;width:88px;height:88px;overflow:visible}.die .face{fill:var(--die);stroke:var(--die-edge);stroke-width:3;stroke-linejoin:round}.die .facet{fill:none;stroke:var(--die-edge);stroke-width:1.6;opacity:.55;stroke-linejoin:round}.die text{fill:var(--die-ink);font:700 27px var(--display);text-anchor:middle;dominant-baseline:central}.die.rolling{animation:tumble .95s cubic-bezier(.3,.7,.4,1)}@keyframes tumble{0%{transform:rotate(0) scale(1)}22%{transform:rotate(150deg) scale(1.14) translateY(-8px)}48%{transform:rotate(310deg) scale(.94)}74%{transform:rotate(530deg) scale(1.07) translateY(-4px)}to{transform:rotate(720deg) scale(1)}}.btn{min-height:44px;padding:0 1.1rem;font:600 .95rem/1 var(--display);letter-spacing:.06em;text-transform:uppercase;background:var(--raised);border:2px solid var(--line);border-radius:2px;box-shadow:0 3px 0 var(--line)}.btn:active{transform:translateY(2px);box-shadow:0 1px 0 var(--line)}.btn.gold{background:var(--gold);color:var(--gold-ink);border-color:var(--gold);box-shadow:0 3px color-mix(in srgb,var(--gold) 55%,#000)}.btn[disabled]{opacity:.5;cursor:default}.btn.small{min-height:40px;font-size:.8rem}.btn.link{background:none;border:none;box-shadow:none;color:var(--muted);text-decoration:underline;text-transform:none;font:500 .9rem var(--body)}.physrow{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}.physrow input{width:7rem;min-height:44px;padding:0 .7rem;background:var(--bg);border:2px solid var(--line);border-radius:2px;font:600 1.1rem var(--display);font-variant-numeric:tabular-nums}.phys{margin:0;font-size:.9rem;flex-basis:100%}.err{margin:0;color:var(--ember);font-size:.84rem;flex-basis:100%}.out{display:flex;flex-direction:column;gap:.35rem;min-width:0;flex:1}.out .line1{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.out .big{font:700 2.4rem/1 var(--display);font-variant-numeric:tabular-nums}.out p{margin:0;font-size:.86rem;color:var(--muted)}.out .party{font-size:.78rem;border-top:2px dashed var(--line);padding-top:.4rem;margin-top:.2rem}.mapcard{background:var(--surface);border:2px solid var(--line);padding:.7rem .7rem .8rem}.mapcard h2{margin:0 0 .5rem;font:600 .8rem/1 var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}.mapcard svg{display:block;width:100%;height:auto}.legend{display:flex;flex-wrap:wrap;gap:.3rem .9rem;margin:.6rem 0 0;padding:0;list-style:none;font-size:.76rem;color:var(--muted)}.legend i{display:inline-block;width:.7rem;height:.7rem;margin-right:.35rem;vertical-align:-1px}.tile-a{fill:var(--surface)}.tile-b{fill:var(--raised)}.tile-water{fill:var(--marsh);fill-opacity:.35}.tile-crate{fill:var(--line)}.reach{fill:var(--gold);fill-opacity:.17}.mapcard text{font-family:var(--display);font-weight:700;font-size:17px;text-anchor:middle;dominant-baseline:central}.dock{display:flex;flex-direction:column;gap:.55rem;padding:.7rem 1rem calc(.7rem + env(safe-area-inset-bottom,0px));background:var(--surface);border-top:2px solid var(--line)}.chips{display:flex;flex-direction:column;gap:.45rem}.chip{display:flex;align-items:center;justify-content:space-between;gap:.7rem;min-height:44px;padding:.4rem .75rem;text-align:left;background:var(--raised);border:2px solid var(--line);border-radius:2px;box-shadow:0 3px 0 var(--line);font-size:.92rem;line-height:1.3}.chip:active{transform:translateY(2px);box-shadow:0 1px 0 var(--line)}.chip span{min-width:0}.chip small{flex:none;font:500 .74rem/1 var(--display);letter-spacing:.05em;text-transform:uppercase;color:var(--gold)}.act{display:flex;gap:.5rem}.act input,.field input,.field select{flex:1;min-width:0;min-height:46px;padding:0 .8rem;background:var(--bg);border:2px solid var(--line);border-radius:2px}.act input::placeholder,.field input::placeholder{color:var(--muted)}.act input:disabled{opacity:.6}.sheet{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10;max-width:34rem;margin-inline:auto;display:flex;flex-direction:column;background:var(--bg);border-inline:1px solid var(--line);animation:rise .22s ease-out}@keyframes rise{0%{transform:translateY(24px);opacity:0}to{transform:none;opacity:1}}@media (prefers-reduced-motion: reduce){.sheet,.die.rolling{animation:none}}.shead{display:flex;align-items:center;gap:.6rem;padding:calc(.6rem + env(safe-area-inset-top,0px)) 1rem .6rem;background:var(--surface);border-bottom:2px solid var(--line)}.tabs{flex:1;min-width:0;display:flex;gap:.35rem;overflow-x:auto;padding:2px 2px 5px}.tabs button{flex:none;min-height:40px;padding:0 .7rem;font:500 .85rem/1 var(--display);letter-spacing:.05em;text-transform:uppercase;color:var(--muted);background:none;border:2px solid transparent;border-radius:2px}.tabs button[data-state=active]{color:var(--gold-ink);background:var(--gold);border-color:var(--gold)}.panel{flex:1;min-height:0;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1rem}.panel h2{margin:0;font:600 .8rem/1 var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}.panel h2:not(:first-child){margin-top:.6rem}.panel[hidden]{display:none}.list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.5rem}.list li{display:flex;align-items:center;gap:.7rem;padding:.6rem .75rem;background:var(--surface);border:2px solid var(--line);border-radius:2px;min-width:0}.list li>div{min-width:0;flex:1}.list b{display:block;font-size:.95rem}.list small{display:block;color:var(--muted);font-size:.8rem}.ico{flex:none;width:22px;height:22px;background:var(--c, var(--gold));box-shadow:inset -4px -4px #00000040,inset 3px 3px #ffffff38}.dot{flex:none;width:12px;height:12px;background:var(--good)}.dot.away{background:var(--gold)}.dot.reconnecting{background:var(--ember);animation:blink 1s steps(2) infinite}@keyframes blink{50%{opacity:.25}}@media (prefers-reduced-motion: reduce){.dot.reconnecting{animation:none}}.hp{width:5.5rem;flex:none;text-align:right}.hp .bar{height:10px;background:var(--bg);border:2px solid var(--line);margin-bottom:.2rem}.hp .bar i{display:block;height:100%;background:var(--good)}.hp span{font:600 .75rem/1 var(--display);color:var(--muted);font-variant-numeric:tabular-nums}.now{font:600 .66rem/1 var(--display);letter-spacing:.07em;text-transform:uppercase;background:var(--gold);color:var(--gold-ink);padding:.2rem .35rem;border-radius:2px}.note{margin:0;font-size:.86rem;color:var(--muted)}.msgs{display:flex;flex-direction:column;gap:.6rem}.msg{max-width:85%;padding:.5rem .7rem;background:var(--surface);border:2px solid var(--line);border-radius:2px;font-size:.92rem;overflow-wrap:anywhere}.msg b{display:block;font:600 .72rem/1 var(--display);letter-spacing:.07em;text-transform:uppercase;color:var(--marsh);margin-bottom:.25rem}.msg.me{align-self:flex-end;border-color:var(--gold)}.msg.me b{color:var(--gold)}.jr{padding:.7rem .8rem;background:var(--surface);border-left:4px solid var(--gold);font-size:.95rem}.jr small{display:block;color:var(--muted);font:500 .72rem/1 var(--display);letter-spacing:.07em;text-transform:uppercase;margin-bottom:.3rem}.row{display:flex;align-items:center;gap:1rem;padding:.7rem .8rem;background:var(--surface);border:2px solid var(--line);border-radius:2px}.row>div:first-child{flex:1;min-width:0}.row b{display:block;font-size:.95rem}.row small{display:block;color:var(--muted);font-size:.8rem;line-height:1.35;margin-top:.1rem}.row .ctl{display:flex;flex-direction:column;gap:.4rem;align-items:flex-end}.sw{position:relative;flex:none;width:52px;height:30px;background:var(--bg);border:2px solid var(--line);border-radius:2px;padding:0}.sw:after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;background:var(--muted);transition:transform .12s steps(3)}.sw[aria-checked=true]{background:var(--gold);border-color:var(--gold)}.sw[aria-checked=true]:after{transform:translate(22px);background:var(--gold-ink)}@media (prefers-reduced-motion: reduce){.sw:after{transition:none}}.sel{min-height:40px;padding:0 .5rem;background:var(--bg);border:2px solid var(--line);border-radius:2px;max-width:100%}.seg{display:flex;gap:.35rem;flex-wrap:wrap}.seg button{min-height:40px;min-width:44px;padding:0 .7rem;background:var(--bg);border:2px solid var(--line);border-radius:2px;font:600 .85rem var(--display)}.seg button[aria-pressed=true]{border-color:var(--gold);background:var(--raised);box-shadow:inset 0 -3px 0 var(--gold)}.swatch{display:inline-flex;align-items:center;gap:.4rem}.swatch i{width:16px;height:16px;border:2px solid var(--die-edge);background:var(--c)}.toast{position:absolute;left:1rem;right:1rem;bottom:calc(5rem + env(safe-area-inset-bottom,0px));z-index:20;padding:.6rem .8rem;background:var(--text);color:var(--bg);font-size:.88rem;border-radius:2px;text-align:center}.screen{flex:1;min-height:0;overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1.1rem}.screen h2{margin:0;font:600 .8rem/1 var(--display);letter-spacing:.1em;text-transform:uppercase;color:var(--gold)}.screen p{margin:0}.field{display:flex;flex-direction:column;gap:.6rem}.field label{font:500 .78rem/1 var(--display);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.field .pair{display:flex;gap:.6rem;flex-wrap:wrap}.field .pair select{flex:1 1 8rem}.charcard{display:flex;flex-direction:column;gap:.5rem;padding:.8rem .9rem;background:var(--surface);border:2px solid var(--line);border-radius:2px}.charcard h3{margin:0;font:600 1.05rem/1.2 var(--display)}.charcard .meta{color:var(--muted);font-size:.86rem}.charcard .acts{display:flex;gap:.5rem;flex-wrap:wrap}.banner{padding:.55rem .8rem;border:2px dashed var(--gold);color:var(--gold);font-size:.82rem}.msgline{color:var(--muted);font-size:.9rem;min-height:1.4em}
