:root{--felt: #1f3b33;--felt-deep: #142822;--card: #efe6d2;--card-edge: #b8ab8e;--ink: #2a2420;--ink-soft: #6b5f50;--red: #b8432f;--red-deep: #7d2b1d;--gold: #e3b44a;--green: #4f8a5b;--mint: #a9c2b6;--parch: #e8dec6;--parch-light: #f3ecdb;--parch-line: #b9a67f;--sepia: #33291f;--sepia-soft: #6b4a2a;--rust: #8a2f1f;--f-sc: "Alegreya SC", Georgia, serif;--f-sans: "Alegreya Sans", system-ui, sans-serif;--f-fell: "IM Fell English", Georgia, serif;--f-fell-sc: "IM Fell English SC", Georgia, serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:#0f1d19;color:var(--card);font-family:var(--f-sans);-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.45}button:focus-visible{outline:3px solid var(--gold);outline-offset:2px}@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}.app{max-width:480px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}.art{display:block;width:100%}.story{background:var(--parch);color:var(--sepia);font-family:var(--f-fell);flex:1;display:flex;flex-direction:column}.story .art{display:block;width:100%;height:210px;flex:none}.story .body{padding:12px 18px 22px;display:grid;gap:12px;align-content:start}.story .place{font-family:var(--f-fell-sc);font-size:.9rem;letter-spacing:.08em;color:#7a5a35;border-bottom:1px solid #c4b493;padding-bottom:6px;display:flex;justify-content:space-between;gap:8px}.story .prose{font-size:1.05rem;line-height:1.5;margin:0}.story .prose.drop:first-letter{font-size:2.3em;float:left;line-height:.9;padding:3px 6px 0 0;color:var(--rust)}.story h1,.story h2{font-family:var(--f-fell-sc);font-weight:400;color:var(--rust);margin:0;text-wrap:balance}.story h1{font-size:2rem;text-align:center}.story h2{font-size:1.35rem}.story .muted{color:var(--sepia-soft);font-style:italic}.feed{display:grid;gap:6px}.feed p{margin:0;font-size:.98rem;line-height:1.4;padding-left:10px;border-left:2px solid var(--parch-line)}.feed p.good{border-color:var(--green)}.feed p.bad{border-color:var(--rust)}.feed p.roll{color:var(--sepia-soft)}.choices{display:grid;gap:7px}.choice{text-align:left;background:var(--parch-light);border:1px solid var(--parch-line);border-radius:4px;padding:10px 12px;font-family:var(--f-fell);font-size:1.02rem;color:var(--sepia);display:flex;justify-content:space-between;align-items:center;gap:10px}.choice:hover:not(:disabled){background:#fbf6ea}.choice em{color:#7a5a35;font-size:.85rem;white-space:nowrap;font-style:italic}.choice.danger{border-color:var(--rust);color:var(--rust)}.choice.primary{background:var(--rust);color:#fbf1df;border-color:var(--rust)}.choice.primary em{color:#f3d9c4}.status-line{display:flex;justify-content:space-between;gap:8px;font-size:.92rem;color:var(--sepia-soft);flex-wrap:wrap}.mood{font-family:var(--f-fell-sc);letter-spacing:.05em}.mood.m1{color:var(--rust)}.mood.m2{color:#9a5a2a}.mood.m3{color:var(--sepia-soft)}.mood.m4{color:#5a7a3a}.mood.m5{color:var(--green)}.table{background:radial-gradient(120% 70% at 50% 0%,#2a5246 0%,var(--felt) 55%,var(--felt-deep) 100%);color:var(--card);font-family:var(--f-sans);flex:1;display:flex;flex-direction:column;gap:10px;padding:12px max(12px,env(safe-area-inset-right,0px)) 14px max(12px,env(safe-area-inset-left,0px))}.table .bar{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--f-sc);color:#d9c48f}.table .bar small{color:var(--mint);font-family:var(--f-sans)}.card{background:var(--card);color:var(--ink);border-radius:9px;padding:8px;box-shadow:0 2px 0 var(--card-edge),0 6px 14px #00000059;border:0}.card.target{outline:3px solid var(--gold);outline-offset:1px}.card.active{outline:3px solid #fff4e0;outline-offset:1px}.card.out{opacity:.5;filter:grayscale(.7)}.card .name{font-family:var(--f-sc);font-weight:700;font-size:.95rem;line-height:1.1}.card .meta{display:flex;justify-content:space-between;gap:6px;font-size:.78rem;color:var(--ink-soft);font-variant-numeric:tabular-nums}.hp{height:7px;border-radius:4px;background:#d3c6a9;overflow:hidden}.hp i{display:block;height:100%;background:var(--red);transition:width .4s}.hp.hero i{background:var(--green)}.token{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-family:var(--f-sc);font-weight:700;font-size:1.15rem;color:var(--card);border:3px solid var(--ink);flex:none}.token.lg{width:56px;height:56px;font-size:1.5rem}.foes{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}.foe:disabled{opacity:1}.foe.out:disabled{opacity:.5}.foe{display:grid;gap:4px;justify-items:stretch;text-align:center}.foe .token{margin:0 auto}.chips{display:flex;gap:4px;flex-wrap:wrap}.chips span{font-size:.72rem;background:var(--ink);color:var(--card);border-radius:4px;padding:1px 5px;font-variant-numeric:tabular-nums}.chips span.bad{background:var(--red)}.chips span.good{background:var(--green)}.rollbox{display:flex;align-items:center;gap:12px;background:#00000038;border-radius:10px;padding:10px;min-height:78px}.log{font-size:.88rem;line-height:1.35;min-width:0;flex:1}.log p{margin:0 0 3px}.log p.good{color:#d6efc8}.log p.bad{color:#f3c1b5}.log p.roll{color:var(--mint)}.party{display:grid;grid-template-columns:1fr 1fr;gap:8px}.hero-card{display:grid;grid-template-columns:auto 1fr;gap:4px 8px;align-items:center;text-align:left}.hero-card .token{width:34px;height:34px;font-size:.95rem;border-width:2px}.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:auto}.btn{border:0;border-radius:8px;padding:11px 8px;font-family:var(--f-sc);font-weight:700;font-size:1rem;background:var(--card);color:var(--ink);box-shadow:0 3px 0 var(--card-edge)}.btn.primary{background:var(--red);color:#fff4e0;box-shadow:0 3px 0 var(--red-deep)}.btn.ghost{background:transparent;color:var(--card);box-shadow:inset 0 0 0 2px #efe6d280}.btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 var(--red-deep)}.hint{font-size:.85rem;color:var(--mint);text-align:center;margin:0}.die{position:relative;width:58px;height:58px;flex:none}.die svg{width:100%;height:100%}.die b{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;font-family:var(--f-sc);font-size:1.25rem;color:var(--felt)}.die.spin{animation:spin .45s ease-out}.die.hit polygon:first-child{fill:#8fd18a}.die.miss polygon:first-child{fill:#e9907d}@keyframes spin{0%{transform:rotate(-200deg) scale(.7)}to{transform:none}}.sheet-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a100e8c;display:flex;align-items:flex-end;justify-content:center;z-index:20}.sheet{width:100%;max-width:480px;max-height:75vh;overflow-y:auto;background:var(--parch);color:var(--sepia);border-radius:14px 14px 0 0;padding:14px 16px calc(16px + env(safe-area-inset-bottom,0px));display:grid;gap:8px;font-family:var(--f-fell)}.sheet h3{margin:0 0 4px;font-family:var(--f-fell-sc);font-weight:400;color:var(--rust);font-size:1.2rem}.sheet.table-look{background:var(--card);color:var(--ink);font-family:var(--f-sans)}.sheet.table-look h3{font-family:var(--f-sc);color:var(--ink)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a100eb3;display:grid;place-items:center;z-index:30;padding:16px}.overlay .card{max-width:340px;width:100%;text-align:center;display:grid;gap:10px;padding:18px}.overlay h2{font-family:var(--f-sc);margin:0;font-size:1.6rem}.orbs{display:flex;gap:10px;justify-content:center}.orb{width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#fff6c8,#f2b53a 45%,#a0521a);box-shadow:0 0 14px 4px #f2b53a8c;animation:pulse 2.4s ease-in-out infinite}.orb.out{background:radial-gradient(circle at 35% 35%,#6d6a62,#3a3833 70%);box-shadow:none;animation:none}@keyframes pulse{50%{box-shadow:0 0 22px 8px #f2b53abf}}.title-screen{flex:1;display:grid;align-content:center;gap:18px;padding:24px;text-align:center;background:radial-gradient(100% 60% at 50% 30%,#2a5246,var(--felt-deep))}.title-screen h1{font-family:var(--f-fell-sc);font-weight:400;font-size:2.4rem;margin:0;color:#f1e3bf;line-height:1.05}.title-screen p{margin:0;color:var(--mint);font-family:var(--f-fell);font-style:italic;font-size:1.05rem}.stack{display:grid;gap:10px}.select-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pick{display:grid;gap:6px;justify-items:center;text-align:center;padding:12px 8px}.pick .role{font-size:.8rem;color:var(--ink-soft)}.stat-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;text-align:center;font-variant-numeric:tabular-nums}.stat-grid div{background:#0000000f;border-radius:6px;padding:4px 0}.stat-grid b{display:block;font-size:1.05rem}.stat-grid small{font-size:.65rem;letter-spacing:.06em;color:var(--ink-soft)}.row{display:flex;gap:8px;align-items:center}.row.between{justify-content:space-between}.spacer{flex:1}.tag{font-size:.65rem;letter-spacing:.06em;text-transform:uppercase;background:var(--green);color:#fff;border-radius:3px;padding:1px 5px}.tag.red{background:var(--red)}.tag.gold{background:#9a7b2e}.item-row{display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;text-align:left;padding:8px}.item-row svg{width:30px;height:30px}.small{font-size:.82rem}.section-title{font-family:var(--f-sc);color:#d9c48f;margin:6px 0 0;font-size:1rem;letter-spacing:.04em}.levers{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.lever{aspect-ratio:1 / 2.2;max-width:100%;border:2px solid #5a3a22;border-radius:6px;background:linear-gradient(#4a3a2a,#2a1f16);color:#f3d9a4;font-family:var(--f-fell-sc);font-size:1.2rem;display:grid;align-items:end;justify-items:center;padding-bottom:6px;position:relative}.lever:before{content:"";position:absolute;top:10%;left:50%;width:6px;height:45%;margin-left:-3px;background:#b9a67f;border-radius:3px;transform-origin:bottom;transform:rotate(-25deg);transition:transform .2s}.lever:after{content:"";position:absolute;top:6%;left:50%;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:#d8433a;transform:translate(-14px);transition:transform .2s}.lever.on{border-color:#f2b53a;box-shadow:0 0 12px #f2b53a99}.lever.on:before{transform:rotate(25deg)}.lever.on:after{transform:translate(14px);background:#f2b53a}.overlay.event{align-items:center}.event-card{width:100%;max-width:380px;max-height:88vh;overflow-y:auto;background:var(--parch);color:var(--sepia);border-radius:12px;padding:18px 18px 16px;display:grid;gap:10px;font-family:var(--f-fell);box-shadow:0 18px 40px #00000080;border-top:6px solid var(--parch-line);animation:pop .25s ease-out}.event-card.bad{border-top-color:var(--rust)}.event-card.good{border-top-color:var(--green)}.event-card.loot{border-top-color:var(--gold)}.event-card h2{margin:0;font-family:var(--f-fell-sc);font-weight:400;font-size:1.5rem;color:var(--rust);text-wrap:balance}.event-card.good h2,.event-card.loot h2{color:#3f6b3a}.event-card p{margin:0;font-size:1.02rem;line-height:1.45}.event-card ul,.tip-list{margin:0;padding-left:20px;display:grid;gap:6px;font-size:1rem;line-height:1.4}.event-kicker{font-family:var(--f-sans);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--sepia-soft);font-weight:700}.loot-list{display:grid;gap:10px}.loot-item{display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:start;background:var(--parch-light);border:1px solid var(--parch-line);border-radius:8px;padding:10px}.loot-name{font-family:var(--f-fell-sc);font-size:1.1rem;color:var(--sepia)}.loot-kind{font-family:var(--f-sans);font-size:.8rem;color:var(--sepia-soft);font-weight:500}.loot-desc{font-size:.92rem;line-height:1.35;margin-top:3px}.small-btn{padding:6px 10px;font-size:.85rem;margin-top:6px}@keyframes pop{0%{transform:scale(.92);opacity:0}to{transform:none;opacity:1}}.help-btn{width:30px;height:30px;border-radius:50%;border:1px solid currentColor;background:transparent;font-family:var(--f-sc);font-weight:700;flex:none}.result-card{background:var(--parch-light);border:1px solid var(--parch-line);border-left:5px solid var(--parch-line);border-radius:6px;padding:10px 12px;display:grid;gap:6px}.result-card.good{border-left-color:var(--green)}.result-card.bad{border-left-color:var(--rust)}.result-card .kicker{font-family:var(--f-sans);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--sepia-soft);font-weight:700;display:flex;justify-content:space-between;gap:8px}.result-card p{margin:0;font-size:1rem;line-height:1.4}.result-card .rollchip{font-family:var(--f-sans);font-size:.78rem;font-weight:700;padding:1px 6px;border-radius:4px;background:var(--sepia);color:var(--parch);letter-spacing:0;text-transform:none}.result-card .rollchip.ok{background:var(--green)}.result-card .rollchip.no{background:var(--rust)}.group-title{font-family:var(--f-fell-sc);color:#7a5a35;font-size:.95rem;letter-spacing:.06em;margin:6px 0 0}details.desc summary{cursor:pointer;font-family:var(--f-fell-sc);color:#7a5a35;letter-spacing:.05em}details.desc[open] summary{margin-bottom:6px}.journal p{font-size:.92rem}.turn-banner{display:flex;align-items:center;gap:10px;border-radius:10px;padding:8px 10px;font-family:var(--f-sc);font-size:1.05rem}.turn-banner.hero{background:#efe6d224;color:#fff4e0;box-shadow:inset 0 0 0 2px #efe6d266}.turn-banner.enemy{background:#b8432f40;color:#ffd9cf;box-shadow:inset 0 0 0 2px #b8432f99}.turn-banner .token{width:32px;height:32px;font-size:.9rem;border-width:2px}.now{display:grid;gap:4px;min-width:0;flex:1}.now p{margin:0;font-size:1rem;line-height:1.35}.now p.good{color:#d6efc8}.now p.bad{color:#ffc9bc}.now p.roll{color:var(--mint)}.now p.info{color:var(--card)}.history summary{cursor:pointer;color:var(--mint);font-size:.85rem}.history .log p{font-size:.82rem;opacity:.85}.token.portrait-token{background:none;border:none;width:auto;height:auto;display:inline-grid;line-height:0}.portrait{display:block;flex:none}.foe .portrait-token{justify-self:center}.npc-portrait{display:flex;gap:12px;align-items:center}.init-card .small-note{font-size:.9rem;color:var(--sepia-soft)}.init-list{display:grid;gap:6px}.init-row{display:grid;grid-template-columns:42px 1fr 40px auto;gap:10px;align-items:center;background:var(--parch-light);border:1px solid var(--parch-line);border-left:5px solid #3f6b3a;border-radius:8px;padding:6px 10px;opacity:0;animation:pop .3s ease-out forwards}.init-row.enemy{border-left-color:var(--rust)}.init-name{font-family:var(--f-fell-sc);font-size:1.05rem;min-width:0}.init-die{width:38px;height:38px;display:grid;place-items:center;background:#e3b44a;color:#1a332c;font-family:var(--f-sc);font-weight:700;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%)}.init-sum{font-family:var(--f-sans);font-size:.95rem;white-space:nowrap}.init-sum b{font-size:1.15rem}.planner{display:grid;gap:6px}.plan-row{display:grid;grid-template-columns:42px 1fr auto;gap:10px;align-items:center;text-align:left;background:var(--card);color:var(--ink);border:none;border-radius:10px;padding:8px 10px;font:inherit;cursor:pointer}.plan-row.off{opacity:.6;cursor:default;grid-template-columns:42px 1fr}.plan-text{display:grid;gap:2px;min-width:0}.plan-text span{font-size:.88rem;color:var(--ink-soft)}.plan-change{font-family:var(--f-sans);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--rust)}.roll-all{font-size:1.15rem;padding:14px}.plan-opt{display:flex;align-items:center;gap:10px;text-align:left;flex-wrap:wrap}.plan-opt small{flex-basis:100%;opacity:.75;font-weight:400;padding-left:52px;margin-top:-6px}.plan-opt .token+small,.plan-opt:not(:has(.token)) small{padding-left:0;margin-top:0}.dice-row{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}.volley-die{display:grid;justify-items:center;gap:2px;width:56px}.volley-die .die{width:46px;height:46px}.volley-die .die b{font-size:1rem}.volley-die small{font-size:.7rem;color:var(--mint);text-transform:uppercase;letter-spacing:.05em}.volley-die .token .portrait{width:26px;height:26px}.rollbox:has(.dice-row){flex-direction:column;align-items:stretch}.search-row{display:grid;gap:6px;padding:8px 0;border-bottom:1px solid var(--parch-line)}.seg{display:flex;flex-wrap:wrap;gap:6px}.seg button{font:inherit;font-size:.9rem;padding:6px 10px;border-radius:999px;border:1px solid var(--parch-line);background:var(--parch-light);color:var(--sepia);cursor:pointer}.seg button[aria-pressed=true]{background:var(--sepia);color:var(--parch);border-color:var(--sepia)}.dice-row.light .volley-die small{color:var(--sepia-soft)}.dice-row.light{justify-content:flex-start}.talk-note{margin:0;font-size:.92rem}.item-effect{color:var(--ink-soft);line-height:1.3}.gear-badge{justify-self:start;font-family:var(--f-sans);font-size:.74rem;font-weight:700;padding:1px 7px;border-radius:999px;background:#ddd3bd;color:var(--ink)}.gear-badge.better{background:#cfe8c7;color:#24502a}.gear-badge.worse{background:#f1d0c8;color:#7a2a1c}.what-it-does{margin:0;font-size:.95rem;line-height:1.4}.equip-opt{display:flex;justify-content:space-between;align-items:center;gap:8px;text-align:left}.equip-opt small{font-weight:600;font-size:.8rem}.equip-opt.better small{color:#24502a}.equip-opt.worse small{color:#9b3a28}
