:root{color-scheme:dark;--bg:#0c1717;--panel:#122321;--line:#354840;--ink:#e5e5d4;--muted:#a4b7ab;--gold:#d5b777;--mint:#a9dac0}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 50% 0,#274139 0,transparent 65%),var(--bg);color:var(--ink);font:16px/1.5 Georgia,serif}button,select{font:14px/1.4 system-ui;min-height:44px;border:1px solid #60715d;background:#1d352f;color:var(--ink);border-radius:3px;padding:10px 14px;cursor:pointer}button:hover:not(:disabled){background:#324b3f;border-color:var(--gold)}button:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:3px}button:disabled{opacity:.4;cursor:default}button.primary{background:var(--gold);color:#142521;font-weight:700}header{min-height:78px;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 3vw;border-bottom:1px solid var(--line)}.brand{font-size:22px;letter-spacing:2px;color:var(--gold);text-decoration:none}.edition,.casebar,.eyebrow,h2,small,.scene-caption,.turn,#wallet,.dice-key,footer,.stats,.tag{font-family:system-ui;font-size:12px;letter-spacing:1.5px}#wallet{font-size:16px;color:var(--gold)}.casebar{display:flex;justify-content:space-between;padding:12px 3vw;color:var(--muted);border-bottom:1px solid var(--line)}main{max-width:1600px;margin:auto;display:grid;grid-template-columns:minmax(220px,1fr) minmax(380px,2.25fr) minmax(220px,1fr);gap:26px;padding:28px 3vw}h2{font-size:13px;color:var(--muted);margin:0 0 18px;display:flex;justify-content:space-between}h1{font-size:clamp(34px,3.5vw,56px);line-height:1.04;font-weight:400;margin:16px 0 22px;color:#f0e4c7}h3{font-size:21px;font-weight:400;margin:7px 0 14px}p{margin:12px 0}.scene{position:relative;height:235px;overflow:hidden;border:1px solid var(--line)}.scene img{width:100%;height:100%;object-fit:cover;object-position:center 45%}.scene-caption{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#071512);padding:35px 16px 10px;color:#d4ddcd;display:flex;justify-content:space-between}.story{padding:25px 0}.eyebrow{color:var(--gold)}#narrative{color:#c4d0c4}.objective{border-left:2px solid var(--gold);padding:10px 16px;margin:22px 0;background:#ffffff04}.turn{color:var(--mint);font-size:14px;letter-spacing:.5px;margin:15px 0}.choices{display:grid;gap:10px}.choices button{text-align:left;display:block;width:100%;font-size:16px}.choices button small{display:block;color:inherit;opacity:.8;font-size:13px;letter-spacing:0;margin-top:4px}#report{margin:18px 0 0;color:var(--gold);min-height:48px;font-size:16px}.card{background:linear-gradient(125deg,#20352e,#10221f);border:1px solid var(--line);padding:18px;margin-bottom:16px;position:relative;transition:border-color .2s,opacity .2s}.card.selected{border-color:var(--gold);box-shadow:inset 3px 0 var(--gold)}.card.down{opacity:.5}.card h3{margin:6px 0}.card .tag{color:var(--gold)}.monogram{float:right;font-size:32px;color:#829e83;opacity:.6}.card p{color:var(--muted);font-size:14px}.stats{display:flex;justify-content:space-between;letter-spacing:0;font-size:14px;margin:10px 0 5px}.bar{height:5px;background:#081513;margin-bottom:12px}.bar i{display:block;height:100%;background:#8fb49a;transition:width .4s}.enemy .bar i{background:#bc906f}.card button{width:100%;margin-top:8px}.vacant{border:1px dashed #45564a;padding:24px;text-align:center;color:#8ca092}.vacant>span{display:block;font-size:30px;margin-bottom:10px}.vacant p{font-size:14px}.case-note{margin:28px 0;padding:20px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.case-note p{font-style:italic;font-size:21px}.case-note span{font-size:14px;color:var(--muted)}.resolution{border-top:1px solid var(--line);padding-top:22px}.tray-heading{display:flex;justify-content:space-between;gap:16px;align-items:center}.dice-key{font-size:12px;color:var(--mint);letter-spacing:0}.tray{position:relative;background:radial-gradient(ellipse,#254739,#10281f);border:7px solid #3c3c2c;outline:1px solid #746243;box-shadow:inset 0 0 40px #0009;height:240px}#dice{width:100%;height:200px;display:block}#trayNote,#diceResult{text-align:center;font:12px system-ui;letter-spacing:1px;color:#c4cbb0}#diceResult{font-size:14px;color:var(--gold);margin-top:5px}#bag,.rules{margin-top:24px;padding:18px;border:1px solid var(--line)}#bag:empty{display:none}.item{padding:14px 0;border-bottom:1px solid var(--line)}.item:last-child{border-bottom:0}.item p{color:var(--muted);font-size:14px}.item button{margin:4px 5px 0 0}.item select{max-width:100%;margin:4px 0}.rules summary{cursor:pointer;color:var(--gold)}.rules p{color:var(--muted)}#log{padding-left:22px;color:var(--muted);font-size:14px}#log li{margin:0 0 12px}footer{padding:22px 3vw;display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid var(--line);color:var(--muted)}footer button{margin:4px}dialog{max-width:440px;background:#172c26;color:var(--ink);border:1px solid var(--gold);padding:28px}dialog::backdrop{background:#000b}.pulse{animation:pulse .6s}@keyframes pulse{50%{box-shadow:0 0 28px #bad8a8;border-color:#e3d39e}}.reduced *{animation:none!important;scroll-behavior:auto!important}@media(max-width:1100px){main{gap:16px;grid-template-columns:210px minmax(300px,1fr) 200px;padding:22px 18px}.card{padding:13px}.edition{display:none}}@media(max-width:800px){header{flex-wrap:wrap;gap:8px;padding:16px}.brand{font-size:17px}.casebar{font-size:10px;gap:12px}main{grid-template-columns:1fr;display:flex;flex-direction:column;padding:18px 14px}.crew{order:1}.crew #crew{display:grid;grid-template-columns:1fr 1fr;gap:10px}.crew .card{margin:0}.vacant{margin-top:10px;padding:10px;display:flex;justify-content:center;gap:12px;align-items:center}.vacant>span{font-size:16px;margin:0}.vacant p{display:none}article{order:3}.hostiles{order:2}#enemies{display:grid;grid-template-columns:1fr 1fr;gap:10px}.hostiles h2{margin:10px 0}.case-note,#log,.hostiles h2:last-of-type{display:none}.scene{height:180px}.scene-caption{font-size:10px}.story{padding-top:20px}h1{font-size:40px}.card h3{font-size:19px}.monogram{display:none}.card p{font-size:13px}.stats{font-size:13px}.tag{font-size:10px;letter-spacing:.7px}footer{flex-direction:column;text-align:center}.tray-heading{gap:8px}.tray-heading h3{font-size:18px}}@media(max-width:370px){.crew #crew,#enemies{grid-template-columns:1fr}.brand{font-size:15px}}
/* Paired character sheets: stable left/right positions at every width. */
main{display:block;max-width:1060px;padding:24px clamp(10px,3vw,36px)}main>article{max-width:850px;margin:36px auto 0}.battlefield{width:100%;min-width:0}.hp-hud{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(12px,3vw,32px);padding:16px;background:#10211ef5;border:1px solid #5b6b57;position:sticky;top:0;z-index:5;backdrop-filter:blur(12px)}.hp-hud h2{margin:0 0 8px;color:var(--mint);font-size:13px}.hp-hud .enemy h2{color:#dbaa7b}.hud-unit{display:flex;justify-content:space-between;gap:6px;font:14px/1.5 system-ui}.hud-unit span{min-width:0;overflow-wrap:anywhere}.hud-unit b{white-space:nowrap}.hp-hud .bar{height:3px;margin:4px 0 7px}.roster-heading{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0 8px}.roster-heading h2{margin:0}.roster{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:stretch}.roster .character-sheet{padding:0;margin:0;border:1px solid #6c9787;display:flex;flex-direction:column;min-width:0;overflow:hidden}.roster .enemy{border-color:#a27c58}.roster .card.selected{border-color:#b9e9d6;box-shadow:0 0 0 1px #b9e9d660}.roster .enemy.selected{border-color:#e7ae7c;box-shadow:0 0 0 1px #e7ae7c60}.sheet-ribbon{display:flex;justify-content:space-between;gap:6px;padding:12px 16px;font:13px/1.4 system-ui;letter-spacing:1px;background:#b9cbb4;color:#192e25}.enemy .sheet-ribbon{background:#b99a78;color:#2c231d}.portrait-slot{min-height:145px;height:clamp(145px,23vw,230px);display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse,#36574a,#132a24);border-bottom:1px solid #557162;color:#b7cebf}.portrait-slot>span{font-size:clamp(40px,6vw,70px);line-height:1.2;letter-spacing:8px}.portrait-slot small{font:12px system-ui;letter-spacing:1px;margin-top:12px;color:#afc3b7}.enemy .portrait-slot{background:radial-gradient(ellipse,#4d4031,#282a22);color:#d3b494;border-color:#776044}.sheet-body{padding:20px;flex:1}.roster .tag{font-size:12px;letter-spacing:1px;color:var(--muted)}.roster h3{font-size:clamp(22px,3.2vw,34px);overflow-wrap:anywhere;margin:8px 0 20px}.roster .stats{font:16px/1.5 system-ui;gap:6px;flex-wrap:wrap}.roster .bar{height:7px;margin:8px 0 18px}.roster .ward i{background:#aebdcf}.roster .armour i{background:#99846b}.roster p{font:16px/1.5 system-ui;overflow-wrap:anywhere}.sheet-equipment{border-top:1px solid var(--line);margin-top:28px;padding-top:18px}.sheet-equipment .eyebrow{font-size:12px;letter-spacing:1px}.sheet-controls{border-top:1px solid var(--line)}.sheet-controls>button{margin:0;width:100%;border:0;border-radius:0;background:#34534570;min-height:52px;color:var(--mint);font-weight:bold}.enemy .sheet-controls>button{background:#60402a70;color:#ebba8f}.skill-block{padding:18px 20px}.skill-block>b{font:600 16px system-ui}.skill-block p{margin:10px 0}.skill-block button{margin:8px 0 0}.empty-sheet{border:1px dashed #547263;min-height:200px;display:flex;flex-direction:column;min-width:0}.empty-sheet.enemy{border-color:#80694f}.empty-sheet .sheet-ribbon{opacity:.6}.empty-content{padding:18px;text-align:center;color:var(--muted)}.empty-content>span{font-size:32px}.empty-content h3{font-size:22px;margin:0}.empty-content p{font-size:14px}.to-actions{display:block;text-align:center;margin-top:16px;color:var(--gold);padding:12px;border:1px solid var(--line);font:16px system-ui}#choices{scroll-margin-top:150px}.encounter-record{max-width:850px;margin:26px auto}.encounter-record #log{display:block}.encounter-record h2{display:block}@media(max-width:800px){main{display:block;padding:16px 10px}.roster{gap:10px}.sheet-ribbon{padding:10px 8px;font-size:12px;letter-spacing:.2px}.sheet-body{padding:14px 10px}.skill-block{padding:14px 10px}.roster .stats{font-size:14px}.roster .tag{font-size:12px;letter-spacing:.3px}.roster h3{font-size:25px}.roster p{font-size:14px}.roster .card button{font-size:14px;padding:10px 7px}.hp-hud{padding:10px;gap:12px}.hud-unit{font-size:12px}.hp-hud h2{font-size:12px}.roster-heading h2{font-size:12px;letter-spacing:.6px}.portrait-slot{height:150px;min-height:150px}.portrait-slot small{font-size:12px;letter-spacing:0}.sheet-equipment{margin-top:22px}.empty-content{padding:16px 8px}.empty-content h3{font-size:20px}.roster .sheet-controls>button{margin:0}.scene{height:200px}}

.skill-charge{height:7px!important;background:#081513}.skill-charge i{background:var(--gold);transition:width .3s}.roster{grid-auto-flow:row}.skill-block .stats b{font-size:14px}
/* Harbour campaign */
[hidden]{display:none!important}header{justify-content:center;text-align:center;padding:26px 12px 23px}.brand{display:flex;flex-direction:column;font-size:clamp(28px,5.5vw,54px);line-height:1.15;letter-spacing:3px;color:#e2c990}.brand-small{font:12px system-ui;letter-spacing:4px;margin-bottom:12px;color:var(--muted)}main{max-width:1050px}.map-intro{max-width:650px;margin:0 auto 26px;text-align:center}.map-intro h1{font-size:clamp(40px,6vw,68px);margin:16px 0}.map-intro p{color:var(--muted);max-width:540px;margin:auto}.map-intro em{color:var(--gold)}.route-map{height:700px;position:relative;isolation:isolate;border:1px solid #7b7658;border-radius:4px;overflow:hidden;background:linear-gradient(#10221c30,#0a1b1999),url('harbour-map.webp') center/cover;box-shadow:inset 0 0 75px #000b}.route-map:after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 75px #081813;pointer-events:none;z-index:-1}#mapPaths,#mapNodes{position:absolute;inset:0;width:100%;height:100%}#mapPaths{overflow:visible}#mapPaths path{fill:none;stroke:#d0c19e;stroke-width:.45;stroke-dasharray:1.1 1.2;opacity:.65;vector-effect:non-scaling-stroke;stroke-width:3px}#mapPaths .available-path{stroke:#fff0b6;opacity:1;stroke-width:4px}#mapPaths .travelled{stroke:#8bd3b1;stroke-dasharray:none;opacity:.9}.map-node{position:absolute;transform:translate(-50%,-50%);width:165px;min-height:92px;display:flex;align-items:center;flex-direction:column;justify-content:center;background:#102620ed;border:1px solid #ac9e78;box-shadow:0 6px 20px #0009;text-align:center;padding:8px 10px;transition:filter .3s,box-shadow .3s}.map-node>span{font-size:25px;line-height:1.1;color:var(--gold)}.map-node b{font:18px Georgia,serif;margin:4px 0}.map-node small{font:10px system-ui;letter-spacing:1px;color:#c3cdbd}.map-node:disabled{opacity:.72;filter:saturate(.4);background:#142520e8}.map-node.available{border:2px solid #ecd28b;box-shadow:0 0 22px #c8b66b35,0 8px 18px #000a}.map-node.visited{border-color:#85baa0}.map-node.boss{background:#31252ce8}.map-key{display:flex;justify-content:center;flex-wrap:wrap;gap:18px;font:13px system-ui;color:var(--muted);margin:18px 0}#mapStatus{text-align:center;color:var(--gold)}.encounter-intro{margin-bottom:26px}.encounter-intro .scene{height:270px}.encounter-intro .story{max-width:850px;margin:auto;padding-bottom:0}.encounter-intro h1{font-size:clamp(36px,5vw,56px)}.action-area{max-width:850px;margin:26px auto}.resolution{max-width:850px;margin:0 auto 25px}.tray{background:linear-gradient(#112d2220,#112d2230),url('occult-felt.webp') center 38%/cover;height:260px;overflow:hidden}#dice{height:210px;position:relative;z-index:1}#trayNote,#diceResult{position:relative;z-index:1}.hp-hud{position:relative;top:auto;backdrop-filter:none}.character-sheet{scroll-margin-top:12px}.portrait-slot{position:relative;height:220px;min-height:0;overflow:hidden;background:#132720}.portrait-slot img{height:100%;width:100%;object-fit:cover;object-position:center 36%;display:block;animation:portraitBreath 6s ease-in-out infinite;transform-origin:50% 75%}.portrait-haze{position:absolute;inset:0;pointer-events:none;background:linear-gradient(120deg,transparent 15%,#c2e6c017 50%,transparent 85%);background-size:200% 200%;animation:portraitHaze 9s ease-in-out infinite;box-shadow:inset 0 -30px 35px #10221f80}.enemy .portrait-haze{background-image:linear-gradient(120deg,transparent 15%,#ead2b815 50%,transparent 85%)}.down .living-portrait{animation:none;filter:grayscale(1) brightness(.55)}.roster .sheet-body{padding:16px}.roster .sheet-equipment{margin-top:16px;padding-top:12px}.roster .sheet-equipment p{margin:8px 0}.roster h3{margin-bottom:14px}.roster .sheet-controls>button{font-weight:500;min-height:44px}.skill-block{padding:12px 16px}.skill-entry{margin-bottom:12px}.skill-label{display:flex;align-items:center;justify-content:space-between;gap:8px;font:14px system-ui}.skill-label>span{white-space:nowrap;color:var(--gold)}.skill-label>b{padding:10px 0;font-size:15px}.skill-label .skill-ready{margin:0!important;width:auto!important;flex:1;background:#d6bb78;color:#142820;border:1px solid #efda9b;font-weight:700;box-shadow:0 0 14px #d0b57730}.roster .skill-charge{margin:4px 0 12px;height:5px!important}.satchel{max-width:850px;margin:28px auto;background:#122720;border:1px solid #5a6853}.satchel>summary{cursor:pointer;padding:17px;display:flex;justify-content:space-between;gap:10px;color:var(--gold);font:15px system-ui}.satchel>summary:before{content:'▸';margin-right:0}.satchel[open]>summary:before{content:'▾'}.satchel>summary span:first-child{flex:1}#bag{border:0;margin:0;padding:0 18px 18px}#wallet{padding:14px 0 4px;border-top:1px solid var(--line)}.rules,.encounter-record{max-width:850px;margin:22px auto}.encounter-record{padding:16px;border:1px solid var(--line)}.encounter-record summary{cursor:pointer;color:var(--gold)}#combatFX{position:fixed;inset:0;width:100vw;height:100vh;pointer-events:none;z-index:30}.attacking .living-portrait{animation:portraitAttack .55s ease-out}.impact .portrait-slot{animation:portraitHit .55s ease-out}.fizzle .portrait-slot{animation:fizzle .6s ease-out}#overflow{max-width:560px;width:calc(100% - 30px);max-height:85vh;overflow:auto}#swapChoices{display:grid;gap:8px;margin:18px 0}#swapChoices button{text-align:left}dialog h2{font:24px Georgia;color:var(--gold)}@keyframes portraitBreath{50%{transform:scale(1.045) translateY(-2px)}}@keyframes portraitHaze{50%{background-position:100% 100%;opacity:.4}}@keyframes portraitAttack{40%{transform:scale(1.12) translateX(6px)}}@keyframes portraitHit{20%{filter:brightness(1.7);transform:translateX(-5px)}40%{transform:translateX(5px)}60%{transform:translateX(-3px)}}@keyframes fizzle{50%{filter:brightness(.6)}}@media(max-width:800px){header{padding:22px 12px}.brand{font-size:31px;letter-spacing:1.7px}.brand-small{font-size:11px;letter-spacing:2.5px}.route-map{height:640px}.map-node{width:138px;min-height:88px;padding:7px}.map-node b{font-size:16px}.map-intro h1{font-size:44px}.map-intro p{font-size:16px}.encounter-intro .scene{height:190px}.portrait-slot{height:180px}.roster .sheet-body{padding:12px 10px}.skill-block{padding:10px}.skill-label{font-size:12px;gap:4px}.skill-label>b{font-size:14px}.roster .skill-ready{padding:8px 4px;font-size:13px}.satchel>summary{font-size:14px;padding:14px 10px}.sheet-ribbon{font-size:12px}.roster h3{font-size:23px}.hp-hud{padding:10px}.tray{height:245px}#dice{height:195px}.roster .stats{font-size:14px}.roster .sheet-equipment p{font-size:14px}}@media(max-width:370px){.map-node{width:118px}.map-node b{font-size:14px}.brand{font-size:27px}.portrait-slot{height:155px}.roster h3{font-size:21px}}
/* Persistent health summary and weapon-linked actions. */
.hp-hud{position:sticky;top:0;z-index:25;background:#10211ef7;box-shadow:0 6px 16px #0007;backdrop-filter:blur(12px)}.character-sheet,#choices{scroll-margin-top:var(--hud-offset,170px)}.sheet-equipment>button{margin:0 0 14px!important;background:#315446;border-color:#719b82}.sheet-equipment>p{margin-bottom:8px!important}#choices:has(.item){border-top:1px solid var(--gold);padding-top:18px}
.enemy-power{margin-top:22px;padding-top:14px;border-top:1px solid #805541}.enemy-power .skill-label{color:#edaf92}.enemy-power .enemy-charge{height:5px;margin:8px 0 10px;background:#301d1b}.enemy-charge i{background:linear-gradient(90deg,#b94b42,#f1a06a);box-shadow:0 0 9px #d45c423b}.enemy-power small{font:12px/1.4 system-ui;color:#d5a896}
.map-node.current,.map-node.current:disabled{opacity:1;filter:none;border:2px solid #8bd3b1;box-shadow:0 0 22px #8bd3b155,0 8px 18px #000a}@media(max-width:800px){.map-node{width:30%;min-height:78px;padding:6px 4px}.map-node>span{font-size:20px}.map-node b{font-size:14px}}
.roster .tag.status{color:#e7ae7c;margin-top:4px}
.clue-list{max-width:760px;margin:14px auto 0;padding:14px 18px;border:1px solid #7b7658;background:#0d1e1acc;font:15px/1.5 system-ui;color:var(--muted)}.clue-list p{margin:8px 0}.clue-list b{color:var(--gold)}.clue-open{color:#8bd3b1}.clue-found{border-left:3px solid var(--gold);padding-left:12px}
#selectView{padding-bottom:10px}.pick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}.pick-card{padding:0;display:flex;flex-direction:column;border:1px solid #6c9787;overflow:hidden}.pick-card.selected{border-color:#ecd28b;box-shadow:0 0 0 1px #ecd28b80}.pick-card.soon{opacity:.6}.pick-card .portrait-slot{height:170px}.pick-body{padding:12px 14px;flex:1;font:14px/1.45 system-ui}.pick-body h3{font-size:22px;margin:6px 0 8px}.pick-body .tag{font-size:11px;letter-spacing:1px;color:var(--muted)}.pick-body .stats{display:flex;gap:14px;color:var(--gold)}.pick-body p{margin:8px 0}.pick-body ul{padding-left:18px;margin:6px 0}.pick-body li{margin:4px 0}.pick-rule{color:var(--muted)}.pick-card>button{margin:0;border-radius:0;border:0;border-top:1px solid var(--line);min-height:44px}.pick-card>button.selected-pick{background:#d6bb78;color:#142820;font-weight:700}#pickStatus{text-align:center;color:var(--gold);margin:18px 0 10px}#startRun{display:block;margin:0 auto 20px;min-width:260px}.skill-label.passive>b{color:var(--muted);font-weight:500}
.skill-block select{width:100%;margin:6px 0 10px}.sharp{color:#edaf92}.press{border-left:3px solid #8bd3b1;padding-left:12px}.clue-list .follow-story{margin-top:10px;width:100%}
.tray{position:relative}#harpoon{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;justify-content:center;gap:10px;padding:0 6%;margin:0;width:100%;border:0;border-radius:0;background:#081411cc;cursor:crosshair;touch-action:manipulation}.hp-track{position:relative;display:block;height:34px;background:#3a1f1c;border:1px solid #8a5a48;border-radius:3px}.hp-track i{position:absolute;top:0;bottom:0}.hp-hit{background:#8f7a3f}.hp-perfect{background:#e4c877;box-shadow:0 0 12px #e4c87799}.hp-line{width:4px;margin-left:-2px;top:-8px!important;bottom:-8px!important;background:#f4f1e6;box-shadow:0 0 10px #fff}.hp-labels{display:grid;grid-template-columns:30fr 16fr 8fr 16fr 30fr;text-align:center;font:11px system-ui;letter-spacing:1px;color:var(--muted)}#harpoon.res-perfect .hp-line{background:#ffe7a0}#harpoon.res-miss .hp-line{background:#e46b5f}
.skill-item{margin-bottom:10px}.skill-label .skill-btn{margin:0!important;width:auto!important;flex:1;background:#1c332b;color:#9fb5a8;border:1px solid #3f5a4d;font-weight:600}.skill-label .skill-btn.skill-ready{background:#d6bb78;color:#142820;border:1px solid #efda9b;font-weight:700;box-shadow:0 0 14px #d0b57750}.skill-label .skill-btn.skill-ready:disabled{opacity:.6}.skill-desc{display:block;margin:4px 0 2px;font:12px/1.35 system-ui;color:var(--muted)}
.skill-label .skill-btn:disabled:not(.skill-ready){opacity:1;color:#8fa699;background:#172b24;border-color:#3a5347}.skill-desc{letter-spacing:0}
.skill-block .skill-btn{display:block;position:relative;width:100%;margin:8px 0 0;overflow:hidden;color:#d3e2d9;font-weight:600;border:1px solid #4b6b5c;background:linear-gradient(90deg,#7a6a3a var(--fill),#172b24 var(--fill));transition:background .3s}.skill-block .skill-btn:after{content:'';position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(90deg,transparent 0 calc(100% / var(--segs) - 2px),#0b1915 calc(100% / var(--segs) - 2px) calc(100% / var(--segs)))}.skill-block .skill-btn>span{position:relative;z-index:1}.skill-block .skill-btn:disabled{opacity:1}.skill-block .skill-btn.skill-ready{background:#d6bb78;color:#142820;border-color:#efda9b;font-weight:700;box-shadow:0 0 14px #d0b57760}.skill-block .skill-btn.skill-ready:after{display:none}.skill-block .skill-btn.skill-ready:disabled{opacity:.6;box-shadow:none}.skill-passive{padding:10px 0 0;font:14px system-ui;color:var(--muted)}.skill-passive b{color:var(--ink)}
.portrait-slot img{transform-origin:50% 22%}
body.selecting:before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,#07110f1f 0%,#07110f59 40%,#07110fcc 100%),url('select-bg.webp') center top/cover no-repeat}body.selecting header{background:transparent}
.screen-shake{animation:screenShake .45s ease-out}@keyframes screenShake{15%{transform:translate(-6px,3px)}30%{transform:translate(5px,-4px)}45%{transform:translate(-4px,2px)}60%{transform:translate(3px,-2px)}80%{transform:translate(-1px,1px)}}.reduced .screen-shake{animation:none}
.clue-tokens{display:flex;justify-content:center;gap:clamp(14px,4vw,40px);margin:0 0 22px}.clue-token{margin:0;display:flex;flex-direction:column;align-items:center;gap:6px;width:104px}.clue-token img{width:104px;height:104px;display:block;filter:grayscale(1) brightness(.42) contrast(.9);opacity:.55;transition:filter .6s,opacity .6s,transform .6s}.clue-token figcaption{font:11px/1.3 system-ui;letter-spacing:1px;text-transform:uppercase;color:var(--muted);text-align:center;opacity:.7}.clue-token.found img{filter:drop-shadow(0 0 14px #d5b77766);opacity:1}.clue-token.found figcaption{color:var(--gold);opacity:1}.clue-token.fresh img{animation:clueReveal 1.1s ease-out}@keyframes clueReveal{0%{transform:scale(.6) rotate(-25deg);filter:grayscale(1) brightness(2);opacity:.3}55%{transform:scale(1.15) rotate(6deg);filter:drop-shadow(0 0 30px #ffe2a0)}100%{transform:none}}@media(max-width:800px){.clue-token{width:76px}.clue-token img{width:76px;height:76px}.clue-token figcaption{font-size:10px;letter-spacing:.5px}}.reduced .clue-token.fresh img{animation:none}
body.mapping:before{content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,#07110f33 0%,#07110f8c 38%,#07110fd9 100%),url('map-bg-innsmouth.webp') center top/cover no-repeat}body.mapping header{background:transparent}
#battlefield+.resolution{margin-top:32px}
#trayVerdict{position:absolute;inset:0;z-index:4;display:flex;align-items:center;justify-content:center;pointer-events:none;font:700 clamp(44px,9vw,84px)/1 Georgia,serif;letter-spacing:.06em;opacity:0}#trayVerdict.verdict-success{color:#f2d58c;text-shadow:0 0 18px #e0b75a,0 0 42px #b8872a;animation:verdictFlash 1.6s ease-out forwards}#trayVerdict.verdict-failure{color:#ff6b5e;text-shadow:0 0 18px #d8352b,0 0 42px #8e1712;animation:verdictFlash 1.6s ease-out forwards}@keyframes verdictFlash{0%{opacity:0;transform:scale(.6)}12%{opacity:1;transform:scale(1.12)}22%{transform:scale(1)}35%{opacity:.55}45%{opacity:1}75%{opacity:1}100%{opacity:0;transform:scale(1.04)}}.reduced #trayVerdict.verdict-success,.reduced #trayVerdict.verdict-failure{animation:verdictFade 1.6s linear forwards}@keyframes verdictFade{0%,80%{opacity:1}100%{opacity:0}}.map-node.revealed{border:2px solid #f2d58c;box-shadow:0 0 26px #e0b75a88,0 8px 18px #000a;animation:revealPulse 2.4s ease-in-out infinite}.map-node.revealed small{color:#f2d58c;font-weight:700}@keyframes revealPulse{50%{box-shadow:0 0 38px #f2d58ccc,0 8px 18px #000a}}.reduced .map-node.revealed{animation:none}
.map-node.revealed:disabled{opacity:1;filter:none}
.item.clue-reward{display:flex;align-items:center;gap:18px;border-color:#b8963f;background:linear-gradient(90deg,#2a2614cc,#12211dcc)}.clue-reward img{width:88px;height:88px;flex:none;filter:drop-shadow(0 0 14px #d5b77788);animation:clueReveal 1.1s ease-out}.clue-reward b{color:var(--gold)}.clue-reward p{margin:6px 0 0}@media(max-width:800px){.item.clue-reward{gap:12px}.clue-reward img{width:64px;height:64px}}.reduced .clue-reward img{animation:none}
.burning{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2;background:linear-gradient(0deg,#ff6a0080 0%,#ff8a1f33 32%,transparent 62%);mix-blend-mode:screen;animation:burnGlow 1.3s ease-in-out infinite}.burning i{position:absolute;bottom:-14%;width:30%;height:78%;background:url('fx/burn_flame_outer.png') center bottom/contain no-repeat;transform-origin:50% 100%;animation:flameLick 1.1s ease-in-out infinite;filter:drop-shadow(0 0 8px #ff7a1c)}.burning i:nth-child(odd){background-image:url('fx/burn_flame_core.png');height:58%;width:22%}.burning i:nth-child(1){left:-4%;animation-duration:.95s;animation-delay:-.2s}.burning i:nth-child(2){left:10%;animation-duration:1.2s;animation-delay:-.7s}.burning i:nth-child(3){left:24%;animation-duration:1s;animation-delay:-.4s}.burning i:nth-child(4){left:38%;animation-duration:1.3s;animation-delay:-.1s}.burning i:nth-child(5){left:52%;animation-duration:.9s;animation-delay:-.55s}.burning i:nth-child(6){left:64%;animation-duration:1.15s;animation-delay:-.3s}.burning i:nth-child(7){left:78%;animation-duration:1.05s;animation-delay:-.8s}.burning b{position:absolute;bottom:6%;width:5px;height:5px;border-radius:50%;background:#ffd27a;box-shadow:0 0 8px 2px #ff9a3a;opacity:0;animation:emberRise 1.8s linear infinite}.burning b:nth-child(8){left:12%;animation-delay:-.1s}.burning b:nth-child(9){left:26%;animation-delay:-.9s}.burning b:nth-child(10){left:40%;animation-delay:-1.4s}.burning b:nth-child(11){left:55%;animation-delay:-.5s}.burning b:nth-child(12){left:67%;animation-delay:-1.1s}.burning b:nth-child(13){left:80%;animation-delay:-.3s}.burning b:nth-child(14){left:33%;animation-delay:-1.6s}.burning b:nth-child(15){left:73%;animation-delay:-.7s}@keyframes flameLick{0%,100%{transform:scaleY(.82) scaleX(1) skewX(-3deg);opacity:.85}35%{transform:scaleY(1.08) scaleX(.9) skewX(4deg);opacity:1}65%{transform:scaleY(.94) scaleX(1.06) skewX(-5deg);opacity:.9}}@keyframes emberRise{0%{transform:translate(0,0) scale(1);opacity:0}10%{opacity:1}100%{transform:translate(14px,-150px) scale(.3);opacity:0}}@keyframes burnGlow{50%{background-color:#ff5a0014}}.reduced .burning,.reduced .burning i,.reduced .burning b{animation:none}.reduced .burning b{display:none}.firebomb-btn{border-color:#c46a1c}

.roster button.firebomb-btn{border-color:#c46a1c}
.roster .cover-btn{margin-top:8px}
.cover-desc{margin-bottom:12px}
.marked{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2;display:grid;place-items:center;box-shadow:inset 0 0 38px 6px #ff2a2a66;animation:markGlow 1.6s ease-in-out infinite}.marked i{grid-area:1/1;width:min(62%,150px);aspect-ratio:1;background:url('fx/mark_reticle.png') center/contain no-repeat;filter:drop-shadow(0 0 10px #ff2020);mix-blend-mode:screen;animation:markSpin 6s linear infinite,markPulse 1.6s ease-in-out infinite}.marked b{grid-area:1/1;width:min(62%,150px);aspect-ratio:1;background:url('fx/mark_ring.png') center/contain no-repeat;mix-blend-mode:screen;opacity:0;animation:markRing 1.6s ease-out infinite}.marked b+b{animation-delay:-.8s}
@keyframes markSpin{to{rotate:360deg}}@keyframes markPulse{0%,100%{scale:1;opacity:.8}50%{scale:.88;opacity:1}}@keyframes markRing{0%{transform:scale(.5);opacity:.9}100%{transform:scale(1.7);opacity:0}}@keyframes markGlow{0%,100%{box-shadow:inset 0 0 30px 4px #ff2a2a4d}50%{box-shadow:inset 0 0 52px 10px #ff2a2a8c}}
.bleeding{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2;animation:bleedBeat 1.1s ease-in-out infinite}.bleeding s{position:absolute;width:44%;aspect-ratio:1;background:url('fx/bleed_splat.png') center/contain no-repeat;opacity:.85;text-decoration:none}.bleeding s:nth-of-type(1){top:-10%;left:-8%;rotate:25deg}.bleeding s:nth-of-type(2){top:-14%;right:-10%;rotate:-60deg;width:36%}.bleeding i{position:absolute;top:0;width:4px;height:0;border-radius:0 0 3px 3px;background:linear-gradient(#5e0010,#a3001c);animation:bloodRun 3.2s cubic-bezier(.55,0,.8,.6) infinite}.bleeding i::after{content:'';position:absolute;left:50%;bottom:-6px;width:9px;height:11px;translate:-50% 0;border-radius:50% 50% 50% 50%/40% 40% 60% 60%;background:radial-gradient(circle at 35% 35%,#e0344a,#8a0014 70%)}.bleeding i:nth-of-type(1){left:9%;animation-delay:-.4s}.bleeding i:nth-of-type(2){left:23%;width:3px;animation-duration:4s;animation-delay:-2.2s}.bleeding i:nth-of-type(3){left:71%;animation-duration:3.6s;animation-delay:-1.1s}.bleeding i:nth-of-type(4){left:86%;width:5px;animation-delay:-2.8s}.bleeding i:nth-of-type(5){left:47%;width:3px;animation-duration:4.4s;animation-delay:-3.4s}.bleeding b{position:absolute;top:30%;width:7px;height:9px;border-radius:50% 50% 50% 50%/40% 40% 60% 60%;background:#b0001f;opacity:0;animation:bloodDrop 1.6s ease-in infinite}.bleeding b:nth-of-type(1){left:9%;animation-delay:-.3s}.bleeding b:nth-of-type(2){left:71%;animation-delay:-1s}.bleeding b:nth-of-type(3){left:86%;animation-delay:-.7s}
@keyframes bloodRun{0%{height:0;opacity:1}70%{height:62%;opacity:1}100%{height:70%;opacity:0}}@keyframes bloodDrop{0%{transform:translateY(0);opacity:0}15%{opacity:1}100%{transform:translateY(260%);opacity:0}}@keyframes bleedBeat{0%,100%{box-shadow:inset 0 0 26px 2px #8a001455}14%{box-shadow:inset 0 0 58px 12px #b0001f99}28%{box-shadow:inset 0 0 30px 4px #8a001466}42%{box-shadow:inset 0 0 50px 9px #b0001f88}}
.key-token .key-art{position:relative;display:block;width:104px;height:104px;filter:grayscale(1) brightness(.42) contrast(.9);opacity:.55;transition:filter .6s,opacity .6s}.key-art svg,.key-art img{position:absolute;inset:0;width:100%;height:100%;display:block}.key-token.found .key-art{filter:drop-shadow(0 0 14px #d5b77788);opacity:1}.key-token.fresh .key-art{animation:clueReveal 1.1s ease-out}@media(max-width:800px){.key-token .key-art{width:76px;height:76px}}.reduced .key-token.fresh .key-art{animation:none}
.map-node.key-pulse,.map-node.key-pulse:disabled{opacity:1;filter:none;border:2px solid #f2d58c;animation:keyPulse 1.4s ease-in-out 3}.map-node.key-pulse small{color:#f2d58c;font-weight:700}@keyframes keyPulse{0%,100%{box-shadow:0 0 14px #e0b75a55,0 8px 18px #000a}50%{box-shadow:0 0 44px 10px #f2d58ccc,0 8px 18px #000a;transform:translate(-50%,-50%) scale(1.07)}}.reduced .map-node.key-pulse{box-shadow:0 0 30px #f2d58caa,0 8px 18px #000a}
.key-token .key-art img{filter:none;opacity:1;width:100%;height:100%;animation:none}
.sanctuary-btn{text-align:left;display:block;width:100%;margin-top:10px;border-color:#c9a45a}.sanctuary-btn small{display:block;opacity:.8;font-size:13px;letter-spacing:0;margin-top:4px}
.item-hint{font-size:13px;color:var(--muted);margin:6px 0 2px}
#trayVerdict.verdict-neutral{color:#c9d3c6;text-shadow:0 0 16px #6f8a7c,0 0 36px #33483f;animation:verdictFlash 1.6s ease-out forwards}.reduced #trayVerdict.verdict-neutral{animation:verdictFade 1.6s linear forwards}
.scene-outcome{border-left:2px solid var(--gold);padding:4px 0 4px 14px;color:#e6dcc0;font-style:italic}
.objective:empty{display:none}
#pushluck{position:absolute;inset:0;z-index:3;display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-rows:1fr auto auto;gap:6px 10px;padding:10px 4%;background:#0a1613f7;touch-action:none;user-select:none;-webkit-user-select:none}
#pushluck .pl-stage{grid-column:1/-1;grid-row:1;width:100%;height:100%;min-height:0}
#pushluck .pl-centre{grid-column:2;grid-row:1;align-self:center;text-align:center;display:flex;flex-direction:column;gap:4px;pointer-events:none}
#pushluck .pl-centre b{font:600 clamp(15px,2.4vw,20px) Georgia,serif;color:#f0e4c7;letter-spacing:.04em}
#pushluck .pl-centre small{font:11px/1.35 system-ui;color:var(--muted);letter-spacing:.5px}
#pushluck .pl-bars{grid-column:1/-1;grid-row:2;display:grid;gap:5px}
#pushluck .pl-row{display:grid;grid-template-columns:clamp(96px,22%,150px) 1fr;align-items:center;gap:10px;font:11px system-ui;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
#pushluck .pl-bar{height:9px;background:#0b1a17;border:1px solid #3d5048;border-radius:5px;overflow:hidden}
#pushluck .pl-bar i{display:block;height:100%;width:0}
#pushluck .pl-balance i{background:linear-gradient(90deg,#8f7a3f,#e4c877)}
#pushluck .pl-danger i{background:linear-gradient(90deg,#4a1512,#d8352b)}
#pushluck .pl-danger-row.shown span{color:#ff8a7e}
#pushluck .pl-hold{grid-column:1/-1;grid-row:3;margin:0;min-height:46px;font:700 15px system-ui;letter-spacing:1px;text-transform:uppercase;background:#2a3f37;border:1px solid #c9a45a;color:#f0e4c7;cursor:pointer;touch-action:none}
#pushluck.holding .pl-hold{background:#6b5627;box-shadow:0 0 18px #c9a45a66 inset}
#pushluck.res-good .pl-hold{background:#6b5627;color:#fff1c8;border-color:#f2d58c}
#pushluck.res-bad .pl-hold{background:#5a1d19;color:#ffd0c8;border-color:#d8352b}
#pushluck.res-neutral .pl-hold{background:#24332e;color:#c9d3c6}
@media(max-width:800px){#pushluck{padding:8px 10px}#pushluck .pl-row{font-size:10px;letter-spacing:.4px}}
#pushluck .pl-hold:disabled{opacity:1;cursor:default}
.blinded{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2}.blinded::before{content:'';position:absolute;left:-5%;right:-5%;top:14%;height:34%;backdrop-filter:blur(5px) grayscale(.7) brightness(1.15);-webkit-backdrop-filter:blur(5px) grayscale(.7) brightness(1.15);background:linear-gradient(180deg,transparent,#e9eef022 30%,#e9eef044 50%,#e9eef022 70%,transparent);mask-image:linear-gradient(180deg,transparent,#000 25%,#000 75%,transparent);-webkit-mask-image:linear-gradient(180deg,transparent,#000 25%,#000 75%,transparent)}.blinded i{position:absolute;top:12%;height:38%;width:70%;background:url('fx/smoke_07.png') center/contain no-repeat;opacity:.55;filter:brightness(2.2) grayscale(1);animation:blindDrift 7s linear infinite}.blinded i:nth-of-type(1){left:-30%}.blinded i:nth-of-type(2){left:15%;animation-delay:-2.4s;animation-duration:8s;opacity:.45}.blinded i:nth-of-type(3){left:55%;animation-delay:-4.8s;animation-duration:6.5s}.blinded b{position:absolute;width:4px;height:4px;border-radius:50%;background:#fff;box-shadow:0 0 8px 2px #fff;opacity:0;animation:blindGlint 2.6s ease-in-out infinite}.blinded b:nth-of-type(1){left:18%;top:24%}.blinded b:nth-of-type(2){left:38%;top:34%;animation-delay:-.9s}.blinded b:nth-of-type(3){left:62%;top:22%;animation-delay:-1.7s}.blinded b:nth-of-type(4){left:80%;top:38%;animation-delay:-.4s}.blinded b:nth-of-type(5){left:50%;top:18%;animation-delay:-2.2s}.blinded b:nth-of-type(6){left:28%;top:42%;animation-delay:-1.3s}
@keyframes blindDrift{0%{transform:translateX(-20%)}100%{transform:translateX(60%)}}@keyframes blindGlint{0%,100%{opacity:0;transform:scale(.4)}50%{opacity:.9;transform:scale(1)}}
.item.recruit-card{display:flex;align-items:flex-start;gap:16px;border:1px solid #b8963f;background:linear-gradient(90deg,#2a2614cc,#12211dcc);padding:14px}.recruit-card img{width:88px;height:88px;flex:none;object-fit:cover;border:1px solid #b8963f}.recruit-card b{color:var(--gold)}.recruit-card p{margin:6px 0 8px}.recruit-card button{margin:0}@media(max-width:800px){.recruit-card img{width:64px;height:64px}}
.roster button.flare-btn,#choices button.flare-btn{border-color:#d0573a}
.weapon-desc{margin:4px 0 2px}
.mindstatic{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2;background:radial-gradient(ellipse at 50% 40%,#9b6bff40,transparent 62%),radial-gradient(ellipse at 50% 100%,#3a1a6a88,transparent 72%);box-shadow:inset 0 0 40px 6px #5a2fa066;animation:mysticBreath 4.5s ease-in-out infinite}.mindstatic i{position:absolute;left:50%;top:42%;width:120%;aspect-ratio:1;translate:-50% -50%;background:url('fx/twirl_01.png') center/contain no-repeat;filter:sepia(1) hue-rotate(215deg) saturate(3.5) brightness(1.5);opacity:.65;mix-blend-mode:screen;animation:mysticSpin 14s linear infinite}.mindstatic i:nth-of-type(2){width:80%;background-image:url('fx/twirl_02.png');opacity:.3;animation-duration:9s;animation-direction:reverse;filter:sepia(1) hue-rotate(250deg) saturate(4) brightness(1.4);opacity:.5}.mindstatic b{position:absolute;width:7px;height:7px;border-radius:50%;background:#fbf4ff;box-shadow:0 0 10px 4px #c9a0ff,0 0 22px 9px #7a4dff88;opacity:0;animation:mysticMote 3.2s ease-in-out infinite}.mindstatic b:nth-of-type(1){left:18%;top:30%}.mindstatic b:nth-of-type(2){left:34%;top:62%;animation-delay:-.6s;animation-duration:3.8s}.mindstatic b:nth-of-type(3){left:52%;top:22%;animation-delay:-1.3s}.mindstatic b:nth-of-type(4){left:68%;top:54%;animation-delay:-2s;animation-duration:2.8s}.mindstatic b:nth-of-type(5){left:82%;top:34%;animation-delay:-2.6s}.mindstatic b:nth-of-type(6){left:44%;top:78%;animation-delay:-1.8s;animation-duration:4.2s}.mindstatic b:nth-of-type(7){left:26%;top:12%;animation-delay:-3s;width:4px;height:4px}@keyframes mysticSpin{to{rotate:360deg}}@keyframes mysticBreath{0%,100%{opacity:.75}50%{opacity:1}}@keyframes mysticMote{0%{opacity:0;transform:translateY(8px) scale(.5)}30%{opacity:1;transform:translateY(0) scale(1)}70%{opacity:.8}100%{opacity:0;transform:translateY(-14px) scale(.6)}}
.dreadfx{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2;backdrop-filter:brightness(.62) saturate(.55);-webkit-backdrop-filter:brightness(.62) saturate(.55);box-shadow:inset 0 -40px 70px 20px #000e,inset 0 0 90px 30px #2a0000d9;animation:dreadPulse 3.2s ease-in-out infinite}.dreadfx i{position:absolute;bottom:-25%;width:75%;aspect-ratio:1;background:url('fx/smoke_07.png') center/contain no-repeat;filter:brightness(.45) sepia(1) hue-rotate(-40deg) saturate(4);opacity:.75;animation:dreadRise 6s ease-in-out infinite}.dreadfx i:nth-of-type(1){left:-20%}.dreadfx i:nth-of-type(2){left:25%;animation-delay:-2s;opacity:.6}.dreadfx i:nth-of-type(3){left:60%;animation-delay:-4s}@keyframes dreadPulse{0%,100%{opacity:.8}50%{opacity:1}}@keyframes dreadRise{0%,100%{transform:translateY(10%) rotate(0)}50%{transform:translateY(-12%) rotate(20deg)}}
@media (prefers-reduced-motion:reduce){.mindstatic,.mindstatic i,.dreadfx,.dreadfx i{animation:none}.mindstatic b{animation:none;opacity:.8}}
.petrified{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2;backdrop-filter:grayscale(1) sepia(.25) contrast(1.15) brightness(.85);-webkit-backdrop-filter:grayscale(1) sepia(.25) contrast(1.15) brightness(.85);box-shadow:inset 0 0 40px 8px #1b1a17b3}.petrified::before,.petrified::after{content:'';position:absolute;inset:0;background:linear-gradient(118deg,transparent 46%,#1d1b18cc 46.4%,#1d1b18cc 47%,transparent 47.4%),linear-gradient(62deg,transparent 58%,#1d1b18b3 58.3%,#1d1b18b3 58.8%,transparent 59.1%),linear-gradient(160deg,transparent 30%,#1d1b1899 30.3%,#1d1b1899 30.7%,transparent 31%)}.petrified::after{transform:scaleX(-1) translateY(12%);opacity:.7}.petrified i{position:absolute;inset:0;background:radial-gradient(circle at 30% 20%,#ffffff14,transparent 40%),radial-gradient(circle at 75% 70%,#00000033,transparent 45%)}
.disoriented{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2;backdrop-filter:hue-rotate(0deg) blur(.6px);-webkit-backdrop-filter:hue-rotate(0deg) blur(.6px);animation:disoHue 4s linear infinite}.disoriented i{position:absolute;left:50%;top:50%;width:130%;aspect-ratio:1;translate:-50% -50%;background:url('fx/twirl_02.png') center/contain no-repeat;filter:sepia(1) hue-rotate(120deg) saturate(3) brightness(1.3);opacity:.6;mix-blend-mode:screen;animation:disoSpin 6s linear infinite}.disoriented::before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 50% 45%,transparent 20%,#20e0c033 55%,#7a4dff4d 100%);mix-blend-mode:screen}.disoriented i:nth-of-type(2){width:90%;opacity:.45;animation-direction:reverse;animation-duration:4.5s;filter:sepia(1) hue-rotate(230deg) saturate(3)}@keyframes disoSpin{to{rotate:360deg}}@keyframes disoHue{to{backdrop-filter:hue-rotate(360deg) blur(.6px);-webkit-backdrop-filter:hue-rotate(360deg) blur(.6px)}}
@media (prefers-reduced-motion:reduce){.disoriented,.disoriented i{animation:none}}
#bag .item.corroding{animation:corrodeEat .7s ease-in forwards;box-shadow:inset 0 0 30px #7fd12a88,0 0 18px #7fd12a66}@keyframes corrodeEat{0%{filter:none}60%{filter:sepia(1) hue-rotate(40deg) saturate(3) brightness(.8)}100%{filter:sepia(1) hue-rotate(40deg) saturate(3) brightness(.5);opacity:.3;transform:scale(.96)}}
#montage{position:fixed;inset:0;z-index:100;background:#000;overflow:hidden;opacity:1;transition:opacity .7s}#montage.mt-out{opacity:0;transition:opacity 1.4s}body.montage-open{overflow:hidden}
.mt-slide{position:absolute;inset:-4%;background:var(--pos,center)/cover no-repeat;opacity:0;transition:opacity 1.6s ease-in-out;will-change:transform,opacity}.mt-slide.on{opacity:1}
.mt-in.on{animation:mtIn 12s ease-out forwards}.mt-pan.on{animation:mtPan 12s linear forwards}.mt-rise.on{animation:mtRise 12s ease-out forwards}
@keyframes mtIn{from{transform:scale(1.02) translate(0,0)}to{transform:scale(1.12) translate(-2%,1.5%)}}@keyframes mtPan{from{transform:scale(1.1) translate(2.5%,0)}to{transform:scale(1.1) translate(-2.5%,-1%)}}@keyframes mtRise{from{transform:scale(1.12)}to{transform:scale(1.02)}}.mt-rise{transform-origin:62% 8%}
.mt-shade{position:absolute;inset:0;background:linear-gradient(180deg,#000a 0,transparent 22%,transparent 50%,#000c 100%),radial-gradient(ellipse at 50% 55%,transparent 55%,#000b 100%);pointer-events:none}
.mt-caption{position:absolute;left:0;right:0;bottom:max(9vh,calc(56px + env(safe-area-inset-bottom,0px)));display:grid;justify-items:center;padding:0 24px;pointer-events:none}
.mt-card{grid-area:1/1;max-width:44rem;text-align:center;color:#e5e5d4;opacity:0;transform:translateY(10px);transition:opacity 1.1s ease,transform 1.6s ease;text-shadow:0 2px 14px #000,0 0 3px #000}.mt-card.on{opacity:1;transform:none}
.mt-card small{display:block;font:600 12px/1.4 system-ui;letter-spacing:.32em;text-transform:uppercase;color:#d5b777;margin-bottom:10px}
.mt-card p{margin:0;font:italic 400 clamp(17px,2.4vw,24px)/1.5 Georgia,serif;text-wrap:balance}
.mt-namecard b{display:block;font:700 clamp(38px,7vw,72px)/1 Georgia,serif;letter-spacing:.04em;color:#d5b777}
.mt-titlecard h2{margin:0 0 14px;font:700 clamp(46px,10vw,104px)/1 Georgia,serif;letter-spacing:.08em;text-transform:uppercase;color:#f1ead2}
.mt-skip{position:absolute;right:max(16px,env(safe-area-inset-right,0px));bottom:max(16px,env(safe-area-inset-bottom,0px));background:#0008;color:#e5e5d4;border:1px solid #e5e5d455;border-radius:4px;padding:8px 14px;font:600 13px system-ui;letter-spacing:.08em;cursor:pointer}.mt-skip:hover,.mt-skip:focus-visible{background:#000c;border-color:#d5b777;color:#d5b777}
@media (prefers-reduced-motion:reduce){.mt-slide.on{animation:none}.mt-card{transform:none}}
@media (max-aspect-ratio:1/1){.mt-in{--pos:58% center}.mt-pan{--pos:30% center}.mt-rise{--pos:74% center;transform-origin:74% 8%}}
body[data-chapter="2"].mapping:before{background:linear-gradient(180deg,#07110f33 0%,#07110f8c 38%,#07110fd9 100%),url('map-bg-dunwich.webp') center top/cover no-repeat,url('montage-dunwich.webp') center top/cover no-repeat}
.map-node.study{background:#2a2433e8}
@media(max-width:800px){body[data-chapter="2"] .map-node{width:23%;min-height:72px;padding:5px 2px}body[data-chapter="2"] .map-node b{font-size:12px;line-height:1.15;margin:3px 0}body[data-chapter="2"] .map-node small{font-size:8px;letter-spacing:.5px}body[data-chapter="2"] .map-node>span{font-size:16px}}

body[data-chapter="2"] .scene img{object-position:center 18%}
#skipToDunwich{display:block;margin:-8px auto 20px;min-width:260px;background:transparent;border:1px dashed #ac9e78;color:#c3cdbd;font-size:13px;letter-spacing:.04em}#skipToDunwich:disabled{opacity:.45}
.poisoned{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:2;background:radial-gradient(ellipse at 50% 100%,#3d6a0c99,transparent 65%),radial-gradient(ellipse at 50% 40%,#5f8f1a33,transparent 70%);box-shadow:inset 0 0 36px 6px #2f5a0a88;animation:poisonHaze 3.4s ease-in-out infinite}
.poisoned i{position:absolute;left:50%;top:60%;width:110%;aspect-ratio:1;translate:-50% -50%;background:url('fx/smoke_07.png') center/contain no-repeat;filter:sepia(1) hue-rotate(40deg) saturate(3.5) brightness(.8);opacity:.55;animation:poisonSwirl 9s linear infinite}
.poisoned i:nth-of-type(2){width:80%;top:72%;opacity:.45;animation-duration:6.5s;animation-direction:reverse;filter:sepia(1) hue-rotate(55deg) saturate(4) brightness(.65)}
.poisoned b{position:absolute;bottom:-6%;width:10px;height:10px;border-radius:50%;border:1.5px solid #b6e34a;background:radial-gradient(circle at 35% 35%,#e8ffb0aa,#7fae2233 60%,transparent 70%);box-shadow:0 0 6px #9fd13a88;opacity:0;animation:poisonBubble 2.6s ease-in infinite}
.poisoned b:nth-of-type(1){left:12%}.poisoned b:nth-of-type(2){left:26%;animation-delay:-.7s;width:7px;height:7px}.poisoned b:nth-of-type(3){left:38%;animation-delay:-1.5s}.poisoned b:nth-of-type(4){left:51%;animation-delay:-.3s;width:13px;height:13px}.poisoned b:nth-of-type(5){left:63%;animation-delay:-2.1s;width:8px;height:8px}.poisoned b:nth-of-type(6){left:74%;animation-delay:-1.1s}.poisoned b:nth-of-type(7){left:86%;animation-delay:-1.8s;width:6px;height:6px}.poisoned b:nth-of-type(8){left:45%;animation-delay:-2.4s;width:9px;height:9px}
@keyframes poisonHaze{0%,100%{opacity:.8}50%{opacity:1}}@keyframes poisonSwirl{to{rotate:360deg}}
@keyframes poisonBubble{0%{opacity:0;transform:translateY(0) scale(.6)}15%{opacity:1}78%{opacity:1;transform:translateY(-120px) scale(1)}86%{opacity:.9;transform:translateY(-128px) scale(1.7)}100%{opacity:0;transform:translateY(-130px) scale(2.2)}}
@media (prefers-reduced-motion:reduce){.poisoned,.poisoned i{animation:none}.poisoned b{animation:none;opacity:.8;bottom:30%}}
.bell-btn{border-color:#5f9bff!important;box-shadow:inset 0 0 12px #3f6fd044}.bell-btn:not(:disabled):hover{background:#1c2f4a}
.bell-shiver{animation:bellShiver .6s linear}@keyframes bellShiver{0%,100%{transform:translate(0,0)}10%{transform:translate(-2px,1px)}20%{transform:translate(2px,-1px)}30%{transform:translate(-2px,0)}40%{transform:translate(2px,1px)}50%{transform:translate(-1px,-1px)}60%{transform:translate(1px,1px)}70%{transform:translate(-1px,0)}80%{transform:translate(1px,0)}}
@media (prefers-reduced-motion:reduce){.bell-shiver{animation:none}}
.loot-choose{margin:0 0 10px;padding:8px 12px;border-left:3px solid var(--gold);background:#d5b7770f;color:var(--ink)}.loot-choose b{color:var(--gold)}
.item.loot-pick{border-color:#d5b77788}.loot-extra{display:block;font:600 10px system-ui;letter-spacing:.12em;color:var(--mint);margin-bottom:4px}

/* Thompson Submachine Gun: gunmetal and brass, its own slot below the main weapon */
.tommy-btn{border-color:#b08a3e!important;box-shadow:inset 0 0 12px #8a6a2a33}.tommy-btn:not(:disabled):hover{background:#2e2a1e}
.sheet-equipment p.tommy-slot{color:#d9b56a;letter-spacing:.02em}
/* Passive gear (no button of its own) grouped at the top of the equipment block */
.passive-gear{list-style:none;margin:0 0 14px;padding:10px 12px;display:grid;gap:8px;border:1px solid #3c5a4d;border-radius:6px;background:#12241f}
.passive-gear li{display:grid;gap:2px}.passive-gear b{font:600 13px system-ui;color:#d9e6dc;letter-spacing:.02em}.passive-gear small{font-size:12px;color:#9fb8aa;line-height:1.35}
/* The False Reflection (Bishop Brook): a still pool drawn over the dice tray */
#reflection{position:absolute;inset:0;z-index:3;background:#071314;touch-action:manipulation;user-select:none;-webkit-user-select:none}
#reflection .rf-stage{position:absolute;inset:0;width:100%;height:100%}
#reflection .rf-caption{position:absolute;left:0;right:0;top:8px;text-align:center;display:flex;flex-direction:column;gap:2px;pointer-events:none}
#reflection .rf-caption b{font:600 clamp(15px,2.4vw,20px) Georgia,serif;color:#f0e4c7;letter-spacing:.04em;text-shadow:0 1px 6px #000}
#reflection .rf-caption small{font:11px/1.35 system-ui;color:var(--muted);letter-spacing:.5px}
#reflection .rf-picks{position:absolute;inset:0}
#reflection .rf-picks button{position:absolute;margin:0;padding:0;min-height:0;background:transparent!important;border:0;border-radius:50%;cursor:pointer}
#reflection .rf-picks button:disabled{cursor:default}
#reflection .rf-picks button:not(:disabled):hover,#reflection .rf-picks button:focus-visible{box-shadow:0 0 0 3px #e8c97a88,0 0 24px #e8c97a55}
#reflection.res-good .rf-caption b{color:#f2d58c}#reflection.res-bad .rf-caption b{color:#ff8a7a}
.resume-card{max-width:560px;margin:0 0 24px}.resume-card h3{margin:6px 0 4px}.resume-card button{width:auto;min-width:200px}
.stats.vitals b{margin-left:4px}
.stats.vitals{flex-wrap:nowrap;gap:8px}.stats.vitals span{white-space:nowrap}
.stats.vitals .lbl-short{display:none}
@media(max-width:800px){.roster .stats.vitals{font-size:13px;gap:4px}.stats.vitals b{margin-left:2px}}
@media(max-width:480px){.stats.vitals .lbl-long{display:none}.stats.vitals .lbl-short{display:inline}.roster .stats.vitals{font-size:12.5px}}
@media(max-width:340px){.stats.vitals{flex-wrap:wrap}}
/* Chill (the Hollow's Tongue's Night Whisper): frost creeping in at the portrait's edges */
.chilled{position:absolute;inset:0;pointer-events:none;z-index:2;background:radial-gradient(ellipse at 50% 45%,transparent 45%,#b8e4ff55 80%,#e6f7ffaa 100%);box-shadow:inset 0 0 30px 6px #cfeeff99;mix-blend-mode:screen;animation:chillBreath 3.2s ease-in-out infinite}
@keyframes chillBreath{50%{opacity:.65}}
.reduced .chilled{animation:none}
.chill-note{font-style:normal;font:600 10.5px/1 system-ui;letter-spacing:.8px;color:#bfe6ff;margin:0 auto 0 8px;align-self:center}
.passive-note{border-left:2px solid #bfe6ff66;padding-left:10px;color:#cfe3ea!important}
/* Trophy shelf and the locked investigator slot (character select) */
.trophy-shelf{max-width:760px;margin:0 0 22px}
.trophy-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:8px}
.trophy{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:14px 8px 12px;border:1px solid var(--line);background:#0f201c;text-align:center}
.trophy svg{width:56px;height:56px}
.trophy b{font:600 13px/1.3 system-ui}
.trophy small{font-size:11px;letter-spacing:.6px;color:var(--muted)}
.trophy.missing{color:#3c5249;border-style:dashed}
.trophy.missing b{color:#6f857a;font-weight:500}
.trophy.missing .q{position:absolute;top:26px;left:50%;transform:translateX(-50%);font:600 22px/1 Georgia,serif;color:#8ea397}
.trophy.found{color:var(--gold);border-color:#8a7442;background:radial-gradient(ellipse at 50% 30%,#3b3320,#0f201c 70%)}
.trophy.found b{color:#f0e4c7}
.trophy-hint{color:var(--muted);font-size:14px;margin:10px 0 0}
.pick-card.mystery .portrait-slot{display:flex;align-items:center;justify-content:center;background:repeating-linear-gradient(135deg,#10201c 0 10px,#132520 10px 20px)}
.mystery-q{font:400 96px/1 Georgia,serif;color:#5d7469}
.pick-card.mystery h3{color:#9fb3a8}
.trophy-card{display:flex;gap:14px;align-items:center;border:1px solid #8a7442;padding:14px;background:radial-gradient(ellipse at 10% 50%,#3b3320,transparent 60%)}
.trophy-card svg{flex:none;width:64px;height:64px;color:var(--gold)}
@media(max-width:480px){.trophy-row{gap:6px}.trophy svg{width:40px;height:40px}.trophy.missing .q{top:20px;font-size:17px}.trophy b{font-size:11.5px}}
/* Mini boss: a gilded frame with a slow sweep of light round the border */
@property --mb-angle{syntax:'<angle>';inherits:false;initial-value:0deg}
.character-sheet.mini-boss{position:relative;border-color:#d5b777;box-shadow:0 0 0 1px #d5b77766,0 0 22px 2px #d5b77744,inset 0 0 26px #d5b77720;animation:miniGlow 3.6s ease-in-out infinite}
.character-sheet.mini-boss::before{content:'';position:absolute;inset:0;padding:3px;pointer-events:none;z-index:4;background:conic-gradient(from var(--mb-angle),transparent 0 55%,#8a6d2e 64%,#ffe9a8 72%,#fffbe8 76%,#ffe9a8 80%,#8a6d2e 88%,transparent 96%);filter:drop-shadow(0 0 4px #ffe3a0);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);animation:miniSweep 5s linear infinite}
.character-sheet.mini-boss .sheet-ribbon{background:linear-gradient(90deg,#b8955a,#ecd28e 50%,#b8955a);color:#2a1f0c;font-weight:600}
.character-sheet.mini-boss .portrait-slot{box-shadow:inset 0 0 0 1px #d5b77788,inset 0 -30px 40px -20px #d5b77733}
.character-sheet.mini-boss .tag{color:#ecd28e}
.character-sheet.mini-boss.down{animation:none;box-shadow:none}
.character-sheet.mini-boss.down::before{display:none}
@keyframes miniGlow{50%{box-shadow:0 0 0 1px #d5b777aa,0 0 32px 5px #d5b77766,inset 0 0 34px #d5b77733}}
@keyframes miniSweep{to{--mb-angle:360deg}}
.reduced .character-sheet.mini-boss,.reduced .character-sheet.mini-boss::before{animation:none}
