:root{
  --ink:#0f1c2b; --paper:#fff8ec; --accent:#ffb02e; --accent2:#ff6a3d;
  --storm:#2fd6c3; --health:#7be36b; --shield:#5ab8ff; --danger:#ff4d5e;
  --ui: clamp(10px, 1.6vmin, 15px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;overflow:hidden;background:var(--ink);color:var(--paper);
  font-family:"Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;
  user-select:none;-webkit-user-select:none;touch-action:none;overscroll-behavior:none}
#app{position:fixed;inset:0}
#view{position:absolute;inset:0;width:100%;height:100%;display:block}
.hidden{display:none!important}
button{font:inherit;color:inherit;cursor:pointer}

/* ---------- HUD ---------- */
#hud{position:absolute;inset:0;pointer-events:none;font-size:var(--ui)}
.pill{background:rgba(15,28,43,.72);border:1px solid rgba(255,255,255,.15);border-radius:999px;
  padding:.35em .9em;font-weight:600;letter-spacing:.02em;backdrop-filter:blur(4px)}
.pill b{color:var(--accent);font-size:1.15em}
#topleft{position:absolute;left:12px;top:12px;display:flex;gap:6px}
#stormtext{position:absolute;left:50%;top:12px;transform:translateX(-50%);white-space:nowrap}
#stormtext.warn{color:var(--storm);border-color:var(--storm)}
#minimap{position:absolute;right:12px;top:12px;width:calc(var(--ui)*10);height:calc(var(--ui)*10);
  border-radius:14px;border:2px solid rgba(255,255,255,.35);background:#20324a}
#feed{position:absolute;right:12px;top:calc(var(--ui)*10 + 22px);display:flex;flex-direction:column;
  align-items:flex-end;gap:4px}
#feed div{background:rgba(15,28,43,.7);padding:.25em .7em;border-radius:8px;animation:fade 4s forwards}
@keyframes fade{0%,80%{opacity:1}100%{opacity:0}}

