@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;500;600&family=Manrope:wght@400;500;600;700&display=swap');
:root{color-scheme:dark;--ink:#202b29;--gold:#d9b779;--cream:#ede9d8;--soft:#a5b8b7;--line:#ffffff1a;font-family:Manrope,Arial,sans-serif;color:var(--cream)}*{box-sizing:border-box}body{margin:0;background:#18221f}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--gold);outline-offset:5px}button{border:0}#game{height:100dvh;min-height:520px;overflow:hidden;position:relative;isolation:isolate}#world{display:block;width:100%;height:100%;outline:none;touch-action:none;background:#142b32}header{position:absolute;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:27px 40px;z-index:5;background:linear-gradient(#0a172cb3,transparent)}.wordmark{color:var(--cream);text-decoration:none;font-family:Georgia,serif;letter-spacing:3px;font-size:17px;display:flex;align-items:center;gap:13px}.sigil{font-size:33px;color:var(--gold);line-height:1}.edition{font-family:Manrope,Arial,sans-serif;font-size:10px;color:#9eafaa;letter-spacing:2.5px;border-left:1px solid #ffffff25;padding-left:16px;margin-left:5px}nav{display:flex;gap:12px;align-items:center}nav button{border:1px solid #cde1d622;background:#0d202c70;backdrop-filter:blur(10px);height:36px;min-width:36px;border-radius:50%;font-size:16px}nav button:first-child{border-radius:25px;padding:0 15px;font-size:12px;letter-spacing:.2px}nav button:hover{background:#334743}button:active{transform:translateY(1px)}.vignette{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 58% 45%,transparent 25%,#06131d65 95%),linear-gradient(0deg,#08141ee0,transparent 25%)}.intro{position:absolute;top:25%;left:6.5%;width:450px;z-index:3}.intro:before{content:'';position:absolute;inset:-200px -100px -200px -200px;background:radial-gradient(ellipse at 30% 45%,#182520ed 10%,#182520ae 42%,transparent 70%);z-index:-1;pointer-events:none}.eyebrow{font-size:11px;font-weight:600;letter-spacing:3px;color:var(--gold);display:flex;gap:13px;align-items:center}.eyebrow>span:empty{width:28px;height:1px;background:var(--gold)}h1{font-family:'Cormorant Garamond',Georgia,serif;font-weight:500;font-size:clamp(64px,7.8vw,112px);letter-spacing:-4px;line-height:1.1;margin:16px 0 15px;text-shadow:0 3px 35px #091723}h1 span{color:var(--gold)}.lede{font-family:'Cormorant Garamond',Georgia,serif;font-size:29px;line-height:1.23;margin:0 0 23px;color:#d7ded3}.description{max-width:320px;font-size:14px;line-height:1.8;color:#a4b7b8}.primary{background:var(--gold);border:1px solid #f4d497;color:#182923;padding:16px 24px;min-width:225px;margin-top:18px;font-size:14px;font-weight:700;letter-spacing:.3px;display:flex;justify-content:space-between;align-items:center;gap:30px;box-shadow:0 0 25px #d9b7790e;border-radius:3px}.primary:hover{background:#f0d398;box-shadow:0 0 30px #d9b77925}.primary>span{font-size:19px;font-weight:400;opacity:.7}.intro-note{font-size:11px;color:#839697;margin-top:15px;letter-spacing:.4px}.hud{position:absolute;left:40px;top:115px;pointer-events:none;text-shadow:0 2px 15px #071822}.health{color:var(--gold);font-size:23px;letter-spacing:5px;margin:8px 0 26px}.health .empty{color:#ffffff30}.quest{display:flex;gap:13px;align-items:center}.quest-icon{font-size:38px;color:var(--gold)}.quest strong{display:block;font-size:14px;font-weight:600}.quest span:not(.quest-icon){display:block;font-size:12px;color:#a4b7b8;margin-top:7px}.shrine-marks{display:flex;gap:13px;margin:17px 0 0 47px}.shrine-marks i{height:7px;width:7px;transform:rotate(45deg);border:1px solid #9c8ba0}.shrine-marks i.lit{background:var(--gold);border-color:var(--gold);box-shadow:0 0 10px #eac985}.location{position:absolute;left:40px;bottom:48px;display:flex;flex-direction:column;gap:9px}.location .eyebrow{font-size:10px;color:#7f9c9d}.location>span:last-child{font-family:'Cormorant Garamond',Georgia,serif;font-size:25px}.map-wrap{position:absolute;right:35px;bottom:40px;width:164px;opacity:.8}.map-label{font-size:9px;letter-spacing:2px;display:flex;justify-content:space-between;color:#bbccbe}.map-label span{color:var(--gold)}#minimap{width:164px;height:164px;display:block}.map-caption{font-size:8px;letter-spacing:1.5px;display:block;text-align:center;color:#a7b7ac}.bottom-controls{position:absolute;bottom:47px;left:50%;transform:translateX(-50%);display:flex;gap:24px;color:#a7b9b4;white-space:nowrap;font-size:11px}.bottom-controls>span{display:flex;align-items:center;gap:9px}kbd{font:10px Manrope,Arial,sans-serif;letter-spacing:1px;border:1px solid #daeadd40;border-bottom-width:2px;border-radius:4px;padding:5px 7px;color:#dfddc8;background:#0c202880}.interact{position:absolute;left:50%;top:60%;transform:translateX(-50%);background:#10242ded;border:1px solid #ceb27680;box-shadow:0 0 30px #e3c38215;padding:10px 18px;display:flex;align-items:center;gap:12px;font-size:13px;border-radius:5px;pointer-events:none}.toast{position:absolute;left:50%;top:105px;transform:translateX(-50%);color:#f6e6bd;font-size:13px;letter-spacing:.4px;opacity:0;transition:opacity .3s;background:#283328ed;padding:12px 23px;border-radius:5px;pointer-events:none;text-align:center;max-width:85%}.toast.show{opacity:1}footer{position:absolute;bottom:20px;left:40px;color:#73878b;font-size:9px;letter-spacing:.8px}.dialog{position:absolute;inset:0;z-index:10;background:#08131bcc;backdrop-filter:blur(8px);display:grid;place-items:center;padding:24px}.dialog-panel{padding:40px;max-width:460px;width:100%;border:1px solid #b6b89038;background:#25312b;box-shadow:0 25px 100px #0005;border-radius:5px}.dialog h2{font-family:'Cormorant Garamond',Georgia,serif;font-size:48px;font-weight:500;margin:14px 0 20px}.dialog p{font-size:14px;line-height:1.8;color:#afc0bd}.dialog .primary{width:100%}.instructions{display:grid;grid-template-columns:125px 1fr;gap:18px;font-size:13px;color:#b4c5bf;margin-bottom:25px}.instructions kbd{justify-self:start}.mobile-controls{display:none}.hidden{display:none!important}@media(min-width:1700px){.intro{left:10%;top:28%}}@media(max-width:900px){header{padding:20px 23px}.edition{display:none}.intro{left:6%;width:380px;top:24%}.intro:before{inset:-140px -70px -100px -100px}.map-wrap{right:20px;bottom:30px;width:125px}#minimap{width:125px;height:125px}.map-caption{font-size:7px;letter-spacing:.5px}.bottom-controls{gap:12px;font-size:10px;bottom:36px}.bottom-controls>span{gap:5px}.location{left:24px;bottom:45px}.hud{left:25px;top:98px}.location>span:last-child{font-size:21px}footer{left:25px;font-size:8px}}@media(max-width:600px){#game{min-height:580px}.wordmark{font-size:13px;letter-spacing:2px;gap:7px}.sigil{font-size:27px}nav{gap:7px}nav button{height:32px;min-width:32px}nav button:first-child{font-size:10px;padding:0 11px}header{padding:18px}.intro{top:auto;bottom:95px;left:25px;right:25px;width:auto}.intro:before{inset:-100px -60px -130px -70px;background:linear-gradient(0deg,#17221ef7 30%,#17221ec9 68%,transparent)}h1{font-size:76px;letter-spacing:-3px;margin:10px 0}.lede{font-size:25px;margin-bottom:13px}.description{font-size:13px;max-width:290px;line-height:1.7}.primary{margin-top:15px;padding:14px 20px;min-width:230px}.eyebrow{font-size:10px;letter-spacing:2.4px}.intro-note{font-size:10px}.map-wrap{width:94px;bottom:auto;top:85px;right:18px}#minimap{width:94px;height:94px}.map-label{font-size:7px;letter-spacing:1px}.map-caption{display:none}.location{bottom:40px;left:25px}.location>span:last-child{font-size:21px}.location .eyebrow{font-size:8px}.hud{top:90px;left:20px}.health{font-size:20px;letter-spacing:3px;margin:9px 0 19px}.quest strong{font-size:12px}.quest span:not(.quest-icon){font-size:11px}.quest-icon{font-size:30px}.quest{gap:9px}.hud>.eyebrow{font-size:8px;letter-spacing:1.7px}.shrine-marks{margin-left:36px}.bottom-controls{display:none}.mobile-controls{position:absolute;inset:auto 25px 95px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.joystick{width:98px;height:98px;border-radius:50%;border:1px solid #d5e7df50;background:#112b3459;pointer-events:auto;touch-action:none;display:grid;place-items:center}.joystick div{width:40px;height:40px;background:#cdd7b333;border:1px solid #dfe3c778;border-radius:50%;pointer-events:none}.touch-actions{display:flex;align-items:flex-end;gap:14px;pointer-events:auto}.touch-actions button{height:64px;width:64px;background:#182f3ae0;border:1px solid #c9b68588;border-radius:50%;font-size:30px;color:#e7cc91;touch-action:none}.touch-actions button:first-child{height:43px;width:43px;font-size:22px}.toast{top:225px;font-size:12px;max-width:85%;width:max-content;padding:9px 15px}.interact{top:54%;font-size:12px}.dialog-panel{padding:28px}.dialog h2{font-size:40px}.dialog p{font-size:13px}footer{font-size:7px;left:25px}.instructions{grid-template-columns:110px 1fr;font-size:12px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.loading{position:absolute;inset:0;z-index:30;background:#10252e;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:22px;font-size:13px;letter-spacing:1px;color:#c2cfc4}.loading-mark{font-size:56px;color:#dbb779}.loading progress{width:200px;height:3px;border:0;accent-color:#dbb779}.loading progress::-webkit-progress-bar{background:#ffffff12}.loading progress::-webkit-progress-value{background:#dbb779}

/* Campaign interface */
nav #journal{border-radius:20px;padding:0 16px;font-size:12px}.vitals{display:flex;gap:18px;align-items:center}.health{margin:7px 0 12px;letter-spacing:3px;font-size:21px}#boots{color:#a3ceb3;font-size:11px}.blight{width:190px;margin-bottom:21px}.blight>div:first-child{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.2px;color:#9fb5ac}.blight strong{font-size:11px;font-weight:500;color:#d6ddbd;letter-spacing:0}#blightBars{display:flex;gap:5px;margin-top:8px}#blightBars i{height:4px;flex:1;background:#afc7bd2a;border-radius:1px}#blightBars i.active{background:#d7c174}#blightBars.critical i.active{background:#a5ba64}.relic-progress{font-size:11px;color:#a8bcb1;margin:14px 0 0 46px}.quest-icon{font-size:32px}.location{bottom:137px}.inventory{position:absolute;bottom:65px;left:50%;transform:translateX(-50%);width:546px;max-width:calc(100% - 370px);z-index:4}.weapon-caption{display:flex;align-items:center;justify-content:center;gap:11px;margin-bottom:10px;font-size:11px;text-shadow:0 2px 8px #000}#weaponName{color:#f1d299;font-weight:600}#weaponHint{color:#acc1b9}.slots{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.slot{position:relative;height:71px;background:#253129ed;border:1px solid #9fb9a535;backdrop-filter:blur(8px);border-radius:4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:8px 3px 5px;transition:border-color .15s}.slot.active{border-color:#e3c78b;background:#4a4f39ef;box-shadow:0 0 15px #eac97912}.slot:hover{border-color:#c8b483}.slot.unavailable{opacity:.45}.slot.spent{border-color:#679b76;color:#9aceaa}.slot .number{position:absolute;left:6px;top:4px;font-size:9px;color:#7f9b91}.slot .symbol{font-family:Georgia,serif;font-size:23px;line-height:1.1;color:var(--item-color,#dbc189)}.slot .slot-name{font-size:8px;letter-spacing:.25px;color:#bccbc2}.slot .count{position:absolute;right:5px;top:4px;font-size:10px;color:#ead499}.bottom-controls{bottom:31px;gap:19px;font-size:10px}.map-wrap{bottom:45px}.target-info{position:absolute;left:50%;top:107px;transform:translateX(-50%);border-bottom:1px solid #d1b27b50;text-align:center;padding:0 24px 10px;pointer-events:none;text-shadow:0 2px 12px #051922}.target-info>span{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-size:26px;color:#e5dbc3}.target-info>small{font-size:11px;color:#b3bca7}.target-info.boss>span{color:#e1a4ab}.toast{top:auto;bottom:195px;z-index:6;font-size:12px;max-width:580px;line-height:1.6;width:max-content}.interact{top:61%;z-index:4;max-width:90%;white-space:nowrap;pointer-events:none}.dialog-panel{max-width:630px;max-height:86dvh;overflow-y:auto}.dialog h2{font-size:42px}.dialog p{font-size:13px}.journal-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:20px 0}.journal-entry{border:1px solid #bdc5a72b;padding:14px;border-radius:3px;background:#202b26}.journal-entry h3{font-family:'Cormorant Garamond',Georgia,serif;margin:0 0 5px;font-size:23px;color:#e3c78b;font-weight:500}.journal-entry strong{font-size:12px;color:#bacabd}.journal-entry p{font-size:11px!important;line-height:1.6!important;margin:9px 0 0}.journal-entry.done{border-color:#629f7866}.journal-entry.done h3{color:#aad7ac}.ward-guide{display:grid;grid-template-columns:1fr 1fr 1fr;gap:9px;padding-top:15px;border-top:1px solid #ffffff18}.ward-guide>section{font-size:11px;line-height:1.7;color:#9eb7ad}.ward-guide h3{display:block;font-size:13px;color:#e1d6b9}.note-content{white-space:pre-line}.stats{display:flex;justify-content:space-between;font-size:12px;color:#bdcbbd;border-top:1px solid #ffffff1a;padding-top:16px;margin-top:20px}#hud{pointer-events:none}.dialog .primary{margin-top:24px}
@media(max-width:1100px){.inventory{max-width:calc(100% - 280px);width:500px}.map-wrap{right:20px;width:125px}#minimap{width:125px;height:125px}.slot{height:65px}.slot .slot-name{font-size:8px}.target-info{top:100px}.location{bottom:141px;left:24px}.bottom-controls{gap:11px}.hud{left:24px}.toast{bottom:185px}}
@media(max-width:700px){.inventory{max-width:calc(100% - 32px);width:420px;bottom:41px}.map-wrap{top:90px;bottom:auto;right:16px;width:100px}#minimap{width:100px;height:100px}.map-caption{display:none}.location{bottom:145px}.bottom-controls{display:none}.target-info{top:282px}.hud{top:85px;left:20px}.health{font-size:18px;margin-bottom:10px}.blight{width:160px;margin-bottom:15px}.relic-progress{font-size:10px;margin-left:40px}.quest strong{font-size:12px}.quest span:not(.quest-icon){font-size:11px}.toast{max-width:88%;bottom:275px}.intro{bottom:85px}.intro h1{font-size:70px}.journal-grid{gap:7px}.journal-entry{padding:11px}.journal-entry h3{font-size:20px}.dialog-panel{padding:24px}.dialog h2{font-size:36px}.ward-guide{grid-template-columns:1fr}.ward-guide>section{font-size:12px}.dialog p{font-size:13px}.instructions{grid-template-columns:105px 1fr;font-size:12px}}
@media(max-width:600px){nav #journal{font-size:10px;padding:0 10px}header{padding:14px}.wordmark{font-size:11px;letter-spacing:1.2px}.sigil{font-size:23px}.slots{gap:4px}.slot{height:60px}.slot .symbol{font-size:20px}.slot .slot-name{font-size:7px}.slot .count{font-size:9px}.slot .number{font-size:8px}.weapon-caption{font-size:10px}.mobile-controls{bottom:174px;left:22px;right:22px}.joystick{width:85px;height:85px}.touch-actions button{width:58px;height:58px}.location{bottom:122px;font-size:12px}.location>span:last-child{font-size:20px}.location .eyebrow{font-size:8px}.interact{top:58%;padding:8px 12px;font-size:11px}.target-info{top:270px}.target-info>span{font-size:22px}.target-info>small{font-size:10px}.hud .eyebrow{font-size:8px}.quest-icon{font-size:27px}.toast{font-size:11px;bottom:278px}.journal-entry p{font-size:11px!important}.dialog{padding:15px}.dialog-panel{max-height:90dvh}footer{bottom:13px;font-size:7px;left:18px}}
/* Nyra's Haunted Village branding */
.brand-name{display:flex;flex-direction:column;gap:5px;line-height:1.1}
.brand-name small{font:9px Manrope,Arial,sans-serif;letter-spacing:2.2px;color:#b7c5b9}
h1 .game-subtitle{display:block;font-size:52px;font-weight:500;letter-spacing:-1.5px;line-height:1.14;margin-top:8px}
@media(max-width:600px){.brand-name{gap:4px}.brand-name small{font-size:7px;letter-spacing:1.1px}h1 .game-subtitle{font-size:39px;letter-spacing:-1px;margin-top:5px}.intro{bottom:95px}}
@media(max-width:370px){header{padding:12px}.wordmark{gap:5px}.wordmark .sigil{display:none}nav{gap:4px}h1 .game-subtitle{font-size:34px}}

/* Celtic setting: weathered bronze, peat and grey-green cloth. */
:root{--gold:#cbb783;--cream:#e6e4d2;--soft:#a9b3a5}
.intro-note{max-width:360px;line-height:1.65;color:#b0b9a7}
.slot .slot-name{font-size:8px;letter-spacing:0;line-height:1.15;text-align:center}
.slot .symbol{font-size:22px}.slot{padding-top:12px}
.journal-entry h3{font-size:22px}
@media(max-width:600px){.slot .slot-name{font-size:7px}.slot .symbol{font-size:19px}.journal-entry h3{font-size:19px}.hud .eyebrow{letter-spacing:1.2px}}
footer a{color:#aab69e;margin-left:12px;text-underline-offset:3px}

/* Keep ward headings and descriptions distinct at every journal width. */
.ward-guide{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:24px 0;padding:20px 0;border-bottom:1px solid #ffffff18}
.ward-guide>section{min-width:0}
.ward-guide h3{display:flex;align-items:center;gap:6px;margin:0 0 8px;font:600 13px/1.4 Manrope,Arial,sans-serif;color:#e1d6b9}
.ward-guide p{margin:0;font-size:12px;line-height:1.8;color:#b3c0ad}
@media(max-width:700px){.ward-guide{grid-template-columns:1fr;gap:20px;margin:20px 0}.ward-guide h3{margin-bottom:6px}.ward-guide p{font-size:13px;line-height:1.7}}


/* Touch controls are available on tablets too, including iPadOS desktop mode. */
html.touch-controls .bottom-controls{display:none}
html.touch-controls #game{min-height:0}
@media(min-width:601px){
 html.touch-controls .mobile-controls{position:absolute;inset:auto max(25px,env(safe-area-inset-right)) max(174px,env(safe-area-inset-bottom)) max(25px,env(safe-area-inset-left));display:flex;justify-content:space-between;align-items:center;pointer-events:none;z-index:5}
 html.touch-controls .joystick{width:98px;height:98px;border-radius:50%;border:1px solid #d5e7df50;background:#112b3459;pointer-events:auto;touch-action:none;display:grid;place-items:center;user-select:none;-webkit-user-select:none}
 html.touch-controls .joystick div{width:40px;height:40px;background:#cdd7b333;border:1px solid #dfe3c778;border-radius:50%;pointer-events:none}
 html.touch-controls .touch-actions{display:flex;align-items:flex-end;gap:14px;pointer-events:auto}
 html.touch-controls .touch-actions button{height:64px;width:64px;background:#182f3ae0;border:1px solid #c9b68588;border-radius:50%;font-size:30px;color:#e7cc91;touch-action:none;user-select:none;-webkit-user-select:none}
 html.touch-controls .touch-actions button:first-child{height:48px;width:48px;font-size:22px}
 html.touch-controls .inventory{bottom:max(40px,env(safe-area-inset-bottom));width:546px;max-width:calc(100% - 48px)}
 html.touch-controls .map-wrap{top:90px;bottom:auto;right:max(25px,env(safe-area-inset-right));width:125px}
 html.touch-controls #minimap{width:125px;height:125px}
 html.touch-controls .location{bottom:130px}
 html.touch-controls .toast{bottom:290px}
}
/* Keep the touch controls inside a short landscape viewport. */
@media(min-width:601px) and (max-height:500px){
 html.touch-controls .mobile-controls{bottom:max(28px,env(safe-area-inset-bottom))}
 html.touch-controls .inventory{bottom:max(20px,env(safe-area-inset-bottom));max-width:calc(100% - 370px)}
 html.touch-controls .slot{height:54px}
 html.touch-controls .slot-name{display:none}
 html.touch-controls .weapon-caption{font-size:9px;gap:6px}
 html.touch-controls #weaponHint{display:none}
 html.touch-controls .location,html.touch-controls .map-caption{display:none}
 html.touch-controls .toast{bottom:150px}
 html.touch-controls .target-info{top:85px}
}
