@font-face{font-family:Cinzel;src:url(../fonts/Cinzel%5Bwght%5D.ttf)format("truetype");font-weight:400 900}@font-face{font-family:Cinzel Decorative;src:url(../fonts/CinzelDecorative-Regular.ttf)format("truetype");font-weight:400}@font-face{font-family:Cinzel Decorative;src:url(../fonts/CinzelDecorative-Bold.ttf)format("truetype");font-weight:700}@font-face{font-family:Alegreya;src:url(../fonts/Alegreya%5Bwght%5D.ttf)format("truetype");font-weight:400 900}@font-face{font-family:Alegreya;src:url(../fonts/Alegreya-Italic%5Bwght%5D.ttf)format("truetype");font-weight:400 900;font-style:italic}:root{--ink:#15110e;--ink2:#221b16;--paper:#e8dcc4;--paper-dim:#b8ad98;--ember:#ff8c3a;--ember-dim:#b3581e;--cistern:#4a7fa5;--blood:#c0392b;--bone:#d9d2c0;--ok:#7fb069;--panel:#15110edb;--line:#e8dcc42e;--serif:"Alegreya", Georgia, serif;--display:"Cinzel", "Cinzel Decorative", serif;--sat:env(safe-area-inset-top,0px);--sab:env(safe-area-inset-bottom,0px);--sal:env(safe-area-inset-left,0px);--sar:env(safe-area-inset-right,0px);--edge:16px;--party-h:auto}*{box-sizing:border-box}html,body{height:100%;color:var(--paper);font-family:var(--serif);-webkit-font-smoothing:antialiased;overscroll-behavior:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;background:#07060a;margin:0;overflow:hidden}#gl{touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block;position:fixed;inset:0}#ui{pointer-events:none;position:fixed;inset:0}#ui>*{pointer-events:auto}button{font-family:var(--serif);color:var(--paper);background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:3px;padding:8px 14px;font-size:16px;transition:border-color .15s,background .15s,transform 50ms}button:hover{border-color:var(--ember);background:#281c14eb}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:default}button.primary{border-color:var(--ember-dim);font-family:var(--display);letter-spacing:.06em;background:linear-gradient(#5a2d14f2,#32190cf2);font-size:15px}button.primary:hover{border-color:var(--ember)}h1,h2,h3{font-family:var(--display);letter-spacing:.08em;margin:0;font-weight:600}.panel{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:4px}.muted{color:var(--paper-dim)}.ember{color:var(--ember)}.hidden{display:none!important}.fade-in{animation:.35s ease-out fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}#hud{pointer-events:none;z-index:5;-webkit-user-select:none;user-select:none;position:absolute;inset:0}#hud>*{pointer-events:auto}#dock{left:calc(var(--edge) + var(--sal));bottom:calc(var(--edge) + var(--sab));pointer-events:none;align-items:flex-end;gap:26px;display:flex;position:absolute}#dock>*{pointer-events:auto}#party{gap:10px;display:flex}.portrait{cursor:pointer;width:166px;padding:8px 10px;transition:border-color .15s,transform .15s;position:relative}.portrait.selected{border-color:var(--ember);box-shadow:0 0 0 1px #ff8c3a59,0 0 18px #ff8c3a2e}.portrait.dead{opacity:.4;filter:grayscale()}.portrait .name{font-family:var(--display);letter-spacing:.05em;justify-content:space-between;font-size:13px;display:flex}.portrait .title{color:var(--paper-dim);font-size:12px;font-style:italic}.bar{background:#0009;border:1px solid #ffffff14;border-radius:2px;height:7px;margin-top:5px;position:relative;overflow:hidden}.bar>i{background:linear-gradient(90deg,#8c2f24,#c0392b);transition:width .3s;position:absolute;top:0;bottom:0;left:0}.bar>i.preview{background:#ffffff59}.bar.armour>i{background:linear-gradient(90deg,#4a6a7f,#7fa7c0)}.portrait .stats{color:var(--paper-dim);gap:8px;margin-top:4px;font-size:12px;display:flex}.portrait .stats b{color:var(--paper);font-weight:600}.portrait .acted{color:var(--ember);letter-spacing:.1em;font-size:10px;position:absolute;bottom:6px;right:8px}.portrait.done{opacity:.6}.portrait.done.selected{opacity:.85}.portrait .statuses{gap:3px;display:flex;position:absolute;top:-12px;left:8px}.portrait .statuses span{background:var(--ink2);border:1px solid var(--line);border-radius:8px;padding:1px 5px;font-size:11px}#hotbar{align-items:flex-end;gap:8px;display:flex}.ability{flex-direction:column;justify-content:center;align-items:center;gap:2px;width:72px;height:72px;padding:4px;display:flex;position:relative}.ability .icon{font-size:24px;line-height:1}.ability .label{letter-spacing:.03em;text-align:center;font-size:11px;line-height:1.1}.ability .key{color:var(--paper-dim);font-size:10px;position:absolute;top:3px;left:6px}.ability .cd{font-family:var(--display);background:#000000a6;border-radius:3px;justify-content:center;align-items:center;font-size:22px;display:flex;position:absolute;inset:0}.ability.armed{border-color:var(--ember);box-shadow:0 0 14px #ff8c3a4d}.ability.basic{border-color:#e8dcc459}#endturn{right:calc(var(--edge) + var(--sar));bottom:calc(var(--edge) + var(--sab));flex-direction:column;justify-content:center;align-items:center;gap:3px;width:190px;height:68px;font-size:18px;display:flex;position:absolute}#endturn small{font-family:var(--serif);letter-spacing:0;color:var(--paper-dim);font-size:12px;font-style:italic}#endturn.pulse small{color:var(--paper)}#turntip{right:calc(var(--edge) + var(--sar));bottom:calc(var(--edge) + var(--sab) + 78px);border-color:var(--ember-dim);width:260px;padding:10px 12px;font-size:13.5px;font-style:italic;line-height:1.35;animation:.3s ease-out fadeIn;position:absolute}#endturn.pulse{animation:1.2s ease-in-out infinite pulse}@keyframes pulse{0%,to{box-shadow:0 0 #ff8c3a00}50%{box-shadow:0 0 22px #ff8c3a73}}#explore{right:calc(var(--edge) + var(--sar));bottom:calc(var(--edge) + var(--sab) + 76px);width:150px;position:absolute}#undo{right:calc(var(--edge) + var(--sar));bottom:calc(var(--edge) + var(--sab) + 78px);border-color:var(--ember-dim);min-width:120px;position:absolute}#undo:not(.hidden)~#turntip{bottom:calc(var(--edge) + var(--sab) + 126px)}@media (hover:hover) and (pointer:fine){.touch-only{display:none!important}}#topbar{top:calc(12px + var(--sat));left:calc(var(--edge) + var(--sal));right:calc(var(--edge) + var(--sar));pointer-events:none;justify-content:space-between;align-items:flex-start;gap:8px;display:flex;position:absolute}#topbar>*{pointer-events:auto}#floorname{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-family:var(--display);letter-spacing:.1em;padding:8px 14px;font-size:14px;overflow:hidden}#floorname small{font-family:var(--serif);letter-spacing:0;color:var(--paper-dim);margin-top:2px;font-size:12px;font-style:italic;display:block}#resources{white-space:nowrap;gap:16px;padding:8px 14px;font-size:14px;display:flex}#banner{font-family:var(--display);letter-spacing:.18em;color:var(--paper);text-shadow:0 2px 18px #000000e6;opacity:0;pointer-events:none;text-align:center;font-size:28px;transition:opacity .4s;position:absolute;top:18%;left:50%;transform:translate(-50%)}#banner small{font-family:var(--serif);letter-spacing:.02em;color:var(--paper-dim);margin-top:6px;font-size:15px;font-style:italic;display:block}#banner.show{opacity:1}#log{color:var(--paper-dim);text-shadow:0 1px 4px #000;pointer-events:none;text-align:center;max-width:60vw;font-size:14px;position:absolute;bottom:104px;left:50%;transform:translate(-50%)}#log .warn{color:#e8a26a}#log .story{color:var(--paper);font-style:italic}#tooltip{z-index:50;pointer-events:none;opacity:0;max-width:300px;padding:10px 12px;font-size:13.5px;line-height:1.35;transition:opacity .12s;position:absolute}#tooltip.show{opacity:1}#tooltip.docked{left:50%;top:calc(var(--sat) + 70px);width:min(360px,100vw - 16px);max-width:none;max-height:calc(100dvh - 260px);overflow:hidden;transform:translate(-50%)}#tooltip h4{font-family:var(--display);letter-spacing:.06em;margin:0 0 4px;font-size:13px;font-weight:600}#tooltip .row{color:var(--paper-dim);justify-content:space-between;gap:12px;display:flex}#tooltip .row b{color:var(--paper)}#tooltip .intent{color:#ff7a6a;margin-top:4px}#tooltip .preview{color:var(--ember);margin-top:6px}#tooltip .hint{color:var(--paper-dim);margin-top:6px;font-size:12.5px;font-style:italic}.floaty{font-family:var(--display);pointer-events:none;text-shadow:0 1px 2px #000,0 0 10px #000c;font-size:20px;font-weight:700;animation:1.1s ease-out forwards floaty;position:absolute;transform:translate(-50%,-50%)}@keyframes floaty{0%{opacity:0;transform:translate(-50%,-30%)scale(.7)}15%{opacity:1;transform:translate(-50%,-60%)scale(1.1)}to{opacity:0;transform:translate(-50%,-160%)scale(1)}}.floaty.heal{color:#8fe08a}.floaty.fire{color:#ff9a3a}.floaty.shock{color:#8fd8ff}.floaty.absorb{color:#9fc4de;font-size:14px}.floaty.text{font-family:var(--serif);color:var(--paper);font-size:15px;font-style:italic;font-weight:400}.hpbar{pointer-events:none;background:#000000b3;border:1px solid #000c;width:44px;height:5px;position:absolute;transform:translate(-50%)}.hpbar>i{background:#c0392b;position:absolute;top:0;bottom:0;left:0}.hpbar.party>i{background:#7fb069}.hpbar .arm{color:#9fc4de;font-size:9px;position:absolute;top:-9px;right:-2px}.hpbar .intent{white-space:nowrap;color:#ff8a7a;background:#0009;border-radius:3px;padding:1px 5px;font-size:11px;position:absolute;top:-22px;left:50%;transform:translate(-50%)}.hpbar .name{white-space:nowrap;color:var(--paper-dim);font-size:10px;position:absolute;top:7px;left:50%;transform:translate(-50%)}.bark{pointer-events:none;white-space:nowrap;padding:5px 9px;font-size:13px;font-style:italic;animation:2.6s ease-out forwards bark;position:absolute;transform:translate(-50%,-100%)}@keyframes bark{0%{opacity:0}10%{opacity:1}80%{opacity:1}to{opacity:0}}.screen{z-index:20;padding:calc(8px + var(--sat)) 0 calc(8px + var(--sab));background:radial-gradient(#140e0a8c,#050406eb);justify-content:center;align-items:center;display:flex;position:absolute;inset:0;overflow-y:auto}.screen>*{margin:auto}.screen.clear{pointer-events:none;background:0 0}.screen.clear>*{pointer-events:auto}.card{width:min(720px,92vw);max-height:90vh;max-height:90dvh;padding:28px 32px;overflow:auto}.card h1{text-align:center;margin-bottom:4px;font-size:34px}.card h2{margin-bottom:12px;font-size:20px}.card p{margin:8px 0;font-size:17px;line-height:1.5}.card .choices{flex-direction:column;gap:10px;margin-top:16px;display:flex}.choice{text-align:left;flex-direction:column;gap:3px;padding:12px 16px;display:flex}.choice .stake{color:var(--paper-dim);font-size:14px;font-style:italic}.choice .req{color:var(--cistern);letter-spacing:.05em;font-size:12px}.row-btns{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:18px;display:flex}.title-screen{text-align:center}.title-screen h1{letter-spacing:.12em;color:var(--paper);text-shadow:0 0 40px #ff8c3a59,0 2px #000;font-family:Cinzel Decorative,serif;font-size:64px}.title-screen .sub{color:var(--paper-dim);margin-top:2px;font-size:18px;font-style:italic}.title-screen .motto{font-family:var(--display);letter-spacing:.3em;color:var(--ember);margin:26px 0 30px;font-size:13px}.boons{grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px;display:grid}.boon{text-align:left;flex-direction:column;gap:6px;min-height:120px;padding:16px;display:flex}.boon h3{font-size:15px}.boon .desc{font-size:14.5px;line-height:1.35}.boon .for{color:var(--cistern);letter-spacing:.05em;font-size:12px}.hub{width:min(1100px,94vw);max-height:94vh;grid-template-columns:1.2fr 1fr;gap:18px;min-height:0;max-height:94dvh;display:grid}.hub .col{flex-direction:column;gap:12px;min-height:0;display:flex;overflow:auto}.hub .box{padding:16px 18px;overflow:auto}.npc{border-bottom:1px solid var(--line);align-items:flex-start;gap:12px;padding:10px 0;display:flex}.npc:last-child{border-bottom:none}.npc .who{font-family:var(--display);letter-spacing:.08em;color:var(--ember);min-width:110px;padding-top:3px;font-size:12px}.npc .say{font-size:15.5px;line-height:1.45}.roster{flex-direction:column;gap:8px;display:flex}.recruit{text-align:left;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.recruit.picked{border-color:var(--ember);background:#46230f99}.recruit .n{font-family:var(--display);letter-spacing:.05em;font-size:13px}.recruit .t{color:var(--paper-dim);font-size:12.5px;font-style:italic}.recruit .abil{color:var(--paper-dim);font-size:12px}.upgrade{text-align:left;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;display:flex}.upgrade .cost{color:var(--ember);font-family:var(--display);white-space:nowrap;font-size:13px}.book{font-family:var(--serif)}.book .entry{border-bottom:1px dotted var(--line);padding:8px 0;font-size:15px;line-height:1.45}.book .entry:first-letter{font-family:var(--display);font-size:1.2em}.pages p{font-style:italic}.keys{grid-template-columns:auto 1fr;gap:6px 16px;margin-top:10px;font-size:14px;display:grid}.keys b{font-family:var(--display);letter-spacing:.06em;color:var(--ember);font-size:12px}#loading{font-family:var(--display);letter-spacing:.2em;background:#07060a;flex-direction:column;justify-content:center;align-items:center;gap:14px;font-size:14px;display:flex;position:absolute;inset:0}#loading .lbar{background:#ffffff14;width:260px;height:3px}#loading .lbar i{background:var(--ember);width:0;height:100%;transition:width .2s;display:block}.settings label{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:8px 0;font-size:15px;display:flex}input[type=range]{accent-color:var(--ember)}.vignette{pointer-events:none;background:radial-gradient(#0000 55%,#0000008c 100%);position:absolute;inset:0}@media (max-width:1099px),(max-height:560px){:root{--edge:8px}#dock{gap:14px}#party{gap:6px}.portrait{width:108px;padding:5px 7px}.portrait .title,.portrait .acted{display:none}.portrait .name{font-size:12px}.portrait .stats{gap:6px;font-size:11px}#hotbar{gap:6px}.ability{width:50px;height:50px;padding:2px}.ability .icon{font-size:18px}.ability .label{letter-spacing:0;font-size:9.5px}.ability .key{font-size:9px;top:1px;left:4px}.ability .cd{font-size:18px}#endturn{width:120px;height:52px;font-size:14px}#endturn small{font-size:10.5px}#explore{width:120px;bottom:calc(var(--edge) + var(--sab))}#undo{min-width:120px;bottom:calc(var(--edge) + var(--sab) + 60px);padding:7px 10px;font-size:14px}#turntip{width:min(260px,70vw);bottom:calc(var(--edge) + var(--sab) + 60px);font-size:12.5px}#undo:not(.hidden)~#turntip{bottom:calc(var(--edge) + var(--sab) + 104px)}#floorname{padding:6px 10px;font-size:12px}#floorname small{font-size:11px}#resources{gap:10px;padding:7px 10px;font-size:12.5px}#topbar button{padding:6px 11px}#banner{letter-spacing:.12em;width:92vw;font-size:21px}#banner small{font-size:13.5px}#log{bottom:calc(var(--edge) + var(--sab) + 70px);max-width:70vw;font-size:13px}.card{padding:20px}.card h1{font-size:26px}.card p{font-size:16px;line-height:1.45}.title-screen h1{font-size:clamp(34px,9vw,64px)}.title-screen .motto{margin:16px 0 20px}.boon{min-height:0;padding:12px}}@media (max-width:720px){:root{--party-h:58px}#dock{right:calc(var(--edge) + var(--sar));flex-direction:column-reverse;align-items:stretch;gap:8px}#hotbar{align-self:flex-start}#party{width:100%}.portrait{width:auto;min-width:0;height:var(--party-h);flex:1 1 0}.portrait .name span:first-child{text-overflow:ellipsis;overflow:hidden}#endturn,#explore{bottom:calc(var(--edge) + var(--sab) + var(--party-h) + 8px);width:112px}#undo{bottom:calc(var(--edge) + var(--sab) + var(--party-h) + 68px);min-width:112px}#turntip{bottom:calc(var(--edge) + var(--sab) + var(--party-h) + 68px)}#undo:not(.hidden)~#turntip{bottom:calc(var(--edge) + var(--sab) + var(--party-h) + 112px)}#log{bottom:calc(var(--edge) + var(--sab) + var(--party-h) + 118px);width:92vw;max-width:92vw}#resources .opt{display:none}#tooltip.docked{top:calc(var(--sat) + 62px)}.hub{grid-template-columns:1fr;max-height:none}.hub .col{overflow:visible}.hub .col:last-child{order:-1}.npc{flex-direction:column;gap:2px}.npc .who{min-width:0}.boons{grid-template-columns:1fr}.keys{grid-template-columns:1fr;gap:2px}.keys b{margin-top:8px}.settings label{gap:12px}.card{padding:18px 16px}.row-btns button{flex:auto}.title-screen{width:100%;padding:0 16px}.title-screen .row-btns{flex-direction:column;align-items:stretch;width:min(320px,100%);margin:18px auto 0}.title-screen .row-btns button{flex:none;padding:11px 14px}}@media (pointer:coarse){.ability .key{display:none}}@media (max-height:560px){.hub{max-height:none}.hub .col{overflow:visible}.card{max-height:none}}