#crosshair{position:absolute;left:50%;top:50%;width:0;height:0}
#crosshair i{position:absolute;background:#fff;box-shadow:0 0 2px #000}
#crosshair i:nth-child(1){width:2px;height:8px;left:-1px;top:-14px}
#crosshair i:nth-child(2){width:2px;height:8px;left:-1px;top:6px}
#crosshair i:nth-child(3){width:8px;height:2px;left:-14px;top:-1px}
#crosshair i:nth-child(4){width:8px;height:2px;left:6px;top:-1px}
#crosshair.build i{background:var(--shield)}
#hitmarker{position:absolute;left:50%;top:50%;width:22px;height:22px;margin:-11px;opacity:0;
  background:
   linear-gradient(45deg,transparent 45%,#fff 45%,#fff 55%,transparent 55%),
   linear-gradient(-45deg,transparent 45%,#fff 45%,#fff 55%,transparent 55%)}
#hitmarker.on{animation:hm .25s}
#hitmarker.head{filter:drop-shadow(0 0 3px var(--accent)) sepia(1) saturate(8) hue-rotate(-10deg)}
@keyframes hm{0%{opacity:1;transform:scale(1.3)}100%{opacity:0;transform:scale(1)}}
#dmgdir{position:absolute;left:50%;top:50%;width:200px;height:200px;margin:-100px;opacity:0;border-radius:50%;
  border-top:6px solid var(--danger);transition:opacity .5s}
#center-msg{position:absolute;left:50%;top:30%;transform:translate(-50%,-50%);text-align:center;
  font-size:1.6em;font-weight:800;text-shadow:0 2px 8px #000;white-space:nowrap}
#center-msg small{display:block;font-size:.55em;font-weight:600;opacity:.85;margin-top:.3em}

#bars{position:absolute;left:12px;bottom:12px;width:calc(var(--ui)*16);display:flex;flex-direction:column;gap:5px}
.bar{position:relative;height:calc(var(--ui)*1.35);background:rgba(15,28,43,.75);border-radius:6px;overflow:hidden;
  border:1px solid rgba(255,255,255,.2)}
.bar span{position:absolute;left:0;top:0;bottom:0;transition:width .15s}
.bar.health span{background:var(--health)} .bar.shield span{background:var(--shield)}
.bar em{position:absolute;right:8px;top:50%;transform:translateY(-50%);font-style:normal;font-weight:800;
  font-size:.95em;text-shadow:0 1px 2px #000}

#hotbar{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);display:flex;gap:6px;align-items:flex-end;
  pointer-events:auto}
.slot{position:relative;width:calc(var(--ui)*4.6);height:calc(var(--ui)*4.6);border-radius:10px;
  background:rgba(15,28,43,.75);border:2px solid rgba(255,255,255,.2);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:2px;padding:0}
.slot.active{border-color:var(--accent);background:rgba(255,176,46,.22)}
.slot small{position:absolute;left:5px;top:3px;font-size:.75em;opacity:.7}
.slot em{font-style:normal;font-size:.75em;font-weight:700}
.ico{display:block;width:calc(var(--ui)*1.9);height:calc(var(--ui)*1.6);background:var(--paper);
  -webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center}
.ico.gun{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 16'%3E%3Cpath d='M1 5h16l2-2h4v4h-3v2h-6l-2 6H6l1-6H1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 16'%3E%3Cpath d='M1 5h16l2-2h4v4h-3v2h-6l-2 6H6l1-6H1z'/%3E%3C/svg%3E")}
.ico.wall{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M2 1h16v14H2z' fill='none' stroke='%23000' stroke-width='2.5'/%3E%3Cpath d='M2 8h16M10 1v7M6 8v7M14 8v7' stroke='%23000' stroke-width='1.5'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M2 1h16v14H2z' fill='none' stroke='%23000' stroke-width='2.5'/%3E%3Cpath d='M2 8h16M10 1v7M6 8v7M14 8v7' stroke='%23000' stroke-width='1.5'/%3E%3C/svg%3E")}
.ico.ramp{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M1 15L19 1v14z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M1 15L19 1v14z'/%3E%3C/svg%3E")}
.ico.floor{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M5 6h14l-4 5H1z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M5 6h14l-4 5H1z'/%3E%3C/svg%3E")}
.ico.brick{width:calc(var(--ui)*1.3);height:calc(var(--ui)*1.1);background:var(--accent);-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M0 0h9v7H0zM11 0h9v7h-9zM0 9h4v7H0zM6 9h8v7H6zM16 9h4v7h-4z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 16'%3E%3Cpath d='M0 0h9v7H0zM11 0h9v7h-9zM0 9h4v7H0zM6 9h8v7H6zM16 9h4v7h-4z'/%3E%3C/svg%3E")}
.mats{display:flex;align-items:center;gap:5px;background:rgba(15,28,43,.75);border-radius:10px;padding:.4em .7em;
  border:2px solid rgba(255,255,255,.2);font-weight:800}
.mats b{color:var(--accent)}

#storm-vignette{position:absolute;inset:0;opacity:0;transition:opacity .4s;
  background:radial-gradient(ellipse at center,transparent 45%,rgba(47,214,195,.45) 100%)}
#floaters div{position:absolute;font-weight:900;font-size:1.25em;text-shadow:0 2px 3px #000;
  transform:translate(-50%,-50%);white-space:nowrap}
#floaters .head{color:var(--accent)}

/* ---------- Touch ---------- */
#touch{position:absolute;inset:0;pointer-events:none}
#stick{position:absolute;left:0;bottom:0;width:0;height:0;pointer-events:none}
#stick.on{width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;
  background:rgba(255,255,255,.08);border:2px solid rgba(255,255,255,.3)}
#knob{position:absolute;left:50%;top:50%;width:52px;height:52px;margin:-26px;border-radius:50%;
  background:rgba(255,255,255,.35);display:none}
#stick.on #knob{display:block}
.tbtn{position:absolute;pointer-events:auto;border-radius:50%;border:2px solid rgba(255,255,255,.45);
  background:rgba(15,28,43,.55);font-weight:800;font-size:12px;letter-spacing:.04em;width:62px;height:62px;padding:0}
.tbtn:active,.tbtn.down{background:rgba(255,176,46,.5)}
.tbtn.big{right:20px;bottom:22px;width:80px;height:80px;font-size:14px;border-color:var(--accent)}
#t-jump{right:112px;bottom:16px}
#t-reload{right:34px;bottom:114px;width:50px;height:50px;font-size:10px}
body.touch #bars{bottom:auto;top:calc(12px + 3em)}
body.touch .slot small{display:none}
body.touch #hotbar{left:46%}
/* small screens (e.g. a game playing inside a post): compact controls, hotbar as a column on the left */
@media (max-width:620px), (max-height:300px){
  body.touch #hotbar{left:8px;bottom:8px;transform:none;gap:4px;align-items:center}
  body.touch #bars{width:120px;top:calc(8px + 2.6em);left:8px}
  #topleft{left:8px;top:8px} .pill{padding:.25em .6em}
  body.touch .slot{width:38px;height:38px} body.touch .slot em{display:none}
  body.touch .mats{padding:.2em .45em}
  .tbtn.big{width:62px;height:62px;right:12px;bottom:12px;font-size:11px}
  #t-jump{width:48px;height:48px;right:82px;bottom:8px;font-size:10px}
  #t-reload{width:40px;height:40px;right:20px;bottom:80px;font-size:8px}
  #minimap{width:64px!important;height:64px!important;right:8px;top:8px}
  #feed{display:none}
}

/* ---------- Overlay ---------- */
#overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;padding:16px;
  background:radial-gradient(ellipse at 50% 30%,rgba(15,28,43,.35),rgba(15,28,43,.85))}
.card{max-width:560px;width:100%;text-align:center;padding:clamp(14px,3vmin,30px);border-radius:22px;
  background:rgba(15,28,43,.82);border:1px solid rgba(255,255,255,.14);box-shadow:0 20px 60px rgba(0,0,0,.45)}
#title{margin:0;font-size:clamp(28px,7vmin,64px);font-weight:900;letter-spacing:.04em;text-transform:uppercase;
  background:linear-gradient(180deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent;
  line-height:1}
.tag{margin:.4em 0 1em;opacity:.85;font-size:clamp(12px,2.2vmin,17px)}
.cta{border:0;border-radius:14px;padding:.75em 2.2em;font-size:clamp(16px,3.2vmin,24px);font-weight:900;letter-spacing:.06em;
  color:var(--ink);background:linear-gradient(180deg,var(--accent),var(--accent2));box-shadow:0 6px 0 #b8461f}
.cta:active{transform:translateY(3px);box-shadow:0 3px 0 #b8461f}
.controls{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 14px;margin:1.1em 0 .6em;font-size:clamp(11px,1.8vmin,14px);opacity:.85}
kbd{display:inline-block;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.25);border-radius:5px;
  padding:0 .4em;font:inherit;font-weight:700}
.links{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:.6em}
.ghost{background:transparent;border:1px solid rgba(255,255,255,.3);border-radius:10px;padding:.45em .9em;
  font-size:clamp(11px,1.8vmin,14px);text-decoration:none;color:var(--paper)}
.fine{margin:.9em 0 0;font-size:11px;opacity:.5}
.result{font-size:clamp(22px,5vmin,44px);font-weight:900;margin:0 0 .2em}
.result.win{color:var(--accent)} .result.lose{color:var(--danger)}
.stats{opacity:.85;margin-bottom:1em}

body.embed .controls{display:none}
@media (max-height:420px){ .controls{display:none} .tag{margin:.2em 0 .6em} }
