:root{--ink: #14101a;--cream: #fff6e6;--warm: #f6c99f;--accent: #f2c14e;--cozy: #9ee7ff;--calm: #7ac74f;--suspicious: #ffa94d;--hunting: #ff6b35;--frenzy: #e03131;--hud-pad: clamp(10px, 2vmin, 22px);--font-ui: "Nunito", "Segoe UI", system-ui, -apple-system, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;overflow:hidden;background:#2b1b3d;font-family:var(--font-ui);user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}#app{position:relative;width:100vw;height:100vh;height:100dvh}#game-canvas{display:block;width:100%;height:100%;cursor:crosshair}#ui-root{position:absolute;inset:0;pointer-events:none;color:var(--ink)}#boot-screen{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:.4em;background:radial-gradient(circle at 50% 40%,#4a3060,#2b1b3d);color:var(--cream);z-index:50;transition:opacity .4s ease}#boot-screen.hidden{opacity:0;pointer-events:none}.boot-cat{font-size:clamp(48px,12vmin,110px);animation:bob 1.4s ease-in-out infinite}.boot-title{font-size:clamp(28px,6vmin,56px);font-weight:900;letter-spacing:.02em}.boot-status{font-size:clamp(13px,2vmin,18px);opacity:.75}@keyframes bob{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-12px) rotate(3deg)}}.hud-top-left,.hud-top-right,.hud-bottom-left,.hud-bottom-right{position:absolute;display:flex;gap:.6em}.hud-top-left{top:var(--hud-pad);left:var(--hud-pad);flex-direction:column}.hud-top-right{top:var(--hud-pad);right:var(--hud-pad);flex-direction:column;align-items:flex-end}.hud-bottom-left{bottom:var(--hud-pad);left:var(--hud-pad);flex-direction:column}.hud-bottom-right{bottom:var(--hud-pad);right:var(--hud-pad);align-items:flex-end}.heat-panel,.stat,.badge,.pip,#objectives li{background:var(--cream);border:3px solid var(--ink);border-radius:14px;box-shadow:0 3px 0 var(--ink)}.heat-panel{display:flex;align-items:center;gap:.5em;padding:.4em .7em .4em .5em}#heat-face{font-size:clamp(26px,5vmin,42px);line-height:1}#heat-face.shaking{animation:shake .28s linear infinite}@keyframes shake{0%,to{transform:translate(0) rotate(0)}25%{transform:translate(-2px,1px) rotate(-6deg)}75%{transform:translate(2px,-1px) rotate(6deg)}}.heat-meta{display:flex;flex-direction:column;gap:.25em;min-width:clamp(96px,16vmin,150px)}#heat-label{font-size:clamp(11px,1.8vmin,15px);font-weight:800;text-transform:uppercase;letter-spacing:.03em}.heat-bar{height:clamp(8px,1.4vmin,13px);background:#e0d2bd;border:2px solid var(--ink);border-radius:99px;overflow:hidden}#heat-fill{height:100%;width:0%;border-radius:99px;transition:width .18s ease-out,background-color .3s ease;background:var(--calm)}#heat-fill[data-tier=suspicious]{background:var(--suspicious)}#heat-fill[data-tier=hunting]{background:var(--hunting)}#heat-fill[data-tier=frenzy]{background:var(--frenzy)}.contact-bar{display:flex;align-items:center;gap:.4em;opacity:0;transform:translateY(-4px);transition:opacity .2s ease,transform .2s ease}.contact-bar.visible{opacity:1;transform:translateY(0)}.contact-bar .eye{font-size:clamp(14px,2.4vmin,20px);filter:drop-shadow(0 1px 0 var(--ink))}.contact-track{width:clamp(70px,13vmin,120px);height:clamp(6px,1.1vmin,10px);background:#14101a59;border:2px solid var(--ink);border-radius:99px;overflow:hidden}#contact-fill{height:100%;width:0%;background:var(--frenzy);transition:width .08s linear}#contact-fill.full{animation:pulse .4s ease-in-out infinite alternate}@keyframes pulse{0%{opacity:.6}to{opacity:1}}#objectives{position:absolute;left:var(--hud-pad);top:50%;transform:translateY(-50%);margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.4em;max-width:min(46vw,340px)}#objectives li{display:flex;align-items:center;gap:.5em;padding:.35em .7em;font-size:clamp(12px,2vmin,17px);font-weight:700;transition:opacity .3s ease}#objectives li.done{opacity:.5}#objectives li.done .label{text-decoration:line-through}#objectives .check{font-size:1.1em}#objectives .count{margin-left:auto;font-variant-numeric:tabular-nums;opacity:.7}.stat{display:flex;align-items:center;gap:.35em;padding:.3em .6em;font-size:clamp(12px,2vmin,17px);font-weight:800;font-variant-numeric:tabular-nums}.stat-icon{font-size:1.15em}.badge{padding:.3em .65em;font-size:clamp(11px,1.8vmin,15px);font-weight:800;opacity:0;transform:translate(-8px);transition:opacity .2s ease,transform .2s ease}.badge.visible{opacity:1;transform:translate(0)}#hiding-badge.seen{background:var(--frenzy, #e03131);color:var(--cream)}#hiding-badge{background:var(--cozy)}.pip{width:clamp(36px,6.5vmin,56px);height:clamp(36px,6.5vmin,56px);display:grid;place-content:center;border-radius:50%;font-size:clamp(16px,3vmin,26px);position:relative;overflow:hidden;opacity:.45;transition:opacity .15s ease}.pip.ready,.pip.visible{opacity:1}#dash-pip:after{content:"";position:absolute;inset:auto 0 0;background:var(--accent);height:var(--fill, 100%);opacity:.35;transition:height .1s linear}#pounce-arc:after{content:"";position:absolute;inset:auto 0 0;background:var(--cozy);height:var(--charge, 0%);opacity:.55}#banner{position:absolute;left:50%;top:18%;transform:translate(-50%,-12px);padding:.5em 1.1em;background:var(--cream);border:4px solid var(--ink);border-radius:18px;box-shadow:0 5px 0 var(--ink);font-size:clamp(16px,3.4vmin,32px);font-weight:900;text-align:center;opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease}#banner.visible{opacity:1;transform:translate(-50%)}#banner[data-kind=caught]{background:var(--frenzy);color:var(--cream)}#banner[data-kind=won]{background:var(--accent)}#banner[data-kind=tip]{background:var(--cozy);font-size:clamp(13px,2.4vmin,22px)}#vignette{position:absolute;inset:0;opacity:0;transition:opacity .18s ease;background:radial-gradient(ellipse at center,transparent 52%,var(--frenzy) 130%);mix-blend-mode:multiply}#debug{position:absolute;left:var(--hud-pad);bottom:calc(var(--hud-pad) + 5.5em);margin:0;padding:.6em .8em;background:#14101ad9;color:#9ee7ff;font-family:Cascadia Code,Consolas,monospace;font-size:12px;line-height:1.5;border-radius:8px;white-space:pre;display:none}#debug.visible{display:block}#activity-chip{position:absolute;left:0;top:0;display:flex;align-items:center;gap:.35em;padding:.25em .55em;background:var(--cream);border:3px solid var(--ink);border-radius:14px;box-shadow:0 3px 0 var(--ink);font-size:clamp(11px,1.7vmin,15px);font-weight:800;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .15s ease;z-index:2}#activity-chip.visible{opacity:1}#objectives{z-index:3}.activity-icon{font-size:1.35em;line-height:1}.activity-senses{font-size:.95em;line-height:1;letter-spacing:-.05em}#activity-chip.blind{background:var(--cozy-blue, #9ee7ff)}#activity-chip.sharp-eared{background:var(--suspicious, #ffa94d)}#level-select{position:absolute;inset:0;display:grid;place-items:center;padding:clamp(12px,3vmin,30px);overflow-y:auto;background:#2b1b3d;pointer-events:auto;z-index:30}.level-select-panel{width:min(94vw,920px);padding:clamp(14px,3vmin,28px);color:var(--ink);background:var(--cream);border:5px solid var(--ink);border-radius:26px;box-shadow:0 8px 0 var(--ink);text-align:center}.level-select-cat{font-size:clamp(38px,8vmin,72px);line-height:1}.level-select-panel h1{margin:.05em 0;font-size:clamp(24px,5vmin,44px);line-height:1}.level-select-subtitle{margin:.3em 0 .8em;font-size:clamp(12px,2.2vmin,18px);font-weight:700}#level-select-message{display:none;margin:0 0 .8em;padding:.4em .7em;color:var(--cream);background:var(--hunting);border:3px solid var(--ink);border-radius:14px;font-weight:800}#level-select-message.visible{display:block}.level-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(8px,2vmin,18px)}.level-tile{min-width:0;display:grid;justify-items:center;gap:.18em;padding:clamp(10px,2vmin,18px);color:var(--ink);background:#fff1cf;border:4px solid var(--ink);border-radius:20px;box-shadow:0 5px 0 var(--ink);font:inherit;cursor:pointer}.level-tile:hover:not(:disabled){transform:translateY(-3px)}.level-tile:active:not(:disabled){transform:translateY(3px);box-shadow:0 2px 0 var(--ink)}.level-tile:focus-visible{outline:5px solid var(--cozy);outline-offset:3px}.level-tile:disabled{cursor:not-allowed;filter:grayscale(.75);opacity:.58}.level-tile.unavailable{border-style:dashed}.level-heading,.level-room,.level-best,.level-action{font-size:clamp(10px,1.8vmin,15px);font-weight:800}.level-heading{text-transform:uppercase;letter-spacing:.04em;opacity:.7}.level-icon{font-size:clamp(34px,7vmin,62px);line-height:1.1}.level-name{font-size:clamp(16px,3vmin,25px);line-height:1.05}.level-room{min-height:1.2em;opacity:.7}.level-stars{color:var(--accent);font-size:clamp(18px,3.5vmin,30px);letter-spacing:.04em;-webkit-text-stroke:1px var(--ink)}.level-action{width:100%;margin-top:.3em;padding:.35em .45em;background:var(--calm);border:3px solid var(--ink);border-radius:12px}.level-tile.locked .level-action,.level-tile.unavailable .level-action{background:#d6c8b4}@media(max-width:680px){#level-select{place-items:start center}.level-list{grid-template-columns:1fr}.level-tile{grid-template-columns:auto 1fr auto;align-items:center;justify-items:start;text-align:left}.level-heading,.level-room,.level-best{grid-column:2}.level-icon{grid-column:1;grid-row:1 / span 5}.level-name{grid-column:2}.level-stars{grid-column:3;grid-row:1 / span 2}.level-action{grid-column:3;grid-row:3 / span 3;width:auto;text-align:center}}#level-card{position:absolute;inset:0;display:grid;place-items:center;background:#14101a8c;opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:20}#level-card.visible{opacity:1;pointer-events:auto}#level-card .card-panel{width:min(88vw,460px);max-height:92vh;overflow-y:auto;padding:clamp(14px,3vmin,26px);background:var(--cream);border:5px solid var(--ink);border-radius:26px;box-shadow:0 8px 0 var(--ink);text-align:center;transform:translateY(14px) scale(.97);transition:transform .3s cubic-bezier(.2,1.3,.5,1)}#level-card.visible .card-panel{transform:translateY(0) scale(1)}#level-card .card-stars{font-size:clamp(30px,7vmin,58px);letter-spacing:.06em;color:var(--accent);-webkit-text-stroke:2px var(--ink);line-height:1.1}#level-card h2{margin:.1em 0 .3em;font-size:clamp(15px,3vmin,24px);font-weight:800;color:var(--ink)}#level-card .card-total-row{display:flex;align-items:baseline;justify-content:center;gap:.5em;margin-bottom:.5em}#level-card .card-total{font-size:clamp(28px,6vmin,48px);font-weight:900;color:var(--ink)}#level-card .card-best{font-size:clamp(11px,2vmin,16px);font-weight:800;color:#7a6a58}#level-card .card-best.new{color:var(--frenzy)}#level-card .card-rows{list-style:none;margin:0 0 .7em;padding:0;font-size:clamp(12px,2.3vmin,19px);font-weight:700;color:var(--ink)}#level-card .card-rows li{display:flex;align-items:center;gap:.5em;padding:.18em .3em;border-bottom:2px dotted rgba(20,16,26,.18)}#level-card .row-label{flex:1;text-align:left}#level-card .row-value{font-variant-numeric:tabular-nums}#level-card .card-badges{display:grid;grid-template-columns:repeat(2,1fr);gap:.4em;margin-bottom:.8em}#level-card .badge-chip{display:flex;align-items:center;gap:.4em;padding:.35em .5em;background:#14101a12;border:3px solid rgba(20,16,26,.25);border-radius:14px;filter:grayscale(1);opacity:.5}#level-card .badge-chip.earned{background:var(--accent);border-color:var(--ink);filter:none;opacity:1}#level-card .badge-icon{font-size:clamp(16px,3vmin,26px)}#level-card .badge-label{font-size:clamp(9px,1.7vmin,14px);font-weight:800;text-align:left;line-height:1.15;color:var(--ink)}#level-card .card-button{width:100%;padding:.55em 1em;background:var(--calm);border:4px solid var(--ink);border-radius:18px;box-shadow:0 5px 0 var(--ink);font-family:inherit;font-size:clamp(15px,3vmin,24px);font-weight:900;color:var(--ink);cursor:pointer}#level-card .card-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55em}#level-card .card-button.secondary{background:var(--cozy)}#level-card .card-button:hover{transform:translateY(-2px)}#level-card .card-button:active{transform:translateY(3px);box-shadow:0 2px 0 var(--ink)}#level-card .card-button:focus-visible{outline:4px solid var(--cozy);outline-offset:3px}#level-editor{position:absolute;top:0;right:0;bottom:0;width:min(390px,94vw);padding:18px;overflow-y:auto;color:var(--ink);background:var(--cream);border-left:5px solid var(--ink);box-shadow:-8px 0 #14101a47;pointer-events:none;opacity:0;visibility:hidden;transform:translate(105%);transition:transform .2s ease,opacity .2s ease;z-index:40}#level-editor.visible{pointer-events:auto;opacity:1;visibility:visible;transform:translate(0)}.editor-heading{display:flex;align-items:start;justify-content:space-between;gap:12px}.editor-heading h2{margin:0;font-size:28px;line-height:1}.editor-kicker{display:block;margin-bottom:4px;color:#765c32;font-size:11px;font-weight:900;letter-spacing:.12em}.editor-close,.editor-nudge-grid button,.editor-button{min-height:40px;padding:7px 10px;color:var(--ink);background:var(--warm);border:3px solid var(--ink);border-radius:10px;box-shadow:0 3px 0 var(--ink);font-family:inherit;font-size:13px;font-weight:900;cursor:pointer}.editor-close:active,.editor-nudge-grid button:active,.editor-button:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ink)}.editor-close:focus-visible,.editor-nudge-grid button:focus-visible,.editor-button:focus-visible,.editor-field input:focus-visible,.editor-field select:focus-visible{outline:4px solid var(--cozy);outline-offset:2px}.editor-warning{margin:14px 0;padding:9px 10px;background:#fff1cf;border:2px solid #765c32;border-radius:10px;font-size:12px;font-weight:800;line-height:1.3}.editor-field{display:grid;gap:4px;min-width:0;font-size:12px;font-weight:900}.editor-field input,.editor-field select{width:100%;min-width:0;height:40px;padding:5px 8px;color:var(--ink);background:#fff;border:3px solid var(--ink);border-radius:9px;font:700 14px/1 var(--font-ui);user-select:text;-webkit-user-select:text}.editor-field input:disabled{color:#776f78;background:#ddd4c7}.editor-target-field{margin-bottom:10px}.editor-coordinates{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin-bottom:9px}.editor-section{margin-top:15px;padding-top:12px;border-top:2px dotted rgba(20,16,26,.3)}.editor-section h3{margin:0 0 7px;font-size:13px}.editor-nudge-grid,.editor-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.editor-button.wide{width:100%;margin-top:8px}.editor-actions{margin-top:17px}.editor-button.secondary{background:var(--cozy)}.editor-button.save{background:var(--calm)}.editor-button.reload{background:var(--accent)}.editor-button:disabled{color:#776f78;background:#d8d0c5;box-shadow:none;cursor:not-allowed;opacity:.7}.editor-save-note,.editor-status{margin:10px 0 0;font-size:12px;font-weight:800;line-height:1.35}.editor-save-note:empty{display:none}.editor-status{min-height:34px;padding:7px 8px;background:#7ac74f33;border-radius:8px}.editor-status.error{color:#8c1111;background:#e0313129}@media(max-width:520px){#level-editor{width:100%;border-left:0}}@media(prefers-reduced-motion:reduce){#heat-face.shaking,#contact-fill.full,.boot-cat{animation:none}#level-card .card-panel{transform:none}*{transition-duration:.01ms!important}}
