:root{
 --ink:#0e1013;
 --panel:rgba(18,20,24,.86);
 --line:#3b3f46;
 --text:#ece5d8;
 --muted:#a59e91;
 --amber:#f0b03a;
 --red:#e5484d;
 --ice:#86c8e8;
 --green:#7dff8f;
 --display:'Silkscreen', 'Courier New', monospace;
 --body:'Chakra Petch', system-ui, -apple-system, 'Segoe UI', sans-serif;
 color-scheme:dark;
}
[hidden]{display:none!important}
html,body{height:100%;margin:0;overflow:hidden;background:var(--ink);color:var(--text);font-family:var(--body);font-size:15px}
#game{position:fixed;inset:0;user-select:none;-webkit-user-select:none}
#view{display:block;width:100%;height:100%;cursor:crosshair}
#vignette{position:fixed;inset:0;pointer-events:none;opacity:0;transition:opacity .25s;
 background:radial-gradient(ellipse at center,transparent 45%,rgba(229,72,77,.55) 100%)}
#hud{position:fixed;inset:0;pointer-events:none}
#topbar{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));left:max(16px,env(safe-area-inset-left,0px));display:flex;flex-direction:column;gap:6px}
.timer{display:flex;align-items:baseline;gap:10px;background:var(--panel);border:1px solid var(--line);padding:8px 14px;align-self:flex-start}
.timer .lbl{font-family:var(--display);font-size:11px;letter-spacing:.12em;color:var(--muted);text-transform:uppercase}
#timerVal{font-family:var(--display);font-size:28px;color:var(--amber);font-variant-numeric:tabular-nums;line-height:1}
#status{font-size:13px;line-height:1.5;color:var(--text);background:var(--panel);border:1px solid var(--line);padding:6px 12px;max-width:310px}
#status b{color:var(--amber);font-weight:600}
#status .danger{color:var(--red)}
#status .night{color:var(--ice)}
#status .good{color:var(--green)}
#mapwrap{position:absolute;top:calc(12px + env(safe-area-inset-top,0px));right:max(16px,env(safe-area-inset-right,0px));display:flex;flex-direction:column;gap:4px;align-items:flex-end}
#minimap{width:150px;height:150px;border:1px solid var(--line);image-rendering:pixelated;background:#000}
#coords{font-family:var(--display);font-size:10px;letter-spacing:.08em;color:var(--muted);background:var(--panel);padding:3px 8px;font-variant-numeric:tabular-nums}
#crosshair{position:absolute;left:50%;top:50%;width:30px;height:30px;transform:translate(-50%,-50%)}
#crosshair::before,#crosshair::after{content:"";position:absolute;background:rgba(255,255,255,.85);mix-blend-mode:difference}
#crosshair::before{left:14px;top:7px;width:2px;height:16px}
#crosshair::after{top:14px;left:7px;height:2px;width:16px}
#ring{position:absolute;inset:0;border-radius:50%;--p:0;background:conic-gradient(var(--amber) calc(var(--p)*1turn),transparent 0);
 -webkit-mask:radial-gradient(circle,transparent 11px,#000 12px);mask:radial-gradient(circle,transparent 11px,#000 12px);opacity:.9}
#hit{position:absolute;inset:-6px;opacity:0;transition:opacity .15s}
#hit.show{opacity:1;transition:none}
#hit i{position:absolute;left:50%;top:50%;width:3px;height:12px;background:var(--red);transform-origin:50% 50%}
#hit i:nth-child(1){transform:translate(-50%,-50%) rotate(45deg) translateY(-12px)}
#hit i:nth-child(2){transform:translate(-50%,-50%) rotate(135deg) translateY(-12px)}
#hit i:nth-child(3){transform:translate(-50%,-50%) rotate(225deg) translateY(-12px)}
#hit i:nth-child(4){transform:translate(-50%,-50%) rotate(315deg) translateY(-12px)}
#toast{position:absolute;top:calc(84px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);font-family:var(--display);font-size:14px;letter-spacing:.06em;
 background:var(--panel);border:1px solid var(--line);padding:8px 16px;opacity:0;transition:opacity .3s;text-align:center;max-width:min(90vw,520px)}
