/* V70: the original carved lettering and weathered materials, at finer detail. */
@font-face{font-family:'Knightle Mark';src:url('assets/fonts/herald.woff') format('woff');font-style:normal;font-weight:700;font-display:swap}
.home .quest-choices .btn{font-family:'Knightle Quill',Georgia,serif;font-weight:400;letter-spacing:1.3px;text-shadow:0 2px 3px #06100e}
.home .home-oath,.home .quest-choices .btn small,.home .menu-roman,.home .level-panel>small,.home .rank-level-label,.home .legacy-rank>strong,.home .dossier-teeth small,.home .quest-caption>span,.home .home-counter{font-family:'Knightle Quill',Georgia,serif;font-weight:400}
.stage-combat .combat .keyboard .key:not(.rune-key){font-family:'Knightle Quill',Georgia,serif;font-weight:700;text-shadow:1px 1px #07100c}
.stage-combat .combat .keyboard .key.strike-key{font-family:'Knightle Quill',Georgia,serif;font-size:11px;letter-spacing:0}
.stage-combat .combat .command-line,.stage-combat .combat .command-line.has-elixir{background:linear-gradient(90deg,#09140bc9,transparent 48%,#09140bc9);border:0;border-radius:0;box-shadow:none;text-shadow:0 1px 3px #000}
.stage-combat .combat .command-line:after{display:block;content:'';height:1px;left:0;right:0;bottom:0;position:absolute;background:linear-gradient(90deg,transparent,#b4a17677,transparent);pointer-events:none}
.stage-combat .combat .knight-status{height:29px;padding:0 7px 1px;gap:7px;border:0;border-radius:0;background:none;box-shadow:none;align-items:center}
.health-emblems{height:28px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:0;flex:none}
.stage-combat .combat .health-emblems .health-caption{position:static;display:block;width:100%;font:700 6px/7px 'Knightle Quill',Georgia;letter-spacing:1.2px;text-align:center;padding:0;background:none;border:0;box-shadow:none;color:#e5d7b4}
.stage-combat .combat .health-emblems .heart-icon{height:19px;width:18px;min-width:18px}
.stage-combat .combat .health-emblems .health-heart{width:8px;height:8px;bottom:0;right:-1px}
.stage-combat .combat .command-line>.combat-purse b{font-family:'Knightle Quill',Georgia,serif;font-size:11px;letter-spacing:0}
.stage-combat .combat .player-health-meter{bottom:0;height:1px;background:#0b180d}

/* A carved timepiece, with the existing centered track and outside seconds. */
:is(.stage-combat .combat,.tutorial-clock-demo) .turn-clock [data-turn-label]{font:700 9px/1 'Knightle Quill',Georgia;letter-spacing:.55px;color:#f3e2b7;text-shadow:0 1px 2px #08130b}
:is(.stage-combat .combat,.tutorial-clock-demo) .turn-clock b{font-family:'Knightle Herald',Georgia;letter-spacing:0}
:is(.stage-combat .combat,.tutorial-clock-demo) .turn-seconds-unit{font-family:'Knightle Quill',Georgia;letter-spacing:.8px}
:is(.stage-combat .combat,.tutorial-clock-demo) .turn-clock-track{border:0;border-radius:0;background:#17261be8;box-shadow:inset 0 2px #ad9d70,inset 2px 0 #746e4f,inset -2px 0 #363d2c,inset 0 -3px #5b543a;clip-path:polygon(3px 0,calc(100% - 4px) 0,calc(100% - 4px) 2px,100% 2px,100% calc(100% - 3px),calc(100% - 3px) calc(100% - 3px),calc(100% - 3px) 100%,3px 100%,3px calc(100% - 2px),0 calc(100% - 2px),0 3px,3px 3px)}
:is(.stage-combat .combat,.tutorial-clock-demo) .turn-clock-track i{position:absolute;display:block;inset:3px 3px 4px;width:calc(100% - 6px);height:auto;background:repeating-linear-gradient(0deg,transparent 0 5px,#e7d19a0b 5px 6px),linear-gradient(115deg,#6e7950,#394d35);box-shadow:inset 0 1px #c3bc7855,1px 0 6px #e5c68466}
.strike-timepiece{fill:#253521;stroke:#dccb94;filter:drop-shadow(1px 1px #070e08)}

/* Strike is a raised copper key in combat and in the demonstration. */
.stage-combat .combat .keyboard .key.strike-surface,.critical-focus .timing-strike.strike-surface,.tutorial-demo-strike.strike-surface{position:relative;isolation:isolate;border:0;border-radius:0;color:#fff0c9;background:#9d7252;box-shadow:inset 0 2px #ebc296,inset 2px 0 #bc8c64,inset -2px 0 #3f2921,inset 0 -5px #37201d;text-shadow:0 2px #321d19;clip-path:polygon(3px 0,calc(100% - 5px) 0,calc(100% - 5px) 2px,100% 2px,100% calc(100% - 5px),calc(100% - 3px) calc(100% - 5px),calc(100% - 3px) 100%,3px 100%,3px calc(100% - 2px),0 calc(100% - 2px),0 3px,3px 3px);padding-bottom:3px;transition:filter .08s,transform .06s;cursor:pointer}
.stage-combat .combat .keyboard .key.strike-surface:before,.critical-focus .timing-strike.strike-surface:before,.tutorial-demo-strike.strike-surface:before{content:'';position:absolute;inset:3px 3px 6px;z-index:-1;border:0;background:linear-gradient(125deg,#b0744f28 0 17%,transparent 17% 68%,#250e0d55 68% 73%,transparent 73%),repeating-linear-gradient(0deg,transparent 0 6px,#e3a67512 6px 7px),linear-gradient(#8a4b38,#613028);box-shadow:inset 1px 1px #e9b58077,inset -1px -1px #331b18}
.stage-combat .combat .keyboard .key.strike-surface:active,.critical-focus .timing-strike.strike-surface:active,.tutorial-demo-strike.strike-surface.demo-pressed{transform:translateY(3px);box-shadow:inset 0 1px #c49369,inset 2px 0 #946346,inset -2px 0 #3c2820,inset 0 -2px #37201d;filter:brightness(1.12)!important}
.stage-combat .combat .keyboard .key.strike-surface:active:before,.critical-focus .timing-strike.strike-surface:active:before,.tutorial-demo-strike.strike-surface.demo-pressed:before{inset:3px 3px 3px}
.tutorial-demo-strike.strike-surface{font:700 12px/1.1 'Knightle Quill',Georgia;letter-spacing:.5px;padding:12px 26px 15px;min-width:115px;box-sizing:border-box}

/* The guide uses the same stone faces, lettering and copper controls as play. */
.quest-tutorial h1{font-size:26px;letter-spacing:.6px;text-shadow:0 2px #142116}
.quest-tutorial .eyebrow,.quest-tutorial .tutorial-skip,.quest-tutorial footer .btn,.tutorial-slide-time small{font-family:'Knightle Quill',Georgia}
.quest-tutorial .eyebrow{font-size:8px}.quest-tutorial footer .btn{font-size:11px}
.tutorial-film .tutorial-stone,.tutorial-film .tutorial-stone.crit,.tutorial-film .tutorial-stone.hit,.tutorial-film .tutorial-stone.miss{border:0;background:none;box-shadow:none;font-family:'Knightle Quill',Georgia;--rune-edge:#a99b68b5;--rune-fill:#34462cc9}
.tutorial-film .tutorial-stone.crit{--rune-edge:#91aa76;--rune-fill:#2c4b34;color:#e5efc6}
.tutorial-film .tutorial-stone.hit{--rune-edge:#b49b64;--rune-fill:#67522e;color:#f2e0ac}
.tutorial-film .tutorial-stone.miss{--rune-edge:#74735b;--rune-fill:#283129;color:#afaf9c}
.tutorial-film .tutorial-stone:not(.demo-revealed){filter:brightness(.7)}
.tutorial-mini-keys .key,.tutorial-colors small,.tutorial-temper>strong,.tutorial-demo-warning,.tutorial-draught-demo>strong,.tutorial-draught-demo>b,.tutorial-shield-confirm,.tutorial-revive-demo>span,.tutorial-bonus-demo>strong,.tutorial-bonus-demo>span,.tutorial-loot-demo>strong{font-family:'Knightle Quill',Georgia}
.tutorial-demo-warning,.tutorial-shield-confirm{background:none;border:0;box-shadow:none;text-shadow:0 2px 3px #050e08}
.tutorial-clock-demo>small{font-family:'Knightle Quill',Georgia;font-size:9px}
.tutorial-white-track{height:2px;background:#d9d5bd25}.tutorial-white-track i{background:#e7e5cf}

/* Gather light into the word. The original slash supplies the release. */
.hero-warning{display:flex;flex-direction:column;gap:5px;background:none;border:0;box-shadow:none;padding:3px 10px;color:#e6d3a0;font:700 10px/1.3 'Knightle Quill',Georgia;text-shadow:0 2px 4px #071208;letter-spacing:1px}
.hero-warning>i{height:2px;width:108px;background:linear-gradient(90deg,transparent,#f3d794,transparent);transform-origin:center;animation:charge-gather .85s ease-in both}
@keyframes charge-gather{from{transform:scaleX(.2);opacity:.2}to{transform:scaleX(1);opacity:1}}
.word-solved-claim{position:absolute;z-index:18;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;pointer-events:none;color:#edd794;text-shadow:0 2px #172312,0 0 18px #dfcf7e44;font:700 23px/1.2 'Knightle Herald',Georgia;animation:timing-reward .45s ease-out both}
.word-solved-claim small{font:700 11px/1.3 'Knightle Quill',Georgia;color:#c9ddad}

/* The missed answer belongs to this battlefield; no separate result page. */
.word-revealing .combat-head{visibility:hidden}.word-revealing .test-oracle,.word-revealing .trait-emblem{visibility:hidden}
.word-revealing .battle-scene{opacity:.2}.word-revealing .rune-board-controls,.word-revealing .combat-controls{opacity:.6}
.battle-word-reveal{position:absolute;z-index:18;inset:-30px -4px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:0;text-align:center;background:radial-gradient(ellipse,#0e1c12f5 24%,#0e1c12c9 55%,transparent 76%)}
.battle-word-reveal h2{margin:0;font:700 19px/1.12 'Knightle Herald',Georgia;letter-spacing:1px;color:#efd6a0;text-shadow:0 2px #1c2114}
.battle-word-reveal .word-reveal-intro{margin:0;font:11px/1.2 Georgia;color:#d4d7bc}
.battle-word-reveal .answer-reveal-tiles{gap:4px;width:auto;max-width:94%;margin:1px 0}
.battle-word-reveal .answer-tile{flex:none;width:34px;height:39px;aspect-ratio:auto;background:none;border:0;box-shadow:none;--rune-edge:#8e8a60;--rune-fill:#253824}
.battle-word-reveal .answer-tile b{font:700 25px/1 'Knightle Quill',Georgia;color:#eee6bd;transform:scaleX(.4)}
.battle-word-reveal .answer-tile.revealed{background:none;border:0;box-shadow:none;--rune-edge:#c5ba80;--rune-fill:#3d5934;animation:answer-stone .38s cubic-bezier(.16,.8,.25,1) both}
.battle-word-reveal .answer-tile.revealed b{transform:none}
@keyframes answer-stone{0%{transform:translateY(-6px) scaleX(.5);filter:brightness(1.7)}65%{transform:translateY(1px) scaleX(1.04)}100%{transform:none;filter:none}}
.battle-word-reveal .word-reveal-outcome{min-height:11px;margin:0;font:7px/11px 'Knightle Quill',Georgia;letter-spacing:.25px;color:#bcc79f}
.battle-word-reveal .word-result-continue{visibility:hidden;opacity:0;min-height:29px;padding:7px 16px;margin:0;font:700 9px/1.2 'Knightle Quill',Georgia;transition:opacity .25s}
.battle-word-reveal.answer-complete .word-result-continue{visibility:visible;opacity:1}

/* A frozen needle, bright contact and a brief burst, without waking the scene. */
.critical-focus .critical-window{overflow:visible}
.critical-focus .gauge-runner{contain:layout style;transform:translate3d(0,0,0);will-change:transform;backface-visibility:hidden}
.critical-focus .timing-strike.strike-surface{font:700 14px/1.2 'Knightle Quill',Georgia;letter-spacing:1px;padding:12px 28px 15px;min-height:52px}
.stage-combat .combat .keyboard .key:not(.strike-surface):active{transform:translateY(2px)!important;filter:brightness(1.12);box-shadow:inset 0 1px #c2ad8177,inset 1px 0 #ac967166,inset -1px 0 #100e0c,inset 0 -1px #0b100e}
.stage-combat .combat .keyboard .key:not(.strike-surface):active:before{inset:3px 2px 3px}
.key-press-glint{position:absolute;pointer-events:none;inset:4px 4px 6px;background:linear-gradient(100deg,transparent 10%,#fff0b480 45%,transparent 70%);animation:key-contact-glint .3s ease-out both;mix-blend-mode:screen}
@keyframes key-contact-glint{0%{opacity:.8;transform:translateX(-45%) scaleX(.4)}100%{opacity:0;transform:translateX(45%) scaleX(.8)}}
.critical-focus.timing-locked .critical-number{font:700 44px/60px 'Knightle Herald',Georgia;animation:timing-reward .45s cubic-bezier(.15,.8,.2,1) both;z-index:4;text-shadow:0 2px #24351e,0 0 16px #d7d09177}
.critical-focus.timing-locked.grade-perfect .critical-number{color:#fff0b5;text-shadow:0 2px #615133,0 0 24px #e5d08499}
.timing-hit-sparks{position:absolute;bottom:85px;left:50%;z-index:3;pointer-events:none}
.timing-hit-sparks>i{position:absolute;width:3px;height:3px;background:#d2d79e;box-shadow:0 0 4px #e5e2ae66;animation:timing-spark .48s ease-out both}
.timing-hit-sparks>i:nth-child(3n){background:#f4d294;width:2px;height:2px}
.grade-perfect .timing-hit-sparks>i{background:#f2d492}
.timing-locked .strike-gauge{animation:timing-contact .38s ease-out both}
.timing-locked .gauge-cursor{box-shadow:0 0 10px #fff5cc,0 0 18px #e4c87e}
@keyframes timing-reward{0%{transform:scale(.55);opacity:.5}45%{transform:scale(1.18);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes timing-spark{0%{transform:translate(0,0);opacity:0}12%{opacity:1}100%{transform:translate(var(--sx),var(--sy));opacity:0}}
@keyframes timing-contact{from{filter:brightness(1.7)}to{filter:none}}

/* Reward numbers lift, trail into the bar, and burst into the next level. */
.experience-screen .xp-motes{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none;image-rendering:pixelated}
.experience-screen .xp-reward-dock{height:58px;min-height:58px;margin:3px 0 8px;z-index:4}
.experience-screen .xp-reward-packet{transform:translate3d(var(--packet-x,0px),var(--packet-y,0px),0) scale(var(--packet-scale,1));opacity:var(--packet-opacity,1);filter:none;transform-origin:50% 22px}
.experience-screen .xp-reward-packet strong{font:700 29px/1.2 'Knightle Herald',Georgia;color:#f2df9e;text-shadow:0 2px #403b24,0 0 13px #d8bd6955}
.experience-screen .xp-reward-packet span{display:block;background:none;border:0;box-shadow:none;padding:0;margin-top:4px;font:700 8px/1.4 'Knightle Quill',Georgia;letter-spacing:.8px;color:#cbd1ab;text-shadow:0 2px 3px #08170b}
.experience-screen .xp-reward-packet[data-phase=done]{visibility:visible}
.experience-screen .xp-reward-packet[data-phase=fill]{visibility:hidden}
.experience-screen .xp-reward-packet:is([data-phase=summary],[data-phase=done]) strong{display:block;font-variant-numeric:tabular-nums;color:#f6e6ae;text-shadow:0 2px #403b24,0 0 calc(6px + var(--summary-glow,0)*14px) #e5ce8270}
.experience-screen .xp-reward-packet:is([data-phase=summary],[data-phase=done]) span{color:#cbd8aa;letter-spacing:1.1px}
.experience-screen .legacy-xp-track{overflow:visible}
.experience-screen .legacy-xp-track.xp-arrival{animation:xp-stone-impact .65s ease-out both}
@keyframes xp-stone-impact{0%{filter:brightness(1.65);transform:scaleY(1.14)}24%{filter:brightness(1.2);transform:scaleY(.96)}100%{filter:none;transform:none}}
@media(max-width:350px){
 .stage-combat .combat .knight-status{padding-right:3px;padding-left:3px;gap:4px}.stage-combat .combat .health-emblems .heart-icon{width:16px;min-width:16px;height:18px}
 .stage-combat .combat .command-line>.combat-purse b{font-size:10px}
 :is(.stage-combat .combat,.tutorial-clock-demo) .turn-clock [data-turn-label]{font-size:8px;letter-spacing:0}
 .stage-combat .combat .keyboard .key.strike-surface{font-size:10px}
 .battle-word-reveal{inset:-40px -4px 0;gap:3px}.battle-word-reveal h2{font-size:16px}.battle-word-reveal .answer-tile{width:29px;height:32px}.battle-word-reveal .answer-tile b{font-size:22px}.battle-word-reveal .word-reveal-intro{font-size:10px}
 .quest-tutorial h1{font-size:23px}.tutorial-film .tutorial-stone{font-size:22px}.tutorial-demo-strike.strike-surface{font-size:11px}
 .experience-screen .xp-reward-dock{height:52px;min-height:52px}.experience-screen .xp-reward-packet strong{font-size:27px}
}
@media(orientation:landscape) and (max-height:500px){.battle-word-reveal{inset:0 -2px;gap:3px}.battle-word-reveal h2{font-size:16px}.battle-word-reveal .answer-tile{width:29px;height:32px}.experience-screen .xp-reward-dock{height:48px;min-height:48px}.experience-screen .xp-reward-packet strong{font-size:25px}}
@media(prefers-reduced-motion:reduce){.hero-warning>i,.word-solved-claim,.battle-word-reveal .answer-tile.revealed,.critical-focus.timing-locked .critical-number,.timing-hit-sparks>i,.timing-locked .strike-gauge,.experience-screen .legacy-xp-track.xp-arrival{animation:none!important}.timing-hit-sparks{display:none}.tutorial-demo-strike.strike-surface{transition:none}}

/* V71: contact stays inside the same fixed control and status geometry. */
.stage-combat .combat .keyboard .key.strike-surface,.critical-focus .timing-strike.strike-surface,.tutorial-demo-strike.strike-surface{box-shadow:inset 0 2px #f0c89b,inset 2px 0 #c3946a,inset -2px 0 #3f2921,inset 0 -7px #301b18}
.stage-combat .combat .keyboard .key.strike-surface:before,.critical-focus .timing-strike.strike-surface:before,.tutorial-demo-strike.strike-surface:before{bottom:8px}
.stage-combat .combat .keyboard .key.strike-surface:active,.critical-focus .timing-strike.strike-surface:active,.tutorial-demo-strike.strike-surface.demo-pressed{transform:translateY(4px)!important;box-shadow:inset 0 1px #c49369,inset 1px 0 #946346,inset -1px 0 #3c2820,inset 0 -2px #301b18}
.key-press-glint{box-shadow:inset 0 1px #ffedb9,inset 1px 0 #e3b47c;animation-duration:.36s}
.hero-warning{top:25%;bottom:auto;animation:none;font-size:10px;letter-spacing:1.4px;text-shadow:0 2px 3px #071208,0 0 10px #09140a}
.hero-warning>i{width:132px}
.stage-combat .combat .knight-status>span{display:flex;align-items:baseline;justify-content:flex-end;flex:none;width:63px;min-width:63px;line-height:20px}
.stage-combat .combat [data-player-number]{display:inline-block;min-width:3ch;text-align:right}
.stage-combat .combat .health-emblems .heart-rack{height:19px;min-height:19px;flex:none}
.stage-combat .combat.healing-pulse .heart-rack{animation:none;transform:none}
.stage-combat .combat .heart-unit.health-mending{animation:health-repair-glow .9s ease-out both}
@keyframes health-repair-glow{0%{filter:brightness(1)}28%{filter:brightness(1.65) drop-shadow(0 0 4px #b3d993)}100%{filter:none}}
/* Never animate the purse container: its translateY centers it in the strip. */
.combat-purse.purse-draining,.stock-purse.purse-draining{animation:none}
.combat-purse.purse-draining .coin-icon,.stock-purse.purse-draining .coin-icon{animation:purse-coin-contact .4s ease-out both}
@keyframes purse-coin-contact{0%{scale:1}35%{scale:1.16;filter:brightness(1.35)}100%{scale:1}}
.stage-combat .combat .command-line>.combat-purse b,.stock-purse b,.dossier-gold{color:#f2c65f;text-shadow:0 1px #57371a,0 0 5px #cc8a2826}
.stage-combat .combat .command-line>.combat-purse b{line-height:20px}
.stock-purse b{min-width:6.5ch;text-align:right;line-height:1.15}
.stock-purse>.coin-icon{grid-column:1;grid-row:1}.stock-purse>[data-store-gold]{grid-column:2;grid-row:1}
.stock-purse>.store-debit{grid-column:2;grid-row:1}
@media(max-width:350px){.stage-combat .combat .knight-status>span{width:57px;min-width:57px}}
@media(prefers-reduced-motion:reduce){.stage-combat .combat .heart-unit.health-mending,.purse-draining .coin-icon{animation:none!important}}
