/* Shared details: metal, cloth, etched rules and restrained movement. */
.journal-link>svg{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.2;flex-shrink:0}
.single-difficulty .enemy-preview{height:205px}.single-difficulty .difficulty-list{align-self:center}.difficulty-unlock-note{font:16px/1.4 'Cormorant Garamond',Georgia;color:#79613b;margin:15px 0 0;padding-top:14px;border-top:1px solid #81613933}
:root{--game-ease:cubic-bezier(.22,1,.36,1)}
a,button{touch-action:manipulation}button:active:not(:disabled){filter:brightness(.92)}
.quest-tracker{display:flex;align-items:center;gap:11px;color:#e3d2ad;text-decoration:none;text-shadow:0 2px 8px #081319;max-width:270px;padding:9px 0;position:relative;z-index:4}.tracker-seal{width:39px;height:39px;min-width:39px;border:1px solid #b094586e;border-radius:50%;box-shadow:inset 0 0 0 4px #09181b77;display:grid;place-items:center;background:#162a29a6;color:#d9bc7f;font:25px Georgia}.quest-tracker small{display:block;font:6px 'Manrope',Arial;letter-spacing:1.2px;color:#bdac84}.quest-tracker strong{display:block;font:600 21px 'Cormorant Garamond',Georgia;line-height:1.1;margin:4px 0}.quest-tracker em{font:9px/1.4 'Manrope',Arial;display:block;color:#acae99;font-style:normal;max-width:205px}.quest-tracker>b{font:22px Georgia;margin-left:2px;color:#a98b53}.quest-tracker.ready .tracker-seal{color:#e9dfae;background:#46654b7d;border-color:#cbbe83}.quest-tracker.ready small{color:#dfcc8f}.room-quest-tracker{position:absolute;left:120px;bottom:85px;z-index:4}.character-open .room-quest-tracker,.forge-open .room-quest-tracker,.market-open .room-quest-tracker,.city-view .room-quest-tracker{display:none}.room-quest-tracker .quest-tracker{max-width:225px}.room-quest-tracker .quest-tracker strong{font-size:19px}.room-quest-tracker .quest-tracker em{font-size:8px;max-width:160px}.campaign-quest-tracker{position:absolute;left:3.2vw;top:120px;z-index:3}.campaign-quest-tracker .quest-tracker{max-width:245px}.in-battle .campaign-quest-tracker{display:none}.journal-link{font:18px 'Cormorant Garamond',Georgia;color:#d9c194;margin-left:23px;display:inline-flex;align-items:center;gap:7px}.journal-link i{font-style:normal;font-size:21px}.campaign-sound{display:grid;place-items:center;width:30px;height:30px;background:none;color:#c5ad7a;padding:3px}.campaign-sound svg{height:19px;width:19px;stroke:currentColor;fill:none;stroke-width:1.4}.campaign-header .wallet{gap:19px}.hud-experience{height:2px;width:100%;margin-top:7px;background:#d5bf7933;overflow:hidden}.hud-experience i{display:block;height:100%;background:linear-gradient(90deg,#877044,#d8b778);transform-origin:left center}.main-nav [data-menu="quests"]{position:relative}.main-nav [data-menu="quests"].quest-ready:after{content:'!';display:grid;place-items:center;position:absolute;right:7px;top:0;width:17px;height:17px;border:1px solid #e8c887;background:#883d27;border-radius:50%;font:12px Georgia;color:#fff0c6;box-shadow:0 0 10px #f0c45750}
.chapter-heading h1{letter-spacing:-.8px}.chapter-heading:after{content:'✦';display:block;font-size:9px;color:#c6a975;margin:16px auto 2px;background:linear-gradient(90deg,transparent,#b59d6477,transparent) center/190px 1px no-repeat}.map-node:not(.locked) .node-frame{transition:border-color .15s,box-shadow .15s,background-color .15s}.map-node .node-tooltip{position:absolute;bottom:calc(100% + 35px);left:50%;transform:translate(-50%,4px);opacity:0;pointer-events:none;white-space:nowrap;font:17px 'Cormorant Garamond',Georgia;color:#f0ddba;text-shadow:0 2px 7px #000;transition:opacity .12s,transform .12s}.map-node:focus-visible .node-tooltip{opacity:1;transform:translate(-50%,0)}.node-tooltip small{display:block;font:7px 'Manrope',Arial;letter-spacing:1.5px;color:#d0b985;margin-top:4px}.map-atmosphere{position:absolute;inset:24% -10% 0;z-index:-1;pointer-events:none;overflow:hidden;opacity:.5}.map-atmosphere:before{content:'';position:absolute;inset:30% 0 -20%;background:radial-gradient(ellipse at 16% 72%,#abcac318,transparent 32%),radial-gradient(ellipse at 68% 50%,#b0cbc516,transparent 40%);animation:valley-mist 30s ease-in-out infinite alternate}.map-orientation{display:flex;align-items:center;gap:13px;position:absolute;right:3.2vw;top:122px;font:8px 'Manrope',Arial;letter-spacing:1.5px;color:#b2bebd}.map-compass{display:grid;place-items:center;width:49px;height:49px;border:1px solid #c6ac7766;border-radius:50%;background:#0e222c55;color:#d7bd82;position:relative;font:28px Georgia}.map-compass:before{content:'N';font:7px 'Manrope',Arial;position:absolute;top:-13px;color:#c5b187}.map-compass svg{height:31px;width:31px;fill:#c1a266;stroke:#e7d5aa;stroke-width:.5}.encounter-dialog{background:radial-gradient(ellipse at 0 0,#f5e5bfad,transparent 45%),repeating-linear-gradient(12deg,#73582508 0 1px,transparent 1px 4px),linear-gradient(115deg,#d4ba82,#eddbae 60%,#d3b77c);border-color:#dcc291;box-shadow:0 25px 100px #000c,inset 0 0 0 6px #87652d13,inset 0 0 45px #896b2521}.encounter-top h2{font-size:39px}.encounter-top .eyebrow{font-size:7px}.enemy-preview:before{content:'';position:absolute;inset:3px 12% 20px;background:linear-gradient(#69372a66,#6a3a2633 80%,transparent);clip-path:polygon(0 0,100% 0,100% 88%,50% 100%,0 88%);border-top:3px solid #8b673b70;z-index:0}.enemy-preview svg{position:relative;filter:drop-shadow(0 5px 5px #4f391d44)}.difficulty-row{padding-block:15px}.difficulty-name h3{font-size:27px}.difficulty-name small{color:#6f5836}.difficulty-name p{font-weight:600}.attack-button{box-shadow:inset 0 1px #fff2c8,0 3px 5px #8661283b;min-height:60px}.attack-button:active:not(:disabled){box-shadow:inset 0 2px 5px #79572b33}.encounter-dialog[open],.result-dialog[open]{animation:parchment-enter .23s var(--game-ease)}.result-dialog{background:radial-gradient(ellipse at 50% 0,#fff0c3ad,transparent 60%),repeating-linear-gradient(12deg,#75562506 0 1px,transparent 1px 4px),#dfc895;box-shadow:0 25px 100px #000c,inset 0 0 0 7px #83662e19,inset 0 0 55px #93723a25}.result-crest{width:60px;height:60px;color:#966b26}.result-crest svg{fill:#b58a36;stroke:#765626;stroke-width:1.1;filter:drop-shadow(0 3px 2px #97724633)}.victory-loot{border-bottom:1px solid #b2965e38;padding-bottom:18px}.reward-icon{box-shadow:inset 0 0 0 3px #ded4b0aa,0 3px 3px #6c4b1c25}.result-note{font-size:8px}.reward-quest-link{display:block;border-top:1px solid #987c4644;margin:15px 0 0;padding:11px 0 0;color:#596d42;font:600 18px 'Cormorant Garamond',Georgia}.reward-quest-link small{display:block;font:8px 'Manrope',Arial;margin-top:3px;color:#876c41}.battle-vs{position:absolute;left:50%;top:192px;transform:translateX(-50%);font:italic 25px 'Cormorant Garamond',Georgia;color:#d5bb82;opacity:.7}.combatant .impact-flash{position:absolute;left:50%;top:47%;pointer-events:none;width:80px;height:80px;transform:translate(-50%,-50%)}.impact-flash:before,.impact-flash:after{content:'';position:absolute;width:90px;height:3px;left:-5px;top:38px;background:linear-gradient(90deg,transparent,#fff3b9,transparent);box-shadow:0 0 9px #ffd675;transform:rotate(-42deg);animation:impact-cut .32s ease-out forwards}.impact-flash:after{transform:rotate(38deg);width:55px;left:13px;opacity:.6}.impact-flash i{position:absolute;left:40px;top:40px;height:2px;width:4px;background:#efc06e;animation:spark-out .42s ease-out forwards;transform:rotate(var(--angle)) translateX(0);--angle:0deg}.impact-flash.critical:before{height:5px;box-shadow:0 0 20px #ffb842}.combatant.dodging .combatant-art{animation:combat-dodge .45s var(--game-ease)}.damage-number{letter-spacing:-1px}.battle-event-log{position:absolute;bottom:24px;left:3.2vw;font:10px 'Manrope',Arial;color:#bbc1b5;max-width:235px}.battle-event-log summary{cursor:pointer;list-style:none;display:flex;align-items:center;gap:10px;font:17px 'Cormorant Garamond',Georgia;color:#d6c29d}.battle-event-log summary:before{content:'≡';font:20px Georgia}.battle-event-log ol{list-style:none;max-height:110px;overflow:auto;padding:0;margin:10px 0 0;font-size:8px;line-height:1.8;scrollbar-width:thin}.battle-event-log li{border-bottom:1px solid #cbb78c1a;padding:3px 0}.battle-event-log li.critical{color:#e5bc72}.battle-health .health-track{border-color:#a48e6259;box-shadow:inset 0 0 0 2px #171b1f,0 3px 10px #0006}.health-track:after{content:'';position:absolute;inset:2px;border:1px solid #fbe3bd0c;pointer-events:none}.battle-health .health-track i{background:linear-gradient(#b45446,#98372d 30%,#7f2c27);box-shadow:inset 0 1px #d98a6044}.battle-status .crossed-blades{color:#d3b16e}.battle-status strong{letter-spacing:.6px}
.gold-button,.parchment-button,.letter-button{transition:box-shadow .14s,color .14s,background-color .14s}.chamber .hero-figure:focus-visible{outline-offset:12px}.hero-caption strong{letter-spacing:.5px}.hero-caption span{color:#b8a17c}.forge-inspection:before{pointer-events:none}.forge-stock-item:hover .forge-item-picture{box-shadow:0 0 0 1px #a3804644,0 0 20px #cd954c26}.inventory-slot:focus-visible{outline:2px solid #ffdf90;outline-offset:3px}.arena-heading .title-rule{color:#d0b376}.duel-banner{box-shadow:0 20px 60px #0007,inset 0 0 0 5px #7f632314}.arena-world .battle-result{background:radial-gradient(ellipse,#0b182be6,transparent 72%)}
@keyframes valley-mist{from{transform:translateX(-2%)}to{transform:translateX(4%)}}@keyframes parchment-enter{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes impact-cut{from{opacity:1;scale:.4}65%{opacity:1;scale:1.15}to{opacity:0;scale:1.3}}@keyframes spark-out{to{transform:rotate(var(--angle)) translateX(48px);opacity:0}}@keyframes combat-dodge{50%{transform:translateX(calc(-55px * var(--direction))) rotate(calc(-7deg * var(--direction)))}}@keyframes strike{35%{transform:translateX(calc(clamp(120px,22vw,310px) * var(--direction))) rotate(calc(7deg * var(--direction)))}65%{transform:translateX(calc(clamp(90px,17vw,250px) * var(--direction))) rotate(calc(-4deg * var(--direction)))}}
@media(hover:hover) and (pointer:fine){.map-node:not(:disabled):hover .node-frame{border-color:#ffe0a0;box-shadow:0 0 24px #e4b36238,inset 0 0 18px #e5cc8133}.map-node:hover .node-tooltip{opacity:1;transform:translate(-50%,0)}.quest-tracker:hover strong{color:#ffe2a7}.journal-link:hover{color:#ffe1a0}}
@media(max-width:600px){.encounter-body{grid-template-columns:76px minmax(0,1fr);gap:10px}.enemy-preview .enemy-art{position:relative;left:0;width:100%;max-width:100%;height:100%}.encounter-dialog .attack-button{min-width:87px;font-size:17px;padding-inline:7px}.encounter-dialog .difficulty-name h3{font-size:21px}.encounter-dialog .difficulty-name small{line-height:1.6}.encounter-dialog .difficulty-row{gap:6px}}
@media(max-width:1150px){.campaign-quest-tracker{top:auto;bottom:23px;left:25px}.campaign-quest-tracker .quest-tracker em{display:none}.campaign-quest-tracker .quest-tracker strong{font-size:18px}.campaign-quest-tracker .tracker-seal{min-width:32px;width:32px;height:32px;font-size:21px}.campaign-quest-tracker .quest-tracker>b{display:none}.chapter-footer{padding-bottom:30px}.map-orientation{top:124px}.map-orientation>span{display:none}.journal-link{margin-left:0;font-size:16px}.room-quest-tracker{left:105px;bottom:110px}.room-quest-tracker .quest-tracker em{display:none}.room-quest-tracker .quest-tracker{max-width:175px}.battle-event-log{bottom:20px;max-width:190px}}
@media(max-width:800px){.campaign-header{gap:16px}.campaign-header .journal-link{font-size:0;margin:0}.journal-link i{font-size:23px}.campaign-header .wallet{gap:10px}.room-quest-tracker{left:15px;bottom:110px}.room-quest-tracker .quest-tracker>span:nth-child(2),.room-quest-tracker .quest-tracker>b{display:none}.room-quest-tracker .tracker-seal{width:32px;height:32px;min-width:32px}.campaign-quest-tracker{position:relative;left:auto;bottom:auto;display:flex;justify-content:center;margin:9px auto 0}.campaign-quest-tracker .quest-tracker{padding:3px 0;max-width:300px}.campaign-quest-tracker .quest-tracker small{font-size:6px}.campaign-quest-tracker .quest-tracker strong{font-size:18px}.campaign-quest-tracker .tracker-seal{height:29px;width:29px;min-width:29px;font-size:19px}.chapter-heading:after{margin-top:11px}.map-orientation{top:auto;bottom:68px;right:21px}.map-compass{height:32px;width:32px}.map-compass svg{height:23px;width:23px}.map-compass:before{font-size:6px;top:-10px}.chapter-footer{padding-bottom:0}.battle-vs{top:165px;font-size:21px}.battle-event-log{bottom:14px;left:18px;font-size:9px;max-width:180px}.battle-event-log summary{font-size:14px}.battle-event-log[open]{background:#091822df;padding:10px 13px;border:1px solid #a18b5944;z-index:4}.campaign-sound{width:24px;height:24px}.campaign-sound svg{width:16px;height:16px}.encounter-top h2{font-size:31px}.difficulty-name h3{font-size:23px}.difficulty-row{padding-block:12px}.enemy-preview:before{inset:3px 1px 20px}.attack-button{min-height:54px}}
@media(max-width:540px){.campaign-header{padding-inline:12px;gap:10px}.campaign-header .identity strong{font-size:17px;max-width:95px}.campaign-header .wallet{gap:7px;font-size:13px}.campaign-header .energy{font-size:10px}.campaign-header .identity .avatar{width:32px;height:32px}.campaign-header .city-medal{width:29px;height:29px}.campaign-header .journal-link{position:absolute;left:17px;top:93px}.campaign-sound{position:absolute;right:15px;top:93px}.campaign-quest-tracker{margin-top:20px}.chapter-heading{margin-top:11px}.chapter-heading h1{font-size:34px}.chapter-heading>span{font-size:7px}.chapter-map{height:330px}.chapter-footer .chapter-nav{font-size:15px}.map-orientation{bottom:51px}.battle-heading{padding-top:18px}.battle-heading h1{font-size:24px}.battle-heading>span{font-size:6px}.in-battle .journal-link{display:none}.in-battle .campaign-sound{top:95px}.battle-event-log{bottom:10px}.battle-status{bottom:42px}.result-crest{width:47px;height:47px}.reward-quest-link{font-size:16px}.reward-quest-link small{font-size:7px}}
@media(max-height:650px) and (min-width:801px){.campaign-quest-tracker{bottom:5px;left:24px}.campaign-quest-tracker .quest-tracker{padding:0}.map-orientation{top:95px}.chapter-heading:after{display:none}.chapter-footer{padding-bottom:15px}.battle-event-log{bottom:14px}.battle-vs{top:101px}.room-quest-tracker{left:100px;bottom:78px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.impact-flash{display:none}}.no-motion *,.no-motion *:before,.reduced-motion *,.reduced-motion *:before{animation:none!important;transition:none!important}.tab-hidden *,.tab-hidden *:before,.suspended *,.suspended *:before{animation-play-state:paused!important}.reduced-motion .impact-flash{display:none}

/* Ability feedback is informational: combat remains fully automatic. */
.encounter-materials,.victory-materials{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;color:#bcae87;font-size:13px}.encounter-materials{justify-content:flex-start;margin-top:8px;color:#c5b58e;font-size:11px}.encounter-materials>span,.victory-materials>span{display:flex;align-items:center;gap:5px}.encounter-materials svg,.victory-materials svg{width:24px;height:24px}.victory-materials{margin:0 0 18px}.victory-materials>small{width:100%;font-size:10px;letter-spacing:.6px;color:#9b947f}.ability-burst{position:absolute;top:14%;left:50%;transform:translateX(-50%);z-index:9;white-space:nowrap;pointer-events:none;font:600 23px Georgia,serif;color:#ffd994;text-shadow:0 2px 4px #000,0 0 15px #e88a23;animation:ability-rise 1.5s ease-out both}.ward-burst{color:#b5e7ff;text-shadow:0 2px 4px #000,0 0 15px #539ec6}.ability-burst+.ability-burst{top:4%}@keyframes ability-rise{0%{opacity:0;translate:0 8px}20%,70%{opacity:1}100%{opacity:0;translate:0 -25px}}@media(max-width:600px){.ability-burst{font-size:16px;white-space:normal;text-align:center}.encounter-materials{font-size:10px;gap:8px}}@media(prefers-reduced-motion:reduce){.ability-burst{animation:none}}.reduced-motion .ability-burst{animation:none}

.map-world-links{position:absolute;right:4%;top:130px;z-index:5;display:flex;gap:17px;font:18px var(--serif);color:#e6ca94}.map-world-links a{text-decoration:none;border-bottom:1px solid #b29a6644}.in-battle .map-world-links{display:none}.rival-ledger{border-top:1px solid #bd9b5b33;margin-top:20px;padding-top:15px}.rival-ledger h3{font:500 23px var(--serif);margin:0 0 12px}.rival-ledger p{font:14px/1.5 var(--serif)}.rival-entry{display:grid;grid-template-columns:1fr auto;text-align:left;gap:5px;border-bottom:1px solid #c4ac6b22;padding:10px 0}.rival-entry strong{font:18px var(--serif)}.rival-entry small{font:10px var(--sans);color:#b1a78d;grid-row:2}.rival-entry button{grid-column:2;grid-row:1/3;font:16px var(--serif)}.arena-streak{margin-top:15px;color:#cbb484;font:15px var(--serif)}@media(max-width:800px){.map-world-links{right:0;left:0;justify-content:center;top:auto;bottom:30px;font-size:15px;gap:18px}.map-hint{display:none}}
/* Release audit: keep encounter actions readable on compact screens. */
.encounter-dialog .encounter-materials{color:#59452b}
.encounter-dialog .energy-inline-action{color:#624423;font-weight:600}
.encounter-dialog .difficulty-name small{font-family:'Manrope',Arial,sans-serif;font-size:11px;line-height:1.7}
.encounter-dialog .enemy-art{overflow:hidden}
@media(max-width:480px){
 .encounter-dialog .encounter-body{grid-template-columns:76px minmax(0,1fr);gap:12px}
 .encounter-dialog .difficulty-row{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
 .encounter-dialog .attack-button{width:100%;min-height:48px;font-size:19px}
 .encounter-dialog .attack-button span{font-size:11px}
 .encounter-dialog .enemy-preview{height:230px;align-self:start;margin-top:14px}
 .encounter-dialog .enemy-preview .enemy-art{width:100%;height:200px;left:0;position:relative}
 .encounter-dialog .difficulty-name p{font-size:15px}
 .encounter-dialog .difficulty-name small{font-size:10px}
 .encounter-dialog .encounter-materials{font-size:12px}
 .encounter-dialog .encounter-foot{flex-wrap:wrap;font-size:12px;align-items:center}
 .encounter-dialog .energy-inline-action{padding:10px 0;min-height:40px}
}
/* The hero name must not push health/energy into the room title. */
.hero-vitals-info strong{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:600px){
 .forge-open .hero-stage{top:112px;height:calc(36% - 112px);min-height:90px;max-height:210px}
}
@media(max-aspect-ratio:4/5){.city-view .room-title{top:100px}.city-panorama{top:143px}}
@media(max-width:600px) and (max-height:520px){.forge-open .hero-stage{display:none}.forge-workspace{top:112px}}
.result-dialog .victory-materials,.result-dialog .victory-materials>small{color:#59452b}
.result-dialog .victory-materials>small{font-size:12px}
@media(max-width:480px){
 .character-open .character-wing{top:39%}
 .character-open .hero-stage{height:32%;bottom:62%}
 .character-open .character-combat{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
 .character-open .character-combat>div{grid-template-columns:18px minmax(0,1fr);column-gap:8px}
 .character-open .character-combat strong{font-size:18px;overflow-wrap:anywhere}
 .character-open .wing-scroll{overflow-x:hidden}
 .character-open .character-identity h3{font-size:18px;line-height:1.15}
}
.quest-letter .quest-objectives small{font-size:11px;color:#61482b;line-height:1.6}
.quest-letter .reward-line small,.quest-letter .game-gold-note{color:#61482b;font-size:11px}