#toast.show{opacity:1}
#toast.warn{border-color:var(--red);color:#ffd5d6}
#toast.ok{border-color:var(--amber);color:var(--amber)}
#bottom{position:absolute;left:50%;bottom:calc(14px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px}
.bars{display:flex;gap:10px;align-items:center}
.bar{width:200px;height:5px;background:rgba(0,0,0,.5);border:1px solid var(--line)}
.bar i{display:block;height:100%;width:100%;background:var(--ice);transition:background .2s}
#stamina.low i{background:var(--red)}
#stamina.dash i{background:var(--amber)}
#health i{background:var(--red)}
#hpBox{display:flex;align-items:center;gap:8px;font-family:var(--display);font-size:10px;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
#dashTag{font-family:var(--display);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);min-width:112px;font-variant-numeric:tabular-nums}
#dashTag.on{color:var(--amber)}
#hotbar{display:flex;gap:4px}
.slot{position:relative;width:50px;height:50px;background:var(--panel);border:2px solid var(--line);display:grid;place-items:center}
.slot.sel{border-color:var(--amber);background:rgba(240,176,58,.14)}
.slot canvas{width:30px;height:30px;image-rendering:pixelated}
.slot .n{position:absolute;right:4px;bottom:2px;font-family:var(--display);font-size:12px;font-variant-numeric:tabular-nums}
.slot .k{position:absolute;left:4px;top:2px;font-family:var(--display);font-size:9px;color:var(--muted)}
.slot.empty canvas{opacity:.25}
#slotName{font-family:var(--display);font-size:11px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase;min-height:14px}
#pack{font-size:12px;color:var(--muted);background:var(--panel);padding:3px 10px;font-variant-numeric:tabular-nums}
#pack:empty{display:none}
#pack b{color:var(--text);font-weight:600}
.panel{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:var(--panel);border:1px solid var(--amber);padding:16px 18px;width:min(400px,88vw);box-sizing:border-box;display:flex;flex-direction:column;gap:8px;max-height:80vh;overflow:auto}
.panel h3{margin:0;font-family:var(--display);font-size:15px;letter-spacing:.08em;color:var(--amber);font-weight:400;display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.panel h3 span{font-size:10px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase}
.panel .foot{font-size:12px;color:var(--muted)}
.rows{display:flex;flex-direction:column;gap:6px}
.row{display:grid;grid-template-columns:auto 34px 1fr auto;gap:10px;align-items:center;padding:6px 8px;border:1px solid var(--line);min-width:0}
.row kbd{font-family:var(--display);font-size:12px;border:1px solid var(--line);padding:2px 6px;text-align:center}
.row canvas{width:32px;height:32px;image-rendering:pixelated;background:rgba(0,0,0,.35)}
.row .r{font-size:14px;line-height:1.2}
.row .r b{font-family:var(--display);font-weight:400;color:var(--amber);font-size:12px;margin-left:4px}
.row .s{font-size:12px;color:var(--muted);line-height:1.25}
.row.no{opacity:.45}
.row.hl{border-color:var(--amber)}
.rows .empty{margin:0;padding:14px 8px;text-align:center;color:var(--muted);border:1px dashed var(--line)}
#prompt{position:absolute;left:50%;top:calc(50% + 28px);transform:translateX(-50%);font-family:var(--display);font-size:11px;letter-spacing:.08em;background:var(--panel);padding:3px 8px;color:var(--amber)}
.overlay{position:fixed;inset:0;display:grid;place-items:center;overflow:auto;background:rgba(10,11,13,.55);
 padding-block:24px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.card{width:100%;max-width:680px;background:var(--panel);border:1px solid var(--line);padding:28px clamp(18px,4vw,34px);display:flex;flex-direction:column;gap:18px;box-sizing:border-box}
.eyebrow{font-family:var(--display);font-size:11px;letter-spacing:.16em;color:var(--muted);text-transform:uppercase}
h1{font-family:var(--display);font-weight:700;font-size:clamp(34px,7vw,56px);line-height:.95;margin:0;color:var(--amber);letter-spacing:.02em;text-wrap:balance}
h1 .sub{display:block;margin-top:8px;font-size:.36em;letter-spacing:.32em;text-transform:uppercase;color:var(--text);font-weight:400}
h2{font-family:var(--display);font-weight:700;font-size:clamp(28px,6vw,42px);line-height:1;margin:0;text-wrap:balance}
.lead{margin:0;font-size:16px;line-height:1.5;max-width:60ch}
.intro{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:center}
.intro svg{width:118px;height:118px}
@media (max-width:520px){.intro{grid-template-columns:1fr}.intro svg{width:96px;height:96px}}
.rules{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.rules li{display:grid;grid-template-columns:14px 1fr;gap:10px;line-height:1.45;font-size:14px}
.rules li::before{content:"";width:8px;height:8px;background:var(--amber);margin-top:6px}
.keys{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:6px 18px;margin:0;font-size:13px}
.keys div{display:flex;justify-content:space-between;gap:10px;border-bottom:1px dashed var(--line);padding-bottom:4px}
.keys dt{font-family:var(--display);font-size:11px;color:var(--amber)}
.keys dd{margin:0;color:var(--muted);text-align:right}
.btns{display:flex;flex-wrap:wrap;gap:10px}
.btn{pointer-events:auto;font-family:var(--display);font-size:16px;letter-spacing:.08em;background:var(--amber);color:#1a1205;border:0;padding:14px 22px;cursor:pointer;align-self:flex-start;text-transform:uppercase}
.btn.ghost{background:transparent;color:var(--text);border:1px solid var(--line)}
.btn:hover{filter:brightness(1.08)}
.btn:focus-visible{outline:3px solid var(--text);outline-offset:3px}
.note{font-size:12px;color:var(--muted);margin:0}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}
.stats div{border:1px solid var(--line);padding:10px 12px;display:flex;flex-direction:column;gap:4px}
.stats b{font-family:var(--display);font-size:22px;font-variant-numeric:tabular-nums;color:var(--amber);font-weight:400}
.stats span{font-size:12px;color:var(--muted)}
#end.lost h2{color:var(--red)}
#end.won h2{color:var(--amber)}
@media (prefers-reduced-motion:reduce){#toast,#vignette,#hit{transition:none}}
@media (max-width:600px){#minimap{width:110px;height:110px}.slot{width:38px;height:38px}.slot canvas{width:24px;height:24px}.bar{width:140px}#timerVal{font-size:22px}}
#fishbar{position:absolute;left:50%;top:calc(50% + 62px);transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:6px;
 background:var(--panel);border:1px solid var(--line);padding:10px 12px 8px}
#fishbar span{font-family:var(--display);font-size:10px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase}
#fishtrack{position:relative;width:min(280px,70vw);height:16px;background:rgba(0,0,0,.55);border:1px solid var(--line)}
#fishzone{position:absolute;top:0;bottom:0;background:#4fb838;box-shadow:inset 0 0 0 1px #8fe070}
#fishmark{position:absolute;top:-4px;bottom:-4px;width:4px;margin-left:-2px;background:var(--amber);box-shadow:0 0 0 1px #1a1205}
#inv{position:absolute;left:50%;top:calc(50% - 40px);transform:translate(-50%,-50%);width:min(620px,94vw);max-height:calc(100vh - 230px);overflow:hidden;box-sizing:border-box;
 background:var(--panel);border:1px solid var(--amber);padding:16px 18px;display:flex;flex-direction:column;gap:12px;pointer-events:auto}
#inv h3{margin:0;font-family:var(--display);font-size:15px;letter-spacing:.08em;color:var(--amber);font-weight:400;display:flex;justify-content:space-between;align-items:baseline;gap:10px}
#inv h3 span{font-size:10px;color:var(--muted);letter-spacing:.12em;text-transform:uppercase}
#inv .cap{display:flex;gap:10px;align-items:center;font-size:12px;color:var(--muted)}
#inv .cap .bar{flex:1;height:6px;background:rgba(0,0,0,.5);border:1px solid var(--line)}
#inv .cap .bar i{display:block;height:100%;background:var(--amber)}
#inv .cap .bar.full i{background:var(--red)}
#inv h4{margin:2px 0 0;font-family:var(--display);font-size:10px;letter-spacing:.14em;color:var(--muted);font-weight:400;text-transform:uppercase}
#inv .grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(46px,1fr));gap:5px}
#inv .cell{position:relative;aspect-ratio:1;background:rgba(0,0,0,.35);border:1px solid var(--line);display:grid;place-items:center;cursor:pointer;padding:0;color:inherit}
#inv .cell:hover{border-color:var(--muted)}
#inv .cell.sel{border-color:var(--amber);background:rgba(240,176,58,.14)}
#inv .cell:focus-visible{outline:2px solid var(--text);outline-offset:1px}
#inv .cell canvas{width:30px;height:30px;image-rendering:pixelated}
#inv .cell .n{position:absolute;right:3px;bottom:1px;font-family:var(--display);font-size:11px;font-variant-numeric:tabular-nums}
#inv .cell .hb{position:absolute;left:3px;top:1px;font-family:var(--display);font-size:9px;color:var(--amber)}
#inv .detail{display:grid;grid-template-columns:40px 1fr;gap:10px;align-items:center;border:1px solid var(--line);padding:8px 10px;min-height:44px}
#inv .detail canvas{width:40px;height:40px;image-rendering:pixelated}
#inv .detail .t{font-size:14px}#inv .detail .s{font-size:12px;color:var(--muted);line-height:1.4}
#inv .foot{font-size:12px;color:var(--muted)}
#inv .empty{grid-column:1/-1;margin:0;font-size:12px;color:var(--muted)}
#inv .scroll{overflow:auto;min-height:0;display:flex;flex-direction:column;gap:8px;padding-right:2px}
#view{cursor:none}
#lockShield{position:fixed;inset:0;z-index:40;display:grid;place-items:center;cursor:pointer;background:rgba(10,11,13,.22)}
#lockShield .ls-msg{font-family:var(--display);font-size:15px;letter-spacing:.12em;text-transform:uppercase;color:var(--text);background:var(--panel);border:1px solid var(--amber);padding:13px 20px}
