/* 16H Horror Daily Fun — darker theme. Cozy bones (rounded, chunky) but the warmth has teeth. */
@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@300;400;500;600;700&family=Baloo+2:wght@500;600;700;800&family=Creepster&display=swap');

:root{
  --bg:#0a0810; --bg2:#120e1c; --panel:#191325; --panel2:#221a31; --line:#352a48;
  --ink:#ece6f5; --muted:#9b8db6;
  --blood:#e23b4e; --amber:#e8a13c; --teal:#46c7b0; --purple:#9b78e8; --pink:#d96ba8;
  --c-common:#8a8499; --c-uncommon:#5fae6a; --c-rare:#4aa3e0; --c-epic:#b06fe6; --c-legendary:#f0a93a; --c-cursed:#e23b4e;
  --shadow:rgba(0,0,0,.55);
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:"Fredoka",system-ui,sans-serif;-webkit-text-size-adjust:100%}
body{
  min-height:100vh;overflow-x:hidden;padding-bottom:78px;
  background:
    radial-gradient(900px 460px at 15% -10%, #1c1430 0%, transparent 60%),
    radial-gradient(700px 420px at 100% 0%, #1a1228 0%, transparent 55%),
    linear-gradient(180deg,#0d0a16 0%, #07050d 100%);
  background-attachment:fixed;
}
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:99;opacity:.05;
  background-image:repeating-linear-gradient(0deg,#000 0 1px,transparent 1px 3px)} /* faint scanlines */
h1,h2,h3,h4{font-family:"Baloo 2","Fredoka";margin:0;line-height:1.05}
a{color:var(--pink)}
.wrap{max-width:680px;margin:0 auto;padding:14px clamp(12px,3.5vw,20px)}

/* topbar */
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:8px;flex-wrap:wrap;
  background:rgba(10,8,16,.86);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);
  padding:10px clamp(12px,3.5vw,20px);margin:0 auto;max-width:680px}
.brand{font-family:"Creepster",cursive;font-size:22px;letter-spacing:.04em;color:var(--blood);text-shadow:0 0 14px rgba(226,59,78,.4)}
.purse{display:flex;gap:10px;margin-left:auto;font-weight:600;font-size:14px}
.purse b{font-weight:700}
.streakpill{font-size:12px;color:var(--amber);font-weight:600}
.logout{font-size:11px;color:var(--muted);background:none;border:none;cursor:pointer}

/* cards / panels */
.card{background:linear-gradient(180deg,var(--panel) 0%, var(--bg2) 140%);border:1px solid var(--line);
  border-radius:18px;padding:16px;margin:14px 0;box-shadow:0 8px 22px var(--shadow)}
.card h3{font-size:16px;margin-bottom:8px;color:var(--ink)}
.muted{color:var(--muted)}.tiny{font-size:12px}.center{text-align:center}
.kick{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--blood);font-weight:600}
.story{font-size:15px;line-height:1.6;color:#ddd2ee}
.story.eerie{font-style:italic}

/* buttons */
.btn{font-family:"Baloo 2";font-weight:700;font-size:15px;cursor:pointer;border:none;border-radius:999px;
  padding:12px 20px;color:#120c08;background:var(--amber);box-shadow:0 4px 0 #9c6a22,0 8px 14px var(--shadow);
  transition:transform .06s,box-shadow .06s;display:inline-flex;align-items:center;gap:7px;justify-content:center}
.btn:hover{transform:translateY(-1px)}.btn:active{transform:translateY(3px);box-shadow:0 1px 0 #9c6a22}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.btn.blood{background:var(--blood);color:#fff;box-shadow:0 4px 0 #8e1f2c,0 8px 14px var(--shadow)}
.btn.teal{background:var(--teal);color:#06231e;box-shadow:0 4px 0 #2c7e6e}
.btn.ghost{background:#241b34;color:var(--ink);box-shadow:0 4px 0 #160f22}
.btn.big{font-size:18px;padding:15px 26px;width:100%}
.btn.sm{font-size:12px;padding:7px 13px;box-shadow:0 3px 0 #9c6a22}
.row{display:flex;gap:8px;flex-wrap:wrap}

/* inputs */
input,select,textarea{width:100%;font-family:inherit;font-size:15px;color:var(--ink);background:#0f0b18;
  border:1.5px solid var(--line);border-radius:12px;padding:11px 13px;-webkit-appearance:none;appearance:none}
textarea{min-height:70px;resize:vertical}label{font-size:12px;color:var(--muted);font-weight:600;display:block;margin:8px 0 5px}

/* rarity */
.rar{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;padding:3px 8px;border-radius:999px;color:#0a0810}
.rar.common{background:var(--c-common)}.rar.uncommon{background:var(--c-uncommon)}.rar.rare{background:var(--c-rare)}
.rar.epic{background:var(--c-epic)}.rar.legendary{background:var(--c-legendary)}.rar.cursed{background:var(--c-cursed);color:#fff}
.rar.eldritch{background:#46e0b0;color:#06231e;box-shadow:0 0 10px rgba(70,224,176,.6)}
.rar.abyssal{background:#8f5cff;color:#fff;box-shadow:0 0 12px rgba(143,92,255,.7)}
.rar.unspeakable{background:#ff5ce0;color:#1a0014;box-shadow:0 0 16px rgba(255,92,224,.85);animation:throb 1.6s ease-in-out infinite}
@keyframes throb{0%,100%{box-shadow:0 0 12px rgba(255,92,224,.6)}50%{box-shadow:0 0 22px rgba(255,92,224,1)}}
.spec.eldritch,.spec.abyssal,.spec.unspeakable{border-color:currentColor}
.spec.eldritch{box-shadow:inset 0 0 30px rgba(70,224,176,.18),0 12px 0 rgba(12,7,24,.3)}
.spec.abyssal{box-shadow:inset 0 0 30px rgba(143,92,255,.22),0 12px 0 rgba(12,7,24,.3)}
.spec.unspeakable{box-shadow:inset 0 0 36px rgba(255,92,224,.26),0 12px 0 rgba(12,7,24,.3)}
/* item stats */
.stats{margin-top:10px}
.statrow{display:flex;align-items:center;gap:8px;margin:4px 0}
.statrow .stl{font-size:11px;font-weight:600;color:var(--muted);width:58px}
.statrow .stv{font-size:11px;font-weight:700;color:var(--ink);width:26px;text-align:right}
.stbar{flex:1;height:8px;border-radius:999px;background:#0f0b18;border:1px solid var(--line);overflow:hidden}
.stbar > i{display:block;height:100%}
/* aura index */
.aura{background:linear-gradient(180deg,#1a1330,#0c0812);border:2px solid var(--purple);border-radius:18px;padding:14px;margin:14px 0;box-shadow:0 0 20px -6px var(--purple)}
.aura .score{font-family:"Baloo 2";font-weight:800;font-size:30px;line-height:1}
.aura .label{font-weight:700;color:var(--purple)}
.spec{border:1px solid var(--line);border-radius:16px;padding:14px;background:#140f20;position:relative;overflow:hidden}
.spec.legendary,.spec.cursed{box-shadow:inset 0 0 26px rgba(240,169,58,.18)}
.spec.cursed{box-shadow:inset 0 0 26px rgba(226,59,78,.22)}
.spec h4{font-size:19px;margin:8px 0 4px}.spec .src{font-size:12px;color:var(--muted);margin-bottom:8px}
.spec .desc{font-size:14px;line-height:1.5;color:#d8cdea}
.reveal{animation:pop .35s cubic-bezier(.2,1.3,.5,1)}@keyframes pop{from{opacity:0;transform:scale(.92)}to{opacity:1}}

/* inventory / codex grids */
.igrid{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr))}
.icard{border:1px solid var(--line);border-radius:14px;padding:11px;background:#140f20;cursor:pointer;transition:border-color .12s}
.icard:hover{border-color:var(--amber)}
.icard .nm{font-weight:600;font-size:14px;margin:6px 0 2px;line-height:1.2}
.icard .mt{font-size:11px;color:var(--muted)}
.icard .qty{position:absolute}
.emoji{font-size:22px}

/* town grid */
.town{display:grid;gap:4px;margin-top:10px;touch-action:manipulation}
.tile{aspect-ratio:1;border:1px solid #241b34;border-radius:8px;background:#0f0b18;display:flex;align-items:center;justify-content:center;
  font-size:min(5vw,22px);cursor:pointer;position:relative}
.tile:hover{border-color:var(--line)}
.tile.has{background:#160f24;border-color:var(--line)}
.tile .dot{position:absolute;bottom:2px;right:3px;width:6px;height:6px;border-radius:50%}

/* progress bar */
.bar{height:14px;border-radius:999px;background:#0f0b18;border:1px solid var(--line);overflow:hidden}
.bar > i{display:block;height:100%;background:linear-gradient(90deg,var(--blood),var(--amber))}

/* feed / mail rows */
.rowitem{display:flex;gap:10px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:10px 12px;margin:8px 0;background:#140f20}
.rowitem .grow{flex:1;min-width:0}
.rowitem small{color:var(--muted)}
.unread{border-color:var(--amber);box-shadow:0 0 0 1px rgba(232,161,60,.25)}

/* bottom nav */
.nav{position:fixed;bottom:0;left:0;right:0;z-index:60;display:flex;justify-content:space-around;
  background:rgba(10,8,16,.94);backdrop-filter:blur(10px);border-top:1px solid var(--line);padding:6px 4px env(safe-area-inset-bottom)}
.nav button{flex:1;min-width:0;background:none;border:none;color:var(--muted);font-family:inherit;font-size:9px;font-weight:600;
  cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 1px;border-radius:10px;overflow:hidden;white-space:nowrap}
.nav button .ic{font-size:18px;filter:grayscale(.4)}
.nav button.on{color:var(--amber)}.nav button.on .ic{filter:none}
.badge{position:absolute;transform:translate(10px,-6px);background:var(--blood);color:#fff;font-size:9px;font-weight:700;border-radius:999px;padding:1px 5px}

/* séance */
.glyphs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:300px;margin:16px auto}
.glyph{aspect-ratio:1;border-radius:16px;background:#140f20;border:2px solid var(--line);font-size:32px;
  display:flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .08s,box-shadow .12s,background .12s}
.glyph.lit{background:var(--amber);box-shadow:0 0 24px rgba(232,161,60,.6);transform:scale(1.04)}
.glyph.wrong{background:var(--blood);box-shadow:0 0 24px rgba(226,59,78,.6)}

/* procedural glyph tiles */
.glyphtile{position:relative;border-radius:11px;background:radial-gradient(circle at 50% 34%, #1a1330, #0b0712);border:2px solid var(--gc);overflow:hidden;flex:0 0 auto;box-shadow:0 0 14px -4px var(--gc)}
.glyphtile .gsvg{position:absolute;inset:0;padding:5px}
.glyphtile .gc{position:absolute;line-height:1;font-weight:700;text-shadow:0 1px 2px #000;z-index:2}
.glyphtile .gc.tl{top:2px;left:3px;font-size:11px}
.glyphtile .gc.bl{bottom:2px;left:4px;color:var(--gc);font-family:ui-monospace,monospace;font-size:8px;letter-spacing:.02em}
.glyphtile .gc.tr{top:4px;right:4px;display:flex;gap:1.5px}
.glyphtile .gc.tr i{width:3px;height:3px;border-radius:50%;display:block}

/* archive */
.arch{display:flex;flex-direction:column;gap:10px}
.arch .row-item{align-items:flex-start}
.arch .meta{min-width:0}
.arch h4{font-size:16px;margin:0 0 2px;line-height:1.15}
.arch .desc{font-size:13px;color:#d3c8e6;line-height:1.45;margin:6px 0}
.fate{display:inline-block;font-size:11px;font-weight:600;border-radius:999px;padding:2px 9px;margin-top:4px}
.fate.display{background:rgba(111,227,205,.16);color:var(--teal)}
.fate.closet{background:rgba(232,161,60,.16);color:var(--amber)}
.fate.fused{background:rgba(187,149,255,.16);color:var(--purple)}
.fate.gone{background:rgba(154,141,182,.14);color:var(--muted)}
.archno{font-family:ui-monospace,monospace;font-size:11px;color:var(--muted)}

/* mini-game picker + arenas */
.gpick{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr))}
.gpick .icard{text-align:center}
.gpick .gem{font-size:30px}
.gpick .pl{font-size:11px;color:var(--amber);font-weight:600;margin-top:4px}
.gpick .pl.none{color:var(--muted)}
.arena{min-height:230px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center}
.hud{font-weight:700;font-size:15px;color:var(--ink)}
.bigfig{font-size:84px;line-height:1;transition:transform .08s,filter .08s,text-shadow .08s;filter:grayscale(.5) brightness(.7);cursor:pointer;user-select:none}
.bigfig.lunge{filter:none;transform:scale(1.22);text-shadow:0 0 34px var(--blood)}
.bigfig.too{filter:grayscale(1);transform:scale(.9)}
.graves{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:300px;width:100%;margin:0 auto}
.grave{aspect-ratio:1;border-radius:14px;background:#120d1d;border:2px solid var(--line);font-size:34px;display:flex;align-items:center;justify-content:center;cursor:pointer;user-select:none;transition:background .08s,border-color .08s}
.grave.up{background:#1f1432;border-color:var(--amber);box-shadow:0 0 18px rgba(232,161,60,.35)}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;max-width:300px;width:100%;margin:0 auto}
.tcard{aspect-ratio:.78;border-radius:10px;background:#241b34;border:2px solid var(--line);font-size:26px;display:flex;align-items:center;justify-content:center;cursor:pointer;user-select:none}
.tcard.up{background:#120d1d;border-color:var(--amber)}
.tcard.done{opacity:.3;cursor:default}

/* tales by firelight — storybook passages */
.tale-pass{border-left:3px solid var(--line);padding:4px 0 6px 13px;margin:12px 0}
.tale-pass .who{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.tale-pass p{margin:4px 0 0;font-size:15.5px;line-height:1.62;color:#e9e0f6;font-family:Georgia,"Times New Roman",serif}
.tale-pass.jesse{border-color:#4aa3e0}     .tale-pass.jesse .who{color:#4aa3e0}
.tale-pass.michelle{border-color:#ff86c2}  .tale-pass.michelle .who{color:#ff86c2}
.tale-pass.ember{border-color:var(--amber);background:linear-gradient(90deg,rgba(232,161,60,.06),transparent)}
.tale-pass.ember .who{color:var(--amber)} .tale-pass.ember p{font-style:italic}

/* dead stop (timing) */
.track{position:relative;width:100%;max-width:320px;height:30px;margin:18px auto;border:2px solid var(--line);border-radius:999px;background:#0f0b18;overflow:hidden}
.track .zone{position:absolute;top:0;bottom:0;background:rgba(111,227,205,.28);border-left:2px solid var(--teal);border-right:2px solid var(--teal)}
.track .marker{position:absolute;top:-2px;bottom:-2px;width:6px;margin-left:-3px;background:var(--blood);box-shadow:0 0 12px var(--blood)}
/* ouija (wordle) */
.wrows{display:flex;flex-direction:column;gap:6px;align-items:center;margin:10px 0}
.wrow{display:flex;gap:6px}
.wcell{width:42px;height:42px;border:2px solid var(--line);border-radius:8px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:20px;text-transform:uppercase;font-family:"Baloo 2"}
.wcell.hit{background:var(--c-uncommon);border-color:var(--c-uncommon);color:#06231e}
.wcell.near{background:var(--amber);border-color:var(--amber);color:#2a1a06}
.wcell.miss{background:#241b34;border-color:#241b34;color:var(--muted)}
/* bat flight (flappy) */
.fly{position:relative;width:100%;height:260px;background:linear-gradient(180deg,#150e24,#0a0712);border:2px solid var(--line);border-radius:14px;overflow:hidden;margin:10px 0;touch-action:manipulation;cursor:pointer}
.bat{position:absolute;font-size:24px;left:38px;will-change:top;z-index:2}
.pipe{position:absolute;width:42px;background:linear-gradient(180deg,#2a1f3e,#170f26);border:1px solid var(--line);box-shadow:inset 0 0 8px #000}
/* candle snuff (lights out) — reuses .graves/.grave */
.candle-on{background:#3a2a10 !important;border-color:var(--amber) !important;box-shadow:0 0 14px rgba(232,161,60,.5)!important}

/* custom art swapped in for emoji — sizes to surrounding text */
.artg{height:1.25em;width:auto;vertical-align:-0.28em;object-fit:contain;display:inline-block}
/* vibrant stroke outline (set --oc per use) so coins pop on the dark UI */
.artg.ol{filter:
  drop-shadow(1px 0 0 var(--oc)) drop-shadow(-1px 0 0 var(--oc))
  drop-shadow(0 1px 0 var(--oc)) drop-shadow(0 -1px 0 var(--oc))
  drop-shadow(1px 1px 0 var(--oc)) drop-shadow(-1px -1px 0 var(--oc))
  drop-shadow(0 0 2px var(--oc))}
.purse .artg{height:1.5em;vertical-align:-0.4em}
.type-pill .artg,.rar .artg{height:1.1em}

/* nav-bar icons */
.nav .ic .navimg{width:24px;height:24px;object-fit:contain;display:block;margin:0 auto}
/* building sprites — inline (menu/modal) default, fill the grid tile in town */
.bldimg{height:1.15em;width:auto;object-fit:contain;vertical-align:-0.22em}
.icard .emoji .bldimg{height:1.6em}
.tile .bldimg{height:86%;width:86%;vertical-align:0}
.tile .artg{height:74%;width:auto}

/* séance/tarot sigil art inside game cells */
.glyph img.gimg{width:66%;height:66%;object-fit:contain;pointer-events:none}
.tcard img.gimg{width:80%;height:80%;object-fit:contain;pointer-events:none}

/* Mort — floating assistant button + chat */
.mortfab img{width:44px;height:44px;object-fit:contain;display:block;margin:auto;filter:drop-shadow(0 2px 4px rgba(0,0,0,.6))}
.mortfab{position:fixed;right:14px;bottom:86px;z-index:66;width:54px;height:54px;border-radius:50%;border:2px solid var(--teal);
  background:radial-gradient(circle at 50% 36%,#1b2a2a,#0b0712);color:#fff;font-size:25px;cursor:pointer;
  box-shadow:0 6px 18px rgba(0,0,0,.55),0 0 16px rgba(111,227,205,.4);animation:bobf 3.6s ease-in-out infinite}
@keyframes bobf{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.mortfab .badge{transform:translate(16px,-20px)}
.mortchat{display:flex;flex-direction:column;height:68vh}
.mortlog{flex:1;overflow:auto;display:flex;flex-direction:column;gap:8px;padding:10px 2px;margin-top:8px}
.mbub{max-width:84%;padding:9px 13px;border-radius:16px;font-size:14px;line-height:1.45;white-space:pre-wrap;word-wrap:break-word}
.mbub.mort{align-self:flex-start;background:#152826;border:1px solid #2f5b53;color:#dff5ef;border-bottom-left-radius:4px}
.mbub.me{align-self:flex-end;background:#2a1b3a;border:1px solid var(--line);color:var(--ink);border-bottom-right-radius:4px}
.mbub.leak{border-color:var(--pink);box-shadow:0 0 0 1px rgba(217,107,168,.35)}

.toast{position:fixed;left:50%;bottom:92px;transform:translateX(-50%);z-index:80;background:#1a1426;border:1px solid var(--line);
  color:var(--ink);padding:10px 16px;border-radius:999px;font-weight:600;font-size:14px;box-shadow:0 8px 20px var(--shadow);
  opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;max-width:90vw}
.toast.show{opacity:1;transform:translateX(-50%) translateY(-4px)}

/* login */
.login{max-width:360px;margin:12vh auto 0;text-align:center}
.login .brand{font-size:34px;display:block;margin-bottom:4px}
.modal-back{position:fixed;inset:0;z-index:70;background:rgba(4,3,8,.7);display:flex;align-items:flex-end;justify-content:center}
.modal{background:var(--panel);border:1px solid var(--line);border-radius:20px 20px 0 0;width:100%;max-width:680px;
  padding:18px;max-height:84vh;overflow:auto;animation:up .25s ease}@keyframes up{from{transform:translateY(30px)}to{transform:none}}
