:root{color-scheme:dark;--bg:#0e0c09;--panel:#17130f;--panel2:#211a13;--text:#f0e8d9;--muted:#b9aa91;--line:#433525;--gold:#bd9858;--danger:#9e5148}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text)}body{font-family:Georgia,"Times New Roman",serif}button{font:inherit}button:focus-visible{outline:2px solid var(--gold);outline-offset:2px}#app{width:min(100%,560px);min-height:100vh;margin:0 auto;background:var(--bg)}
.screen{display:none}.screen.active{display:block}#titleScreen{position:relative;min-height:100vh;overflow:hidden}#titleScreen.active{display:flex;align-items:flex-end}.title-art{position:absolute;inset:0;background:radial-gradient(circle at 73% 18%,rgba(224,221,195,.34),transparent 16%),linear-gradient(to bottom,rgba(7,12,12,.04),rgba(8,8,7,.72) 68%,rgba(8,7,6,.96)),linear-gradient(145deg,#294036,#13211e 46%,#090a09)}.title-art:before{content:"";position:absolute;left:-10%;right:-10%;bottom:20%;height:38%;background:linear-gradient(145deg,transparent 0 16%,#0b0e0d 16% 24%,transparent 24% 31%,#0a0d0c 31% 45%,transparent 45% 51%,#080b0b 51% 70%,transparent 70%);opacity:.9}.title-art:after{content:"";position:absolute;right:12%;top:18%;width:24%;height:30%;background:#070808;clip-path:polygon(38% 0,48% 18%,55% 3%,64% 22%,70% 11%,78% 28%,82% 100%,22% 100%,27% 34%);opacity:.9}.title-card{position:relative;z-index:2;width:100%;padding:30px 20px calc(28px + env(safe-area-inset-bottom));background:linear-gradient(to top,rgba(12,10,8,.98),rgba(12,10,8,.84),rgba(12,10,8,.1))}.brand{font:700 13px/1 system-ui,sans-serif;letter-spacing:.3em;color:var(--gold);margin-bottom:8px}h1{font-size:44px;line-height:.98;margin:0 0 13px}.title-card p{line-height:1.48;color:var(--muted);margin-bottom:24px}.button{width:100%;min-height:48px;border-radius:8px;border:1px solid var(--line);padding:12px 14px;margin-top:9px}.primary{background:var(--gold);color:#171008;border-color:#d0ad6e;font-weight:700}.secondary{background:#241c13;color:var(--text)}
.topbar{position:sticky;top:0;z-index:6;display:flex;align-items:center;justify-content:space-between;padding:12px 14px;background:rgba(14,12,9,.97);border-bottom:1px solid var(--line)}.brand-small{font:700 11px/1 system-ui,sans-serif;letter-spacing:.23em;color:var(--gold)}.top-stats{display:flex;gap:15px;font:700 13px/1 system-ui,sans-serif}.scene-art{position:relative;height:285px;display:flex;align-items:flex-end;padding:17px;background-size:cover;background-position:center}.scene-shade{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,.02),rgba(0,0,0,.12) 50%,rgba(0,0,0,.68))}.region-label{position:relative;z-index:1;font:650 11px/1 system-ui,sans-serif;letter-spacing:.17em;color:#eadcc4}.scene-art.forest{background:linear-gradient(145deg,#344b3e,#182a24 55%,#0d1613)}.scene-art.lake{background:radial-gradient(circle at 64% 30%,#71858c 0 4%,transparent 20%),linear-gradient(145deg,#263b46,#183139 55%,#0b151a)}.scene-art.caravan{background:linear-gradient(145deg,#4c3b2b,#202821 58%,#0c1210)}.scene-art.storm{background:linear-gradient(145deg,#3a4147,#1b2229 50%,#0b0f13)}.scene-art.ruins{background:linear-gradient(145deg,#4a5142,#1c261e 55%,#0c120d)}.scene-art.inn{background:radial-gradient(circle at 64% 48%,#9c6331 0 7%,transparent 30%),linear-gradient(145deg,#5b3c25,#2d1d13 55%,#120d09)}.scene-art.cave{background:radial-gradient(circle at 63% 55%,#58645f 0 4%,transparent 25%),linear-gradient(145deg,#3a4141,#181d1f 55%,#090c0e)}.scene-art.crossroads{background:radial-gradient(circle at 48% 52%,#8d6735 0 3%,transparent 20%),linear-gradient(145deg,#354039,#1b231f 55%,#0c110e)}
.story{padding:18px 16px 104px}.story-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.scene-number{font:700 10px/1 system-ui,sans-serif;letter-spacing:.19em;color:var(--gold)}h2{font-size:28px;line-height:1.07;margin:6px 0 12px}.icon-button{width:44px;height:44px;min-width:44px;padding:0;border:1px solid var(--line);border-radius:8px;background:#251e16;color:var(--text)}.narration{font-size:17px;line-height:1.58;margin:0;color:#eee5d8}.notice{margin:15px 0 0;padding:12px 13px;border-left:3px solid var(--gold);background:#1f1811;color:#dfd1b9;line-height:1.45}.hidden{display:none!important}.choices{display:grid;gap:10px;margin-top:19px}.choice{min-height:50px;text-align:left;border:1px solid #4a3a28;border-radius:8px;background:#221b14;color:var(--text);padding:13px 14px;line-height:1.35}.choice.special{border-color:#826a3d;background:#282117}.choice.danger{border-color:#76433e}.choice:disabled{opacity:.4;cursor:not-allowed}
.bottom-nav{position:fixed;left:50%;transform:translateX(-50%);bottom:0;z-index:7;width:min(560px,100%);display:grid;grid-template-columns:repeat(5,1fr);background:rgba(14,12,9,.98);border-top:1px solid var(--line);padding-bottom:max(5px,env(safe-area-inset-bottom))}.bottom-nav button{min-height:56px;border:0;border-radius:0;background:transparent;color:var(--muted);font:700 10px/1 system-ui,sans-serif;letter-spacing:.07em;padding:14px 4px}
.modal-backdrop{position:fixed;inset:0;z-index:20;background:rgba(0,0,0,.73);display:flex;align-items:flex-end;justify-content:center}.modal{width:min(560px,100%);max-height:85vh;overflow:auto;background:var(--panel);border:1px solid var(--line);border-bottom:0;border-radius:16px 16px 0 0}.modal-header{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:14px 16px;background:var(--panel);border-bottom:1px solid var(--line)}.modal-header h3{margin:0;font-size:22px}.modal-content{padding:16px}.muted{color:var(--muted)}.small{font-size:13px}.statline{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--line)}.item-row,.shop-row,.save-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 0;border-bottom:1px solid var(--line)}.item-actions,.action-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}.small-button{min-height:38px;padding:8px 10px;border:1px solid #4b3c2c;border-radius:7px;background:#31271d;color:var(--text)}.small-button.primary-mini{background:var(--gold);color:#171008;border-color:var(--gold)}.map-node{padding:11px 12px;margin-bottom:8px;border:1px solid var(--line);border-radius:8px;background:var(--panel2)}.map-node.current{border-color:var(--gold)}.map-route{font-size:13px;color:var(--muted);margin-top:4px}.journal-entry{margin-bottom:17px}.journal-entry h4{margin:0 0 5px;font-size:17px}.journal-entry p{margin:0;color:var(--muted);line-height:1.48}.combat{border:1px solid #594431;border-radius:10px;padding:14px;background:#18130e}.combat-row{display:flex;justify-content:space-between;gap:12px;margin-bottom:8px}.combat-log{margin-top:10px;padding:10px;background:#21180f;border-left:3px solid var(--gold);line-height:1.45}.sep{border:0;border-top:1px solid var(--line);margin:12px 0}.badge{display:inline-block;padding:4px 7px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font:650 11px/1 system-ui,sans-serif}
@media(max-width:360px){.scene-art{height:235px}h1{font-size:38px}h2{font-size:24px}.narration{font-size:16px}}

/* v0.2 Open Wilds additions */
.scene-art.cellar{background:radial-gradient(circle at 68% 52%,#6e4a29 0 5%,transparent 22%),linear-gradient(145deg,#3c2f22,#1c1712 58%,#0b0907)}
.scene-art.crystal{background:radial-gradient(circle at 62% 44%,#55758a 0 7%,transparent 28%),linear-gradient(145deg,#2b3d49,#1a252c 52%,#0b0f13)}
.scene-art.mine{background:radial-gradient(circle at 68% 58%,#73512f 0 4%,transparent 24%),linear-gradient(145deg,#423a31,#1d1c1a 55%,#0b0b0a)}
.scene-art.cavewater{background:radial-gradient(circle at 54% 70%,#375d68 0 10%,transparent 34%),linear-gradient(145deg,#303c42,#152125 55%,#090d0f)}
.scene-art.caveridge{background:radial-gradient(circle at 68% 26%,#a9a98f 0 4%,transparent 24%),linear-gradient(145deg,#3d4a45,#24322e 50%,#0d1411)}
.scene-art.shrine{background:radial-gradient(circle at 62% 55%,#8d7040 0 5%,transparent 25%),linear-gradient(145deg,#444238,#23241f 55%,#0c0e0c)}
.scene-art.swamp{background:radial-gradient(circle at 72% 54%,#466c55 0 3%,transparent 22%),linear-gradient(145deg,#26392f,#182a23 58%,#09120e)}
.scene-art.swampglow{background:radial-gradient(circle at 26% 48%,#6a9c83 0 2%,transparent 12%),radial-gradient(circle at 70% 58%,#558c78 0 3%,transparent 14%),linear-gradient(145deg,#223b31,#122820 60%,#08110d)}
.scene-art.swamphut{background:radial-gradient(circle at 63% 50%,#6d5a37 0 6%,transparent 24%),linear-gradient(145deg,#314337,#1d3027 55%,#0b1511)}
.scene-art.herbalist{background:radial-gradient(circle at 61% 50%,#946834 0 5%,transparent 25%),linear-gradient(145deg,#3f4637,#263126 55%,#10150f)}
.scene-art.swampbeast{background:radial-gradient(circle at 56% 63%,#66744e 0 5%,transparent 22%),linear-gradient(145deg,#334132,#1b2a20 57%,#09110d)}
.scene-art.swampcave{background:radial-gradient(circle at 55% 65%,#496b62 0 7%,transparent 26%),linear-gradient(145deg,#2a3834,#14221d 58%,#08100d)}
.scene-art.causeway{background:linear-gradient(145deg,#4a554b,#26342c 50%,#111a15)}
.scene-art.kingsroad{background:radial-gradient(circle at 71% 18%,#898a7c 0 4%,transparent 22%),linear-gradient(145deg,#3c4942,#25322c 55%,#101612)}
.scene-art.chapel{background:radial-gradient(circle at 62% 34%,#8e8f85 0 4%,transparent 23%),linear-gradient(145deg,#48514c,#26312d 56%,#0e1512)}
.scene-art.altar{background:radial-gradient(circle at 55% 58%,#8f7849 0 6%,transparent 28%),linear-gradient(145deg,#43463f,#232823 55%,#0d100d)}
.scene-art.chapeltower{background:radial-gradient(circle at 72% 24%,#9b9c89 0 4%,transparent 23%),linear-gradient(145deg,#47524b,#28362f 55%,#101813)}
.scene-art.crypt{background:radial-gradient(circle at 62% 56%,#58707b 0 5%,transparent 26%),linear-gradient(145deg,#333c42,#1b2226 58%,#090d10)}
.scene-art.ridge{background:radial-gradient(circle at 70% 25%,#9b9e92 0 4%,transparent 22%),linear-gradient(145deg,#405146,#29382f 55%,#101812)}
.scene-art.camp{background:radial-gradient(circle at 60% 64%,#8c5b30 0 5%,transparent 24%),linear-gradient(145deg,#4a493b,#26332a 55%,#111611)}
.scene-art.bandits{background:linear-gradient(145deg,#554433,#2c3029 55%,#11140f)}
.scene-art.falls{background:radial-gradient(circle at 55% 44%,#8aa5ad 0 9%,transparent 34%),linear-gradient(145deg,#405964,#29464d 55%,#101b1e)}
.scene-art.stag{background:radial-gradient(circle at 70% 30%,#b1b19e 0 4%,transparent 22%),linear-gradient(145deg,#445448,#2a3a2f 55%,#101811)}
.scene-art.watchtower{background:linear-gradient(145deg,#55564c,#30352f 55%,#141713)}
.scene-art.watchtowerroof{background:radial-gradient(circle at 72% 22%,#a4a58f 0 4%,transparent 22%),linear-gradient(145deg,#4b574f,#303a33 55%,#121815)}
.scene-art.mountainpath{background:radial-gradient(circle at 68% 18%,#99998c 0 4%,transparent 22%),linear-gradient(145deg,#4a4e49,#2b322e 55%,#111512)}
.scene-art.blackpeak{background:radial-gradient(circle at 70% 20%,#999b8d 0 4%,transparent 22%),linear-gradient(145deg,#3d4240,#222827 52%,#0b0e0e)}
.shop-summary{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:-2px 0 12px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:#201910;font:700 13px/1.25 system-ui,sans-serif;color:#e5d5b9}
.map-help{font-size:13px;line-height:1.45;color:var(--muted);margin-bottom:10px}
.journey-map{position:relative;height:440px;border:1px solid #5a4932;border-radius:12px;overflow:hidden;background:radial-gradient(circle at 55% 13%,rgba(90,77,57,.22),transparent 28%),linear-gradient(160deg,#5a4a34,#3f3527 58%,#30281f)}
.journey-map:before{content:"";position:absolute;inset:0;background:linear-gradient(25deg,transparent 0 48%,rgba(231,212,171,.05) 49% 51%,transparent 52%),radial-gradient(circle at 19% 64%,rgba(18,29,24,.35),transparent 20%),radial-gradient(circle at 72% 49%,rgba(21,35,27,.3),transparent 24%);pointer-events:none}
.journey-map svg{position:absolute;inset:0;width:100%;height:100%;z-index:1}.map-line{fill:none;stroke:#d2b578;stroke-width:1.15;opacity:.78;vector-effect:non-scaling-stroke}.map-line.shortcut{stroke-dasharray:3 2;stroke:#c7d0b5}
.journey-node{position:absolute;z-index:3;transform:translate(-50%,-50%);min-width:44px;min-height:44px;border:1px solid #6e5b3c;border-radius:10px;background:rgba(35,29,21,.92);color:var(--text);padding:5px 7px;text-align:center}.journey-node.discovered{opacity:.62;border-style:dashed}.journey-node.current{border-color:var(--gold);box-shadow:0 0 0 2px rgba(189,152,88,.24)}.map-icon{display:block;font-size:20px;line-height:1}.map-label{display:block;max-width:95px;margin-top:4px;font:700 9px/1.15 system-ui,sans-serif;color:#efe2cb}.map-info{margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--panel2)}.map-info p{margin:5px 0 0;color:var(--muted);font-size:13px}.map-mountain{position:absolute;z-index:0;left:43%;top:-4%;width:38%;height:25%;background:#211f1a;clip-path:polygon(50% 0,100% 100%,0 100%);opacity:.8}
@media(max-width:380px){.journey-map{height:390px}.map-label{max-width:76px;font-size:8px}.journey-node{padding:4px 5px}}
.knowledge-banner{margin-bottom:12px;padding:11px 12px;border-left:3px solid var(--gold);background:#261e13;color:#eadcc4;line-height:1.45}
.map-unknown{position:absolute;z-index:2;transform:translate(-50%,-50%);text-align:center;color:#d8c7a7;opacity:.62}.map-unknown span{display:grid;place-items:center;width:36px;height:36px;margin:auto;border:1px dashed #9b8968;border-radius:50%;background:rgba(42,34,25,.75);font:bold 20px/1 system-ui,sans-serif}.map-unknown small{display:block;margin-top:3px;font:700 8px/1.1 system-ui,sans-serif}
.version-note{margin:-10px 0 16px;color:#cbb894;font:700 11px/1.3 system-ui,sans-serif;letter-spacing:.05em}


/* v0.3 graphical backpack */
.bag-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.bag-card{position:relative;display:flex;min-height:118px;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:12px 8px;border:1px solid #58452f;border-radius:12px;background:linear-gradient(155deg,#2b2118,#1d1712);color:var(--text);text-align:center}
.bag-card.equipped{border-color:var(--gold);box-shadow:inset 0 0 0 1px rgba(189,152,88,.28)}
.bag-card.empty{border-style:dashed;opacity:.46;background:#1a1511}
.bag-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#17120e;border:1px solid #685236;font-size:28px;color:#dbc18e}
.bag-name{font:750 13px/1.18 system-ui,sans-serif}
.bag-meta{font:650 10px/1.1 system-ui,sans-serif;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.bag-detail{min-height:126px;padding:13px;border:1px solid var(--line);border-radius:10px;background:#1c1712}
.bag-detail p{margin:9px 0;color:var(--muted);line-height:1.45}
.bag-detail-head{display:flex;align-items:center;gap:10px}
.bag-detail-icon{display:grid;place-items:center;width:44px;height:44px;border:1px solid #614c33;border-radius:10px;background:#282017;color:#e4ca96;font-size:25px}
.danger-mini{border-color:#6b3430;color:#efc2bc}

/* v0.3 parchment Journey Map */
.map-toolbar{display:flex;justify-content:center;gap:8px;margin-bottom:8px}
.map-viewport{position:relative;height:470px;overflow:hidden;border:1px solid #6b5437;border-radius:12px;background:#2a2117;touch-action:none}
.map-viewport .journey-map{width:100%;height:100%;border:0;border-radius:0;overflow:visible;transform-origin:50% 50%;transition:transform .08s linear;background:
  radial-gradient(circle at 18% 54%,rgba(75,103,71,.16),transparent 22%),
  radial-gradient(circle at 74% 47%,rgba(75,103,71,.14),transparent 24%),
  radial-gradient(circle at 24% 26%,rgba(93,78,58,.11),transparent 18%),
  linear-gradient(155deg,#d7c18e,#bda776 55%,#a78d60)}
.map-viewport .journey-map:before{background:
  repeating-linear-gradient(13deg,rgba(83,60,33,.035) 0 1px,transparent 1px 8px),
  radial-gradient(ellipse at center,transparent 50%,rgba(72,50,28,.22) 100%);mix-blend-mode:multiply}
.map-viewport .map-line{stroke:#634b2e;stroke-width:1.25;opacity:.78}
.map-viewport .map-line.shortcut{stroke:#53624d;stroke-dasharray:3 2}
.map-viewport .journey-node{background:rgba(231,214,169,.92);border-color:#735737;color:#2b2115;box-shadow:0 2px 5px rgba(42,31,18,.18)}
.map-viewport .journey-node.discovered{opacity:.7}
.map-viewport .journey-node.current{border-color:#5a2f1e;box-shadow:0 0 0 3px rgba(96,48,27,.24)}
.map-viewport .map-label{color:#2d2114;font-family:Georgia,serif;font-size:9px;text-shadow:0 1px rgba(255,255,255,.3)}
.map-viewport .map-icon{color:#4a3520}
.map-forest{position:absolute;z-index:0;color:#566049;letter-spacing:-4px;font-size:38px;opacity:.46;transform:rotate(-5deg);pointer-events:none}
.forest-west{left:4%;top:49%}.forest-east{right:4%;top:41%;transform:rotate(5deg)}
.map-swamp-art{position:absolute;z-index:0;left:4%;top:43%;font:700 34px/1 Georgia,serif;color:#546455;opacity:.42;transform:rotate(-7deg);pointer-events:none}
.map-castle-art{position:absolute;z-index:0;left:54%;top:-1%;font-size:42px;color:#4b3825;opacity:.56;pointer-events:none}
.map-compass{position:absolute;right:7%;bottom:7%;z-index:0;width:48px;height:48px;display:grid;place-items:center;border:1px solid rgba(74,51,29,.55);border-radius:50%;color:#4c3823;font-size:27px;transform:rotate(45deg);pointer-events:none}
.map-compass small{position:absolute;top:-14px;transform:rotate(-45deg);font:700 9px/1 Georgia,serif}
.map-viewport .map-mountain{left:43%;top:-5%;width:31%;height:24%;background:#725d41;opacity:.28}
.map-viewport .map-unknown{color:#4f3b26}
.map-viewport .map-unknown span{background:rgba(222,204,158,.84);border-color:#71593b}
.note-pin{position:absolute;right:-8px;top:-8px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#553c26;color:#f0ddb0;border:1px solid #b99b65;font:700 11px/1 system-ui,sans-serif}

/* v0.3 notes */
.journal-tabs{display:flex;gap:8px;margin-bottom:14px}
.note-textarea{box-sizing:border-box;width:100%;min-height:150px;padding:12px;border:1px solid #5a4731;border-radius:9px;background:#17130f;color:var(--text);font:15px/1.45 system-ui,sans-serif;resize:vertical}
.player-note-list{margin-top:14px}
.player-note{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.player-note p{margin:5px 0;color:var(--muted);line-height:1.45}

/* v0.3 rest and point-of-no-return cards */
.rest-card,.warning-card{margin:0 0 12px;padding:14px;border:1px solid var(--line);border-radius:10px;background:#1d1712}
.rest-card strong,.warning-card strong{color:#ead4a5}
.rest-card p,.warning-card p{color:var(--muted);line-height:1.45}
.special-save{border:1px solid #6c5537;border-radius:9px;padding:11px;margin-bottom:12px;background:#21190f}

@media(max-width:380px){
  .map-viewport{height:420px}
  .bag-card{min-height:108px}
}

.scene-art.beast{background:radial-gradient(circle at 60% 52%,#9aa6a0 0 5%,transparent 22%),linear-gradient(145deg,#414943,#252d29 56%,#0d1210)}
.scene-art.hermit{background:radial-gradient(circle at 61% 62%,#9a6434 0 5%,transparent 24%),linear-gradient(145deg,#4c4639,#292d26 56%,#10130f)}
.scene-art.aqueduct{background:radial-gradient(circle at 67% 19%,#9da094 0 4%,transparent 23%),linear-gradient(145deg,#505750,#2d3530 56%,#121713)}
.scene-art.castleapproach{background:linear-gradient(145deg,#4f5552,#292f2e 52%,#0f1212)}
.scene-art.castle{background:radial-gradient(circle at 70% 17%,#9b9c91 0 3%,transparent 21%),linear-gradient(145deg,#444a49,#252a2a 53%,#0b0e0e)}

/* Blackpeak Castle prototype styles */
.castle-floor-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:8px}
.castle-viewport{background:#17140f}
.castle-sketch{position:relative;width:100%;height:100%;transform-origin:50% 50%;transition:transform .08s linear;background:
  repeating-linear-gradient(0deg,rgba(220,208,177,.025) 0 1px,transparent 1px 18px),
  repeating-linear-gradient(90deg,rgba(220,208,177,.02) 0 1px,transparent 1px 22px),
  radial-gradient(circle at 50% 50%,#39342a,#262219 68%,#17140f 100%)}
.castle-sketch:before{content:"";position:absolute;inset:4%;border:1px dashed rgba(220,202,157,.14);pointer-events:none}
.castle-sketch svg{position:absolute;inset:0;width:100%;height:100%;z-index:1}
.castle-map-line{stroke:#9d8c68;stroke-width:1.35;opacity:.58;vector-effect:non-scaling-stroke;stroke-dasharray:1.5 1}
.castle-node{position:absolute;z-index:3;transform:translate(-50%,-50%);min-width:46px;min-height:42px;max-width:100px;padding:5px 6px;border:1px solid #655a45;border-radius:3px;background:rgba(41,36,28,.93);color:#e8dcc0;text-align:center;box-shadow:0 2px 4px rgba(0,0,0,.25)}
.castle-node.current{border-color:#d6b568;box-shadow:0 0 0 2px rgba(214,181,104,.18)}
.castle-node-icon{display:block;font-size:17px;line-height:1;color:#cbb587}
.castle-node-label{display:block;margin-top:3px;font:700 8px/1.08 Georgia,serif;color:#eee1c3}
.castle-floor-stamp{position:absolute;right:5%;bottom:4%;z-index:0;transform:rotate(-8deg);padding:7px 9px;border:1px solid rgba(187,163,112,.28);color:rgba(207,190,150,.42);font:700 11px/1 Georgia,serif;letter-spacing:.12em;text-transform:uppercase}

.scene-art.castlecourtyard,.scene-art.castlehall,.scene-art.greathall,.scene-art.guardroom,.scene-art.guarddoor,.scene-art.banquet,.scene-art.portraits,.scene-art.jester,.scene-art.servantspassage,.scene-art.kitchen,.scene-art.stair,.scene-art.antechamber,.scene-art.armourhall,.scene-art.uppergallery{background:radial-gradient(circle at 68% 18%,rgba(171,174,163,.22) 0 4%,transparent 22%),linear-gradient(145deg,#474944,#272b28 55%,#0c0f0e)}
.scene-art.castlewater,.scene-art.cistern,.scene-art.drain{background:radial-gradient(circle at 56% 68%,rgba(69,99,106,.36) 0 9%,transparent 32%),linear-gradient(145deg,#354044,#1c292c 58%,#090e10)}
.scene-art.dungeon,.scene-art.cells,.scene-art.execution,.scene-art.ossuary,.scene-art.royalcrypt,.scene-art.ancestor{background:radial-gradient(circle at 62% 56%,rgba(102,116,119,.18) 0 5%,transparent 26%),linear-gradient(145deg,#343838,#1b1f20 58%,#090b0c)}
.scene-art.castlechapel,.scene-art.reliquary{background:radial-gradient(circle at 55% 46%,rgba(158,143,95,.24) 0 6%,transparent 28%),linear-gradient(145deg,#47463e,#262822 56%,#0d0f0c)}
.scene-art.library,.scene-art.scribe,.scene-art.archive{background:radial-gradient(circle at 64% 50%,rgba(113,80,43,.28) 0 5%,transparent 26%),linear-gradient(145deg,#40372d,#241e18 56%,#0d0a08)}
.scene-art.astronomer,.scene-art.secretstair,.scene-art.windtower,.scene-art.clockwork,.scene-art.towerstair,.scene-art.wardenhall{background:radial-gradient(circle at 69% 19%,rgba(160,166,160,.28) 0 4%,transparent 24%),linear-gradient(145deg,#454b49,#252b2a 54%,#0b0e0e)}

@media(max-width:380px){
  .castle-node{min-width:41px;max-width:82px;padding:4px}
  .castle-node-label{font-size:7px}
}

/* v0.5 finale placeholders */
.scene-art.amuletchamber,.scene-art.goldenseal{background:radial-gradient(circle at 52% 42%,rgba(226,183,91,.72) 0 5%,rgba(128,88,32,.28) 16%,transparent 34%),linear-gradient(145deg,#4d4635,#25241f 54%,#0b0c0b)}
.scene-art.warden{background:radial-gradient(circle at 52% 45%,rgba(203,170,91,.28) 0 5%,transparent 27%),linear-gradient(145deg,#34383a,#1b1d22 55%,#07090b)}
.scene-art.ritual{background:radial-gradient(circle at 52% 55%,rgba(181,197,185,.34) 0 8%,transparent 32%),linear-gradient(145deg,#3e4542,#222925 56%,#0a0f0c)}
.scene-art.castleescape,.scene-art.castlegateescape{background:linear-gradient(145deg,#504a40,#292925 50%,#111211)}
.scene-art.mountaindawn{background:radial-gradient(circle at 72% 18%,rgba(178,168,145,.36) 0 7%,transparent 26%),linear-gradient(145deg,#58605d,#38423e 54%,#181e1b)}
.scene-art.lanterndawn,.scene-art.journeysend{background:radial-gradient(circle at 68% 25%,rgba(182,187,174,.42) 0 8%,transparent 30%),linear-gradient(145deg,#506069,#32474f 55%,#172328)}
.record-current{padding:12px;margin-bottom:12px;border:1px solid var(--line);border-radius:9px;background:var(--panel2)}
.record-current h4{margin:0 0 10px}.record-grid{display:grid;grid-template-columns:1fr auto;gap:7px 12px;font-size:14px}.record-grid span{color:var(--muted)}

/* v0.6 equipment, puzzle and combat readability */
.equipment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:10px 0 16px}.equipment-card{background:#16110c;border:1px solid #6e5534;border-radius:12px;color:#f4e4be;padding:12px;text-align:left;display:flex;flex-direction:column;gap:4px}.equipment-card.equipped{outline:2px solid #d2a65a}.equipment-card small{letter-spacing:.12em;text-transform:uppercase;color:#c99e59}.equipment-card span{font-size:.82rem;color:#b9aa8b}.weapon-switcher{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.dice-result{display:grid;grid-template-columns:auto 1fr auto auto 1fr;gap:10px;align-items:center;background:#0f0d0a;border:1px solid #55442d;border-radius:12px;padding:12px;margin:12px 0}.die-face{width:52px;height:52px;border:1px solid #d2a65a;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.72rem}.die-face b{font-size:1.4rem}.enemy-die{border-color:#94604e}.versus{font-size:.75rem;color:#9f9279;text-transform:uppercase}.combat-outcome{padding:10px 12px;border-radius:10px;font-weight:700;letter-spacing:.04em;margin-top:10px}.combat-outcome.win{background:#17301f}.combat-outcome.lose{background:#3a1918}.combat-outcome.block{background:#24231f}.puzzle-sequence{min-height:54px;border:1px solid #725932;background:#14100b;border-radius:12px;padding:14px;margin:12px 0;text-align:center;font-weight:700}.puzzle-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0}.puzzle-piece{background:#2a2117;border:1px solid #8a6b3e;color:#f6e7c4;border-radius:12px;padding:16px 8px;font-family:inherit;font-size:1rem}.puzzle-piece:active{transform:translateY(1px)}
@media(max-width:560px){.dice-result{grid-template-columns:auto 1fr}.versus{display:none}.equipment-grid{grid-template-columns:1fr 1fr}.puzzle-grid{grid-template-columns:1fr}}

/* v0.8 correction pass */
.bag-card.new-item{border-color:#e0b34f;box-shadow:0 0 0 2px rgba(224,179,79,.16) inset;background:#2a2112}
.bag-card.new-item .bag-meta{color:#f2c75c;font-weight:800}
.bag-card.completed-item{border-color:#8a3430;background:#2b1715}
.completed-banner{margin:0 0 12px;padding:10px 12px;border:1px solid #9b413a;border-radius:9px;background:#321815;color:#ffb3aa;font-weight:800}
.puzzle-journal{margin-top:12px;padding:12px;border:1px solid #54452f;border-radius:10px;background:#15110d;max-height:240px;overflow:auto}
.puzzle-journal-entry{padding:8px 0;border-bottom:1px solid #30291f}.puzzle-journal-entry:last-child{border-bottom:0}.puzzle-journal-entry p{margin:4px 0;color:#c7b999;line-height:1.4}
.lever-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}.lever-card{display:flex;flex-direction:column;gap:8px;align-items:center;justify-content:center;min-height:90px;border:1px solid #7c6138;border-radius:12px;background:#251d14;color:#f1dfb9;font-family:inherit}.lever-card span{font-size:.82rem;letter-spacing:.14em;color:#d3ae65}
.victory-card{margin-top:12px;padding:12px;border:1px solid #4a7c55;border-radius:10px;background:#142519;color:#d8f1dd}
@media(max-width:420px){.lever-grid{grid-template-columns:1fr 1fr}.puzzle-piece{padding:14px 6px}}
.equipment-card.new-item{border-color:#e0b34f;box-shadow:0 0 0 2px rgba(224,179,79,.16) inset}.equipment-card.new-item small{color:#f2c75c}


/* v0.9 inventory & guidance polish */
.bag-card.completed-item{border:2px solid #ff3b30;background:linear-gradient(180deg,#5a1111,#321010);box-shadow:0 0 0 2px rgba(255,59,48,.18) inset,0 0 14px rgba(255,59,48,.18)}
.bag-card.completed-item .bag-name{color:#fff0ed;font-weight:900}.bag-card.completed-item .bag-meta{color:#ff8d84;font-weight:900}
.completed-banner{border:2px solid #ff3b30;background:#661515;color:#fff0ed;box-shadow:0 0 12px rgba(255,59,48,.22);font-weight:900}
.bag-status-guide{display:grid;gap:6px;margin:0 0 12px;padding:10px 12px;border:1px solid #655337;border-radius:10px;background:#15110d;font-size:.82rem;color:#cdbf9e}.bag-status-guide>strong{color:#f2dfb0;letter-spacing:.08em}.bag-status-guide span{display:block}.guide-new{color:#f2c75c}.guide-red{color:#ff6259}.puzzle-rule{margin:10px 0;padding:10px 12px;border-left:3px solid #d2a65a;background:#1b160f;color:#e8d7b1;border-radius:6px}.help-card h4{margin:14px 0 5px;color:#f1deb3}.help-card p{margin:0 0 10px;line-height:1.5;color:#cbbd9e}
/* v0.10 staged-route scene placeholders */
.scene-art.forestfork{background:linear-gradient(145deg,#3b4638,#242f25 55%,#0c120d)}
.scene-art.ridgefork{background:linear-gradient(145deg,#46504b,#283330 55%,#0d1211)}
.scene-art.cavefork{background:radial-gradient(circle at 62% 48%,rgba(108,126,128,.22) 0 6%,transparent 28%),linear-gradient(145deg,#353d3e,#191f21 55%,#080b0c)}
.scene-art.swampfork{background:radial-gradient(circle at 30% 60%,rgba(83,111,83,.25) 0 5%,transparent 30%),linear-gradient(145deg,#3a493e,#202c25 58%,#0b100d)}
.matching-card span,.dial-card span{display:block;margin-top:8px;font-weight:800;color:#ead8b3}

/* v0.11 staged Blackpeak hub */
.scene-art.mountainfork{background:radial-gradient(circle at 50% 28%,rgba(183,174,139,.12) 0 8%,transparent 34%),linear-gradient(145deg,#394047,#20272b 58%,#0b0e10)}

/* v0.11 MAP TEST — approved Journey Map interaction prototype */
.map-modal{width:min(720px,100%);max-height:94vh;background:#17120d}
.map-modal .modal-header{background:#17120d;border-bottom-color:#6f5435}.map-modal .modal-content{padding:10px}
.journey-map-test{display:flex;flex-direction:column;gap:8px}
.map-test-toolbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.map-test-toolbar .small-button{min-height:44px}.map-pinch-hint{margin-left:auto;color:#c9b795;font-size:12px}
.map-art-viewport{width:100%;height:auto;aspect-ratio:1122/1402;min-height:0;border-radius:10px;border:1px solid #7c5b31;background:#17120d;box-shadow:inset 0 0 30px rgba(0,0,0,.45)}
.map-viewport .approved-map-art{width:100%;height:100%;background-image:url('assets/art/journey_map_clean_test.png');background-size:100% 100%;background-position:center;background-repeat:no-repeat;transform-origin:50% 50%;transition:none}
.map-viewport .approved-map-art:before{display:none}
.approved-map-art svg{z-index:2}.approved-map-art .map-line{fill:none;stroke:#5f3e21;stroke-width:1.2;opacity:.62;stroke-dasharray:1.1 1.4}.approved-map-art .map-line.shortcut{stroke:#315a4c;stroke-width:1.45;stroke-dasharray:3 2}
.map-viewport .approved-map-art .journey-node{z-index:5;min-width:34px;min-height:34px;padding:3px 5px;border-radius:50%;background:#25180f;color:#f4deb0;border:2px solid #d4a955;box-shadow:0 2px 6px #0008}.map-viewport .approved-map-art .journey-node.discovered{opacity:.76;border-style:dashed}.map-viewport .approved-map-art .journey-node.current{border-color:#f7d877;box-shadow:0 0 0 3px rgba(247,216,119,.22),0 2px 7px #000}.map-viewport .approved-map-art .map-icon{font-size:16px}.map-viewport .approved-map-art .map-label{position:absolute;top:37px;left:50%;transform:translateX(-50%);display:none;min-width:82px;max-width:122px;padding:3px 5px;border-radius:5px;background:rgba(35,24,14,.9);color:#f6e5bb;font:700 9px/1.15 Georgia,serif;text-shadow:none;pointer-events:none}.map-viewport .approved-map-art .journey-node.current .map-label{display:block}
.approved-map-art .journey-node:hover .map-label,.approved-map-art .journey-node:focus .map-label,.approved-map-art .journey-node.selected .map-label,.approved-map-art .journey-node.current .map-label{display:block}
.map-subnode{position:absolute;z-index:4;transform:translate(-50%,-50%);width:18px;height:18px;border:0;background:transparent;color:#24170f;padding:0}.map-subnode .sub-dot{display:block;width:7px;height:7px;margin:auto;border-radius:50%;background:#ead29c;border:1.5px solid #452c18;box-shadow:0 0 0 1px rgba(255,244,210,.28)}.map-subnode.current .sub-dot{width:12px;height:12px;background:#5aa9e8;border-color:#102f48;box-shadow:0 0 0 3px rgba(90,169,232,.26)}.sub-label{display:none;position:absolute;left:50%;top:15px;transform:translateX(-50%);min-width:88px;max-width:138px;padding:3px 5px;border:1px solid #7a5b36;border-radius:5px;background:rgba(238,216,166,.96);color:#2b1c11;font:700 9px/1.12 Georgia,serif;white-space:normal;box-shadow:0 2px 5px #0005}.map-subnode.current .sub-label{display:block}.approved-map-art .map-subnode:hover .sub-label,.approved-map-art .map-subnode:focus .sub-label,.approved-map-art .map-subnode.selected .sub-label,.approved-map-art .map-subnode.current .sub-label,.approved-map-art .map-subnode.has-note .sub-label{display:block}.map-subnode .note-pin{right:-7px;top:-8px;transform:scale(.72)}
.approved-map-art.detail-fit .map-subnode{opacity:.8}.approved-map-art.detail-fit .map-subnode .sub-dot{width:6px;height:6px}.approved-map-art.detail-fit .map-subnode.current{opacity:1}
.approved-map-art.detail-mid .map-subnode{opacity:.94}.approved-map-art.detail-mid .map-subnode .sub-dot{width:8px;height:8px}.approved-map-art.detail-close .map-subnode{opacity:1}.approved-map-art.detail-close .map-subnode .sub-dot{width:9px;height:9px}
.map-player-pin{position:absolute;z-index:8;transform:translate(-50%,-100%);width:32px;height:32px;border-radius:50% 50% 50% 8px;rotate:-45deg;background:#48a8e8;border:3px solid #f4e7bf;color:#fff;display:grid;place-items:center;box-shadow:0 2px 8px #000b;pointer-events:none}.map-player-pin>span{position:absolute;left:21px;top:23px;rotate:45deg;padding:2px 5px;border-radius:4px;background:#162a39;color:white;font:700 9px/1 system-ui,sans-serif}
.map-location-drawer{margin:0;border-color:#715337;background:linear-gradient(180deg,#241c14,#1b1510);color:#f0dfbd}.map-location-drawer strong{font:700 23px/1.1 Georgia,serif;color:#f4ddb1}.map-location-drawer p{font-size:14px;line-height:1.45;color:#cdbb9a;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.map-drawer-head{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.map-state-pill{flex:0 0 auto;padding:4px 7px;border:1px solid #7e633e;border-radius:999px;color:#dbc38e;font:700 10px/1 system-ui,sans-serif}
.map-legend-panel{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:10px;border:1px solid #8b6a43;border-radius:8px;background:rgba(28,21,15,.96);color:#ead7b1;font-size:12px;box-shadow:0 6px 18px #0008}.map-legend-panel span{display:flex;align-items:center;gap:6px}.map-legend-panel i{display:inline-block;width:12px;height:12px;border-radius:50%}.legend-major{background:#25180f;border:2px solid #d4a955}.legend-small{background:#ead29c;border:2px solid #452c18}.legend-current{background:#5aa9e8;border:2px solid #102f48}.legend-route{border-radius:0!important;height:3px!important;background:#5f3e21}.legend-shortcut{border-radius:0!important;height:3px!important;background:repeating-linear-gradient(90deg,#315a4c 0 4px,transparent 4px 7px)}
.map-legend-overlay{position:absolute;z-index:20;right:10px;bottom:10px;width:min(280px,calc(100% - 20px))}
@media(max-width:420px){.map-modal .modal-content{padding:7px}.map-art-viewport{height:auto;min-height:0;aspect-ratio:1122/1402}.map-pinch-hint{width:100%;margin:0;text-align:center;font-size:11px}.map-test-toolbar{justify-content:center}.map-test-toolbar .small-button{font-size:12px;padding:7px 8px}.map-location-drawer strong{font-size:20px}.map-location-drawer p{font-size:13px}}

/* Journey Map test v3: fixed external controls and uncluttered label behaviour */
.map-art-viewport,.map-art-viewport *{user-select:none;-webkit-user-select:none}
.map-art-viewport .sub-label,.map-art-viewport .map-label{pointer-events:none}
.map-test-toolbar{position:relative;z-index:30;align-items:center}
.map-test-toolbar .map-zoom-button{min-width:46px;font-size:24px;line-height:1;padding:5px 10px}
.map-viewport .approved-map-art .journey-node.selected{border-color:#fff1b0;box-shadow:0 0 0 3px rgba(255,230,145,.32),0 2px 7px #000}
.map-subnode.selected .sub-dot{width:11px;height:11px;background:#f3d47c;border-color:#4d3018;box-shadow:0 0 0 3px rgba(243,212,124,.28)}
.approved-map-art.detail-close .map-subnode .sub-label{display:none}
.approved-map-art.detail-close .map-subnode:hover .sub-label,.approved-map-art.detail-close .map-subnode:focus .sub-label,.approved-map-art.detail-close .map-subnode.selected .sub-label,.approved-map-art.detail-close .map-subnode.current .sub-label,.approved-map-art.detail-close .map-subnode.has-note .sub-label{display:block}
@media(max-width:520px){.map-test-toolbar{gap:6px}.map-test-toolbar .small-button{min-height:42px;padding:7px 9px}.map-test-toolbar .map-zoom-button{min-width:42px;font-size:22px}.map-pinch-hint{order:10;width:100%;text-align:center;margin:0}}

/* Journey Map v4 interaction polish */
.approved-map-art .map-label,.approved-map-art .sub-label{display:none!important}
.map-floating-label{position:absolute;z-index:18;max-width:220px;padding:8px 12px;border:1px solid #8d693b;border-radius:8px;background:rgba(239,217,168,.97);color:#2a1b10;font:700 16px/1.15 Georgia,serif;text-align:center;box-shadow:0 4px 12px #0007;pointer-events:none}
.map-floating-label.hidden{display:none}
.map-art-viewport{overscroll-behavior:contain}
.map-location-drawer .action-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
@media(max-width:520px){.map-floating-label{font-size:15px;max-width:180px;padding:7px 10px}.map-location-drawer{position:sticky;bottom:0;z-index:35}.map-location-drawer .small-button{min-height:44px}}


/* v16 — locked Fatebound dark classic-pastel-sketch Journey Map skin.
   Interaction/coordinates remain unchanged from the tested overlay system. */
.map-modal{
  width:min(760px,100%);
  max-height:96vh;
  background:#111820;
  border:1px solid #8a6238;
  border-bottom:0;
  box-shadow:0 -10px 36px rgba(0,0,0,.55);
}
.map-modal .modal-header{
  background:
    linear-gradient(rgba(17,24,32,.96),rgba(12,18,26,.96)),
    repeating-linear-gradient(28deg,rgba(255,255,255,.018) 0 2px,transparent 2px 5px);
  border-bottom:1px solid #8a6238;
  padding:14px 16px;
}
.map-modal .modal-header h3{
  color:#f2d39a;
  font-family:Georgia,serif;
  font-size:27px;
  letter-spacing:.01em;
  text-shadow:0 1px 0 #000;
}
.map-modal .icon-button{
  border-color:#9b7243;
  background:#1b2530;
  color:#f4d7a4;
}
.map-modal .modal-content{
  padding:10px;
  background:
    radial-gradient(circle at 50% 0,rgba(55,80,103,.17),transparent 38%),
    linear-gradient(180deg,#101821,#0c1219 72%,#0b1017);
}
.journey-map-test{gap:10px}
.map-test-toolbar{
  padding:8px;
  border:1px solid #7a5937;
  border-radius:10px;
  background:
    linear-gradient(180deg,rgba(31,42,54,.96),rgba(20,29,39,.96)),
    repeating-linear-gradient(35deg,rgba(255,255,255,.02) 0 2px,transparent 2px 5px);
  box-shadow:inset 0 0 0 1px rgba(222,174,101,.09);
}
.map-test-toolbar .small-button{
  min-height:44px;
  border:1px solid #b07b3f;
  border-radius:7px;
  background:linear-gradient(180deg,#263544,#192633);
  color:#f2d7aa;
  font-family:Georgia,serif;
  box-shadow:inset 0 0 0 1px rgba(244,210,153,.08);
}
.map-test-toolbar .small-button:active,
.map-test-toolbar .small-button:focus-visible{
  background:#50351f;
  border-color:#e2ab58;
  color:#fff0c9;
}
.map-pinch-hint{color:#c5b18c;font-family:Georgia,serif}
.map-art-viewport{
  border:2px solid #9a6d3d;
  border-radius:8px;
  background:#0b1118;
  box-shadow:
    inset 0 0 0 1px #2d1f13,
    inset 0 0 30px rgba(0,0,0,.45),
    0 2px 8px rgba(0,0,0,.35);
}
.map-viewport .approved-map-art .journey-node{
  background:#1a2027;
  color:#eac487;
  border:2px solid #b77d37;
  box-shadow:0 2px 6px #0009,inset 0 0 0 1px rgba(234,196,135,.1);
}
.map-viewport .approved-map-art .journey-node.current{
  border-color:#ffd27b;
  box-shadow:0 0 0 3px rgba(255,199,99,.22),0 2px 7px #000;
}
.map-subnode .sub-dot{
  background:#ead8aa;
  border-color:#402c1a;
  box-shadow:0 0 0 1px rgba(255,246,218,.32);
}
.map-subnode.current .sub-dot{
  background:#5da7df;
  border-color:#132c3f;
}
.map-player-pin{
  background:#4b9bd1;
  border-color:#f2deb1;
  box-shadow:0 2px 8px #000c;
}
.map-floating-label{
  border:1px solid #9b7040;
  background:rgba(28,38,48,.96);
  color:#f3ddb2;
  box-shadow:0 4px 14px #000a;
}
.map-location-drawer{
  margin:0;
  border:1px solid #9a6d3d;
  border-radius:9px;
  background:
    linear-gradient(180deg,rgba(239,217,174,.985),rgba(218,190,143,.985)),
    repeating-linear-gradient(25deg,rgba(70,45,20,.035) 0 1px,transparent 1px 4px);
  color:#2a1c12;
  box-shadow:inset 0 0 0 1px rgba(255,244,216,.55);
}
.map-location-drawer strong{color:#2b1a10;font-size:24px}
.map-location-drawer p{color:#4f3b27}
.map-location-drawer .muted{color:#6b5439}
.map-state-pill{
  color:#5b431f;
  border-color:#9b7845;
  background:rgba(255,246,218,.4);
}
.map-location-drawer .small-button{
  border-color:#7f5a2e;
  background:#1b2d3d;
  color:#f3ddb2;
  font-family:Georgia,serif;
}
.map-location-drawer .small-button:first-child{
  background:#6a3f1f;
  border-color:#b47b3a;
}
.map-legend-panel{
  border-color:#9a7040;
  background:rgba(17,25,33,.97);
  color:#ecd4a6;
}
@media(max-width:520px){
  .map-modal .modal-header h3{font-size:24px}
  .map-test-toolbar{padding:7px 6px;gap:6px}
  .map-test-toolbar .small-button{font-size:12px;padding:7px 8px}
  .map-location-drawer strong{font-size:21px}
}


/* v26 — mobile-first Journey Map pass from live phone testing */
.map-tool-short{display:none}
.map-drawer-toggle{display:none}

/* Markers remain a stable screen size when the illustrated map is zoomed. */
.map-viewport .approved-map-art .journey-node{
  transform:translate(-50%,-50%) scale(var(--map-ui-inverse,1));
  transform-origin:center;
}
.map-subnode{
  transform:translate(-50%,-50%) scale(var(--map-ui-inverse,1));
  transform-origin:center;
}
.map-player-pin{
  transform:translate(-50%,-100%) scale(var(--map-ui-inverse,1));
  transform-origin:50% 100%;
}

@media(max-width:520px){
  .map-modal{
    width:100vw;
    max-width:100vw;
    height:100dvh;
    max-height:100dvh;
    display:flex;
    flex-direction:column;
    overflow:hidden;
    border-radius:0;
    border-left:0;
    border-right:0;
  }
  .map-modal .modal-header{
    flex:0 0 auto;
    min-height:40px;
    padding:5px 8px 5px 10px;
  }
  .map-modal .modal-header h3{font-size:20px;line-height:1.05}
  .map-modal .icon-button{width:34px;height:34px;min-height:34px;padding:4px;font-size:20px}
  .map-modal .modal-content{
    flex:1 1 auto;
    min-height:0;
    overflow:hidden;
    padding:4px 4px max(4px,env(safe-area-inset-bottom));
  }
  .journey-map-test{
    height:100%;
    min-height:0;
    gap:4px;
  }
  .map-test-toolbar{
    flex:0 0 auto;
    display:flex;
    flex-wrap:nowrap;
    justify-content:space-between;
    gap:3px;
    padding:3px;
    border-radius:7px;
    overflow:visible;
  }
  .map-test-toolbar .small-button{
    flex:0 1 auto;
    min-width:0;
    min-height:32px;
    height:32px;
    padding:3px 6px;
    border-radius:5px;
    font-size:10.5px;
    line-height:1;
    white-space:nowrap;
  }
  .map-test-toolbar .map-tool-center{flex:1 1 auto}
  .map-test-toolbar .map-zoom-button{
    flex:0 0 34px;
    min-width:34px;
    width:34px;
    padding:2px;
    font-size:20px;
  }
  .map-tool-long{display:none}
  .map-tool-short{display:inline}
  .map-pinch-hint{display:none}

  /* Keep the map itself at its correct parchment aspect ratio and give it the full phone width. */
  .map-art-viewport{
    flex:0 0 auto;
    width:100%;
    height:auto;
    aspect-ratio:1122/1402;
    min-height:0;
    border-width:1px;
    border-radius:6px;
    margin:0;
  }

  /* Smaller visible markers, with larger transparent touch areas. Zoom separates the targets spatially. */
  .map-viewport .approved-map-art .journey-node{
    min-width:26px;
    min-height:26px;
    width:26px;
    height:26px;
    padding:1px;
    border-width:1.5px;
  }
  .map-viewport .approved-map-art .journey-node::before{
    content:"";
    position:absolute;
    inset:-6px;
    border-radius:50%;
  }
  .map-viewport .approved-map-art .map-icon{font-size:12px}
  .map-subnode{
    width:28px;
    height:28px;
  }
  .approved-map-art.detail-fit .map-subnode .sub-dot{width:5px;height:5px}
  .approved-map-art.detail-mid .map-subnode .sub-dot{width:6px;height:6px}
  .approved-map-art.detail-close .map-subnode .sub-dot{width:7px;height:7px}
  .map-subnode.selected .sub-dot{width:8px;height:8px}
  .map-player-pin{width:27px;height:27px;border-width:2px}
  .map-player-pin>span{left:19px;top:19px;font-size:8px;padding:2px 4px}
  .map-floating-label{font-size:12px;max-width:150px;padding:5px 7px}

  /* Location information is now a bottom sheet over the map instead of consuming permanent map space. */
  .map-location-drawer{
    position:absolute;
    left:4px;
    right:4px;
    bottom:4px;
    z-index:35;
    margin:0;
    padding:0 10px 9px;
    max-height:64px;
    overflow:hidden;
    border-radius:10px;
    transition:max-height .18s ease,box-shadow .18s ease;
    box-shadow:0 -4px 14px rgba(0,0,0,.42),inset 0 0 0 1px rgba(255,244,216,.55);
  }
  .map-location-drawer.expanded{
    max-height:min(42dvh,330px);
    overflow:auto;
    padding-bottom:12px;
  }
  .map-drawer-toggle{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    width:100%;
    height:23px;
    padding:0;
    border:0;
    background:transparent;
    color:#5b431f;
    touch-action:manipulation;
  }
  .map-drawer-grip{display:block;width:38px;height:4px;border-radius:999px;background:rgba(77,54,31,.45)}
  .map-drawer-chevron{font:800 13px/1 system-ui,sans-serif}
  .map-drawer-body{min-height:36px}
  .map-location-drawer strong{font-size:17px;line-height:1.05}
  .map-location-drawer .muted{font-size:11px;line-height:1.25;margin-top:2px}
  .map-location-drawer p{font-size:12px;line-height:1.3;margin:5px 0 0;-webkit-line-clamp:2}
  .map-location-drawer .action-row{margin-top:7px;gap:6px}
  .map-location-drawer .small-button{min-height:34px;padding:6px 8px;font-size:11px}
  .map-state-pill{font-size:8px;padding:3px 5px}
  .map-legend-overlay{right:6px;bottom:70px;width:min(250px,calc(100% - 12px));font-size:10px;padding:8px;gap:5px}
}

@media(max-width:380px){
  .map-test-toolbar .small-button{font-size:9.5px;padding-left:4px;padding-right:4px}
  .map-test-toolbar .map-zoom-button{flex-basis:31px;min-width:31px;width:31px}
  .map-location-drawer{left:3px;right:3px;bottom:3px}
}


/* v29 — mobile minor-location visibility/touch pass */
@media(max-width:520px){
  /* Keep a finger-friendly invisible target while making the visible dots clearer. */
  .map-subnode{
    width:44px;
    height:44px;
  }
  .approved-map-art.detail-fit .map-subnode .sub-dot{
    width:9px;
    height:9px;
    border-width:1.5px;
  }
  .approved-map-art.detail-mid .map-subnode .sub-dot{
    width:11px;
    height:11px;
  }
  .approved-map-art.detail-close .map-subnode .sub-dot{
    width:13px;
    height:13px;
  }
  .map-subnode.selected .sub-dot{
    width:14px;
    height:14px;
  }
  .map-subnode.current .sub-dot{
    width:15px;
    height:15px;
  }

  /* The 44px button is the invisible touch target; only the small inner dot is visible. */
  .map-subnode::before{
    content:"";
    position:absolute;
    inset:0;
    border-radius:50%;
    background:transparent;
  }
}


/* v30 — final mobile minor-dot size correction after v29 phone test */
@media(max-width:520px){
  .approved-map-art.detail-fit .map-subnode .sub-dot{
    width:11px !important;
    height:11px !important;
  }
  .approved-map-art.detail-mid .map-subnode .sub-dot{
    width:13px !important;
    height:13px !important;
  }
  .approved-map-art.detail-close .map-subnode .sub-dot{
    width:15px !important;
    height:15px !important;
  }
  .map-subnode.selected .sub-dot{
    width:16px !important;
    height:16px !important;
  }
  .map-subnode.current .sub-dot{
    width:17px !important;
    height:17px !important;
  }

  /* Preserve a large tap target without enlarging the visible marker beyond the sizes above. */
  .map-subnode{
    width:44px !important;
    height:44px !important;
  }
}


/* =========================================================
   Fatebound gameplay framework v0.12
   Locked Adventure layout and special-state presentation.
   Journey Map v31 styles below/above remain untouched.
   ========================================================= */

:root{
  --fb-ink:#0d1620;
  --fb-ink2:#172331;
  --fb-gold:#c99a4c;
  --fb-gold-bright:#f0bd62;
  --fb-parchment:#ead3a7;
  --fb-parchment-ink:#291d14;
  --fb-red:#7f2d28;
}

#gameScreen.active{
  display:grid;
  grid-template-rows:minmax(245px,38dvh) minmax(0,1fr) auto;
  height:100dvh;
  min-height:0;
  overflow:hidden;
  background:#0d1115;
}
.gameplay-hidden-hud{display:none!important}

.adventure-illustration{
  height:auto!important;
  min-height:0;
  padding:0;
  align-items:flex-end;
  border-bottom:2px solid #8c6a37;
  box-shadow:inset 0 -26px 42px rgba(0,0,0,.22);
}
.adventure-illustration .scene-shade{
  background:linear-gradient(to bottom,rgba(0,0,0,.02),rgba(0,0,0,.05) 70%,rgba(0,0,0,.28));
}
.adventure-illustration .region-label{
  position:absolute;
  left:12px;
  bottom:9px;
  display:none;
}
.scene-utility{
  position:absolute;
  z-index:4;
  right:9px;
  top:max(9px,env(safe-area-inset-top));
  display:flex;
  gap:6px;
}
.scene-tool{
  min-height:34px;
  border:1px solid #9c773e;
  border-radius:7px;
  background:rgba(12,20,28,.88);
  color:#f0dbb0;
  padding:6px 9px;
  font:700 11px/1 system-ui,sans-serif;
  letter-spacing:.04em;
  box-shadow:0 2px 8px #0008;
}
.scene-tool span{margin-left:3px}

.adventure-story{
  min-height:0;
  padding:0 10px calc(2px + env(safe-area-inset-bottom));
  display:grid;
  grid-template-rows:minmax(132px,27dvh) minmax(0,1fr);
  gap:8px;
  overflow:hidden;
  background:
    linear-gradient(rgba(14,20,27,.96),rgba(10,15,20,.98)),
    radial-gradient(circle at 20% 10%,#223141,transparent 45%);
}
.story-copy{
  position:relative;
  min-height:0;
  margin-top:8px;
  overflow:hidden;
  border:2px solid #8b6a3e;
  border-radius:9px;
  background:
    linear-gradient(rgba(238,215,173,.97),rgba(226,198,150,.97)),
    repeating-linear-gradient(15deg,#0000 0 8px,rgba(80,49,19,.06) 9px 10px);
  color:var(--fb-parchment-ink);
  box-shadow:inset 0 0 0 2px rgba(54,34,17,.2),0 2px 7px #0008;
}
.story-head{display:none}
.narrative-scroll{
  height:100%;
  overflow:auto;
  overscroll-behavior:contain;
  scrollbar-width:thin;
  padding:18px 20px;
}
.narration{
  color:#291d14;
  font-size:clamp(16px,4.2vw,20px);
  line-height:1.45;
  margin:0;
}
.notice{
  border-left-color:#8d5b20;
  background:rgba(112,69,26,.12);
  color:#4a2d17;
  margin-top:10px;
}

.choices{
  min-height:0;
  margin:0;
  display:grid;
  gap:7px;
  align-content:stretch;
  overflow:hidden;
}
.choices[data-count="1"]{grid-template-rows:1fr}
.choices[data-count="2"]{grid-template-rows:repeat(2,1fr)}
.choices[data-count="3"]{grid-template-rows:repeat(3,1fr)}
.choices[data-count="4"]{grid-template-rows:repeat(4,minmax(0,1fr))}
.choices[data-count="4"] .choice{min-height:0;padding:5px 8px}
.choices[data-count="4"] .choice-icon{height:30px;min-width:32px;font-size:17px}
.choices[data-count="4"] .choice-label{font-size:clamp(14px,3.8vw,18px)}
.choices[data-count="4"] .choice-arrow{font-size:24px}
.choices.choice-scroll{
  display:flex;
  flex-direction:column;
  overflow-y:auto;
  overscroll-behavior:contain;
  padding-right:2px;
}
.choice{
  width:100%;
  min-height:44px;
  margin:0;
  padding:7px 9px;
  display:grid;
  grid-template-columns:44px minmax(0,1fr) 26px;
  gap:9px;
  align-items:center;
  border:1px solid #a87a3b;
  border-radius:7px;
  background:linear-gradient(180deg,#182432,#101923);
  color:#f4e6c8;
  text-align:left;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.45);
}
.choice-scroll .choice{min-height:56px;flex:0 0 auto}
.choice:first-child:not(.locked-choice){
  border-color:#e7a84e;
  box-shadow:0 0 0 1px #e7a84e,inset 0 0 12px rgba(210,119,36,.15);
}
.choice-icon{
  min-width:38px;
  height:38px;
  display:grid;
  place-items:center;
  border-right:1px solid #6c5131;
  color:#e6b05a;
  font-size:20px;
}
.choice-copy{min-width:0;display:flex;flex-direction:column;gap:2px}
.choice-label{
  display:block;
  overflow:hidden;
  white-space:nowrap;
  text-overflow:ellipsis;
  font-size:clamp(16px,4.2vw,22px);
  line-height:1.08;
}
.choice-requirement{
  color:#bfae91;
  font-size:11px;
  line-height:1.15;
}
.choice-arrow{
  color:#f1d79e;
  font-size:30px;
  line-height:1;
  text-align:center;
}
.choice.special{border-color:#a88648;background:linear-gradient(180deg,#1c2932,#151f27)}
.choice.danger{border-color:#9b5b4c}
.choice.locked-choice{
  opacity:.58;
  filter:saturate(.6);
  background:#111821;
}
.choice.locked-choice .choice-label{color:#bfb8ab}
.choice:disabled{cursor:not-allowed}

.fatebound-bottom-nav{
  position:relative;
  left:auto;
  transform:none;
  bottom:auto;
  width:100%;
  min-height:72px;
  border-top:2px solid #9c7137;
  background:#0d1620;
  padding:0 0 max(3px,env(safe-area-inset-bottom));
}
.fatebound-bottom-nav button{
  position:relative;
  min-height:68px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:3px;
  border-right:1px solid #5f452a;
  color:#e6d1a7;
  font:700 11px/1 Georgia,serif;
  letter-spacing:0;
  text-transform:none;
  padding:5px 2px;
}
.fatebound-bottom-nav button:last-child{border-right:0}
.fatebound-bottom-nav .nav-glyph{
  display:block;
  color:#d6a454;
  font-size:24px;
  line-height:1;
}
.fatebound-bottom-nav button.active{
  color:#fff1ca;
  background:linear-gradient(180deg,#362317,#21170f);
  box-shadow:inset 0 0 0 2px #d49336,0 0 13px rgba(220,135,47,.35);
}
.fatebound-bottom-nav button.active .nav-glyph{color:#f0b95c}

/* Special gameplay states */
.gameplay-state-modal{
  width:min(560px,100%);
  max-height:92dvh;
  border-color:#8c6737;
  background:#101923;
}
.gameplay-state-modal .modal-header{
  background:#101923;
  border-bottom-color:#6b4f2e;
}
.gameplay-state-modal .modal-header h3{color:#f0d8a8}
.gameplay-state-modal .modal-content{background:#101923}

.check-panel,.rest-system-card,.defeat-panel,.weapon-selector{
  border:1px solid #75572f;
  border-radius:10px;
  padding:14px;
  background:linear-gradient(180deg,#14202b,#0e171f);
}
.check-heading,.rest-counter{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px;
}
.check-heading>div{display:flex;flex-direction:column;gap:2px;flex:1}
.check-heading strong,.rest-counter strong{font-size:21px;color:#f0d8a8}
.check-heading span,.rest-counter span{color:#c1aa82;font-size:13px}
.check-stat-icon{
  width:54px;height:54px;display:grid;place-items:center;
  border:1px solid #9a7137;border-radius:8px;
  color:#e5ad53;font-size:28px;background:#192633;
}
.check-equation{
  display:grid;
  grid-template-columns:1fr auto 1fr auto 1fr;
  gap:8px;align-items:center;margin:15px 0;text-align:center
}
.check-equation.preview{grid-template-columns:1fr auto 1fr auto 1fr}
.check-equation>span{
  min-height:64px;border:1px solid #76582f;border-radius:8px;background:#192633;
  display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:28px;color:#f5dfb2
}
.check-equation small{font-size:10px;color:#b9a47e;text-transform:uppercase;letter-spacing:.08em}
.check-target{text-align:center;color:#cbb891;margin:4px 0 10px}
.check-outcome{
  text-align:center;padding:11px;margin:8px 0 12px;border:1px solid #c6923f;
  color:#f4cf81;font-size:24px;font-weight:800;letter-spacing:.08em
}
.check-panel.failure .check-outcome{border-color:#8f3d35;background:#3b1717;color:#ef9b8c}
.check-panel.success .check-outcome{background:#2b2414}

.rest-preview{
  display:grid;grid-template-columns:1fr auto;gap:8px 12px;
  margin:12px 0;padding:12px;border:1px solid #57462f;border-radius:8px;background:#111a22
}
.rest-preview span{color:#c9b38d}.rest-preview b{color:#f0ddb7}
.deep-rest-card{box-shadow:inset 0 0 24px rgba(74,126,143,.16)}

.defeat-panel{text-align:center}
.defeat-mark{font-size:44px;color:#b55248;margin-bottom:5px}
.defeat-panel>strong{font-size:24px;color:#e5998d}
.preserved-progress{
  margin:14px 0;display:grid;grid-template-columns:1fr 1fr;gap:7px;text-align:left
}
.preserved-progress span{
  border:1px solid #465843;border-radius:6px;padding:7px;background:#132018;color:#cce0c6;font-size:12px
}

.combat-status-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.combatant-card{
  display:flex;flex-direction:column;gap:5px;padding:10px;border:1px solid #6c5231;border-radius:8px;background:#121c25
}
.combatant-card strong{color:#e7c987;font-size:17px}
.combatant-card span{font-size:13px;color:#d5c5a6}
.combatant-card.enemy{border-color:#6a4039}
.combat-actions{display:grid;gap:8px;margin-top:12px}
.combat-attack-row{display:grid;grid-template-columns:.9fr 1.35fr;gap:8px}
.combat-action,.active-weapon-chip{
  min-height:58px;border:1px solid #8c6938;border-radius:8px;background:#172432;color:#f0dec0;
  padding:9px 11px;text-align:left
}
.combat-action{display:grid;grid-template-columns:34px minmax(0,1fr);column-gap:8px;align-items:center}
.combat-action span{grid-row:1/3;font-size:24px;color:#e4ad58}
.combat-action b{font-size:17px}
.combat-action small{color:#bba98a}
.primary-combat{border-color:#e0a24c;box-shadow:inset 0 0 0 1px #e0a24c}
.danger-combat{border-color:#87483f;background:#2d191a}
.active-weapon-chip{display:flex;flex-direction:column;justify-content:center}
.active-weapon-chip small{color:#ac9878}
.active-weapon-chip strong{font-size:15px}
.active-weapon-chip span{color:#e1ad59;font-size:11px;margin-top:2px}
.combat-luck-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}

.weapon-selector{display:grid;gap:8px}
.weapon-choice{
  width:100%;display:grid;grid-template-columns:44px minmax(0,1fr) auto 26px;gap:8px;align-items:center;
  min-height:62px;border:1px solid #6a5132;border-radius:8px;background:#172431;color:#ecddc0;padding:8px
}
.weapon-choice.active{border-color:#e2a44e;box-shadow:inset 0 0 0 1px #e2a44e}
.weapon-choice-icon{font-size:25px;color:#dca454}
.weapon-choice span:nth-child(2){display:flex;flex-direction:column;text-align:left}
.weapon-choice small{color:#b9a486;margin-top:2px}
.weapon-choice b{font-size:20px;color:#f1d89e}
.weapon-choice i{font-style:normal;color:#e5ad54;font-size:21px}

/* Keep the approved Journey Map marker sizing locked exactly as v31. */
@media(max-width:520px){
  #gameScreen.active{grid-template-rows:minmax(220px,37dvh) minmax(0,1fr) auto}
  .adventure-story{grid-template-rows:minmax(125px,26dvh) minmax(0,1fr);padding-left:8px;padding-right:8px}
  .narrative-scroll{padding:15px 16px}
  .scene-tool span{display:none}
  .scene-tool{min-width:35px;padding:6px 8px}
}
@media(max-width:380px){
  #gameScreen.active{grid-template-rows:minmax(205px,35dvh) minmax(0,1fr) auto}
  .adventure-story{grid-template-rows:minmax(118px,25dvh) minmax(0,1fr)}
  .choice{grid-template-columns:36px minmax(0,1fr) 22px;padding:6px}
  .choice-icon{min-width:32px;height:32px;font-size:17px}
  .choice-label{font-size:15px}
  .fatebound-bottom-nav button{min-height:62px;font-size:10px}
  .fatebound-bottom-nav .nav-glyph{font-size:21px}
}


/* v0.13 Known Route travel integration. Ordinary v31 map sizing/interaction remains unchanged. */
.map-player-pin.known-route-moving{transition:left var(--known-route-duration,900ms) linear,top var(--known-route-duration,900ms) linear}
.map-modal.known-route-travelling [data-mapnode],
.map-modal.known-route-travelling [data-mapscene],
.map-modal.known-route-travelling .map-test-toolbar button{pointer-events:none}
.known-route-status{display:flex;flex-direction:column;gap:3px}
.known-route-status strong{color:#ead4a5}

/* v0.16 — one authoritative current-location indicator. The former floating "You" pin is retired. */
.map-current-location{position:absolute;z-index:8;transform:translate(-50%,-50%);width:22px;height:22px;border:0;background:transparent;padding:0;pointer-events:none}
.map-current-location .sub-dot{display:block;width:12px;height:12px;margin:5px;border-radius:50%;background:#5aa9e8;border:2px solid #102f48;box-shadow:0 0 0 3px rgba(90,169,232,.28),0 2px 7px rgba(0,0,0,.45)}
.map-current-location.known-route-moving{transition:left var(--known-route-duration,900ms) linear,top var(--known-route-duration,900ms) linear}


/* v0.18 Fatebound franchise navigation lock */
.scene-utility{left:10px;right:10px;justify-content:space-between;align-items:flex-start;pointer-events:none}
.scene-tool{pointer-events:auto}
.settings-tool{order:-1}
.audio-tool{margin-left:auto}
.fatebound-bottom-nav{grid-template-columns:repeat(5,minmax(0,1fr));}
.fatebound-bottom-nav button span:last-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
@media(max-width:380px){
  .fatebound-bottom-nav button{font-size:9px;padding-inline:1px}
  .fatebound-bottom-nav .nav-glyph{font-size:20px}
}

/* v0.19 — locked Start + Character Selection integration */
.fatebound-title-screen,.character-select-screen{position:relative;min-height:100dvh;overflow:hidden;background:#07101a;color:#f5dfb2}
.fatebound-title-screen.active,.character-select-screen.active{display:block}
.fatebound-title-screen .title-art,.character-select-bg{position:absolute;inset:0;background:radial-gradient(circle at 78% 15%,rgba(246,214,142,.25),transparent 14%),linear-gradient(to bottom,rgba(9,21,34,.08),rgba(8,14,21,.32) 55%,rgba(6,9,13,.86)),linear-gradient(145deg,#1a3550,#0d2234 46%,#09131f 68%,#050b11);}
.fatebound-title-screen .title-art:before,.character-select-bg:before{content:"";position:absolute;inset:0;background:linear-gradient(155deg,transparent 0 58%,rgba(10,17,23,.2) 58% 61%,transparent 61%),radial-gradient(ellipse at 50% 70%,rgba(215,143,51,.18),transparent 38%);}
.title-layout,.character-select-layout{position:relative;z-index:2;min-height:100dvh;padding:max(18px,env(safe-area-inset-top)) 18px max(18px,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center}
.title-layout{justify-content:flex-start;padding-top:max(46px,calc(env(safe-area-inset-top) + 28px))}
.franchise-lockup{display:flex;flex-direction:column;align-items:center;width:100%;text-align:center;text-shadow:0 2px 3px #000b}
.compass-mark{position:relative;width:112px;height:112px;margin:0 auto 4px;border:2px solid #d6a24e;border-radius:50%;box-shadow:0 0 0 3px rgba(33,21,12,.55),inset 0 0 0 4px #1a2733;background:radial-gradient(circle,#f3cf82 0 5%,#2a1a10 6% 8%,#152433 9% 38%,#d9a64e 39% 41%,transparent 42%)}
.compass-mark:before,.compass-mark:after{content:"";position:absolute;left:50%;top:50%;background:#efc673;transform-origin:center;filter:drop-shadow(0 1px 1px #000)}
.compass-mark:before{width:8px;height:86px;transform:translate(-50%,-50%);clip-path:polygon(50% 0,100% 48%,65% 43%,50% 100%,35% 43%,0 48%)}
.compass-mark:after{width:86px;height:8px;transform:translate(-50%,-50%);clip-path:polygon(0 50%,48% 0,43% 35%,100% 50%,43% 65%,48% 100%)}
.compass-mark i{position:absolute;inset:24px;border:1px solid #dfad5a;border-radius:50%}
.compass-mark span{position:absolute;font-weight:800;color:#e6b45c;font-size:17px}
.compass-n{left:50%;top:-25px;transform:translateX(-50%)}.compass-s{left:50%;bottom:-25px;transform:translateX(-50%)}.compass-w{left:-28px;top:50%;transform:translateY(-50%)}.compass-e{right:-28px;top:50%;transform:translateY(-50%)}
.compass-mark.compact{width:82px;height:82px}.compass-mark.compact:before{height:62px}.compass-mark.compact:after{width:62px}.compass-mark.compact i{inset:18px}.compass-mark.compact span{font-size:14px}.compass-mark.compact .compass-n{top:-20px}.compass-mark.compact .compass-s{bottom:-20px}.compass-mark.compact .compass-w{left:-23px}.compass-mark.compact .compass-e{right:-23px}
.fatebound-wordmark{margin-top:18px;font-size:clamp(50px,12vw,78px);line-height:.9;font-weight:800;letter-spacing:.015em;color:#dca354;-webkit-text-stroke:1px #5b3212;text-shadow:0 2px 0 #43250f,0 5px 10px #000a}
.fatebound-subtitle{display:flex;align-items:center;gap:8px;width:min(92%,480px);margin-top:10px;font-size:clamp(18px,4.5vw,27px);font-weight:700;letter-spacing:.04em;color:#efc77e}
.fatebound-subtitle span{height:1px;flex:1;background:#d49d4d}
.adventure-banner,.character-banner{width:min(92%,500px);margin-top:26px;padding:12px 18px;border:2px solid #7d4e1f;background:linear-gradient(180deg,#f0cf8f,#d8ae66);color:#3c2717;text-align:center;font-weight:800;font-size:clamp(18px,4.5vw,27px);box-shadow:0 3px 10px #0008,inset 0 0 0 2px rgba(255,241,194,.45);clip-path:polygon(2% 9%,7% 0,93% 0,98% 9%,100% 50%,98% 91%,93% 100%,7% 100%,2% 91%,0 50%)}
.title-menu{width:min(82%,430px);margin-top:auto;margin-bottom:20px;display:grid;gap:10px}
.title-menu-button{min-height:58px;border:2px solid #b27b35;background:linear-gradient(180deg,#1b2c3b,#101b26);color:#f2deb8;font-size:clamp(20px,5vw,29px);box-shadow:inset 0 0 0 2px #0a1016,0 2px 8px #0008}
.title-menu-button span{display:inline-block;min-width:72%}.title-menu-primary{background:linear-gradient(180deg,#723d1d,#4d2918);border-color:#e5a349;box-shadow:0 0 12px rgba(230,149,55,.45),inset 0 0 0 2px #2b160d}
.version-note{opacity:.45;font-size:10px;letter-spacing:.04em;text-align:center}
.character-select-layout{padding-top:max(28px,calc(env(safe-area-inset-top) + 12px));justify-content:flex-start}
.character-lockup .fatebound-wordmark{font-size:clamp(42px,10vw,64px);margin-top:15px}.character-lockup .fatebound-subtitle{font-size:clamp(16px,4vw,22px)}
.character-banner{margin-top:18px}
.character-cards{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:12px;min-height:0;flex:1;margin:22px 0 16px}
.character-card{position:relative;padding:0;overflow:hidden;border:3px solid #73634d;background:#0e151c;min-height:0;box-shadow:0 3px 10px #0008}
.character-card img{width:100%;height:100%;object-fit:cover;display:block}
.character-card.selected{border-color:#ffb03b;box-shadow:0 0 0 2px #fff0a6,0 0 18px rgba(255,147,32,.7)}
.character-actions{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:12px}
.character-action{min-height:58px;border:2px solid #9a6c32;color:#f3deb7;font-size:clamp(19px,4.4vw,27px);font-weight:700;background:linear-gradient(180deg,#182737,#101b26)}
.character-action.primary-action{background:linear-gradient(180deg,#783e1d,#512a17);border-color:#d38b38}
@media(max-width:380px){.title-layout{padding-left:12px;padding-right:12px}.compass-mark{width:92px;height:92px}.compass-mark:before{height:72px}.compass-mark:after{width:72px}.fatebound-wordmark{font-size:45px}.title-menu{width:90%}.title-menu-button{min-height:52px}.character-cards{gap:8px;margin-top:14px}.character-action{min-height:52px;font-size:17px}}
.fatebound-bottom-nav .nav-glyph{width:34px;height:34px;display:grid;place-items:center;overflow:hidden}
.fatebound-bottom-nav .nav-glyph img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.95) brightness(.98)}
.fatebound-bottom-nav button.active .nav-glyph img{filter:saturate(1.12) brightness(1.1) drop-shadow(0 0 5px rgba(235,151,49,.55))}

/* Locked Character Status visual language */
.hero-status-page{color:#2b1d13;background:#d8bb83;border:2px solid #835a2a;border-radius:9px;padding:10px;background-image:linear-gradient(rgba(246,224,181,.96),rgba(226,197,145,.96))}
.hero-status-head{display:grid;grid-template-columns:92px 1fr;gap:12px;align-items:center;padding:8px;border:1px solid #8c6638;background:#ead1a1}.hero-status-head img{width:92px;height:92px;object-fit:cover;border:2px solid #624321}.hero-status-head h3{margin:0;font-size:34px}.hero-status-head span{font-size:20px}
.hero-stat-list{margin-top:10px;border:1px solid #9b784b;background:#edd8ae}.hero-stat{display:grid;grid-template-columns:58px 1fr minmax(130px,1.25fr);gap:10px;align-items:center;padding:10px;border-bottom:1px solid rgba(100,68,35,.24)}.hero-stat:last-child{border-bottom:0}.hero-stat-icon{width:50px;height:50px;display:grid;place-items:center;border:2px solid #583c24;background:#171c23;color:#e7ad55;font-size:28px}.hero-stat div{display:flex;flex-direction:column}.hero-stat b{font-size:18px}.hero-stat strong{font-size:29px;font-weight:500}.hero-stat p{margin:0;font-size:15px;line-height:1.25;border-left:1px solid rgba(100,68,35,.25);padding-left:12px}.hero-section{margin-top:10px;border:1px solid #8b6536;background:#eed6a8}.hero-section h4{margin:0;padding:5px 10px;background:#15202a;color:#f1dfb7;border-bottom:1px solid #8b6536;font-size:18px}.hero-improvement{display:flex;gap:10px;align-items:center;padding:8px 10px;border-bottom:1px solid rgba(100,68,35,.2)}.hero-improvement span{font-size:28px}.hero-improvement div{display:flex;flex-direction:column}.hero-improvement small{font-size:13px}.hero-empty,.hero-condition{padding:12px}.hero-condition{display:flex;flex-direction:column;gap:4px}.hero-lower-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media(max-width:420px){.hero-stat{grid-template-columns:46px 1fr}.hero-stat p{grid-column:2;border-left:0;padding-left:0;font-size:13px}.hero-stat-icon{width:42px;height:42px;font-size:22px}.hero-stat strong{font-size:24px}.hero-lower-grid{grid-template-columns:1fr}.hero-status-head{grid-template-columns:78px 1fr}.hero-status-head img{width:78px;height:78px}}

/* Locked Journal/book presentation */
.journal-book{border:2px solid #805a2b;border-radius:8px;background:#d8bc86;color:#2b1d13;overflow:hidden;background-image:linear-gradient(rgba(239,216,171,.97),rgba(219,188,132,.97))}
.journal-tabs-six{display:grid;grid-template-columns:repeat(6,1fr);gap:0;border-bottom:2px solid #765127;background:#caa76a}.journal-tab{min-width:0;min-height:72px;border:0;border-right:1px solid #79552c;background:#d9bb82;color:#382617;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-size:24px}.journal-tab:last-child{border-right:0}.journal-tab span{font-size:10px;font-weight:700;line-height:1.05;text-align:center}.journal-tab.active{background:#f1dcae;color:#2b1a0e;box-shadow:inset 0 0 0 3px #e1a94d,0 0 10px rgba(224,164,68,.35)}
.journal-book-body{padding:12px;min-height:360px}.journal-detail-card{border:1px solid #9a7444;background:rgba(247,226,183,.68);padding:12px;min-height:330px}.journal-detail-card>h3{font-size:28px;margin:0 0 12px}.journal-entry{padding:10px 8px;border-bottom:1px solid rgba(99,65,31,.22)}.journal-entry:last-child{border-bottom:0}.journal-entry h4{font-size:19px;margin:0 0 5px}.journal-entry p{margin:0;line-height:1.45}.journal-book .player-note{border-color:rgba(99,65,31,.3);color:#2b1d13}.journal-book .muted{color:#715b42}
@media(max-width:420px){.journal-tabs-six{grid-template-columns:repeat(3,1fr)}.journal-tab{min-height:58px;border-bottom:1px solid #79552c}.journal-book-body{padding:7px}.journal-detail-card{padding:9px}.journal-detail-card>h3{font-size:23px}}
.bag-stat-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;padding:7px;border:1px solid #8b6538;background:#101a24;margin-bottom:9px}.bag-stat-strip>div{min-width:0;display:flex;align-items:center;gap:5px;padding-right:4px;border-right:1px solid #5f452b}.bag-stat-strip>div:last-child{border-right:0}.bag-stat-strip img{width:34px;height:34px;object-fit:cover}.bag-stat-strip span{min-width:0;display:flex;flex-direction:column}.bag-stat-strip b{color:#f0ddb8;font-size:15px;white-space:nowrap}.bag-stat-strip small{color:#c7ad7f;font-size:10px}
@media(max-width:380px){.bag-stat-strip img{width:29px;height:29px}.bag-stat-strip b{font-size:13px}.bag-stat-strip small{font-size:9px}}

/* Locked Pause/Menu shell */
.pause-menu-modal{width:min(520px,calc(100% - 24px));max-height:92dvh;border:2px solid #9a6d35;border-radius:12px;background:#0f1822;align-self:center;margin:auto}.pause-menu-modal .modal-header{display:none}.pause-menu-modal .modal-content{padding:12px;background:linear-gradient(180deg,#14202c,#0b1219)}.pause-menu-shell{border:1px solid #a27337;padding:12px;background:#101923}.pause-brand{display:flex;justify-content:center;align-items:center;gap:10px;padding:7px 6px 18px;border-bottom:1px solid #7a572f;margin-bottom:14px}.pause-compass{font-size:42px;color:#dfa64d}.pause-brand div:last-child{display:flex;flex-direction:column;text-align:center}.pause-brand strong{font-size:34px;color:#d7a04d;line-height:1}.pause-brand span{margin-top:5px;font-size:16px;color:#efcf90;letter-spacing:.04em}.pause-actions{display:grid;gap:10px}.pause-row{min-height:64px;display:grid;grid-template-columns:54px 1fr 34px;align-items:center;border:1px solid #9a6e37;background:linear-gradient(180deg,#172533,#101a24);color:#f0ddb8;text-align:left}.pause-row>span{font-size:29px;text-align:center;color:#e0a64e}.pause-row>b{text-align:center;font-size:22px;letter-spacing:.03em}.pause-row>i{font-style:normal;font-size:38px;color:#efc16b}.pause-row.active{border-color:#f0a33d;background:linear-gradient(180deg,#6b391c,#482619);box-shadow:0 0 12px rgba(234,146,48,.55),inset 0 0 0 1px #f0b15b}
@media(max-width:380px){.pause-brand strong{font-size:28px}.pause-brand span{font-size:13px}.pause-row{min-height:56px;grid-template-columns:44px 1fr 28px}.pause-row>b{font-size:18px}.pause-row>span{font-size:24px}}

/* v0.20 corrective mobile pass — user playtest 2026-09-30 */
.choice-label{
  white-space:normal;
  text-overflow:clip;
  display:-webkit-box;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
  line-clamp:2;
  line-height:1.12;
  overflow:hidden;
}
.choices[data-count="2"] .choice{min-height:66px}
.choices[data-count="3"] .choice{min-height:56px}
.choices[data-count="4"] .choice{min-height:51px;padding:6px 8px}
.choices[data-count="4"] .choice-label{font-size:clamp(13px,3.55vw,17px)}
.choice-requirement{white-space:normal}

.combat-action,.active-weapon-chip{min-width:0;overflow:hidden}
.combat-action b{min-width:0;white-space:normal;overflow-wrap:anywhere;line-height:1.05}
.combat-attack-row{grid-template-columns:minmax(0,.82fr) minmax(0,1.4fr)}
#attackBtn b{font-size:clamp(13px,3.7vw,17px)}
.active-weapon-chip strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.combat-modal{max-height:calc(100dvh - 8px);overscroll-behavior:contain}
.combat-modal .modal-content{padding-bottom:max(22px,env(safe-area-inset-bottom))}
.combat-luck-actions{scroll-margin-bottom:20px}

/* Dark readable ink on the approved parchment Journal. */
.journal-book,.journal-detail-card,.journal-entry,.journal-entry p,.journal-book .muted,.journal-book-body{
  color:#1e130b;
}
.journal-entry p{color:#24170d}
.journal-book .muted{color:#4b3521}
.journal-tab{color:#2a1a0f}

/* Locked Bag & Equipment composition: equipment around the adventurer, stats, grid, detail. */
.bag-modal{width:min(620px,100%);max-height:94dvh}
.bag-modal .modal-content{padding:10px;background:linear-gradient(180deg,#111a22,#0c1319)}
.bag-equipment-stage{
  display:grid;
  grid-template-columns:minmax(86px,.8fr) minmax(120px,1.2fr) minmax(86px,.8fr);
  gap:7px;
  align-items:stretch;
  min-height:315px;
  margin-bottom:8px;
  border:1px solid #75522e;
  padding:7px;
  background:
    radial-gradient(circle at 50% 24%,rgba(77,105,128,.32),transparent 45%),
    linear-gradient(180deg,#172533,#0d151c);
}
.bag-character-figure{min-width:0;overflow:hidden;display:flex;align-items:flex-end;justify-content:center;border-left:1px solid #604428;border-right:1px solid #604428}
.bag-character-figure img{width:100%;height:100%;object-fit:cover;object-position:center top;display:block}
.bag-equip-column{display:grid;grid-template-rows:1fr 1fr;gap:7px;min-width:0}
.bag-equip-slot{min-width:0;border:1px solid #9a6b35;background:linear-gradient(180deg,#171a1e,#0d1217);color:#f0dab0;padding:5px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:2px;overflow:hidden}
.bag-equip-slot.equipped{border-color:#ffad39;box-shadow:0 0 8px rgba(255,157,42,.48),inset 0 0 0 1px #efb05b}
.bag-equip-art{font-size:34px;line-height:1;height:42px;display:grid;place-items:center}
.bag-equip-label{text-transform:uppercase;letter-spacing:.05em;color:#d5a65d;font-size:10px}
.bag-equip-slot strong{max-width:100%;font-size:13px;line-height:1.05;overflow:hidden;text-overflow:ellipsis}
.bag-equip-slot small{font-size:10px;color:#bba98d}
.bag-stat-strip{margin:0 0 8px}
.locked-bag-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin:0 0 8px}
.locked-bag-grid .bag-card{min-height:88px;padding:6px 3px;gap:3px;border-radius:5px}
.locked-bag-grid .bag-icon{width:39px;height:39px;font-size:22px}
.locked-bag-grid .bag-name{font-size:10px;line-height:1.05}
.locked-bag-grid .bag-meta{font-size:8px}
.locked-bag-detail{background:#e5c893;color:#23160d;border:2px solid #775128;scroll-margin:12px}
.locked-bag-detail .muted{color:#5b4027}
.bag-ground-list{margin-top:8px}
@media(max-width:390px){
  .bag-equipment-stage{grid-template-columns:minmax(73px,.72fr) minmax(105px,1.25fr) minmax(73px,.72fr);min-height:280px;padding:5px;gap:5px}
  .bag-equip-column{gap:5px}.bag-equip-slot{padding:3px}.bag-equip-art{font-size:29px;height:35px}.bag-equip-slot strong{font-size:11px}.bag-equip-slot small{font-size:9px}
  .locked-bag-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
.defeat-modal .modal-header .icon-button{display:none}
.defeat-modal{max-height:92dvh}


/* =========================================================
   v0.21 mobile interaction pass
   Single looping choice card, larger narrative window,
   fixed slim navigation, and Known Route destination states.
   ========================================================= */
html,body{height:100%;}
body:has(#gameScreen.active){height:100dvh;overflow:hidden;overscroll-behavior:none;}
#app:has(#gameScreen.active){height:100dvh;min-height:0;overflow:hidden;}
#gameScreen.active{grid-template-rows:minmax(245px,38dvh) minmax(0,1fr) auto;}
.adventure-story{
  grid-template-rows:minmax(0,1fr) auto;
  gap:7px;
  padding-bottom:2px;
}
.choice-carousel{
  display:block!important;
  overflow:visible!important;
  flex:none!important;
  min-height:0;
}
.choice-carousel-stage{
  display:grid;
  grid-template-columns:32px minmax(0,1fr) 32px;
  align-items:stretch;
  gap:5px;
  min-height:94px;
  touch-action:pan-y;
}
.choice-carousel-slot{min-width:0;display:flex;}
.choice-carousel-card{
  min-height:94px!important;
  height:auto!important;
  flex:1 1 auto;
  grid-template-columns:48px minmax(0,1fr) auto!important;
  padding:10px 11px!important;
  border-color:#d6973f;
  box-shadow:0 0 0 1px rgba(214,151,63,.55),inset 0 0 12px rgba(210,119,36,.10);
}
.choice-carousel-card .choice-label{
  white-space:normal!important;
  overflow:visible!important;
  text-overflow:clip!important;
  font-size:clamp(16px,4.15vw,21px)!important;
  line-height:1.14!important;
}
.choice-carousel-card .choice-requirement{font-size:12px;line-height:1.2;}
.choice-select-mark{
  align-self:center;
  color:#efc879;
  font:700 9px/1 system-ui,sans-serif;
  letter-spacing:.08em;
  padding-left:5px;
}
.choice-carousel-nav{
  border:1px solid #805f35;
  border-radius:7px;
  background:linear-gradient(#172330,#101821);
  color:#edcc8b;
  font:700 30px/1 Georgia,serif;
  padding:0;
  min-width:32px;
}
.choice-carousel-nav:active{background:#2a1d13;color:#fff0bd;}
.choice-carousel-meta{
  display:flex;
  align-items:center;
  justify-content:space-between;
  min-height:20px;
  padding:2px 39px 0;
  color:#c8b48f;
  font:700 10px/1.1 system-ui,sans-serif;
}
.choice-carousel-hint{font-weight:500;opacity:.72;}
.choice-empty{padding:12px;border:1px solid #694b2e;border-radius:7px;color:#d8c8aa;text-align:center;}
.fatebound-bottom-nav{min-height:62px;padding-bottom:max(2px,env(safe-area-inset-bottom));}
.fatebound-bottom-nav button{min-height:58px!important;padding:3px 1px!important;gap:1px;font-size:9px!important;}
.fatebound-bottom-nav .nav-glyph{width:29px!important;height:29px!important;font-size:19px!important;}
.map-viewport .approved-map-art .journey-node.travel-available{
  border-color:#e6a343!important;
  box-shadow:0 0 0 3px rgba(230,163,67,.30),0 0 14px rgba(230,136,41,.62),0 2px 7px #000!important;
  animation:knownRouteDestinationPulse 1.8s ease-in-out infinite;
}
.map-viewport .approved-map-art .journey-node.travel-available .map-icon{color:#9a4d15;}
@keyframes knownRouteDestinationPulse{50%{box-shadow:0 0 0 4px rgba(242,178,77,.38),0 0 19px rgba(230,136,41,.78),0 2px 7px #000}}
.map-current-location.known-route-moving{transition:left var(--known-route-duration,180ms) linear,top var(--known-route-duration,180ms) linear;}
@media(max-height:700px){
  #gameScreen.active{grid-template-rows:minmax(220px,36dvh) minmax(0,1fr) auto;}
  .narrative-scroll{padding:14px 17px;}
  .choice-carousel-stage{min-height:86px;}
  .choice-carousel-card{min-height:86px!important;padding:8px 9px!important;}
}


/* v0.22 navigation & readability corrections */
.combat-attack-button{display:flex!important;flex-direction:column!important;justify-content:center;align-items:center;gap:5px;text-align:center;min-width:0}
.combat-attack-button span{font-size:28px!important;line-height:1!important;grid-row:auto!important}
.combat-attack-button b{font-size:clamp(12px,3.3vw,16px)!important;white-space:nowrap!important;overflow-wrap:normal!important;line-height:1!important}
.choice-card-holder{width:100%;display:flex;flex-direction:column;gap:5px;min-width:0}
.choice-carousel-card{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important;padding:9px 13px!important;gap:4px!important;min-height:112px!important}
.choice-carousel-card .choice-icon{font-size:28px!important;line-height:1!important;margin:0 auto!important}
.choice-carousel-card .choice-copy{width:100%;display:flex;flex-direction:column;align-items:center;min-width:0}
.choice-carousel-card .choice-label{width:100%;font-size:clamp(16px,4.5vw,22px)!important;line-height:1.12!important;white-space:normal!important;overflow:visible!important;text-overflow:clip!important;display:block!important;max-height:none!important}
.choice-carousel-card .choice-requirement{margin-top:4px;text-align:center}
.choice-select-mark{display:none!important}
.choice-route-preview{align-self:center;min-height:31px;border:1px solid #8b6332;border-radius:8px;background:#172531;color:#e6bd72;padding:5px 12px;font-weight:750;font-size:12px}
.route-preview-modal{width:min(520px,calc(100% - 20px))}
.route-preview-map{position:relative;aspect-ratio:1122/1402;max-height:52vh;border:2px solid #88602d;border-radius:8px;overflow:hidden;background:url('assets/art/journey_map_approved_crop.png') center/cover no-repeat}
.route-preview-dot{position:absolute;width:18px;height:18px;border-radius:50%;transform:translate(-50%,-50%);z-index:3;box-shadow:0 0 0 4px rgba(10,20,30,.65)}
.route-preview-dot.current{background:#59a8e6}.route-preview-dot.destination{background:#d9852c;box-shadow:0 0 0 4px #17212c,0 0 14px #f0a03f}
.route-preview-line{position:absolute;left:var(--x1);top:var(--y1);width:calc(hypot(var(--x2) - var(--x1),var(--y2) - var(--y1)));height:3px;background:#d9852c;transform-origin:left center;display:none}
.route-preview-copy{padding:10px 2px}.route-preview-copy p{margin:6px 0 0;line-height:1.4}
.shop-message{margin:0 0 10px;padding:10px 12px;border:2px solid #d98932;border-radius:8px;background:#4a2816;color:#ffe0a6;font-weight:800}
.sell-item-row{align-items:start}.sell-row-actions{display:flex;flex-direction:column;gap:6px}.sell-item-description{color:#4a2e18;line-height:1.4}.sell-safety{font-weight:750}.sell-document-text{margin-top:8px;padding:10px;border-left:3px solid #9d6a2d;background:#e7c991;color:#24170d;line-height:1.48}
.bag-modal .locked-bag-detail p,.bag-modal .locked-bag-detail .muted{color:#2b1b10!important}
.map-modal .modal-header .icon-button{display:none!important}
.journey-map-test{display:flex;flex-direction:column;height:100%;min-height:0}
.journey-map-test .map-art-viewport{order:1;flex:1 1 auto;min-height:0}
.journey-map-test .map-test-toolbar{order:2;position:sticky;bottom:0;z-index:80;background:#101923;border-top:2px solid #8d6331;padding:7px 6px;margin-top:5px;justify-content:center}
.map-close-bottom{border-color:#d08a39!important;color:#ffd28b!important}
.check-equation .die-token small,.die-face small{display:block;font-size:9px;color:#bca57e;text-transform:uppercase;letter-spacing:.05em}
@media(max-width:420px){.choice-carousel-stage{min-height:124px!important}.choice-carousel-card{min-height:112px!important}.choice-carousel-meta{font-size:11px}.map-test-toolbar .map-close-bottom span{display:none}.sell-row-actions{flex-direction:row}}


/* =========================================================
   v0.23 route preview + mobile polish from full phone video
   ========================================================= */
/* Panoramic adventure composition: reclaim height for narrative. */
#gameScreen.active{grid-template-rows:minmax(205px,31dvh) minmax(0,1fr) auto!important;}
.adventure-story{grid-template-rows:minmax(0,1fr) auto!important;gap:5px!important;}
.narrative-scroll{padding:14px 17px!important;}
.choice-carousel-stage{min-height:88px!important;}
.choice-carousel-card{min-height:78px!important;padding:7px 12px!important;gap:3px!important;}
.choice-carousel-card .choice-icon{font-size:21px!important;}
.choice-carousel-card .choice-label{font-size:clamp(15px,4.1vw,19px)!important;line-height:1.08!important;}
.choice-route-preview{min-height:27px!important;padding:3px 11px!important;font-size:11px!important;}
.choice-carousel-meta{min-height:16px!important;padding-top:0!important;}
@media(max-width:420px){
  .choice-carousel-stage{min-height:88px!important;}
  .choice-carousel-card{min-height:78px!important;}
}
@media(max-height:700px){#gameScreen.active{grid-template-rows:minmax(185px,29dvh) minmax(0,1fr) auto!important;}}

/* Player Notes use dark readable ink, matching Journal and documents. */
.player-note p,.player-note .muted{color:#2d1d12!important;opacity:1!important;}
.journal-book .player-note p,.journal-book .player-note .muted{color:#2d1d12!important;}

/* Combat dice stay aligned as two equal roll panels. */
.combat-dice-result{display:grid!important;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important;gap:7px!important;align-items:center!important;padding:9px!important;}
.combat-roll-side{display:grid;grid-template-columns:46px minmax(0,1fr);align-items:center;gap:7px;min-width:0;}
.combat-roll-side .die-face{width:46px;height:46px;min-width:46px;}
.combat-roll-side .die-face small{font-size:8px!important;text-align:center;line-height:1.05;}
.combat-roll-side .roll-equation{font-size:12px;line-height:1.25;min-width:0;}
.combat-dice-result .versus{display:block!important;font-size:10px!important;}
@media(max-width:380px){.combat-roll-side{grid-template-columns:40px minmax(0,1fr)}.combat-roll-side .die-face{width:40px;height:40px;min-width:40px}.combat-roll-side .roll-equation{font-size:11px}}

/* Route preview becomes a swipeable comparison surface. */
.route-preview-swipe{display:grid;grid-template-columns:34px minmax(0,1fr) 34px;gap:5px;align-items:stretch;touch-action:pan-y;}
.route-preview-body{min-width:0;}
.route-preview-nav{border:1px solid #8f6634;border-radius:8px;background:#182532;color:#f0c778;font:700 30px/1 Georgia,serif;}
.route-preview-meta{display:flex;justify-content:space-between;align-items:center;padding:6px 4px 8px;color:#cbb792;font:700 11px/1.2 system-ui,sans-serif;}
.route-preview-map{max-height:44vh!important;}
.route-preview-copy p{font-size:14px;}

/* Journey Map controls: smaller center, larger close/zoom/key for thumb reach. */
.map-test-toolbar .map-tool-center{flex:0 1 92px!important;}
.map-test-toolbar .map-close-bottom{flex:0 0 62px!important;font-weight:800!important;}
.map-test-toolbar .map-zoom-button{flex:0 0 44px!important;min-width:44px!important;width:44px!important;font-size:24px!important;}
#mapLegendBtn{flex:0 0 52px!important;font-weight:800!important;}
#mapReset{flex:0 0 48px!important;}
@media(max-width:420px){.map-test-toolbar .map-close-bottom span{display:inline!important}.map-test-toolbar .map-tool-center{flex-basis:74px!important}.map-test-toolbar .small-button{font-size:10px!important;padding-left:5px!important;padding-right:5px!important}}

/* Castle sketch uses the full modal height, pans at scale 1, and keeps controls at bottom. */
.castle-map-shell{display:flex;flex-direction:column;height:100%;min-height:0;gap:6px;}
.castle-map-shell .castle-viewport{flex:1 1 auto;min-height:300px;height:auto!important;overflow:hidden;}
.castle-map-shell .castle-sketch{min-width:115%;min-height:115%;background-position:center;}
.castle-bottom-toolbar{flex:0 0 auto;position:sticky;bottom:0;z-index:90;margin-top:auto;}
.castle-map-shell .map-info{flex:0 0 auto;max-height:18vh;overflow:auto;}
\n\n/* v0.24 QA + interaction polish */\nbutton.tap-feedback,[role=button].tap-feedback{box-shadow:0 0 0 2px #f0a23a,0 0 18px rgba(240,162,58,.78)!important;filter:brightness(1.12);transform:translateY(1px) scale(.992);transition:none!important}\nbutton.confirmed-action{border-color:#f0a23a!important;color:#fff1c9!important;background:#6b3d1f!important;box-shadow:0 0 14px rgba(240,162,58,.45)!important}\n.qa-dev-tools{display:flex!important;gap:7px;justify-content:center;flex-wrap:wrap;margin-top:8px}.qa-dev-tools button{border:1px solid #c78639;background:#211a14;color:#f4dcb0;border-radius:7px;padding:7px 10px;font:700 11px/1 system-ui,sans-serif}.qa-dev-tools #qaTestBtn{background:#6a2d1e;color:#fff0d4}.qa-warning{padding:10px 12px;margin-bottom:10px;border:1px solid #b55f32;background:#3a1e18;color:#ffd9bd;border-radius:8px}.qa-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.qa-grid .button{min-height:48px}\n.route-preview-map{width:100%;min-height:190px;background-size:100% 100%!important;background-position:center!important}\n.route-preview-svg{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}.route-preview-svg line{stroke:#d9852c;stroke-width:.7;stroke-dasharray:1.4 1;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 2px #f0a03f)}\n.bag-detail-close{margin-left:auto;background:#182b3a!important;color:#f3ddb2!important;border-color:#9b6a34!important}\n.sell-item-row{background:#17232e;border:1px solid #765631;border-radius:9px;padding:10px;margin-bottom:8px}.sell-item-row>div>strong{color:#f4dfb6}.sell-item-description{color:#e3d0a8!important}.sell-safety{color:#f0c477}.sell-document-text{background:#ecd09c!important;color:#2b1b0f!important}\n.player-note p,.player-note .muted,.journal-book .player-note p,.journal-book .player-note .muted{color:#26180f!important;font-weight:500}\n.combat-dice-result{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important;align-items:stretch!important}.combat-roll-side{grid-template-columns:52px minmax(0,1fr)!important;min-height:62px;align-items:center!important}.combat-roll-side .die-face{width:52px!important;height:52px!important}.combat-roll-side .roll-equation{display:flex;align-items:center;min-height:52px;font-size:13px!important}.combat-dice-result .versus{align-self:center}\n.map-test-toolbar .map-close-bottom{flex:1 1 68px}.map-test-toolbar .map-tool-center{flex:1 1 76px!important}.map-test-toolbar #mapReset{flex:1 1 55px}.map-test-toolbar #mapLegendBtn{flex:1 1 54px}.map-test-toolbar .map-zoom-button{flex:0 0 42px!important;width:42px!important;min-width:42px!important}.map-test-toolbar .small-button{justify-content:center;text-align:center}\n@media(max-width:420px){.qa-grid{grid-template-columns:1fr}.route-preview-map{min-height:170px}.combat-roll-side{grid-template-columns:44px minmax(0,1fr)!important}.combat-roll-side .die-face{width:44px!important;height:44px!important}.map-test-toolbar .small-button{font-size:10px!important;padding-left:4px!important;padding-right:4px!important}}\n

/* v0.25 route integrity + mobile feedback corrective pass */
.route-preview-map{height:clamp(190px,39vh,330px)!important;min-height:190px!important;aspect-ratio:auto!important;background-size:100% 100%!important;background-position:center!important;background-repeat:no-repeat!important}
.route-preview-unavailable{display:grid;place-items:center;background:#16212a!important}.route-preview-map-message{max-width:240px;padding:16px;text-align:center;color:#f0d3a0;font-weight:750}
.route-preview-body{display:grid;grid-template-rows:auto auto;min-width:0;align-content:start}
button.confirmed-action:disabled{opacity:1!important;cursor:default}
.sell-safety.safe{color:#f1c879!important}.sell-safety.keep{color:#ffd7a1!important}.sell-row-actions .small-button:disabled{opacity:.52}
.sell-item-row .muted,.sell-item-row .small,.sell-item-row>div>div{color:#e4d3b2}
.map-test-toolbar{display:grid!important;grid-template-columns:minmax(58px,1.12fr) minmax(66px,1.25fr) minmax(54px,1fr) 44px 44px minmax(54px,1fr)!important;gap:6px!important;align-items:stretch!important}
.map-test-toolbar .small-button{width:100%!important;min-width:0!important;flex:none!important;padding-left:5px!important;padding-right:5px!important;white-space:nowrap}
.map-test-toolbar .map-zoom-button{width:44px!important;min-width:44px!important}
@media(max-width:420px){.route-preview-map{height:clamp(170px,35vh,270px)!important;min-height:170px!important}.map-test-toolbar{grid-template-columns:minmax(52px,1.05fr) minmax(62px,1.22fr) minmax(48px,.95fr) 40px 40px minmax(48px,.95fr)!important;gap:4px!important}.map-test-toolbar .map-zoom-button{width:40px!important;min-width:40px!important}}

.castle-bottom-toolbar{grid-template-columns:minmax(72px,1fr) minmax(64px,1fr) 48px 48px!important;}

/* v0.26 route anchors: smaller established junctions that support forward/lateral topology without competing with major destinations. */
.map-viewport .approved-map-art .journey-node.route-anchor{
  min-width:27px;
  min-height:27px;
  padding:2px 4px;
  border-width:1.5px;
}
.map-viewport .approved-map-art .journey-node.route-anchor .map-icon{font-size:12px;}
.map-viewport .approved-map-art .journey-node.route-anchor .map-label{top:30px;min-width:76px;max-width:110px;font-size:8px;}
.map-viewport .approved-map-art .journey-node.route-anchor.travel-available{box-shadow:0 0 0 3px rgba(220,130,54,.24),0 2px 6px #0008;}

/* v0.28 item discovery guidance — Fatebound franchise rule */
.item-use-hint{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:start;margin:10px 0 2px;padding:9px 10px;border:1px solid rgba(119,81,40,.55);border-radius:8px;background:rgba(119,81,40,.10);line-height:1.4}
.item-use-hint strong{color:#5e3b1e}.item-use-hint span{color:#2b1b10}
.item-use-inline{margin-top:5px;color:#d9c59d;font-size:12px;line-height:1.35}.item-use-inline b{color:#f0c477}
.item-acquired-banner{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;padding:10px 12px;border:1px solid #a9702e;border-left:4px solid #d69238;border-radius:8px;background:#2b2115;color:#f1dfbc;line-height:1.4}
.item-acquired-banner strong{color:#ffd78d}.item-acquired-banner span{font-size:13px;color:#e5d1aa}
.bag-modal .item-use-hint{background:#d8b77f;border-color:#8e5d2b}.bag-modal .item-use-hint strong{color:#4c2e16}.bag-modal .item-use-hint span{color:#24170d}
.shop-row .item-use-inline{color:var(--muted)}.shop-row .item-use-inline b{color:var(--gold)}
