:root{--ink: #100e0c;--ink-2: #181511;--ink-3: #201c17;--charcoal: #2a251f;--charcoal-2: #38322a;--paper: #d6cbb0;--paper-dim: #9d937c;--paper-faint: #6f6656;--amber: #c9963f;--amber-dim: #8a6527;--forest: #2c3d31;--water: #141e29;--danger: #a8402f;--moonlight: #8fa1b5;--bone: #cfc6b3;--font-editorial: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--font-glyph: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;--tile-size: 48px;--text-scale: 1;--border-subtle: 1px solid color-mix(in srgb, var(--paper) 14%, transparent);--shadow-deep: 0 12px 40px rgb(0 0 0 / .55)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--ink);color:var(--paper);font-family:var(--font-editorial);font-size:calc(16px * var(--text-scale));line-height:1.5;overflow:hidden;background-image:radial-gradient(rgb(255 255 255 / .015) 1px,transparent 1px);background-size:4px 4px}#app{height:100%}.glyph{font-family:var(--font-glyph);font-style:normal}button{font-family:var(--font-editorial);font-size:inherit;color:var(--paper);background:var(--charcoal);border:var(--border-subtle);border-radius:4px;padding:.55em 1.1em;cursor:pointer;transition:background .12s ease,border-color .12s ease}button:hover:not(:disabled){background:var(--charcoal-2);border-color:color-mix(in srgb,var(--amber) 45%,transparent)}button:disabled{opacity:.45;cursor:not-allowed}:focus-visible{outline:2px solid var(--amber);outline-offset:2px}h1,h2,h3{font-weight:600;letter-spacing:.02em}.screen{display:none;height:100%}.screen--active{display:flex}.menu{flex-direction:column;align-items:center;justify-content:center;gap:1rem;width:100%;height:100%;padding:2rem;text-align:center;overflow-y:auto}.menu__game-title{font-size:calc(3rem * var(--text-scale));margin:0;color:var(--paper);text-shadow:0 0 24px rgb(201 150 63 / .18)}.menu__tagline{color:var(--paper-dim);font-style:italic;margin:0 0 1.5rem}.menu__heading{font-size:calc(1.6rem * var(--text-scale));margin:0 0 .5rem}.menu__note{color:var(--paper-dim);max-width:42ch;margin:0}.menu__nav{display:flex;flex-direction:column;gap:.6rem;min-width:240px;margin-top:1rem}.menu__nav--row{flex-direction:row;justify-content:center}.menu__button{font-size:calc(1.05rem * var(--text-scale));padding:.6em 1.4em}.menu__author{margin-top:2.5rem;color:var(--paper-faint);font-size:calc(.85rem * var(--text-scale))}.appearance-grid{display:grid;grid-template-columns:repeat(3,minmax(90px,120px));gap:.75rem;margin:1rem 0}.appearance-option{display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.8rem .4rem}.appearance-option__glyph{font-size:2.4rem}.appearance-option__label{font-size:calc(.8rem * var(--text-scale));color:var(--paper-dim)}.appearance-option--selected{border-color:var(--amber);background:var(--ink-3)}.settings-form{display:flex;flex-direction:column;gap:.9rem;min-width:min(420px,90vw);text-align:left}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem .2rem;border-bottom:var(--border-subtle)}.settings-row input[type=checkbox]{width:1.2rem;height:1.2rem;accent-color:var(--amber)}.settings-row input[type=range]{accent-color:var(--amber);flex:1}.settings-row__value{min-width:5ch;text-align:right;color:var(--paper-dim)}.credits-block{display:flex;flex-direction:column;gap:.4rem;color:var(--paper-dim)}.credits-block p:first-child{font-size:calc(1.4rem * var(--text-scale));letter-spacing:.08em;color:var(--paper)}.credits-block__dedication{max-width:34ch;margin:1.2rem auto 0;font-style:italic;line-height:1.65;color:var(--paper-dim)}.credits-block__thanks{margin:.6rem 0 0;letter-spacing:.06em;color:var(--amber-dim)}.credits-block__legal{margin-top:1.8rem;font-size:calc(.85rem * var(--text-scale));letter-spacing:.04em;color:var(--paper-faint)}.glyph-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:.6rem;width:min(900px,92vw)}.glyph-gallery__cell{display:flex;flex-direction:column;align-items:center;gap:.2rem;padding:.7rem .3rem;background:var(--ink-2);border:var(--border-subtle);border-radius:4px}.glyph-gallery__glyph{font-size:2.2rem}.glyph-gallery__id{font-size:.7rem;color:var(--amber-dim);word-break:break-all}.glyph-gallery__label{font-size:.7rem;color:var(--paper-faint)}.pause-overlay{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:#100e0cc7;z-index:30}.pause-overlay--visible{display:flex}.pause-overlay__panel{background:var(--ink-2);border:var(--border-subtle);border-radius:6px;box-shadow:var(--shadow-deep);padding:1.5rem 2rem;min-width:280px}.panel-overlay{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:#100e0cb8;z-index:25}.panel-overlay--visible{display:flex}.panel-overlay__panel{background:var(--ink-2);border:var(--border-subtle);border-radius:6px;box-shadow:var(--shadow-deep);padding:1.25rem 1.5rem;width:min(480px,92vw);max-height:86vh;overflow-y:auto}.panel-overlay__panel--wide{width:min(640px,94vw)}.panel-overlay__empty{color:var(--paper-faint);font-style:italic}.inventory__section{margin:.9rem 0 .3rem;color:var(--amber-dim);font-size:calc(.85rem * var(--text-scale));letter-spacing:.08em;text-transform:uppercase}.inventory__row{display:flex;align-items:center;gap:.6rem;padding:.35rem .2rem;border-bottom:var(--border-subtle);width:100%;text-align:left}.inventory__row--button{background:transparent;border:var(--border-subtle);margin-bottom:.3rem;cursor:pointer}.inventory__row--button:hover{background:var(--charcoal)}.inventory__glyph{font-size:1.4rem}.inventory__name{flex:1}.inventory__count{color:var(--paper-dim)}.inventory__equipped{color:var(--amber);font-size:calc(.75rem * var(--text-scale));font-style:italic}.inventory__action{font-size:calc(.8rem * var(--text-scale));padding:.25em .7em}.character__appearance{display:flex;align-items:center;gap:.9rem;margin-bottom:.8rem}.character__body{font-size:3rem}.character__badges{display:flex;gap:.4rem}.character__badge{font-size:1.5rem}.character__stats{display:grid;grid-template-columns:repeat(3,1fr);gap:.3rem 1rem;margin:0 0 .8rem}.character__stats dt{color:var(--paper-faint);font-size:calc(.78rem * var(--text-scale))}.character__stats dd{margin:0;color:var(--paper)}.character__section{margin:.9rem 0 .3rem;color:var(--amber-dim);font-size:calc(.85rem * var(--text-scale));letter-spacing:.08em;text-transform:uppercase}.character__tendency,.character__ability{display:flex;gap:.6rem;padding:.2rem 0;color:var(--paper-dim)}.character__tendency-name{min-width:5.5em;color:var(--paper)}.journal__section{margin:1rem 0 .3rem;color:var(--amber-dim);font-size:calc(.85rem * var(--text-scale));letter-spacing:.08em;text-transform:uppercase}.journal__line{margin:.25rem 0;color:var(--paper-dim)}.journal__line--glyph{display:flex;gap:.6rem;align-items:center}.journal__line--glyph .glyph{font-size:1.3rem}.journal__lore-title{margin:.6rem 0 .1rem;color:var(--paper)}.saves__row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.5rem .2rem;border-bottom:var(--border-subtle)}.saves__label{display:flex;flex-direction:column;gap:.1rem}.saves__meta{color:var(--paper-faint);font-size:calc(.8rem * var(--text-scale))}.saves__actions{display:flex;gap:.35rem;flex-wrap:wrap;justify-content:flex-end}.saves__action{font-size:calc(.8rem * var(--text-scale));padding:.3em .7em}.saves__footer{display:flex;gap:.6rem;justify-content:flex-end;margin-top:1rem}.menu--title{position:relative;overflow:hidden;justify-content:center}.menu--title:before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;background:radial-gradient(120% 78% at 50% 30%,rgb(201 150 63 / .06),transparent 58%),radial-gradient(120% 120% at 50% 50%,transparent 52%,rgb(0 0 0 / .6))}.title-sigil{position:absolute;left:50%;top:27%;width:min(360px,78vw);aspect-ratio:1;translate:-50% -50%;border-radius:50%;border:1px solid color-mix(in srgb,var(--amber) 42%,transparent);opacity:.12;z-index:0;pointer-events:none;animation:sigil-breathe 7s ease-in-out infinite}.title-sigil:before{content:"";position:absolute;inset:13%;border-radius:50%;border:1px solid color-mix(in srgb,var(--amber) 34%,transparent)}.title-sigil:after{content:"";position:absolute;inset:0;background:linear-gradient(color-mix(in srgb,var(--amber) 32%,transparent) 0 0) 50% 0 / 1px 100% no-repeat,linear-gradient(color-mix(in srgb,var(--amber) 32%,transparent) 0 0) 0 50% / 100% 1px no-repeat}@keyframes sigil-breathe{0%,to{opacity:.09}50%{opacity:.17}}.title-masthead{position:relative;z-index:1;text-align:center;margin-bottom:2.6rem}.menu--title .menu__game-title{margin:0;font-size:clamp(2.6rem,8vw,4.8rem);font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--paper);text-shadow:0 0 34px rgb(201 150 63 / .14)}.title-rule{position:relative;width:min(300px,62vw);height:1px;margin:1.15rem auto 1.05rem;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--amber) 55%,transparent),transparent)}.title-rule:after{content:"";position:absolute;left:50%;top:50%;width:5px;height:5px;translate:-50% -50%;rotate:45deg;background:var(--amber);opacity:.75}.menu--title .menu__tagline{margin:0;font-size:clamp(.95rem,2.4vw,1.15rem);font-style:italic;letter-spacing:.05em;color:var(--paper-dim)}.menu--title .menu__nav{position:relative;z-index:1;min-width:min(340px,82vw);gap:.5rem;margin-top:0}.menu--title .menu__button{position:relative;text-align:left;padding:.85em 1.15em;background:color-mix(in srgb,var(--charcoal) 52%,transparent);border:1px solid transparent;border-left:2px solid color-mix(in srgb,var(--amber) 26%,transparent);border-radius:3px;letter-spacing:.06em;transition:background .16s ease,border-color .16s ease,transform .16s ease,letter-spacing .16s ease}.menu--title .menu__button:hover:not(:disabled){background:color-mix(in srgb,var(--charcoal-2) 72%,transparent);border-left-color:var(--amber);transform:translate(5px);letter-spacing:.09em}.menu--title .menu__button:disabled{border-left-color:transparent;background:color-mix(in srgb,var(--charcoal) 30%,transparent)}.menu--title .menu__author{position:relative;z-index:1;margin-top:2.75rem;letter-spacing:.04em}@keyframes title-rise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}.menu--title .title-masthead,.menu--title .menu__nav>*,.menu--title .menu__author{animation:title-rise .7s ease-out both}.menu--title .title-masthead{animation-delay:60ms}.menu--title .menu__nav>*:nth-child(1){animation-delay:.22s}.menu--title .menu__nav>*:nth-child(2){animation-delay:.3s}.menu--title .menu__nav>*:nth-child(3){animation-delay:.38s}.menu--title .menu__nav>*:nth-child(4){animation-delay:.46s}.menu--title .menu__nav>*:nth-child(5){animation-delay:.54s}.menu--title .menu__nav>*:nth-child(6){animation-delay:.62s}.menu--title .menu__author{animation-delay:.72s}@media (prefers-reduced-motion: reduce){.title-sigil,.menu--title .title-masthead,.menu--title .menu__nav>*,.menu--title .menu__author{animation:none}.menu--title .menu__button{transition:none}}body.reduced-motion .title-sigil,body.reduced-motion .menu--title .title-masthead,body.reduced-motion .menu--title .menu__nav>*,body.reduced-motion .menu--title .menu__author{animation:none}.game-screen{position:relative;width:100%;height:100%;background:var(--ink)}.game-view{position:absolute;inset:0}.game-view__viewport{position:absolute;inset:0;overflow:hidden}.game-view__world{position:absolute;top:0;left:0;transition-property:transform;transition-timing-function:ease-out}.layer{position:absolute;top:0;left:0}.layer--terrain{display:grid}.layer--props{pointer-events:none;z-index:1}.prop{position:absolute;top:0;left:0;width:var(--tile-size);height:var(--tile-size);display:flex;align-items:center;justify-content:center;font-size:calc(var(--tile-size) * .5)}.layer--highlights,.layer--effects{pointer-events:none;z-index:2}.layer--actors{z-index:3}.layer--effects{z-index:4}.tile{display:flex;align-items:center;justify-content:center}.tile__glyph{font-size:calc(var(--tile-size) * .66);line-height:1}.tile--grass{background:#1d241c}.tile--deadGrass{background:#23221a}.tile--dirt{background:#2b241a}.tile--stone{background:#26262a}.tile--deadTree,.tile--tree{background:#1a211a}.tile--deadTree .tile__glyph{filter:grayscale(.9) brightness(.75)}.tile--grave{background:#221f1b}.tile--rock{background:#232019}.tile--hut{background:#241f18}.tile--water{background:var(--water)}.tile--unstable{background:#1d1620}.highlight{position:absolute;top:0;left:0;border:1px solid color-mix(in srgb,var(--amber) 55%,transparent);background:color-mix(in srgb,var(--amber) 12%,transparent)}.highlight--target{border-color:color-mix(in srgb,var(--danger) 70%,transparent);background:color-mix(in srgb,var(--danger) 14%,transparent)}.highlight--selected{border-color:var(--amber);background:color-mix(in srgb,var(--amber) 22%,transparent);box-shadow:inset 0 0 0 2px var(--amber)}.actor{position:absolute;top:0;left:0;display:flex;align-items:center;justify-content:center;transition-property:transform;transition-timing-function:ease-in-out;will-change:transform}.actor__body{font-size:calc(var(--tile-size) * .7);line-height:1}.actor__badge{position:absolute;font-size:calc(var(--tile-size) * .3);line-height:1;filter:drop-shadow(0 1px 1px rgb(0 0 0 / .7))}.actor__badge--role{top:0;right:0}.actor__badge--equipment{bottom:4px;right:0}.actor__badge--status{top:0;left:0}.actor__badge--faction{bottom:4px;left:0}.actor__hp{position:absolute;bottom:1px;left:8%;width:84%;height:3px;background:#0009;border-radius:2px}.actor__hp i{display:block;height:100%;background:var(--danger);border-radius:2px;transition:width .16s ease}.actor__condition{position:absolute;top:-6px;left:50%;transform:translate(-50%);font-size:calc(var(--tile-size) * .3)}.actor--dead{opacity:.35;filter:grayscale(1)}.effect{position:absolute;top:0;left:0;width:var(--tile-size);height:var(--tile-size);display:flex;align-items:center;justify-content:center;font-size:calc(var(--tile-size) * .6);animation:effect-impact .65s ease-out forwards}.float-text{position:absolute;top:0;left:0;width:var(--tile-size);text-align:center;font-size:calc(.95rem * var(--text-scale));font-weight:600;animation:float-up 1.05s ease-out forwards;text-shadow:0 1px 3px rgb(0 0 0 / .9)}.float-text--damage{color:#e0705c}.float-text--heal{color:#7fb069}.float-text--word{color:var(--amber);font-style:italic}.hud{position:absolute;inset:0;pointer-events:none;z-index:10;display:grid;grid-template-rows:auto auto 1fr auto auto;padding:.75rem}.hud>*{pointer-events:auto}.hud__status{display:flex;gap:.75rem;max-width:420px}.bar{position:relative;flex:1;min-width:140px}.bar__track{height:12px;background:var(--ink-3);border:var(--border-subtle);border-radius:3px;overflow:hidden}.bar__track i{display:block;height:100%;transition:width .18s ease}.bar--health .bar__track i{background:var(--danger)}.bar--focus .bar__track i{background:var(--moonlight)}.bar__text{font-size:calc(.72rem * var(--text-scale));color:var(--paper-dim)}.hud__conditions{display:flex;gap:.35rem;margin-top:.4rem}.condition-chip{font-size:1.15rem;background:var(--ink-2);border:var(--border-subtle);border-radius:4px;padding:.1rem .3rem}.hud__context{justify-self:end;text-align:right;grid-row:1;grid-column:1}.hud__region{color:var(--amber-dim);font-size:calc(.85rem * var(--text-scale));letter-spacing:.08em;text-transform:uppercase}.hud__objective{color:var(--paper-dim);font-style:italic;max-width:40ch}.hud__turn-order{display:none;gap:.4rem;align-self:end;justify-self:center;grid-row:4;margin-bottom:.4rem}.hud__turn-order--visible{display:flex}.turn-chip{display:flex;align-items:center;gap:.3rem;background:var(--ink-2);border:var(--border-subtle);border-radius:4px;padding:.15rem .5rem;font-size:calc(.8rem * var(--text-scale));color:var(--paper-dim)}.turn-chip .glyph{font-size:1.1rem}.turn-chip--active{border-color:var(--amber);color:var(--paper)}.hud__actions{display:none;gap:.4rem;justify-self:center;grid-row:5;flex-wrap:wrap;justify-content:center}.hud__actions--visible{display:flex}.action-button{font-size:calc(.85rem * var(--text-scale));padding:.4em .8em}.hud__toast{position:absolute;bottom:14%;left:50%;transform:translate(-50%);background:var(--ink-2);border:var(--border-subtle);border-radius:4px;padding:.5rem 1rem;max-width:min(520px,86vw);color:var(--paper);opacity:0;transition:opacity .2s ease;pointer-events:none;text-align:center}.hud__toast--visible{opacity:1}.dialogue{position:absolute;left:50%;bottom:2.5%;transform:translate(-50%) translateY(12px);width:min(760px,94vw);display:none;gap:1rem;background:color-mix(in srgb,var(--ink-2) 92%,transparent);border:var(--border-subtle);border-radius:6px;box-shadow:var(--shadow-deep);padding:1rem 1.25rem;z-index:20;cursor:pointer;opacity:0;transition:opacity .16s ease,transform .16s ease}.dialogue--visible{display:flex;opacity:1;transform:translate(-50%) translateY(0)}.dialogue__portrait{font-size:3.2rem;line-height:1;align-self:flex-start;filter:drop-shadow(0 2px 6px rgb(0 0 0 / .6))}.dialogue__body{flex:1;min-width:0}.dialogue__plate{display:flex;align-items:baseline;gap:.6rem;margin-bottom:.35rem}.dialogue__name{color:var(--amber);font-weight:600;letter-spacing:.03em}.dialogue__title{color:var(--paper-faint);font-size:calc(.8rem * var(--text-scale));font-style:italic}.dialogue__text{margin:0 0 .6rem;min-height:3.2em;color:var(--paper);font-size:calc(1.02rem * var(--text-scale))}.dialogue__choices{display:flex;flex-direction:column;gap:.35rem;align-items:stretch}.dialogue__choice{text-align:left;background:transparent;border:var(--border-subtle);padding:.4em .8em}.dialogue__choice:hover:not(:disabled){background:var(--charcoal)}.dialogue__choice--silent{font-style:italic;color:var(--paper-dim)}.dialogue__hint{color:var(--paper-faint);font-size:calc(.75rem * var(--text-scale));font-style:italic;text-align:right}.echo-overlay{position:absolute;inset:0;display:none;align-items:center;justify-content:center;background:#0a0c10d1;z-index:26;cursor:pointer}.echo-overlay--visible{display:flex}.echo-overlay__panel{width:min(560px,90vw);padding:2rem;border:1px solid color-mix(in srgb,var(--moonlight) 30%,transparent);border-radius:6px;background:color-mix(in srgb,var(--ink-2) 88%,transparent);box-shadow:0 0 40px color-mix(in srgb,var(--moonlight) 12%,transparent);text-align:center}.echo-overlay__glyph{font-size:3rem;margin-bottom:.5rem}.echo-overlay__title{margin:0 0 1rem;color:var(--moonlight);font-style:italic;font-weight:500}.echo-overlay__line{color:var(--paper);font-style:italic;line-height:1.7;margin:.8rem 0;animation:echo-line-in .5s ease-out}.echo-overlay__hint{margin-top:1.4rem;color:var(--paper-faint);font-size:calc(.75rem * var(--text-scale));font-style:italic}@keyframes echo-line-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes effect-impact{0%{transform:scale(.5);opacity:0}25%{transform:scale(1.25);opacity:1}to{transform:scale(1);opacity:0}}@keyframes float-up{0%{margin-top:0;opacity:0}15%{opacity:1}to{margin-top:-34px;opacity:0}}@keyframes bob-default{50%{transform:translateY(-3px)}}@keyframes bob-heavy{0%,to{transform:translate(0)}25%{transform:translate(-1px) translateY(-1px)}75%{transform:translate(1px) translateY(-1px)}}@keyframes bob-light{50%{transform:translateY(-7px) scale(1.04)}}@keyframes bob-irregular{20%{transform:translate(-2px) rotate(-4deg)}55%{transform:translate(2px) translateY(-2px)}80%{transform:rotate(3deg)}}@keyframes bob-hop{40%{transform:translateY(-11px) scaleY(.96)}70%{transform:translateY(0) scaleY(.9)}}.actor--moving.actor--default .actor__body{animation:bob-default .18s ease-in-out infinite}.actor--moving.actor--heavy .actor__body{animation:bob-heavy .22s ease-in-out infinite}.actor--moving.actor--light .actor__body{animation:bob-light .16s ease-in-out infinite}.actor--moving.actor--irregular .actor__body{animation:bob-irregular .24s steps(2,end) infinite}.actor--moving.actor--hop .actor__body{animation:bob-hop .2s ease-in-out infinite}.actor--lunging .actor__body{transform:translateY(-4px) scale(1.12);transition:transform 90ms ease-in}.actor--recoiling .actor__body{transform:translateY(1px) scale(.94);transition:transform .12s ease-out}@keyframes flicker{0%,to{opacity:1}45%{opacity:.35}55%{opacity:.8}70%{opacity:.5}}.actor--unstable .actor__body{animation:flicker .9s linear infinite}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-4px,2px)}40%{transform:translate(3px,-3px)}60%{transform:translate(-2px,-2px)}80%{transform:translate(2px,3px)}}.is-shaking{animation:shake .28s linear}@media (prefers-reduced-motion: reduce){.actor--moving .actor__body,.actor--unstable .actor__body,.is-shaking{animation:none}.effect,.float-text{animation-duration:60ms}}body.reduced-motion .actor--moving .actor__body,body.reduced-motion .actor--unstable .actor__body,body.reduced-motion .is-shaking{animation:none}body.reduced-motion .effect,body.reduced-motion .float-text{animation-duration:60ms}
