:root{
  --bg:#060d0d; --panel:rgba(7,16,16,.82); --edge:#1d6f55; --green:#37f2a0; --green2:#1aa56f;
  --red:#ff1e3c; --amber:#ffb347; --cyan:#74e8ff; --txt:#d6efe6; --dim:#7fa597;
}
*{box-sizing:border-box;margin:0;padding:0;user-select:none}
html,body{width:100%;height:100%;overflow:hidden;background:#050a0a;color:var(--txt);
  font-family:"Trebuchet MS","Segoe UI",system-ui,sans-serif;font-size:14px}
#gl{position:fixed;inset:0;width:100%;height:100%;display:block}
.hidden{display:none!important}
#fx-haze,#fx-dmg,#fx-o2,#fx-beam{position:fixed;inset:0;pointer-events:none}
#fx-haze{background:radial-gradient(ellipse at center,rgba(40,255,140,0) 38%,rgba(30,230,120,.55) 100%);opacity:0;mix-blend-mode:screen;transition:opacity .6s}
#fx-dmg{background:radial-gradient(ellipse at center,rgba(255,0,30,0) 40%,rgba(255,0,30,.85) 100%);opacity:0}
#fx-o2{background:radial-gradient(ellipse at center,rgba(0,0,0,0) 30%,rgba(0,0,0,.9) 100%);opacity:0}
#fx-beam{background:linear-gradient(180deg,rgba(120,255,190,.0),rgba(120,255,190,0));opacity:0;overflow:hidden}
#fx-beam::before{content:"";position:absolute;top:-10%;left:50%;width:34vw;height:70vh;margin-left:-17vw;
  background:conic-gradient(from 160deg at 50% 0%,rgba(130,255,200,0) 0deg,rgba(130,255,200,.22) 18deg,rgba(130,255,200,0) 40deg);
  transform-origin:50% 0;animation:sweep 9s ease-in-out infinite alternate}
@keyframes sweep{from{transform:rotate(-38deg)}to{transform:rotate(38deg)}}
#floaters{position:fixed;inset:0;pointer-events:none;overflow:hidden}
.floater{position:absolute;font-weight:800;font-size:15px;color:#fff;text-shadow:0 0 6px #000,0 2px 0 #000;white-space:nowrap;
  animation:rise 1.1s ease-out forwards}
@keyframes rise{from{transform:translate(-50%,0);opacity:1}to{transform:translate(-50%,-46px);opacity:0}}

