@font-face{font-family:Chakra;src:url('./assets/chakra.woff2')}@font-face{font-family:Crypt;src:url('./assets/display.woff2')}
:root{color-scheme:dark;--ink:#e7decd;--muted:#8c8b9b;--blood:#e1576d;--moon:#83cdd0;--base:#0b0b12;--line:#30303f}
*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 30%,#211721 0,#0b0b12 65%);color:var(--ink);font-family:Chakra,Arial,sans-serif;font-size:14px}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--moon);outline-offset:4px}main{max-width:1180px;margin:auto;padding:0 36px}.masthead{height:83px;display:flex;align-items:center;border-bottom:1px solid #2e2530;gap:28px}.wordmark{font-family:Crypt,Georgia,serif;color:#df5969;font-size:33px;letter-spacing:-2px;text-decoration:none;font-weight:bold;transform:skew(-5deg)}.brand-mark{font-size:22px;margin-left:6px}.edition{color:#8c7d89;font-size:12px}.tools{display:flex;gap:18px;margin-left:auto;align-items:center}.local{font-size:11px;color:#a3a4ac;white-space:nowrap}.local i{display:inline-block;background:#8cb79d;width:5px;height:5px;margin-right:7px;border-radius:50%}.tool{border:1px solid #38303d;color:#b9b1be;background:#17131d;padding:7px 12px;border-radius:3px;min-height:32px}.tool:hover{background:#2a2030;color:white}.game-heading{display:flex;align-items:center;justify-content:space-between;padding:31px 0 24px;gap:20px}.chapter{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:#b47d88;margin:0 0 7px}h1{font-family:Crypt,Georgia,serif;font-size:52px;line-height:1.05;font-weight:400;letter-spacing:-1.2px;margin:0}.tagline{color:#bdafba;text-align:right;line-height:1.7;margin:0;font-size:13px}.tagline span{color:#797b8b}.cabinet{border:1px solid #49404a;background:#13121b;box-shadow:0 0 0 5px #0e0d14,0 0 0 6px #24202b,0 30px 65px #0007;position:relative}.cabinet:before,.cabinet:after{content:'◆';position:absolute;color:#a7757d;top:-9px;font-size:13px;z-index:4}.cabinet:before{left:-6px}.cabinet:after{right:-6px}.hud{height:61px;display:flex;align-items:center;gap:39px;padding:0 24px;border-bottom:1px solid #37303a;background:linear-gradient(90deg,#201822,#171721)}.hud-label{font-size:10px;color:#99909f;display:block;margin-bottom:3px;letter-spacing:.5px}.vital #hearts{color:#f26a7b;font-size:17px;letter-spacing:4px;line-height:17px}.relic-count strong{font-size:17px;font-weight:normal}.relic-count strong span{color:#6e6576;font-size:14px}.hud-middle{margin-left:auto;text-align:right}.hud-middle strong{font-size:20px;font-variant-numeric:tabular-nums;font-weight:400}.hud .tool{padding:4px 10px}.viewport{position:relative;aspect-ratio:8/5;overflow:hidden;background:#0c0f18}canvas{width:100%;height:100%;display:block;image-rendering:pixelated;outline:none}.vignette{position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 65px #03040a99}.area-label{position:absolute;top:17px;left:23px;font-size:10px;letter-spacing:1px;color:#8c8392;pointer-events:none}.area-label span{color:#a77d87;margin-right:6px}.toast{position:absolute;bottom:18px;left:50%;transform:translateX(-50%);width:max-content;max-width:90%;text-align:center;background:#10121ceb;color:#ded4c4;border:1px solid #655262;padding:9px 18px;font-size:12px;opacity:0;transition:opacity .2s;pointer-events:none;box-shadow:0 4px 15px #0006}.toast.show{opacity:1}.lower-hud{height:73px;padding:13px 24px;display:flex;align-items:center;justify-content:space-between;gap:22px;border-top:1px solid #3d303e;background:#18151f}.objective{display:flex;align-items:center;gap:13px}.objective-icon{font-size:29px;color:#e2a38d}.objective p{margin:0;font-size:13px;color:#ded2c8}.echo-meter{width:180px;flex-shrink:0}.echo-meter>div:first-child{display:flex;justify-content:space-between;align-items:center;color:#b2a3c5;font-size:10px;margin-bottom:7px}.echo-meter strong{font-weight:400;font-size:12px}.track{height:4px;background:#342b42}.track i{height:4px;display:block;width:0;background:#aa84d8;box-shadow:0 0 8px #9966bb66}.controls{display:flex;gap:24px;align-items:center;padding:23px 0 18px;color:#a89da9;font-size:11px;flex-wrap:wrap}.controls>span{display:flex;gap:5px;align-items:center}.controls small{color:#655e6f;font-size:10px}kbd{font-family:Chakra,monospace;display:inline-block;background:#211c28;box-shadow:0 2px #08080e;border:1px solid #403647;border-radius:3px;min-width:19px;padding:3px 5px;font-size:10px;color:#d2c3cd;text-align:center}.controls i{font-size:9px;color:#86bba7;font-style:normal;margin-left:3px}.text-button{background:none;border:0;color:#bd929f;padding:4px;margin-left:auto;font-size:11px}.text-button:hover{color:white}footer{display:flex;justify-content:space-between;border-top:1px solid #25212c;padding:16px 0 24px;font-size:10px;color:#71697a;gap:10px}footer b{padding:0 6px;color:#a97583}.overlay{position:absolute;inset:0;background:#080a1296;backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:5}.overlay[hidden]{display:none}.intro-frame{text-align:center;width:470px;max-width:100%;padding:22px 30px 21px;background:linear-gradient(150deg,#201a27f5,#14141ff7);border:1px solid #67505f;outline:1px solid #3c2b3c;outline-offset:5px;box-shadow:0 20px 70px #000b;position:relative}.sigil{font-size:34px;line-height:1;color:#de9b9e;margin:0 0 9px}.intro-kicker{font-size:9px;color:#ac8499;letter-spacing:2px;text-transform:uppercase;margin:0 0 10px}h2{font-family:Crypt,Georgia,serif;font-weight:400;font-size:36px;letter-spacing:-.4px;line-height:1.1;margin:0 0 15px}.intro-copy{font-size:12px;line-height:1.8;color:#b4a7b9;margin:0 0 20px}.ritual{border-top:1px solid #453444;border-bottom:1px solid #453444;display:flex;flex-direction:column;gap:9px;padding:13px 0;margin-bottom:20px;text-align:left;width:245px;max-width:100%;margin-left:auto;margin-right:auto}.ritual span{font-size:11px;color:#ccbfc7}.ritual b{font-weight:400;color:#c97c8c;font-size:9px;margin-right:13px}.primary{color:#fff0df;background:#9f354c;border:1px solid #e07b87;border-bottom:3px solid #63263c;padding:12px 25px;min-width:230px;font-family:Chakra;font-size:13px;box-shadow:0 4px 18px #7d19383f}.primary:hover{background:#b4465d}.primary span{margin-left:25px;opacity:.6}.intro-foot{font-size:10px;color:#8c7b91;margin:14px 0 0}.result-stats{display:flex;justify-content:center;gap:33px;margin:22px 0}.result-stats b{display:block;font-size:25px;font-weight:normal;color:#e5d0c9}.result-stats span{font-size:10px;color:#a58caa}.result-note{font-size:10px;color:#a28c9f;margin:15px 0 0;line-height:1.6}.touch{display:none}dialog{width:530px;max-width:calc(100% - 30px);border:1px solid #74505f;background:#191622;color:var(--ink);padding:35px;box-shadow:0 20px 120px #000}dialog::backdrop{background:#060710cf;backdrop-filter:blur(6px)}dialog h2{font-size:32px}dialog ol{padding-left:20px;line-height:1.7;font-size:12px;color:#b9aebc}dialog li{padding:7px 0 7px 5px}dialog strong{color:#e5d5d4}.close{position:absolute;top:8px;right:10px;background:none;color:#c2a7b9;border:0;font-size:25px}.help-note{border-left:2px solid #80adb8;padding-left:13px;color:#a9bfc7;font-size:12px;line-height:1.7;margin:15px 0 24px}.loading-note{font-size:11px;color:#d3a5a9}.pixel-portrait{width:70px;height:80px;image-rendering:pixelated}
@media(min-width:1450px){main{max-width:1240px}.game-heading{padding-top:36px;padding-bottom:28px}}
@media(max-height:850px) and (min-width:900px){main{max-width:1030px}.masthead{height:60px}.game-heading{padding:20px 0}h1{font-size:42px}.viewport{max-height:510px;aspect-ratio:8/5}.hud{height:52px}.lower-hud{height:62px}.controls{padding:18px 0 14px}.intro-frame{padding:16px 28px}.sigil{font-size:27px}h2{font-size:31px}.intro-copy{margin-bottom:12px}.ritual{padding:10px 0;margin-bottom:15px}}
@media(max-width:700px){main{padding:0 14px}.masthead{height:63px;gap:5px}.wordmark{font-size:26px}.edition{display:none}.tools{gap:8px}.local{font-size:9px}.tool{padding:5px 8px;font-size:10px}.game-heading{padding:25px 0 20px;align-items:flex-end}h1{font-size:36px}.chapter{font-size:8px;letter-spacing:1px}.tagline{font-size:9px}.hud{height:49px;padding:0 12px;gap:22px}.hud-label{font-size:8px}.hud-middle strong{font-size:17px}.viewport{aspect-ratio:8/6.5}canvas{object-fit:contain;background:#080b12}.area-label{display:none}.overlay{padding:13px}.intro-frame{padding:14px 13px}.sigil{display:none}.intro-kicker{margin:0 0 7px;font-size:8px}h2{font-size:25px;margin-bottom:8px}.intro-copy{font-size:10px;line-height:1.5;margin-bottom:10px}.ritual{gap:5px;margin-bottom:12px;padding:8px 0;width:215px}.ritual span{font-size:10px}.primary{padding:9px 16px;min-width:200px;font-size:12px}.intro-foot{margin-top:10px;font-size:9px}.lower-hud{padding:10px 12px;height:75px;gap:10px}.objective{gap:7px}.objective p{font-size:10px;max-width:230px}.objective-icon{font-size:22px}.echo-meter{width:80px}.echo-meter>div:first-child{font-size:8px}.controls{gap:14px;padding:18px 0 12px;font-size:9px}.controls small,.controls>span:last-of-type{display:none}.controls i{display:none}.text-button{font-size:10px}.touch{display:flex;align-items:center;justify-content:flex-end;gap:14px;padding:6px 0 20px}.touch button{touch-action:none;border:1px solid #514054;background:#241d2d;color:#e0cedd;padding:12px;font-size:12px;border-radius:5px;min-height:45px}.dpad{margin-right:auto;display:grid;grid-template-columns:repeat(3,43px);grid-template-rows:repeat(2,38px);gap:4px}.dpad button{padding:6px;min-height:0}.dpad [data-dir=up]{grid-column:2}.dpad [data-dir=left]{grid-row:2}.dpad [data-dir=down]{grid-row:2}.dpad [data-dir=right]{grid-row:2}footer{font-size:8px}.toast{font-size:9px;padding:7px 10px;bottom:8px}.result-stats{margin:10px 0;gap:25px}.result-stats b{font-size:21px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}.vignette{box-shadow:inset 0 0 30px #03040a99}}
/* Current vamps.wtf palette: crimson #ff2a3d, moon #ffd6d9, ink #f6f1ea.
   The arena keeps cyan for safe sigils and amber for impending hazards. */
:root{--ink:#f6f1ea;--blood:#ff2a3d;--moon:#73e4ed;--base:#060508}
body{background:radial-gradient(ellipse at 50% 22%,#291124 0,#060508 72%)}
.wordmark{color:#ff2a3d;text-shadow:0 0 17px #ff2a3d50}
.chapter{color:#ff5a69}.cabinet{border-color:#93263f;box-shadow:0 0 0 5px #0e0914,0 0 0 6px #482037,0 20px 70px #500d262b}
.hud{background:linear-gradient(100deg,#301327,#171a30)}.lower-hud{background:#211427;border-color:#70304b}
.vital #hearts{color:#ff4363;text-shadow:0 0 9px #ff2a3d50}
.primary{background:linear-gradient(#ee2544,#b6082b);border-color:#ff7580;border-bottom-color:#74071f;box-shadow:0 0 20px #ff2a3d35}
.primary:hover{background:#ff3454}.intro-frame{border-color:#994259;background:linear-gradient(145deg,#2f1528f5,#151329f7)}
.track i{background:#ce79ff;box-shadow:0 0 10px #a544ee}.objective-icon{color:#ff7181}
.area-label{color:#dab7d0}.area-label span{color:#db9cba}.vignette{box-shadow:inset 0 0 45px #03040a66}
.viewport canvas{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
@media(max-height:850px) and (min-width:900px){main{max-width:900px}.viewport{max-height:none}}

/* Smooth sprite edges at native game resolution. */
.viewport canvas{image-rendering:auto}
/* VAMPS giveaway: beveled inventory panels, restrained gold and crimson. */
.campaign-banner{display:flex;align-items:center;gap:22px;padding:25px 0;border-bottom:1px solid #745333}.campaign-banner>div{flex:1}.campaign-banner h2{font-family:Chakra,Arial,sans-serif;font-size:30px;font-weight:800;letter-spacing:1px;margin:5px 0}.campaign-banner img{width:110px;height:110px;object-fit:cover;border:3px solid #b28a51}.campaign-banner p{margin:7px 0}.preview-badge{font-size:9px;border:1px solid #755f40;color:#d8be8e;padding:4px 6px;margin-left:10px}.entry-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:19px 0}.entry-card{display:flex;flex-direction:column;gap:9px;align-items:flex-start;text-align:left;background:linear-gradient(135deg,#2b2030,#15121e);color:#ebd9bf;border:2px solid #6c4c3e;box-shadow:inset 2px 2px #9b75574d,inset -3px -3px #090711;padding:20px;min-height:170px}.entry-card strong{font-size:23px;color:#f6d78d}.entry-card span:not(.entry-icon){font-size:12px}.entry-card small{color:#b6a8ba}.entry-icon{font-size:24px;color:#d7ac60}.entry-card:hover,.entry-card.selected{border-color:#f0bf70;background:#312333}.entry-card.selected{box-shadow:inset 0 0 25px #b0752222,0 0 0 2px #8b5e30}.entry-meta{display:flex;align-items:center;gap:22px}.entry-meta p{font-size:12px;color:#beaebd;flex:1}.entry-meta label{max-width:220px}input,select{font:inherit;background:#110e19;color:#f4e4d0;border:1px solid #66515d;padding:10px;width:100%;margin-top:6px;border-radius:0}input:focus,select:focus{outline:2px solid #d2b477}label{display:block;font-size:12px;color:#d0bdcd}.leaderboard{margin:25px 0;background:#18131f;border:3px solid #5d4554;box-shadow:inset 2px 2px #9e798b33,inset -3px -3px #09080e;padding:24px}.leaderboard header{display:flex;justify-content:space-between;align-items:center;gap:16px}.leaderboard h2{font-size:30px;margin:0}.leaderboard header>div:last-child{display:flex;gap:8px}.leaderboard select{width:auto;margin:0}.leaderboard p{color:#aa97ae;font-size:12px}.leaderboard table{width:100%;border-collapse:collapse;margin-top:16px;text-align:left}.leaderboard th{color:#d7ba82;font-size:11px;letter-spacing:1px;text-transform:uppercase;border-bottom:2px solid #6b4c45;padding:12px 8px}.leaderboard td{padding:16px 8px;border-bottom:1px solid #342936;font-variant-numeric:tabular-nums}.leaderboard tr:first-child td:first-child{color:#ffdf86}.leaderboard td:nth-child(3){color:#f4d69b}.result-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:9px;margin:12px 0}.result-actions a{text-decoration:none}.result-actions button:disabled{opacity:.45;cursor:default}.intro-frame,dialog,.toast{border-radius:0;border:3px solid #7a6570;box-shadow:inset 3px 3px #c4aeb344,inset -4px -4px #08070d,0 8px 0 #08070d99;background:linear-gradient(#2d2636,#17131f)}.toast{border-width:2px;padding:11px 18px}.primary,.tool{border-radius:0;box-shadow:inset 2px 2px #ffffff15,inset -2px -3px #0007}.intro-frame{max-height:100%;overflow:auto}.intro-frame #result-status{font-size:11px;color:#d4c4a7}.admin-form{margin:24px 0 60px;padding:25px;border:2px solid #63505c;background:#19141f;display:grid;gap:20px}.admin-form fieldset{border:1px solid #654953;padding:20px;min-width:0}.admin-form legend{color:#e7c886;padding:0 8px}.admin-form fieldset label+label{margin-top:15px}.admin-form p,.admin-notice{font-size:13px;color:#bfadb9;line-height:1.7}.admin-form img{max-width:250px;max-height:150px;object-fit:contain}.admin-form small{display:block;margin-top:8px;color:#9b8b9f}#admin-status{color:#efd6a0}.admin-form .entry-grid{margin:0}.admin-form button{justify-self:start}
@media(max-width:700px){.campaign-banner{flex-wrap:wrap;gap:12px}.campaign-banner h2{font-size:22px}.campaign-banner img{width:70px;height:70px}.campaign-banner>.tool{margin-left:auto}.entry-card{padding:12px;min-height:175px}.entry-card strong{font-size:18px}.entry-meta{align-items:flex-start;flex-direction:column;gap:0}.entry-meta label{max-width:none;width:100%}.leaderboard{padding:12px}.leaderboard header{align-items:flex-start;flex-direction:column}.leaderboard td{font-size:12px}.admin-form .entry-grid{grid-template-columns:1fr}.preview-badge{display:inline-block;margin-left:0}.intro-frame .result-stats{gap:12px}.result-actions .tool{font-size:10px}}
.handle-field{display:flex;align-items:center;background:#110e19;border:1px solid #66515d;margin-top:6px}.handle-field b{padding-left:12px;color:#d5b777}.handle-field input{border:0;margin:0;min-width:0}.entry-meta{flex-wrap:wrap}.entry-meta label:has(#receiving-wallet){flex:1;max-width:none;min-width:250px}.entry-meta small{display:block;color:#9c8da4;font-size:10px;margin-top:5px}.entry-meta #entry-status{flex-basis:100%;margin:4px 0 12px}.archive-row{padding:18px 0;border-bottom:1px solid #574050}.archive-row a{display:inline-block;text-decoration:none}input:read-only{color:#d9b66d}

.result-vamp{display:block;width:150px;height:109px;margin:-8px auto 2px;object-fit:contain;background:transparent}.intro-frame:has(.result-vamp)>.sigil{display:none}
