/* ROOF QUEST :: styles. Pixel UI chrome over an integer-scaled canvas world. */
@font-face{font-family:"Jersey 10";src:url("../fonts/Jersey10.woff2") format("woff2");font-display:swap}
@font-face{font-family:"Silkscreen";src:url("../fonts/Silkscreen-400.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Silkscreen";src:url("../fonts/Silkscreen-700.woff2") format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible";src:url("../fonts/Atkinson-400.woff2") format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible";src:url("../fonts/Atkinson-700.woff2") format("woff2");font-weight:700;font-display:swap}

:root{
  --leaf:#3a8a2e; --leaf-hi:#7fcf5a; --leaf-dk:#1d3a22; --ink:#0c1a10; --ink-2:#081208; --cream:#f4f1e6; --paper:#fbf8ee;
  --gold:#ffd84a; --red:#ff8a7a; --graphite:#14140f;
  --f-disp:"Jersey 10","Silkscreen",ui-monospace,monospace;
  --f-ui:"Silkscreen",ui-monospace,monospace;
  --f-body:"Atkinson Hyperlegible",system-ui,-apple-system,"Segoe UI",sans-serif;
  --hud-h:76px; --bw:16px;
  --i-frame: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" shape-rendering="crispEdges"><rect x="2" y="0" width="20" height="2" fill="%23000"/><rect x="2" y="22" width="20" height="2" fill="%23000"/><rect x="0" y="2" width="2" height="20" fill="%23000"/><rect x="22" y="2" width="2" height="20" fill="%23000"/><rect x="4" y="2" width="16" height="2" fill="%23f4f1e6"/><rect x="4" y="20" width="16" height="2" fill="%23f4f1e6"/><rect x="2" y="4" width="2" height="16" fill="%23f4f1e6"/><rect x="20" y="4" width="2" height="16" fill="%23f4f1e6"/><rect x="2" y="2" width="2" height="2" fill="%23f4f1e6"/><rect x="20" y="2" width="2" height="2" fill="%23f4f1e6"/><rect x="2" y="20" width="2" height="2" fill="%23f4f1e6"/><rect x="20" y="20" width="2" height="2" fill="%23f4f1e6"/><rect x="6" y="4" width="12" height="2" fill="%233a8a2e"/><rect x="6" y="18" width="12" height="2" fill="%233a8a2e"/><rect x="4" y="6" width="2" height="12" fill="%233a8a2e"/><rect x="18" y="6" width="2" height="12" fill="%233a8a2e"/><rect x="4" y="4" width="2" height="2" fill="%233a8a2e"/><rect x="18" y="4" width="2" height="2" fill="%233a8a2e"/><rect x="4" y="18" width="2" height="2" fill="%233a8a2e"/><rect x="18" y="18" width="2" height="2" fill="%233a8a2e"/><rect x="8" y="6" width="8" height="2" fill="%23000"/><rect x="8" y="16" width="8" height="2" fill="%23000"/><rect x="6" y="8" width="2" height="8" fill="%23000"/><rect x="16" y="8" width="2" height="8" fill="%23000"/><rect x="6" y="6" width="2" height="2" fill="%23000"/><rect x="16" y="6" width="2" height="2" fill="%23000"/><rect x="6" y="16" width="2" height="2" fill="%23000"/><rect x="16" y="16" width="2" height="2" fill="%23000"/><rect x="8" y="8" width="8" height="8" fill="%230c1a10"/></svg>');
  --i-frame-paper: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" shape-rendering="crispEdges"><rect x="2" y="0" width="20" height="2" fill="%23111"/><rect x="2" y="22" width="20" height="2" fill="%23111"/><rect x="0" y="2" width="2" height="20" fill="%23111"/><rect x="22" y="2" width="2" height="20" fill="%23111"/><rect x="4" y="2" width="16" height="2" fill="%233a8a2e"/><rect x="4" y="20" width="16" height="2" fill="%233a8a2e"/><rect x="2" y="4" width="2" height="16" fill="%233a8a2e"/><rect x="20" y="4" width="2" height="16" fill="%233a8a2e"/><rect x="2" y="2" width="2" height="2" fill="%233a8a2e"/><rect x="20" y="2" width="2" height="2" fill="%233a8a2e"/><rect x="2" y="20" width="2" height="2" fill="%233a8a2e"/><rect x="20" y="20" width="2" height="2" fill="%233a8a2e"/><rect x="6" y="4" width="12" height="2" fill="%23f4f1e6"/><rect x="6" y="18" width="12" height="2" fill="%23f4f1e6"/><rect x="4" y="6" width="2" height="12" fill="%23f4f1e6"/><rect x="18" y="6" width="2" height="12" fill="%23f4f1e6"/><rect x="4" y="4" width="2" height="2" fill="%23f4f1e6"/><rect x="18" y="4" width="2" height="2" fill="%23f4f1e6"/><rect x="4" y="18" width="2" height="2" fill="%23f4f1e6"/><rect x="18" y="18" width="2" height="2" fill="%23f4f1e6"/><rect x="8" y="6" width="8" height="2" fill="%23111"/><rect x="8" y="16" width="8" height="2" fill="%23111"/><rect x="6" y="8" width="2" height="8" fill="%23111"/><rect x="16" y="8" width="2" height="8" fill="%23111"/><rect x="6" y="6" width="2" height="2" fill="%23111"/><rect x="16" y="6" width="2" height="2" fill="%23111"/><rect x="6" y="16" width="2" height="2" fill="%23111"/><rect x="16" y="16" width="2" height="2" fill="%23111"/><rect x="8" y="8" width="8" height="8" fill="%23fbf8ee"/></svg>');
  --i-btn: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" shape-rendering="crispEdges"><rect x="2" y="0" width="8" height="2" fill="%23000"/><rect x="2" y="10" width="8" height="2" fill="%23000"/><rect x="0" y="2" width="2" height="8" fill="%23000"/><rect x="10" y="2" width="2" height="8" fill="%23000"/><rect x="4" y="2" width="4" height="2" fill="%23f4f1e6"/><rect x="4" y="8" width="4" height="2" fill="%23f4f1e6"/><rect x="2" y="4" width="2" height="4" fill="%23f4f1e6"/><rect x="8" y="4" width="2" height="4" fill="%23f4f1e6"/><rect x="2" y="2" width="2" height="2" fill="%23f4f1e6"/><rect x="8" y="2" width="2" height="2" fill="%23f4f1e6"/><rect x="2" y="8" width="2" height="2" fill="%23f4f1e6"/><rect x="8" y="8" width="2" height="2" fill="%23f4f1e6"/><rect x="4" y="4" width="4" height="4" fill="%231d3a22"/></svg>');
  --i-btn-go: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12" shape-rendering="crispEdges"><rect x="2" y="0" width="8" height="2" fill="%23000"/><rect x="2" y="10" width="8" height="2" fill="%23000"/><rect x="0" y="2" width="2" height="8" fill="%23000"/><rect x="10" y="2" width="2" height="8" fill="%23000"/><rect x="4" y="2" width="4" height="2" fill="%23f4f1e6"/><rect x="4" y="8" width="4" height="2" fill="%23f4f1e6"/><rect x="2" y="4" width="2" height="4" fill="%23f4f1e6"/><rect x="8" y="4" width="2" height="4" fill="%23f4f1e6"/><rect x="2" y="2" width="2" height="2" fill="%23f4f1e6"/><rect x="8" y="2" width="2" height="2" fill="%23f4f1e6"/><rect x="2" y="8" width="2" height="2" fill="%23f4f1e6"/><rect x="8" y="8" width="2" height="2" fill="%23f4f1e6"/><rect x="4" y="4" width="4" height="4" fill="%233a8a2e"/></svg>');
  --i-caret: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="5" height="7" viewBox="0 0 5 7" shape-rendering="crispEdges"><rect x="0" y="0" width="1" height="1" fill="%23000"/><rect x="0" y="1" width="1" height="1" fill="%23000"/><rect x="1" y="1" width="1" height="1" fill="%23000"/><rect x="0" y="2" width="1" height="1" fill="%23000"/><rect x="1" y="2" width="1" height="1" fill="%23000"/><rect x="2" y="2" width="1" height="1" fill="%23000"/><rect x="0" y="3" width="1" height="1" fill="%23000"/><rect x="1" y="3" width="1" height="1" fill="%23000"/><rect x="2" y="3" width="1" height="1" fill="%23000"/><rect x="3" y="3" width="1" height="1" fill="%23000"/><rect x="0" y="4" width="1" height="1" fill="%23000"/><rect x="1" y="4" width="1" height="1" fill="%23000"/><rect x="2" y="4" width="1" height="1" fill="%23000"/><rect x="0" y="5" width="1" height="1" fill="%23000"/><rect x="1" y="5" width="1" height="1" fill="%23000"/><rect x="0" y="6" width="1" height="1" fill="%23000"/></svg>');
  --i-arr: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="7" height="6" viewBox="0 0 7 6" shape-rendering="crispEdges"><rect x="4" y="0" width="1" height="1" fill="%23000"/><rect x="4" y="1" width="1" height="1" fill="%23000"/><rect x="5" y="1" width="1" height="1" fill="%23000"/><rect x="0" y="2" width="1" height="1" fill="%23000"/><rect x="1" y="2" width="1" height="1" fill="%23000"/><rect x="2" y="2" width="1" height="1" fill="%23000"/><rect x="3" y="2" width="1" height="1" fill="%23000"/><rect x="4" y="2" width="1" height="1" fill="%23000"/><rect x="5" y="2" width="1" height="1" fill="%23000"/><rect x="6" y="2" width="1" height="1" fill="%23000"/><rect x="0" y="3" width="1" height="1" fill="%23000"/><rect x="1" y="3" width="1" height="1" fill="%23000"/><rect x="2" y="3" width="1" height="1" fill="%23000"/><rect x="3" y="3" width="1" height="1" fill="%23000"/><rect x="4" y="3" width="1" height="1" fill="%23000"/><rect x="5" y="3" width="1" height="1" fill="%23000"/><rect x="6" y="3" width="1" height="1" fill="%23000"/><rect x="4" y="4" width="1" height="1" fill="%23000"/><rect x="5" y="4" width="1" height="1" fill="%23000"/><rect x="4" y="5" width="1" height="1" fill="%23000"/></svg>');
  --i-arr-l: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="7" height="6" viewBox="0 0 7 6" shape-rendering="crispEdges"><rect x="2" y="0" width="1" height="1" fill="%23000"/><rect x="1" y="1" width="1" height="1" fill="%23000"/><rect x="2" y="1" width="1" height="1" fill="%23000"/><rect x="0" y="2" width="1" height="1" fill="%23000"/><rect x="1" y="2" width="1" height="1" fill="%23000"/><rect x="2" y="2" width="1" height="1" fill="%23000"/><rect x="3" y="2" width="1" height="1" fill="%23000"/><rect x="4" y="2" width="1" height="1" fill="%23000"/><rect x="5" y="2" width="1" height="1" fill="%23000"/><rect x="6" y="2" width="1" height="1" fill="%23000"/><rect x="0" y="3" width="1" height="1" fill="%23000"/><rect x="1" y="3" width="1" height="1" fill="%23000"/><rect x="2" y="3" width="1" height="1" fill="%23000"/><rect x="3" y="3" width="1" height="1" fill="%23000"/><rect x="4" y="3" width="1" height="1" fill="%23000"/><rect x="5" y="3" width="1" height="1" fill="%23000"/><rect x="6" y="3" width="1" height="1" fill="%23000"/><rect x="1" y="4" width="1" height="1" fill="%23000"/><rect x="2" y="4" width="1" height="1" fill="%23000"/><rect x="2" y="5" width="1" height="1" fill="%23000"/></svg>');
  --i-star: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="9" height="9" viewBox="0 0 9 9" shape-rendering="crispEdges"><rect x="4" y="0" width="1" height="1" fill="%23000"/><rect x="3" y="1" width="1" height="1" fill="%23000"/><rect x="4" y="1" width="1" height="1" fill="%23000"/><rect x="5" y="1" width="1" height="1" fill="%23000"/><rect x="3" y="2" width="1" height="1" fill="%23000"/><rect x="4" y="2" width="1" height="1" fill="%23000"/><rect x="5" y="2" width="1" height="1" fill="%23000"/><rect x="0" y="3" width="1" height="1" fill="%23000"/><rect x="1" y="3" width="1" height="1" fill="%23000"/><rect x="2" y="3" width="1" height="1" fill="%23000"/><rect x="3" y="3" width="1" height="1" fill="%23000"/><rect x="4" y="3" width="1" height="1" fill="%23000"/><rect x="5" y="3" width="1" height="1" fill="%23000"/><rect x="6" y="3" width="1" height="1" fill="%23000"/><rect x="7" y="3" width="1" height="1" fill="%23000"/><rect x="8" y="3" width="1" height="1" fill="%23000"/><rect x="1" y="4" width="1" height="1" fill="%23000"/><rect x="2" y="4" width="1" height="1" fill="%23000"/><rect x="3" y="4" width="1" height="1" fill="%23000"/><rect x="4" y="4" width="1" height="1" fill="%23000"/><rect x="5" y="4" width="1" height="1" fill="%23000"/><rect x="6" y="4" width="1" height="1" fill="%23000"/><rect x="7" y="4" width="1" height="1" fill="%23000"/><rect x="2" y="5" width="1" height="1" fill="%23000"/><rect x="3" y="5" width="1" height="1" fill="%23000"/><rect x="4" y="5" width="1" height="1" fill="%23000"/><rect x="5" y="5" width="1" height="1" fill="%23000"/><rect x="6" y="5" width="1" height="1" fill="%23000"/><rect x="2" y="6" width="1" height="1" fill="%23000"/><rect x="3" y="6" width="1" height="1" fill="%23000"/><rect x="5" y="6" width="1" height="1" fill="%23000"/><rect x="6" y="6" width="1" height="1" fill="%23000"/><rect x="1" y="7" width="1" height="1" fill="%23000"/><rect x="2" y="7" width="1" height="1" fill="%23000"/><rect x="6" y="7" width="1" height="1" fill="%23000"/><rect x="7" y="7" width="1" height="1" fill="%23000"/><rect x="1" y="8" width="1" height="1" fill="%23000"/><rect x="7" y="8" width="1" height="1" fill="%23000"/></svg>');
  --i-phone: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="9" height="10" viewBox="0 0 9 10" shape-rendering="crispEdges"><rect x="1" y="0" width="1" height="1" fill="%23000"/><rect x="2" y="0" width="1" height="1" fill="%23000"/><rect x="0" y="1" width="1" height="1" fill="%23000"/><rect x="1" y="1" width="1" height="1" fill="%23000"/><rect x="2" y="1" width="1" height="1" fill="%23000"/><rect x="3" y="1" width="1" height="1" fill="%23000"/><rect x="0" y="2" width="1" height="1" fill="%23000"/><rect x="1" y="2" width="1" height="1" fill="%23000"/><rect x="2" y="2" width="1" height="1" fill="%23000"/><rect x="3" y="2" width="1" height="1" fill="%23000"/><rect x="1" y="3" width="1" height="1" fill="%23000"/><rect x="2" y="3" width="1" height="1" fill="%23000"/><rect x="1" y="4" width="1" height="1" fill="%23000"/><rect x="2" y="4" width="1" height="1" fill="%23000"/><rect x="2" y="5" width="1" height="1" fill="%23000"/><rect x="3" y="5" width="1" height="1" fill="%23000"/><rect x="2" y="6" width="1" height="1" fill="%23000"/><rect x="3" y="6" width="1" height="1" fill="%23000"/><rect x="4" y="6" width="1" height="1" fill="%23000"/><rect x="6" y="6" width="1" height="1" fill="%23000"/><rect x="7" y="6" width="1" height="1" fill="%23000"/><rect x="3" y="7" width="1" height="1" fill="%23000"/><rect x="4" y="7" width="1" height="1" fill="%23000"/><rect x="5" y="7" width="1" height="1" fill="%23000"/><rect x="6" y="7" width="1" height="1" fill="%23000"/><rect x="7" y="7" width="1" height="1" fill="%23000"/><rect x="8" y="7" width="1" height="1" fill="%23000"/><rect x="4" y="8" width="1" height="1" fill="%23000"/><rect x="5" y="8" width="1" height="1" fill="%23000"/><rect x="6" y="8" width="1" height="1" fill="%23000"/><rect x="7" y="8" width="1" height="1" fill="%23000"/><rect x="8" y="8" width="1" height="1" fill="%23000"/><rect x="5" y="9" width="1" height="1" fill="%23000"/><rect x="6" y="9" width="1" height="1" fill="%23000"/><rect x="7" y="9" width="1" height="1" fill="%23000"/></svg>');
  --i-gear: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="8" height="8" viewBox="0 0 8 8" shape-rendering="crispEdges"><rect x="3" y="0" width="1" height="1" fill="%23000"/><rect x="4" y="0" width="1" height="1" fill="%23000"/><rect x="1" y="1" width="1" height="1" fill="%23000"/><rect x="3" y="1" width="1" height="1" fill="%23000"/><rect x="4" y="1" width="1" height="1" fill="%23000"/><rect x="6" y="1" width="1" height="1" fill="%23000"/><rect x="1" y="2" width="1" height="1" fill="%23000"/><rect x="2" y="2" width="1" height="1" fill="%23000"/><rect x="3" y="2" width="1" height="1" fill="%23000"/><rect x="4" y="2" width="1" height="1" fill="%23000"/><rect x="5" y="2" width="1" height="1" fill="%23000"/><rect x="6" y="2" width="1" height="1" fill="%23000"/><rect x="0" y="3" width="1" height="1" fill="%23000"/><rect x="1" y="3" width="1" height="1" fill="%23000"/><rect x="2" y="3" width="1" height="1" fill="%23000"/><rect x="5" y="3" width="1" height="1" fill="%23000"/><rect x="6" y="3" width="1" height="1" fill="%23000"/><rect x="7" y="3" width="1" height="1" fill="%23000"/><rect x="0" y="4" width="1" height="1" fill="%23000"/><rect x="1" y="4" width="1" height="1" fill="%23000"/><rect x="2" y="4" width="1" height="1" fill="%23000"/><rect x="5" y="4" width="1" height="1" fill="%23000"/><rect x="6" y="4" width="1" height="1" fill="%23000"/><rect x="7" y="4" width="1" height="1" fill="%23000"/><rect x="1" y="5" width="1" height="1" fill="%23000"/><rect x="2" y="5" width="1" height="1" fill="%23000"/><rect x="3" y="5" width="1" height="1" fill="%23000"/><rect x="4" y="5" width="1" height="1" fill="%23000"/><rect x="5" y="5" width="1" height="1" fill="%23000"/><rect x="6" y="5" width="1" height="1" fill="%23000"/><rect x="1" y="6" width="1" height="1" fill="%23000"/><rect x="3" y="6" width="1" height="1" fill="%23000"/><rect x="4" y="6" width="1" height="1" fill="%23000"/><rect x="6" y="6" width="1" height="1" fill="%23000"/><rect x="3" y="7" width="1" height="1" fill="%23000"/><rect x="4" y="7" width="1" height="1" fill="%23000"/></svg>');
  --i-check: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="7" height="6" viewBox="0 0 7 6" shape-rendering="crispEdges"><rect x="6" y="0" width="1" height="1" fill="%23000"/><rect x="5" y="1" width="1" height="1" fill="%23000"/><rect x="6" y="1" width="1" height="1" fill="%23000"/><rect x="0" y="2" width="1" height="1" fill="%23000"/><rect x="4" y="2" width="1" height="1" fill="%23000"/><rect x="5" y="2" width="1" height="1" fill="%23000"/><rect x="0" y="3" width="1" height="1" fill="%23000"/><rect x="1" y="3" width="1" height="1" fill="%23000"/><rect x="3" y="3" width="1" height="1" fill="%23000"/><rect x="4" y="3" width="1" height="1" fill="%23000"/><rect x="1" y="4" width="1" height="1" fill="%23000"/><rect x="2" y="4" width="1" height="1" fill="%23000"/><rect x="3" y="4" width="1" height="1" fill="%23000"/><rect x="2" y="5" width="1" height="1" fill="%23000"/></svg>');
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:auto}
body{margin:0;background:var(--ink);color:var(--cream);font:400 17px/1.5 var(--f-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,canvas{display:block}
canvas{image-rendering:pixelated;image-rendering:crisp-edges}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
.sr{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:fixed;left:12px;top:-100px;z-index:100;background:var(--gold);color:#000;font:700 14px/1 var(--f-ui);padding:12px 14px;text-decoration:none}
.skip:focus{top:12px}
:focus-visible{outline:3px dashed var(--gold);outline-offset:3px}

/* ------------------------------------------------ icons (pixel masks, take currentColor) */
.caret,.arr,.star,.call-ico,.gear,.tog-box::after{display:inline-block;flex:none;background:currentColor;-webkit-mask:var(--m) no-repeat center/100% 100%;mask:var(--m) no-repeat center/100% 100%}
.caret{--m:var(--i-caret);width:8px;height:14px}
.arr{--m:var(--i-arr);width:14px;height:12px}
.arr-l{--m:var(--i-arr-l)}
.star{--m:var(--i-star);width:18px;height:18px;color:var(--gold)}
.call-ico{--m:var(--i-phone);width:18px;height:20px}
.gear{--m:var(--i-gear);width:16px;height:16px}

/* ------------------------------------------------ pixel window frame (9-slice) */
.win{border:var(--bw) solid transparent;border-image:var(--i-frame) 8 fill / var(--bw) stretch;background:none;color:var(--cream)}

/* ------------------------------------------------ buttons */
.btn{--bi:var(--i-btn);display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:6px 14px;border:4px solid transparent;border-image:var(--bi) 4 fill / 4px stretch;background:none;color:var(--cream);font:400 16px/1 var(--f-ui);letter-spacing:.02em;text-decoration:none;text-transform:uppercase;cursor:pointer;white-space:nowrap;box-shadow:4px 4px 0 rgba(0,0,0,.45)}
.btn:hover{--bi:var(--i-btn-go)}
.btn:active{transform:translate(2px,2px);box-shadow:2px 2px 0 rgba(0,0,0,.45)}
.btn-go{--bi:var(--i-btn-go);color:#fff;font-weight:700}
.btn-go:hover{filter:brightness(1.12)}
.btn-ghost{border:0;border-image:none;box-shadow:none;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px;padding:6px 8px;font-size:14px}
.btn-ghost:hover{color:var(--gold)}
.btn-sm{min-height:44px;font-size:14px}
.btn-go .caret{animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.row{display:flex;flex-wrap:wrap;gap:12px 14px;align-items:center;margin-top:16px}

/* ------------------------------------------------ HUD */
.hud{position:fixed;inset:0 0 auto 0;z-index:40;height:var(--hud-h);display:flex;align-items:center;gap:18px;padding:0 16px;background:rgba(8,18,8,.88);border-bottom:4px solid #000;box-shadow:0 4px 0 var(--leaf)}
.hud-logo{flex:none;display:block;line-height:0}
.hud-road{flex:1;min-width:0;display:flex;align-items:center;gap:14px}
#stageDots{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:4px;position:relative}
#stageDots::before{content:"";position:absolute;left:4px;right:4px;top:50%;height:2px;margin-top:-1px;background:repeating-linear-gradient(90deg,var(--gold) 0 6px,transparent 6px 10px);opacity:.5}
#stageDots li{position:relative;line-height:0}
.dot{display:block;width:14px;height:14px;padding:0;border:2px solid #000;background:#2c3d2e;cursor:pointer;box-shadow:inset -2px -2px 0 rgba(0,0,0,.35)}
.dot.done{background:var(--leaf)}
.dot[aria-current]{background:var(--gold);transform:scale(1.28)}
.dot:hover{background:var(--leaf-hi)}
.hud-stage{margin:0;font:400 14px/1 var(--f-ui);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--cream)}
.hud-stage-n{color:var(--gold)}
.hud-tools{flex:none;display:flex;align-items:center;gap:10px}
.lang,.opt{height:40px;min-width:40px;border:3px solid #000;background:#1d2a1f;box-shadow:inset 0 0 0 2px #3c5040;cursor:pointer;font:400 13px/1 var(--f-ui);padding:0 6px;display:inline-flex;align-items:center;justify-content:center;gap:2px}
.lang span{padding:5px 4px;opacity:.55}
body:not(.es) .lang-en,body.es .lang-es{background:var(--leaf);color:#fff;opacity:1}
.opt:hover,.lang:hover{box-shadow:inset 0 0 0 2px var(--leaf-hi)}
.call{display:inline-flex;align-items:center;gap:10px;height:48px;padding:0 14px;border:4px solid transparent;border-image:var(--i-btn-go) 4 fill / 4px stretch;color:#fff;text-decoration:none;font:700 16px/1 var(--f-ui);box-shadow:4px 4px 0 rgba(0,0,0,.5)}
.call:hover{filter:brightness(1.12)}
.call:active{transform:translate(2px,2px)}
.call-n{font-weight:400}
.menu{position:absolute;right:16px;top:calc(var(--hud-h) + 10px);width:300px;--bw:8px;padding:10px 12px;font-size:15px}
.menu-h{margin:0 0 8px;font:700 14px/1 var(--f-ui);color:var(--leaf-hi)}
.tog{display:flex;align-items:center;gap:10px;min-height:40px;cursor:pointer}
.tog input{position:absolute;opacity:0;width:1px;height:1px}
.tog-box{width:22px;height:22px;border:3px solid var(--cream);display:grid;place-items:center;flex:none}
.tog-box::after{content:"";--m:var(--i-check);width:14px;height:12px;opacity:0;color:var(--leaf-hi)}
.tog input:checked+.tog-box::after{opacity:1}
.tog input:focus-visible+.tog-box{outline:3px dashed var(--gold);outline-offset:2px}
.menu-a{display:block;margin:8px 0;color:var(--gold)}
.menu-keys{margin:6px 0 0;font-size:13px;opacity:.8}

/* ------------------------------------------------ game stage */
.game{position:relative;background:#000}
.stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;--view-h:100svh}
#world{position:absolute;left:0;top:0;cursor:default}
.stage[data-active="4"] #world{cursor:pointer}
.crt{position:absolute;left:0;top:0;right:0;height:var(--view-h);pointer-events:none;display:none;z-index:3;background:repeating-linear-gradient(180deg,rgba(0,0,0,.32) 0 1px,transparent 1px 3px);box-shadow:inset 0 0 140px rgba(0,0,0,.65)}
.crt-on .crt{display:block}
.crt-on #world{filter:saturate(1.15) contrast(1.05)}
.flash{position:absolute;left:0;top:0;right:0;height:var(--view-h);pointer-events:none;background:#eef4ff;opacity:0;z-index:2}
.flashing .flash{animation:flash .4s steps(3) 1}
@keyframes flash{0%{opacity:.6}100%{opacity:0}}

.panels{position:absolute;inset:0;z-index:5;pointer-events:none}
.panel{position:absolute;right:24px;top:calc(var(--hud-h) + (100svh - var(--hud-h)) / 2);transform:translateY(-50%);width:min(560px,42vw);max-height:calc(100svh - var(--hud-h) - 40px);overflow:auto;padding:14px 20px 18px;visibility:hidden;opacity:0;pointer-events:none;scrollbar-width:thin;scrollbar-color:var(--leaf) transparent}
.panel.on{visibility:visible;opacity:1;pointer-events:auto;animation:open .26s steps(4) both}
@keyframes open{from{clip-path:inset(46% 0 46% 0)}to{clip-path:inset(0 0 0 0)}}
.panel h2{margin:2px 0 10px;font:400 40px/1 var(--f-disp);letter-spacing:.01em;color:#fff;text-shadow:3px 3px 0 #000}
.panel h3{margin:18px 0 8px;font:700 14px/1.2 var(--f-ui);color:var(--leaf-hi)}
.panel p{margin:0 0 10px}
.kicker{margin:0 0 4px!important;font:400 13px/1.3 var(--f-ui);color:var(--leaf-hi);letter-spacing:.03em}
.lead{font-size:18px}
.motto{font:700 13px/1.5 var(--f-ui);color:var(--gold);letter-spacing:.02em}
.hint{font:400 12px/1.3 var(--f-ui);opacity:.75;margin-top:14px!important;animation:blink 1.4s steps(1) infinite}
.tw-off{color:transparent}
.p-title{top:auto;bottom:40px;transform:none}
.next{margin-top:14px!important;text-align:right}

.talk{display:flex;gap:14px;align-items:flex-start}
.face{flex:none;padding:6px;background:#3d7ac4;border:3px solid #000;box-shadow:inset 0 0 0 3px var(--cream)}
.who{font:700 13px/1 var(--f-ui)!important;color:var(--gold);margin-bottom:8px!important}
.es-note{color:var(--leaf-hi);font-weight:700}

/* stats */
.stats{margin:0;display:grid;gap:0}
.st{display:grid;grid-template-columns:168px 1fr;gap:12px;align-items:baseline;padding:7px 0;border-bottom:2px dotted rgba(244,241,230,.18)}
.st dt{font:400 13px/1.2 var(--f-ui);color:var(--leaf-hi)}
.st dd{margin:0;font-weight:700}
.pips{display:flex;flex-wrap:wrap;gap:2px;align-items:center;margin-bottom:6px}
.pips i{width:6px;height:12px;background:#243427;box-shadow:inset -1px -1px 0 rgba(0,0,0,.4)}
.pips i.on{background:var(--leaf-hi)}
.pips b{margin-left:4px;font:700 16px/1 var(--f-ui);color:var(--gold)}
.pips b::before{content:"+"}
.perks-h{margin:14px 0 6px!important;font:700 13px/1 var(--f-ui);color:var(--gold)}
.perks{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.perks li{display:flex;gap:10px;align-items:center;font-weight:700}

/* inventory */
.inv{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:8px;background:var(--ink-2);border:3px solid #000;box-shadow:inset 0 0 0 2px #2c3d2e}
.inv:focus-visible{outline-offset:4px}
.slot{position:relative;aspect-ratio:1;display:grid;place-items:center;background:#1a2a1c;border:3px solid #34483a;cursor:pointer}
.slot:hover{border-color:var(--leaf)}
.slot.sel{border-color:var(--gold);background:#24381f}
.slot.sel::after{content:"";position:absolute;left:-9px;top:50%;margin-top:-7px;width:8px;height:14px;background:var(--gold);-webkit-mask:var(--i-caret) no-repeat center/100% 100%;mask:var(--i-caret) no-repeat center/100% 100%;animation:blink 1s steps(1) infinite}
.inv-desc{margin-top:12px;min-height:6.2em;padding:10px 12px;background:var(--ink-2);border:3px solid #000}
.inv-name{font:400 28px/1 var(--f-disp);color:var(--gold);margin:0 0 6px!important}
.inv-text{margin:0!important}

/* storm */
.meter{display:flex;align-items:center;gap:10px;font:400 13px/1 var(--f-ui);margin:4px 0 10px}
.meter-bar{flex:1;height:16px;border:3px solid #000;background:#243427;box-shadow:inset 0 0 0 2px #3c5040;position:relative}
.meter-bar i{position:absolute;left:2px;top:2px;bottom:2px;width:0;max-width:calc(100% - 4px);background:repeating-linear-gradient(90deg,var(--leaf-hi) 0 8px,var(--leaf) 8px 10px);transition:width .2s steps(3)}
#patchCount{color:var(--gold);min-width:3ch}
.secured{font:400 38px/1 var(--f-disp)!important;color:var(--gold);text-shadow:3px 3px 0 #000;animation:blink .5s steps(1) 6}
.act{margin-bottom:4px}
.abtn{display:inline-grid;place-items:center;width:26px;height:26px;background:#c43a2e;color:#fff;border:2px solid #000;border-radius:50%;font:700 13px/1 var(--f-ui);box-shadow:inset -2px -2px 0 rgba(0,0,0,.35)}
.steps{list-style:none;counter-reset:s;margin:0;padding:0;display:grid;gap:6px}
.steps li{counter-increment:s;display:grid;grid-template-columns:30px 1fr;gap:8px}
.steps li::before{content:counter(s);font:700 14px/1.5 var(--f-ui);color:var(--gold)}

/* quest (process) */
.quest{list-style:none;margin:0;padding:0;display:grid;gap:10px;position:relative}
.quest li{display:grid;grid-template-columns:36px 1fr;gap:12px;align-items:start}
.quest strong{display:block;font:400 24px/1.05 var(--f-disp);color:#fff}
.quest span:not(.q-n){display:block}
.q-n{display:grid;place-items:center;width:34px;height:34px;background:var(--leaf);border:3px solid #000;box-shadow:inset 0 0 0 2px var(--leaf-hi);font:700 15px/1 var(--f-ui);color:#fff}

/* map */
.map-cv{margin:4px auto 12px;border:3px solid #000;box-shadow:0 0 0 3px var(--cream),0 0 0 6px #000}

/* forms */
.est{display:grid;gap:10px}
.est label{display:grid;gap:4px;font:400 12px/1.2 var(--f-ui);color:var(--leaf-hi)}
.f2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.est input,.est select,.est textarea{width:100%;min-height:44px;padding:8px 10px;font:400 17px/1.3 var(--f-body);color:var(--cream);background:var(--ink-2);border:3px solid #d9d4c2;border-radius:0;box-shadow:inset 3px 3px 0 #000;appearance:none;-webkit-appearance:none}
.est select{background-image:linear-gradient(45deg,transparent 50%,var(--cream) 50%),linear-gradient(-45deg,transparent 50%,var(--cream) 50%);background-position:calc(100% - 16px) 50%,calc(100% - 10px) 50%;background-size:6px 6px;background-repeat:no-repeat;padding-right:28px}
.est textarea{resize:vertical;min-height:60px}
.est input:focus,.est select:focus,.est textarea:focus{outline:none;border-color:var(--gold)}
.est input::placeholder{color:rgba(244,241,230,.4)}
.est .btn-go{justify-self:start}
.f-err{margin:0!important;color:var(--red);font-weight:700}
.f-note{margin:0!important;font-size:14px;opacity:.8}
.p-quote .est{gap:8px}

/* touch pad */
.pad{display:none;position:absolute;z-index:6;left:10px;right:10px;top:calc(var(--view-h) - 62px);justify-content:space-between;pointer-events:none}
.pad>*{pointer-events:auto}
.pb{width:52px;height:52px;display:grid;place-items:center;border:4px solid transparent;border-image:var(--i-btn) 4 fill / 4px stretch;background:none;color:var(--cream);opacity:.92;touch-action:manipulation;box-shadow:3px 3px 0 rgba(0,0,0,.5)}
.pb:active{transform:translate(2px,2px)}
.pb-r{margin-right:auto;margin-left:8px}
.pb-a{border:3px solid #000;border-image:none;border-radius:50%;background:#c43a2e;color:#fff;font:700 18px/1 var(--f-ui);box-shadow:inset -3px -3px 0 rgba(0,0,0,.35),3px 3px 0 rgba(0,0,0,.5)}
.stage[data-active="4"] .pb-a{animation:pulse 1s steps(2) infinite}
@keyframes pulse{50%{background:#e5584a}}

/* ------------------------------------------------ readable version: the instruction booklet */
.read{position:relative;z-index:1;background:var(--paper);color:var(--graphite);scroll-margin-top:var(--hud-h)}
.read:focus{outline:none}
.book-cover{display:grid;grid-template-columns:1.25fr 1fr;align-items:stretch;background:#0e1d12;color:var(--cream);border-bottom:8px solid #000;box-shadow:0 8px 0 var(--leaf);padding-top:var(--hud-h)}
.book-cover picture,.book-cover img{width:100%;height:100%;object-fit:cover;image-rendering:auto}
.book-cover img{min-height:360px;background:#1d3a22}
.cover-copy{padding:40px 36px;align-self:center}
.cover-h{margin:10px 0 14px;line-height:0}
.cover-sub{font-size:18px;margin:0}
.book{max-width:820px;margin:0 auto;padding:48px 20px 24px}
.pg{position:relative;margin:0 0 30px;padding:26px 28px 22px;--bw:8px;border:8px solid transparent;border-image:var(--i-frame-paper) 8 fill / 8px stretch;font-size:18px;line-height:1.6}
.pg-n{position:absolute;right:18px;top:12px;margin:0;font:400 44px/1 var(--f-disp);color:rgba(58,138,46,.25)}
.pg h2{margin:0 0 12px;font:400 40px/1 var(--f-disp);color:#2a6a20}
.pg p{margin:0 0 12px}
.pg .motto{color:#6b5a00}
.svc{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}
.svc li{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start}
.svc canvas{background:#0e1d12;padding:0;border:3px solid #000}
.svc h3{margin:0 0 2px;font:400 26px/1.05 var(--f-disp);color:#14140f}
.svc p{margin:0;font-size:16px;line-height:1.5}
.why{margin:0;padding:0;list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:8px 20px}
.why li{padding-left:26px;position:relative}
.why li::before{content:"";position:absolute;left:0;top:.35em;width:14px;height:14px;background:var(--leaf);box-shadow:inset -3px -3px 0 rgba(0,0,0,.25)}
.pg .steps li::before{color:#2a6a20}
.pg .quest strong{color:#14140f}
.pg .q-n{box-shadow:none}
.towns{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.towns li{font:400 13px/1 var(--f-ui);padding:10px 12px;background:#0e1d12;color:var(--cream);border:3px solid #000}
.pg-est .est label{color:#2a6a20}
.pg-est .est input,.pg-est .est select,.pg-est .est textarea{background:#fff;color:var(--graphite);border-color:#14140f;box-shadow:inset 3px 3px 0 #d8d3c0}
.pg-est .est select{background-image:linear-gradient(45deg,transparent 50%,#14140f 50%),linear-gradient(-45deg,transparent 50%,#14140f 50%);background-position:calc(100% - 16px) 50%,calc(100% - 10px) 50%;background-size:6px 6px;background-repeat:no-repeat}
.pg-est .est input::placeholder{color:#8a8674}
.pg-est .f-err{color:#b3261e}
.contact{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:8px}
.contact li{display:grid;grid-template-columns:110px 1fr;gap:10px;align-items:baseline;overflow-wrap:anywhere}
.c-l{font:400 12px/1 var(--f-ui);color:#2a6a20}
.contact a{color:#14140f;font-weight:700;text-decoration-color:var(--leaf);text-decoration-thickness:2px;text-underline-offset:3px}
.foot{display:grid;justify-items:center;gap:6px;padding:36px 20px 48px;background:#0e1d12;color:var(--cream);text-align:center;border-top:8px solid #000;box-shadow:0 -8px 0 var(--leaf)}
.foot p{margin:0}
.foot a{color:var(--gold)}

/* ------------------------------------------------ mobile */
@media (max-width:819px){
  :root{--hud-h:52px;--bw:8px}
  .hud{gap:8px;padding:0 8px}
  #stageDots{display:none}
  .hud-stage-n{display:none}
  .hud-stage{font-size:11px;letter-spacing:0}
  .hud-tools{gap:6px}
  .lang,.opt{height:36px;min-width:36px}
  .call{height:40px;padding:0 10px;gap:6px;font-size:14px}
  .call-n{display:none}
  .menu{right:8px;width:min(300px,calc(100vw - 16px))}
  .panel,.p-title{left:8px;right:8px;width:auto;top:calc(var(--view-h) + 6px);bottom:calc(8px + env(safe-area-inset-bottom));transform:none;max-height:none;padding:8px 12px 12px;overscroll-behavior:contain}
  .panel h2{font-size:30px;margin-bottom:8px}
  .panel p{margin-bottom:8px}
  body{font-size:16px}
  .lead{font-size:17px}
  .p-title .hint{display:none}
  .pad{display:flex}
  .st{grid-template-columns:120px 1fr;gap:8px;padding:5px 0}
  .inv{gap:6px;padding:6px}
  .inv-desc{min-height:0}
  .inv-name{font-size:24px}
  .f2{gap:8px}
  .face{padding:4px}
  .book-cover{grid-template-columns:1fr}
  .book-cover img{min-height:0;height:auto;aspect-ratio:3/2}
  .cover-copy{padding:24px 16px 28px}
  .book{padding:28px 12px 16px}
  .pg{padding:18px 16px 16px;font-size:17px}
  .pg h2{font-size:34px}
  .pg-n{font-size:34px}
  .svc,.why{grid-template-columns:1fr}
  .contact li{grid-template-columns:1fr;gap:2px}
}
@media (max-width:819px) and (max-height:600px){ .panel .kicker{display:none} }
@media (hover:none) and (min-width:820px){ .pad{display:flex;top:auto;bottom:18px;right:auto;width:220px} }

/* overflow cue: blinking caret pinned to the bottom of a panel that has more to read */
.panel::after{content:'';position:sticky;display:block;left:0;bottom:-18px;height:0;pointer-events:none}
.panel.more::after{content:'\25BC  MORE';height:30px;margin:0 -20px -18px;padding:10px 20px 0;text-align:right;font:400 11px/1 var(--f-ui);letter-spacing:.14em;color:var(--leaf-hi,#7ed957);background:linear-gradient(rgba(12,26,16,0),#0c1a10 55%);}
@media (max-width:819px){ .panel.more::after{margin:0 -12px -12px;padding:10px 12px 0;bottom:-12px} }

/* ------------------------------------------------ reduced motion */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}