/* HUD */
#hud{position:fixed;inset:0;pointer-events:none}
#tl{position:absolute;left:18px;top:16px;width:270px}
.bar{position:relative;height:16px;border:1px solid var(--edge);background:rgba(0,0,0,.55);margin-bottom:5px;border-radius:3px;overflow:hidden;transform:skewX(-14deg)}
.bar i{position:absolute;left:0;top:0;bottom:0;width:100%;display:block;transition:width .12s}
.bar.hp i{background:linear-gradient(#ff3550,#a1001a)}
.bar.st i{background:linear-gradient(#f4ff7a,#a3b800)}
.bar.st{height:8px}
.bar span{position:absolute;left:10px;top:-1px;font-size:11px;font-weight:700;text-shadow:0 1px 2px #000}
#o2box{display:flex;align-items:center;gap:10px;margin-top:6px}
#o2dial{width:100px;height:100px;filter:drop-shadow(0 0 8px rgba(116,232,255,.35))}
#o2info{display:flex;flex-direction:column;gap:2px}
#o2txt{font-size:22px;color:var(--cyan);text-shadow:0 0 10px rgba(116,232,255,.6)}
#o2info small{color:var(--dim);font-size:11px;letter-spacing:.04em}
#tc{position:absolute;top:12px;left:50%;transform:translateX(-50%);text-align:center}
#beacon{display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid #2a8f68;padding:6px 16px;border-radius:30px;box-shadow:0 0 18px rgba(55,242,160,.25)}
#beacon b{letter-spacing:.2em;font-size:12px;color:var(--green)}
#beacon em{font-style:normal;color:#fff;font-size:12px}
.bpulse{width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 12px var(--green);animation:pulse 1.6s infinite}
@keyframes pulse{0%,100%{opacity:.35;transform:scale(.8)}50%{opacity:1;transform:scale(1.25)}}
#tr{position:absolute;right:18px;top:14px;text-align:right}
#clock{font-size:22px;font-weight:800;letter-spacing:.06em;text-shadow:0 0 8px #000}
#zoneBox{margin-top:4px;background:var(--panel);border:1px solid var(--edge);padding:6px 12px;border-radius:4px}
#zoneName{display:block;font-size:13px}
#zoneHaze{font-size:11px;color:var(--dim)}
#zoneHaze.bad{color:var(--red)} #zoneHaze.ok{color:var(--green)}
#weather{margin-top:4px;font-size:12px;color:var(--dim)}
#res{position:absolute;right:18px;top:226px;display:flex;flex-direction:column;gap:3px;align-items:flex-end}
.rchip{background:var(--panel);border:1px solid #17433a;padding:2px 9px;border-radius:3px;font-size:12px;min-width:92px;display:flex;justify-content:space-between;gap:10px}
.rchip b{color:#fff}
#quest{position:absolute;left:18px;top:206px;width:285px;background:var(--panel);border-left:3px solid var(--green);padding:8px 12px;border-radius:0 4px 4px 0;font-size:12px;line-height:1.45}
#quest h4{font-size:11px;letter-spacing:.14em;color:var(--green);margin-bottom:3px}
#quest .q{margin-bottom:6px;color:var(--txt)} #quest .q.done{color:var(--dim);text-decoration:line-through}
#quest .main{border-top:1px dashed #2a5a4b;padding-top:6px;margin-top:6px;color:#ffe6a8}
#hotbar{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:6px}
.slot{width:74px;height:62px;background:var(--panel);border:1px solid var(--edge);border-radius:4px;padding:4px 6px;font-size:11px;position:relative;text-align:center;opacity:.75}
.slot.sel{border-color:var(--green);opacity:1;box-shadow:0 0 14px rgba(55,242,160,.4)}
.slot b{display:block;font-size:20px;margin-top:2px}
.slot span{position:absolute;left:5px;top:2px;color:var(--dim);font-size:10px}
.slot em{position:absolute;bottom:2px;right:5px;font-style:normal;color:var(--amber);font-size:10px}
#prompt{position:absolute;bottom:106px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.7);border:1px solid var(--green);padding:6px 16px;border-radius:20px;font-weight:700;display:none}
#minimap{position:absolute;right:18px;bottom:18px;border:2px solid var(--edge);border-radius:50%;background:#050c0c;box-shadow:0 0 22px rgba(0,0,0,.7)}
#toasts{position:absolute;left:50%;top:70px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px}
.toast{background:rgba(5,14,14,.88);border:1px solid var(--green2);padding:7px 18px;border-radius:4px;animation:tin .25s ease-out;font-weight:600}
.toast.warn{border-color:var(--red);color:#ffc4cc}
@keyframes tin{from{transform:translateY(-10px);opacity:0}to{transform:none;opacity:1}}
#hint{position:absolute;left:18px;bottom:6px;font-size:10px;color:#5d8878;letter-spacing:.04em}

/* build bar */
#buildbar{position:fixed;left:50%;bottom:92px;transform:translateX(-50%);display:flex;gap:6px;background:var(--panel);border:1px solid var(--edge);padding:8px;border-radius:6px;pointer-events:auto}
.bitem{width:86px;padding:6px 4px;border:1px solid #1d4d40;border-radius:4px;text-align:center;cursor:pointer;font-size:11px;background:rgba(0,0,0,.35)}
.bitem:hover{border-color:var(--green)} .bitem.sel{border-color:var(--green);background:rgba(55,242,160,.14)}
.bitem.no{opacity:.45}
.bitem b{display:block;font-size:19px}
.bitem small{display:block;color:var(--dim);font-size:10px;margin-top:2px}
#tip{position:fixed;pointer-events:none;background:rgba(5,14,14,.94);border:1px solid var(--green2);padding:8px 12px;border-radius:4px;font-size:12px;line-height:1.5;z-index:20;max-width:260px}
#tip b{color:var(--green)} #tip .need{color:#ff8a98} #tip .have{color:#9dffd0}

/* panels */
#panel{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(780px,94vw);max-height:86vh;overflow:auto;
  background:linear-gradient(180deg,rgba(9,22,21,.97),rgba(5,12,12,.97));border:1px solid var(--edge);border-radius:8px;padding:22px 26px;
  box-shadow:0 0 60px rgba(0,0,0,.85),0 0 40px rgba(55,242,160,.12);z-index:30}
#panel h2{letter-spacing:.14em;font-size:15px;color:var(--green);margin-bottom:4px}
#panel h3{font-size:12px;letter-spacing:.12em;color:var(--dim);margin:14px 0 6px}
#panel p{line-height:1.6;margin:6px 0}
#panel .sub{color:var(--dim);font-size:12px}
#panel .close{position:absolute;right:14px;top:10px;cursor:pointer;color:var(--dim);font-size:20px}
.row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border:1px solid #17433a;border-radius:4px;margin:5px 0;background:rgba(0,0,0,.28)}
.row .l{flex:1} .row .l b{color:#fff} .row .l small{display:block;color:var(--dim);margin-top:2px}
.cost{font-size:11px;color:var(--dim);margin-top:3px}
.cost .no{color:#ff7a8c} .cost .ok{color:#9dffd0}
button,.btn{background:linear-gradient(#1c8a62,#0f5a40);color:#eafff6;border:1px solid #3bd79b;border-radius:4px;padding:7px 14px;font-weight:700;cursor:pointer;font-family:inherit;font-size:12px;letter-spacing:.05em}
button:hover{filter:brightness(1.25)}
button:disabled{opacity:.35;cursor:not-allowed;filter:none}
button.alt{background:linear-gradient(#444,#222);border-color:#777}
button.red{background:linear-gradient(#a8142a,#5d0a17);border-color:#ff5a72}
.pips{display:inline-flex;gap:3px;margin-left:8px}
.pip{width:12px;height:8px;background:#163a30;border:1px solid #2a6f58}
.pip.on{background:var(--green);box-shadow:0 0 6px var(--green)}
.npcface{width:54px;height:54px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:26px;font-weight:800;border:2px solid var(--green);background:#0a2a22;flex-shrink:0}
.dlg{display:flex;gap:16px;align-items:flex-start}
.dlg .body{flex:1}
.note{border-left:3px solid #2a8f68;padding:6px 12px;margin:8px 0;background:rgba(0,0,0,.25)}
.note h4{color:var(--amber);font-size:12px;letter-spacing:.08em}
.note p{font-size:12px;color:#c8e4da;font-style:italic}
.tabs{display:flex;gap:6px;margin:10px 0}
.tab{padding:5px 12px;border:1px solid #1d4d40;border-radius:3px;cursor:pointer;font-size:12px}
.tab.sel{background:rgba(55,242,160,.15);border-color:var(--green)}

/* map */
#mapov{position:fixed;inset:0;background:rgba(2,6,6,.88);z-index:25;display:flex;align-items:center;justify-content:center;gap:20px}
#bigmap{border:2px solid var(--edge);border-radius:6px;max-height:92vh;max-width:60vw;background:#050c0c}
#maplegend{width:260px;font-size:12px;line-height:1.7}
#maplegend h2{color:var(--green);letter-spacing:.14em;font-size:14px;margin-bottom:6px}

/* banner / death / intro */
#banner{position:fixed;left:0;right:0;top:34%;text-align:center;pointer-events:none;z-index:15}
#banner h1{font-size:54px;letter-spacing:.3em;font-weight:900;color:#fff;text-shadow:0 0 30px var(--green),0 0 80px var(--green);animation:bn 3.4s ease-out forwards}
#banner p{margin-top:8px;color:var(--green);letter-spacing:.3em;font-size:14px;animation:bn 3.4s ease-out forwards}
@keyframes bn{0%{opacity:0;transform:scale(1.15)}12%{opacity:1;transform:scale(1)}80%{opacity:1}100%{opacity:0}}
#death{position:fixed;inset:0;background:radial-gradient(ellipse at center,rgba(60,0,10,.88),rgba(0,0,0,.97));z-index:40;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;text-align:center}
#death h1{font-size:58px;letter-spacing:.3em;color:var(--red);text-shadow:0 0 30px #f00}
#death p{max-width:520px;color:#caa;line-height:1.6}
#intro{position:fixed;inset:0;z-index:50;background:radial-gradient(ellipse at 50% 40%,#0c2a24 0%,#030807 70%);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px}
#intro .logo{font-size:clamp(34px,8vw,84px);font-weight:900;letter-spacing:.28em;color:#fff;text-shadow:0 0 28px var(--green),0 0 90px #12ff95;margin-left:.28em}
#intro{overflow:auto}
@media (max-width:900px){#intro .pasts{flex-direction:column}.past{width:min(420px,88vw)}#intro .lore{font-size:13px}}
#intro .tag{letter-spacing:.34em;color:var(--green);font-size:13px;margin:6px 0 26px}
#intro .lore{max-width:700px;line-height:1.75;color:#bfe0d4;font-size:15px;text-align:left}
#intro .lore p{margin:9px 0;opacity:0;animation:fadein 1.2s forwards}
#intro .lore p:nth-child(1){animation-delay:.3s}#intro .lore p:nth-child(2){animation-delay:1.6s}#intro .lore p:nth-child(3){animation-delay:3s}
#intro .lore p:nth-child(4){animation-delay:4.4s}#intro .lore p:nth-child(5){animation-delay:5.8s}#intro .lore p:nth-child(6){animation-delay:7.4s}
#intro .lore em{color:var(--amber);font-style:normal;font-weight:700}
#intro .lore strong{color:var(--green)}
@keyframes fadein{to{opacity:1}}
#intro .pasts{display:flex;gap:12px;margin:22px 0 14px;opacity:0;animation:fadein 1s 8.6s forwards}
.past{width:210px;padding:12px;border:1px solid #1d4d40;border-radius:6px;cursor:pointer;background:rgba(0,0,0,.35);text-align:left;font-size:12px}
.past:hover{border-color:var(--green)} .past.sel{border-color:var(--green);background:rgba(55,242,160,.12);box-shadow:0 0 18px rgba(55,242,160,.3)}
.past b{display:block;font-size:14px;color:#fff;margin-bottom:4px}
.past span{color:var(--dim)}
#intro .go{opacity:0;animation:fadein 1s 9.4s forwards;display:flex;gap:10px}
#intro button{padding:12px 30px;font-size:14px;letter-spacing:.2em}

/* ---- icon-first HUD ---- */
#hint{display:none}
#dock{position:absolute;left:18px;bottom:16px;display:flex;gap:6px;z-index:6}
.dk{position:relative;width:38px;height:38px;border-radius:11px;border:1px solid #1d5a49;background:linear-gradient(160deg,rgba(14,40,36,.92),rgba(4,14,13,.95));color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:transform .15s,box-shadow .15s,border-color .15s;letter-spacing:0;font-weight:400}
.dk .di{font-size:19px;transition:transform .2s}.dk:hover{transform:translateY(-4px) scale(1.08);border-color:#37f2a0;box-shadow:0 6px 18px rgba(55,242,160,.3)}.dk:hover .di{transform:rotate(-8deg) scale(1.15)}
.dk.on{border-color:#ffd24d;box-shadow:0 0 14px rgba(255,210,77,.45)}.dk.hid{display:none}
.dk .dkey{position:absolute;right:-3px;bottom:-4px;font-style:normal;font-size:8px;font-weight:700;background:#0a1c18;border:1px solid #2a6f58;border-radius:4px;padding:0 3px;color:#9dffd0}
.dk .dtip{position:absolute;bottom:46px;left:50%;transform:translateX(-50%) translateY(4px);white-space:nowrap;background:rgba(2,10,9,.95);border:1px solid #2fbf8a;border-radius:7px;padding:3px 9px;font-size:11px;letter-spacing:.08em;opacity:0;pointer-events:none;transition:.15s}
.dk:hover .dtip{opacity:1;transform:translateX(-50%) translateY(0)}
.dk .dbadge{display:none;position:absolute;right:-3px;top:-3px;width:11px;height:11px;border-radius:50%;background:#ffd24d;box-shadow:0 0 10px #ffd24d;animation:xpp 1s infinite alternate}.dk.badge .dbadge{display:block}
#keys{position:absolute;left:50%;bottom:92px;transform:translateX(-50%);display:flex;gap:8px;transition:opacity 1.2s;pointer-events:none}#keys.fade{opacity:0}
#keys .kk{display:flex;flex-direction:column;align-items:center;gap:1px;background:rgba(3,12,11,.78);border:1px solid #1d5a49;border-radius:9px;padding:4px 8px;min-width:46px}
#keys .kc{font-size:9px;font-weight:700;letter-spacing:.06em;color:#9dffd0;border:1px solid #2a6f58;border-radius:4px;padding:0 4px;background:#08201b}#keys .ki{font-size:17px}#keys small{font-size:8.5px;color:#7fb5a2;letter-spacing:.1em}
/* compact objectives: a title and a face; details unfold when you hover */
#quest .q{display:flex;gap:8px;align-items:center;transition:background .15s;border-radius:6px;padding:2px 3px}#quest .q:hover{background:rgba(55,242,160,.08)}
#quest .q>div{overflow:hidden;line-height:1.3}#quest:not(:hover) .q>div{max-height:2.7em}
.toast{display:flex;align-items:center;gap:6px}
/* hover motion everywhere */
.card .ic{transition:transform .2s,box-shadow .2s}.card:hover .ic{transform:rotate(-6deg) scale(1.1);box-shadow:0 0 16px rgba(55,242,160,.4)}
.card .sub{max-height:3em;overflow:hidden;transition:max-height .3s}.card:hover .sub{max-height:14em}
button{transition:transform .12s,box-shadow .15s,background .15s,filter .15s}button:not(:disabled):hover{transform:translateY(-1px) scale(1.03)}button:not(:disabled):active{transform:scale(.97)}
.chip{transition:transform .12s}.chip:hover{transform:translateY(-1px)}
.tilebtn{transition:transform .15s,box-shadow .15s}.tilebtn:hover{transform:translateY(-3px) scale(1.03)}
.bitem{transition:transform .15s,box-shadow .15s}.bitem:hover{transform:translateY(-4px) scale(1.05)}
.rchip{transition:transform .12s}.rchip:hover{transform:translateX(-3px)}
.pn-foot{opacity:.55;font-size:10.5px}.pn-foot:hover{opacity:1}

/* ---- co-op controls on the title screen ---- */
#intro .coop{display:flex;gap:10px;align-items:center;justify-content:center;margin-top:14px;flex-wrap:wrap}
#intro .coop .ct{font-size:11px;letter-spacing:.24em;color:#6ae8ff}
#intro .coop input{background:rgba(0,0,0,.5);border:1px solid #2a8a9a;border-radius:8px;color:#fff;padding:9px 12px;font-size:15px;letter-spacing:.3em;text-transform:uppercase;width:150px;text-align:center}
#intro .coop input:focus{outline:none;border-color:#6ae8ff;box-shadow:0 0 14px rgba(106,232,255,.4)}
#intro .coop{opacity:0;animation:fadein 1s 9.8s forwards}
#intro.skip .lore p,#intro.skip .pasts,#intro.skip .go,#intro.skip .coop{animation:none;opacity:1}
#intro .skiphint{position:fixed;bottom:10px;left:0;right:0;font-size:10px;letter-spacing:.2em;color:#4a7a6a}
