/* V72: a continuous journey, with clear controls and room for each reward. */
.shell.stage>.knight-identity{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;max-width:430px;padding:32px 28px;text-align:center;min-height:0}
.stage-identity:before{background:linear-gradient(#07120cb0,#07120ce8)!important}
.knight-identity>.eyebrow{letter-spacing:4px;margin:0;color:#c6ad75}
.identity-portrait{width:148px;height:148px;position:relative;filter:drop-shadow(0 8px 8px #020b08)}
.identity-portrait .pixel-scene,.identity-portrait canvas{width:100%;height:100%;object-fit:contain}
.knight-identity h1{font:28px/1.2 'Knightle Herald',Georgia;color:#ecd6a0;letter-spacing:1px;margin:0}
.knight-identity>p:not(.eyebrow){margin:0;color:#c2c9b4;font:15px Georgia}
.knight-identity form{width:100%;margin-top:12px;display:grid;gap:12px}
.knight-identity label{display:flex;justify-content:space-between;font:9px 'Knightle Quill',Georgia;color:#d2c293;align-items:baseline}
.knight-identity label small{font:11px Georgia;color:#a4b29e}
.identity-nameframe,.home .knight-nameplate{border:0;background:linear-gradient(135deg,#a89b70,#5e654d 45%,#343d2d);box-shadow:inset 0 2px #e5d1a0,inset 2px 0 #8d8964,inset -2px 0 #20291d,inset 0 -4px #172217;clip-path:polygon(4px 0,calc(100% - 4px) 0,calc(100% - 4px) 3px,100% 3px,100% calc(100% - 4px),calc(100% - 3px) calc(100% - 4px),calc(100% - 3px) 100%,4px 100%,4px calc(100% - 3px),0 calc(100% - 3px),0 4px,4px 4px)}
.identity-nameframe{padding:5px 6px 7px}
.identity-nameframe:focus-within{filter:brightness(1.2)}
.identity-nameframe input{box-sizing:border-box;width:100%;height:44px;padding:10px 12px;background:linear-gradient(#14251a,#243523);border:0;outline:0;box-shadow:inset 0 2px #070f0a,inset 2px 0 #0b150d,inset 0 -1px #a9ac7633;font:18px 'Knightle Quill',Georgia;color:#f1dfae;text-align:center;letter-spacing:1px}
.knight-identity .btn{margin:8px 0 0;min-height:47px;font:12px 'Knightle Quill',Georgia;letter-spacing:1px}
.home .knight-nameplate{top:-25px;display:flex;align-items:center;justify-content:center;gap:5px;min-width:132px;max-width:180px;width:calc(100% + 30px);padding:7px 8px 9px;color:#f0dfb2;text-shadow:0 2px #111b12;background:linear-gradient(110deg,#7f7049,#d1bc7c 45%,#978254 70%,#5a5033);box-shadow:0 3px #080f0a;isolation:isolate;clip-path:polygon(6px 0,calc(100% - 6px) 0,100% 50%,calc(100% - 6px) 100%,6px 100%,0 50%)}
.home .knight-nameplate:before{content:'';position:absolute;inset:2px 3px 4px;width:auto;height:auto;background:repeating-linear-gradient(0deg,transparent 0 3px,#b8aa6e0a 3px 4px),linear-gradient(#35422b,#1c2d20 55%,#263524);box-shadow:inset 0 1px #c3b07755,inset 0 -2px #0b180f;clip-path:inherit;z-index:-1}
.home .knight-nameplate:after{content:'';position:absolute;left:25%;right:25%;top:auto;bottom:6px;width:auto;height:1px;background:linear-gradient(90deg,transparent,#a8966077,transparent);box-shadow:none}
.home .knight-nameplate strong{font:700 12px/1.2 'Knightle Herald',Georgia;letter-spacing:.5px;white-space:nowrap}
.home .knight-nameplate>i{font:6px Georgia;color:#bda46d;font-style:normal;flex:none;text-shadow:0 1px #07130a}

/* A fixed-size scene keeps the knight, drinking button and meter together. */
.shell.stage>.last-call-screen{grid-template-rows:auto auto clamp(160px,32cqh,235px) auto;align-content:center;gap:9px;padding:48px 20px 44px;max-width:540px}
.last-call-scene{width:calc(100% + 40px);margin-left:-20px}
.last-call-controls{padding-inline:8px}
.call-panels{display:contents}
.call-invite{inset:135px 0 24px;align-items:center;padding:24px 24px 12px;background:linear-gradient(#08131525,#081315db 32%,#081315e8)}
.call-invite>section,.call-finish>section{box-sizing:border-box;max-height:100%;overflow:auto;border:0;padding:22px 20px 17px;background:repeating-linear-gradient(0deg,transparent 0 31px,#070e0b35 31px 33px),linear-gradient(115deg,#35382a,#1a2b21 54%,#19241e);box-shadow:inset 0 3px #a59b6c,inset 3px 0 #626d4d,inset -3px 0 #101c15,inset 0 -5px #0d1911,0 7px 15px #020706a6;clip-path:polygon(5px 0,calc(100% - 5px) 0,calc(100% - 5px) 3px,100% 3px,100% calc(100% - 5px),calc(100% - 4px) calc(100% - 5px),calc(100% - 4px) 100%,5px 100%,5px calc(100% - 3px),0 calc(100% - 3px),0 5px,5px 5px)}
.call-invite-mug{border:0;box-shadow:none;background:none;margin:0 auto 12px;height:35px}
.call-invite h2,.call-finish h2{letter-spacing:1px;color:#f0dab0}
.call-invite .call-difficulty{font:11px/1.5 Georgia;color:#aeba9e;margin:8px 0}
.call-invite .call-prizes{border-block:1px solid #a99e6840;padding:10px 0;margin:13px 0}
.call-prizes canvas{display:inline-block;width:18px;height:18px;vertical-align:-2px;image-rendering:pixelated}
.call-panel-links button{font-family:'Knightle Quill',Georgia!important;color:#d0c79e;letter-spacing:.5px;transition:color .16s,filter .16s}
.call-panel-links button:hover{color:#fff0c5}
.call-board-panel{inset:128px 0 26px;align-items:center}
.call-board-panel>section{width:min(370px,100%);padding:20px 16px 16px}
.call-board-panel h2{font-size:24px;margin-bottom:6px}
.call-ledger-head{display:flex;justify-content:space-between;border-bottom:1px solid #a99e6866;padding:5px 7px 7px 35px;font:8px 'Knightle Quill',Georgia;color:#a8b095;letter-spacing:1px}
.call-scores-list{margin:0;padding:0;list-style:none}
.call-scores-list li{display:grid;grid-template-columns:24px 1fr auto;align-items:center;gap:8px;padding:10px 6px;border-bottom:1px solid #a99e6827;background:none}
.call-scores-list li>i{font:18px 'Knightle Herald',Georgia;color:#969d7b;text-align:center;font-style:normal}
.call-scores-list li:nth-child(-n+3)>i{color:#e4be6a}
.call-scores-list li>span{font:12px 'Knightle Quill',Georgia;color:#e5dbb5;text-align:left}
.call-scores-list li small{font:10px Georgia;color:#a4b196;margin-top:4px}
.call-scores-list li>b{font:23px 'Knightle Herald',Georgia;color:#e8cc85}
.call-scores-list .call-score-new{background:linear-gradient(90deg,#93ab4e22,transparent);box-shadow:inset 2px 0 #b5bc78}
.call-board-empty{padding:28px 8px}
.call-scores-scroll{max-height:31cqh;scrollbar-color:#8a8f61 #132419;margin-bottom:14px}
.last-call-screen .call-finish{inset:auto 20px 26px;z-index:8}
.call-finish>section{padding:13px 16px 12px}
.call-finish h2{font-size:21px;margin:0 0 5px}
.call-finish .call-final-score{font-size:31px;margin:5px 0}.call-final-score>b{font-weight:400;min-width:2ch}
.call-result-rewards{margin:8px auto 10px}
.call-result-rewards .legacy-xp-track{height:17px;margin:5px 0;padding:3px;box-sizing:border-box}
.call-result-rewards .xp-grain{inset:3px}
.call-result-rewards .legacy-xp-fill>i{height:calc(100% + 4px);top:-2px;width:3px}
.call-result-rewards .call-xp-settled>i{animation:none;opacity:.65}
.call-result-rewards .legacy-xp-track.xp-arrival{animation:xp-stone-impact .65s ease-out both}
.call-xp-gain{font:12px 'Knightle Quill',Georgia}.call-level-line .call-xp-gain b{font:14px 'Knightle Herald',Georgia}
.call-panel-leaving{animation:call-panel-out .22s ease-in both!important;pointer-events:none!important;z-index:7!important}
@keyframes call-panel-out{to{opacity:0;translate:0 7px}}
.call-reward-burst .call-tip{display:flex;align-items:center;gap:3px;animation-name:call-tip-readable;animation-duration:1s;transform:none}
.call-tip-coin{display:block;width:24px;height:24px;animation:call-coin-spin 1.1s linear both paused;animation-delay:var(--call-age,0ms)}
.call-tip b{display:block;white-space:nowrap;transform:none!important}
@keyframes call-tip-readable{0%{opacity:0;transform:translate(0,0) scale(.65)}12%{opacity:1}35%{transform:translate(calc(var(--flight-x)*.28),-40px) scale(1.15)}90%{opacity:1}100%{opacity:0;transform:translate(var(--flight-x),var(--flight-y)) scale(.75)}}
@keyframes call-coin-spin{from{transform:rotateY(0deg) rotate(-20deg)}to{transform:rotateY(1080deg) rotate(35deg)}}

/* The complete lesson fits in one compact group; Skip is always available. */
.shell.stage>.quest-tutorial{grid-template-rows:auto clamp(130px,29cqh,185px) auto 23px 44px;align-content:center;gap:13px;padding:54px 26px 40px;max-width:540px}
.quest-tutorial .tutorial-kicker{justify-content:center}
.quest-tutorial .tutorial-skip{position:absolute;top:18px;right:62px;min-height:28px;padding:5px 2px;color:#e0d3a6;font-size:10px;z-index:6}
.quest-tutorial h1{margin-top:10px}
.tutorial-copy{max-width:420px}
.tutorial-copy p{font-size:14px;line-height:1.45}
.tutorial-copy .tutorial-note{font-size:12px;margin-top:8px}
.tutorial-film{max-height:185px}
.oath-tutorial-link{display:block;margin:10px auto 0;padding:4px 8px;background:none;border:0;color:#a6b196;font:10px Georgia;cursor:pointer;text-decoration:underline;text-decoration-color:#a6b19660;text-underline-offset:3px}
.oath-tutorial-link:hover{color:#e4d4a3}

/* Explicit slots prevent the heading from inheriting the old rarity row. */
.stage-loot .spoils-screen{--chest-size:clamp(108px,23cqh,156px);--loot-grid-height:min(calc(var(--loot-rows,1)*118px + (var(--loot-rows,1) - 1)*8px),max(104px,calc(100cqh - 326px)));grid-template-columns:minmax(0,1fr);grid-template-rows:14px auto clamp(90px,22cqh,146px) 20px auto;align-content:start;gap:7px;padding:48px 16px 45px}
.stage-loot .spoils-screen>.eyebrow{grid-column:1;grid-row:1;align-self:center;position:relative;inset:auto;z-index:4}
.stage-loot .spoils-screen>h1{grid-column:1;grid-row:2;align-self:start;position:relative;inset:auto;transform:none;z-index:4;line-height:1.15}
.stage-loot .spoils-screen>.loot-stage{grid-column:1;grid-row:3;align-self:center;position:relative;z-index:1}
.stage-loot .spoils-screen>h2{grid-column:1;grid-row:4;position:relative;z-index:3;align-self:center}
/* Keep the container's base next to its caption through the pullback. */
.stage-loot .spoils-screen .chest-camera{top:auto;bottom:0;transform:translateX(-50%);transform-origin:50% 100%}
.stage-loot .spoils-screen:is(.loot-pullback,.loot-revealed) .chest-camera{transform:translateX(-50%) scale(.62)}
.stage-loot .spoils-screen>h2{align-self:start}
.stage-loot .spoils-screen>.loot-presentation{grid-column:1;grid-row:5;grid-template-rows:var(--loot-grid-height) 32px 44px;height:auto;gap:9px;z-index:3}
.stage-loot .loot-continue{height:44px;min-height:44px;margin:0 auto 14px}
.stage-loot .treasure-item{grid-template-rows:minmax(0,70px) 26px 22px;max-height:118px}

/* A readable damage receipt lands at the health strip, at the actual impact. */
.stage-combat .combat .knight-status>.combat-damage-receipt{position:absolute;left:4px;bottom:calc(100% + 8px);top:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:auto;min-width:112px;padding:6px 9px 7px;line-height:1.1;background:linear-gradient(#381c18ef,#20110ff2);box-shadow:inset 0 1px #b36d4f,inset 1px 0 #795140,inset 0 -3px #120b09;z-index:30;pointer-events:none;animation:damage-receipt 2.2s ease-out both}
.combat-damage-receipt b{font:26px/1.05 'Knightle Herald',Georgia;color:#ffc6a5;text-shadow:0 2px #381310;white-space:nowrap}
.combat-damage-receipt small{font:8px/1.3 'Knightle Quill',Georgia;color:#e7bfa3;white-space:nowrap}
@keyframes damage-receipt{0%{opacity:0;transform:translateY(6px) scale(.9)}9%{opacity:1;transform:translateY(0) scale(1.08)}20%,85%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-5px)}}
.hero-warning>i{animation-duration:1.25s}
.critical-focus .timing-strike{touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.vault-requirement,.dragon-card [data-unlock-status]{display:flex;align-items:center;justify-content:center;gap:4px}
.vault-requirement .tooth-icon,.dragon-card [data-unlock-status] .tooth-icon{width:18px;height:22px;flex:none;object-fit:contain}

@container game-stage (max-height:560px){
 .shell.stage>.last-call-screen{grid-template-rows:auto auto clamp(140px,29cqh,170px) auto;gap:6px;padding:42px 16px 32px}
 .last-call-scene{width:calc(100% + 32px);margin-left:-16px}.call-invite{inset:108px 0 15px;padding:10px 19px}.call-invite>section{padding:13px 15px 12px}.call-invite-mug{height:28px;margin-bottom:8px}.call-invite h2{font-size:20px;margin-bottom:8px}.call-invite p{font-size:11px;line-height:1.4;margin:6px 0}.call-invite .call-difficulty{font-size:10px}.call-invite .call-prizes{margin:8px 0;padding:7px 0}.last-call-screen .call-finish{inset:auto 16px 20px}.call-finish>section{padding:10px 14px}.call-finish h2{font-size:19px}.call-finish .call-final-score{font-size:27px}.call-result-rewards{margin:6px auto}.call-board-panel h2{font-size:21px}.call-scores-scroll{max-height:29cqh}.call-scores-list li{padding:7px 4px}
 .shell.stage>.quest-tutorial{grid-template-rows:auto 110px auto 20px 40px;gap:8px;padding:42px 20px 22px}.quest-tutorial h1{font-size:23px;margin-top:8px}.tutorial-copy p{font-size:12.5px;line-height:1.4}.tutorial-copy .tutorial-note{font-size:11px;margin-top:6px}.tutorial-word-demo,.tutorial-temper,.tutorial-bonus-demo{gap:10px}.quest-tutorial footer .btn{min-height:40px}.tutorial-film .tutorial-stone{height:38px;width:34px;font-size:22px}.tutorial-demo-strike.strike-surface{padding:9px 22px 13px}
 .stage-loot .spoils-screen{grid-template-rows:12px auto 94px 18px auto;padding:42px 14px 34px;gap:5px;--loot-grid-height:min(calc(var(--loot-rows,1)*94px + (var(--loot-rows,1) - 1)*6px),max(94px,calc(100cqh - 280px)))}.stage-loot .spoils-screen>.loot-presentation{grid-template-rows:var(--loot-grid-height) 28px 42px;gap:7px}.stage-loot .treasure-item{grid-template-rows:minmax(0,50px) 24px 20px;max-height:94px}
 .identity-portrait{width:120px;height:120px}.shell.stage>.knight-identity{gap:10px;padding:24px}.knight-identity h1{font-size:25px}
}
@media(orientation:landscape) and (max-height:500px){
 .shell.stage>.last-call-screen{max-width:900px;grid-template-columns:1.25fr 1fr;grid-template-rows:40px 36px minmax(0,1fr);padding:38px 26px 20px;gap:8px 22px;align-content:stretch}.last-call-scene{grid-column:1;grid-row:1/4;margin:0;width:100%}.call-invite,.call-board-panel{inset:35px 16px 16px 45%;padding:0}.call-invite-mug{display:none}.call-invite>section{padding:12px}.last-call-screen .call-finish{inset:auto 16px 15px 46%}.call-finish>section{padding:8px}.call-scores-scroll{max-height:30cqh}
 .shell.stage>.quest-tutorial{grid-template-columns:1fr 1fr;grid-template-rows:auto minmax(0,1fr) 20px 35px;padding:40px 24px 16px;gap:8px 24px;max-width:950px}.tutorial-film{max-height:none}.quest-tutorial .tutorial-skip{right:auto;left:22px;top:5px}.quest-tutorial footer .btn{min-height:35px}.tutorial-copy p{font-size:12px}.tutorial-copy .tutorial-note{font-size:10px}
 .stage-loot .spoils-screen{grid-template-columns:1fr 1.2fr;grid-template-rows:14px auto minmax(50px,1fr) 18px;gap:5px 18px;padding:40px 22px 28px}.stage-loot .spoils-screen>.loot-presentation{grid-column:2;grid-row:1/5;grid-template-rows:minmax(0,1fr) 28px 38px;height:100%}.stage-loot .loot-continue{height:38px;min-height:38px}
 .shell.stage>.knight-identity{display:grid;max-width:690px;grid-template-columns:150px 1fr;gap:6px 24px;align-content:center}.identity-portrait{grid-column:1;grid-row:1/5}.knight-identity form{grid-column:2;margin-top:6px;gap:8px}.knight-identity h1{font-size:23px}.knight-identity>.eyebrow{font-size:9px}.knight-identity .btn{min-height:40px;margin:0}
}
@media(prefers-reduced-motion:reduce){.call-tip-coin{animation:none}.call-panel-leaving{animation-duration:.08s!important}.combat-damage-receipt{animation-name:damage-receipt-still!important}.call-result-rewards .legacy-xp-track.xp-arrival{animation:none}}
@keyframes damage-receipt-still{0%{opacity:0}5%,92%{opacity:1}100%{opacity:0}}

.combat.wordSolved .last-attack .tile.crit{animation:bonus-word-seal .8s ease-out both;animation-delay:calc(var(--tile-index)*70ms)}
@keyframes bonus-word-seal{0%{filter:brightness(1);transform:none}35%{filter:brightness(1.65);transform:translateY(-4px)}100%{filter:brightness(1.1);transform:none}}
@media(prefers-reduced-motion:reduce){.combat.wordSolved .last-attack .tile.crit{animation:none}}

.last-call-scoreboard{transition:opacity .25s ease-out}.last-call-screen[data-call-phase=intro] .last-call-scoreboard{opacity:0;pointer-events:none}
.identity-portrait .pixel-scene{min-height:0!important;max-height:100%;height:100%!important;aspect-ratio:1;margin:0;overflow:hidden;border:2px solid #697050;box-shadow:inset 0 0 0 2px #1b2c1a,0 4px #0c160e;box-sizing:border-box}
@media(max-width:350px){.stage-tutorial .developer-preview{top:auto;bottom:0}.quest-tutorial .tutorial-skip{right:58px;top:31px}}

/* The name is chosen, reviewed, then struck into the chronicle before the intro. */
.shell.stage>.knight-identity{position:relative;isolation:isolate;max-width:440px;gap:9px;padding:30px 30px 36px}
.identity-wordmark{width:190px;height:43px;object-fit:contain;margin:0 0 1px;filter:drop-shadow(0 3px #071209)}
.knight-identity>.eyebrow{font-size:6px;letter-spacing:2.8px;margin-bottom:3px}
.identity-aura{position:absolute;z-index:-1;inset:15% -15% 5%;background:radial-gradient(ellipse,#95a06119,transparent 65%);pointer-events:none}
.identity-portrait{width:136px;height:146px;position:relative;overflow:visible;margin-bottom:2px;background:linear-gradient(130deg,#b3a577,#4c5b3d 35%,#1b2e20);padding:4px 4px 7px;box-sizing:border-box;clip-path:polygon(13% 0,87% 0,87% 4%,100% 4%,100% 80%,85% 92%,50% 100%,15% 92%,0 80%,0 4%,13% 4%);filter:drop-shadow(0 4px #06100a)}
.identity-portrait .pixel-scene{border:0!important;background:#17291c;clip-path:polygon(10% 0,90% 0,90% 4%,100% 4%,100% 80%,50% 100%,0 80%,0 4%,10% 4%);box-shadow:inset 0 0 0 2px #172718!important}
.identity-portrait canvas{max-height:100%;object-fit:contain}
.identity-seal{position:absolute;bottom:2px;left:calc(50% - 12px);width:24px;height:24px;display:grid;place-items:center;font:17px Georgia;color:#e0ca8b;text-shadow:0 1px #101d12;background:#2e3c24;clip-path:polygon(50% 0,100% 28%,100% 72%,50% 100%,0 72%,0 28%);opacity:0}
.knight-identity h1{font-size:25px;letter-spacing:1px;max-width:330px;margin-top:4px}
.knight-identity>p:not(.eyebrow){font-size:13px;line-height:1.5}
.knight-identity form{margin-top:10px;gap:11px}
.identity-nameframe input{height:42px}
.identity-confirm .identity-portrait{animation:identity-review .35s ease-out both}
.identity-chosen-name{position:relative;min-width:180px;max-width:100%;padding:12px 16px 15px;font:24px/1.2 'Knightle Quill',Georgia;color:#f4df9c;letter-spacing:1px;text-shadow:0 2px #1b2c16;background:linear-gradient(90deg,transparent,#2d4125c9 15% 85%,transparent);text-align:center;white-space:nowrap;animation:identity-name-in .4s ease-out both}
.identity-chosen-name>i{position:absolute;bottom:4px;left:8%;width:84%;height:2px;background:linear-gradient(90deg,transparent,#b4a668,transparent)}
.identity-confirm-copy{max-width:290px;min-height:38px;margin:0!important;color:#c3cbb0!important;font:12px/1.5 Georgia!important}
.identity-actions{width:100%;min-height:88px;display:flex;flex-direction:column;align-items:stretch;gap:6px}
.identity-actions .btn{margin-top:5px}.identity-change{border:0;background:none;padding:8px;font:11px 'Knightle Quill',Georgia;color:#b1bc9f;cursor:pointer}
.identity-signed{font:8px/1.6 'Knightle Quill',Georgia;letter-spacing:2px;color:#b8c89c;margin:12px auto;animation:identity-signed .4s ease-out 1s both}
.identity-sealed .identity-portrait{animation:identity-forge 1.8s cubic-bezier(.2,.8,.3,1) both}
.identity-sealed .identity-seal{animation:identity-seal-stamp .6s cubic-bezier(.2,.8,.3,1) .55s both}
.identity-sealed .identity-aura{animation:identity-aura-burst 1.8s ease-out both}
.identity-sealed .identity-chosen-name{animation:none;background:linear-gradient(90deg,transparent,#5361337a 15% 85%,transparent)}
.identity-sealed .identity-chosen-name>span{display:inline-block;animation:name-engraving .65s ease-out both;animation-delay:calc(.15s + var(--letter)*55ms)}
.identity-sealed .identity-chosen-name>i{animation:identity-underline .85s ease-out .25s both}
.identity-sealed h1{animation:identity-signed .4s ease-out .7s both;color:#f7e5b0}
.identity-sparks{position:absolute;left:50%;top:62%;pointer-events:none}
.identity-sparks>i,.victory-embers>i{position:absolute;width:3px;height:3px;background:#e6cc88;box-shadow:0 0 3px #e9cb7b88;animation:identity-spark 1.2s ease-out both;animation-delay:calc(.35s + var(--spark)*13ms)}
.identity-sparks>i:nth-child(3n),.victory-embers>i:nth-child(3n){background:#b4cd91;width:2px;height:2px}
@keyframes identity-review{from{transform:translateY(4px);filter:brightness(.8)}to{transform:none;filter:brightness(1)}}
@keyframes identity-name-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes identity-forge{0%{transform:translateY(0);filter:brightness(1)}24%{transform:translateY(-7px);filter:brightness(1.2)}40%{transform:translateY(3px);filter:brightness(1.8)}52%{transform:translateY(-2px);filter:brightness(1.3)}100%{transform:none;filter:brightness(1.08)}}
@keyframes identity-seal-stamp{0%{opacity:0;transform:scale(2)}45%{opacity:1;transform:scale(.85)}70%{transform:scale(1.12)}100%{opacity:1;transform:scale(1)}}
@keyframes name-engraving{0%{opacity:.25;transform:translateY(-5px);filter:brightness(1)}35%{opacity:1;transform:translateY(1px);filter:brightness(2)}100%{opacity:1;transform:none;filter:brightness(1)}}
@keyframes identity-aura-burst{0%{opacity:.2;transform:scale(.8)}40%{opacity:1;transform:scale(1.12);background:radial-gradient(ellipse,#d8be6b55,transparent 65%)}100%{opacity:.6;transform:scale(1)}}
@keyframes identity-underline{from{transform:scaleX(0);filter:brightness(2)}to{transform:scaleX(1);filter:brightness(1)}}
@keyframes identity-spark{0%{opacity:0;transform:translate(0,0) scale(.5)}12%{opacity:1}100%{opacity:0;transform:translate(var(--sx),var(--sy)) scale(.4)}}
@keyframes identity-signed{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}

/* Swords meet; the carved victory banner unfurls and holds before bonus play. */
.encounter-victory{inset:-4px 0 0;background:radial-gradient(ellipse,#102014f2 12%,#102014b5 42%,transparent 75%);animation:victory-veil .4s ease-out .3s both;gap:0}
.victory-carving{position:relative;isolation:isolate;padding:14px 20px 12px;width:270px;max-width:94%;box-sizing:border-box;background:repeating-linear-gradient(0deg,transparent 0 4px,#c8d09108 4px 5px),linear-gradient(135deg,#3d4a2e,#1d3222 45%,#1b2a1c);box-shadow:inset 0 2px #b9ad77,inset 2px 0 #77815a,inset -2px 0 #162314,inset 0 -4px #101b0f;clip-path:polygon(8px 0,calc(100% - 8px) 0,calc(100% - 8px) 4px,100% 4px,100% calc(100% - 5px),calc(100% - 7px) calc(100% - 5px),calc(100% - 7px) 100%,7px 100%,7px calc(100% - 4px),0 calc(100% - 4px),0 4px,8px 4px);animation:victory-unfurl .7s cubic-bezier(.16,.8,.2,1) .5s both}
.victory-carving:after{content:'';position:absolute;z-index:-1;inset:3px;background:linear-gradient(110deg,transparent 20%,#f1d48933 48%,transparent 70%);animation:victory-gold-sweep .9s ease-out .85s both}
.victory-carving>small{display:block;font:6px/1.4 'Knightle Quill',Georgia;letter-spacing:2px;color:#b9c397;margin:0 0 6px}
.encounter-victory .victory-carving>strong{font:30px/1 'Knightle Herald',Georgia;letter-spacing:4px;color:#f2d99b;text-shadow:0 2px #192811,0 0 8px #d6b25730;animation:victory-letter-seal .5s ease-out .8s both}
.encounter-victory .victory-carving>p{font:11px/1.4 Georgia;color:#d5dcb8;margin:7px 0 0}.victory-carving p b{color:#eed38c;white-space:nowrap}
.victory-blades{position:absolute;top:calc(50% - 50px);left:50%;z-index:2;pointer-events:none;width:0;height:0}
.victory-blades svg{position:absolute;bottom:0;left:-6px;width:13px;height:50px;transform-origin:50% 85%;filter:drop-shadow(0 2px #0a160d);animation:victory-blade-meet .7s cubic-bezier(.16,.8,.2,1) .2s both}
.victory-embers{position:absolute;left:50%;top:45%;pointer-events:none;z-index:3}.victory-embers>i{animation-delay:calc(.55s + var(--spark)*12ms)}
.word-bonus-banner{bottom:10px;width:auto;min-width:215px;max-width:92%;padding:10px 18px 10px 32px;border:0;background:linear-gradient(100deg,#34452be8,#172d1ee8);box-shadow:inset 0 1px #a69b68,inset 0 -3px #11200f;clip-path:polygon(5px 0,calc(100% - 5px) 0,calc(100% - 5px) 3px,100% 3px,100% calc(100% - 3px),calc(100% - 5px) calc(100% - 3px),calc(100% - 5px) 100%,5px 100%,5px calc(100% - 3px),0 calc(100% - 3px),0 3px,5px 3px);animation:identity-name-in .4s ease-out both}
.word-bonus-banner>span{position:absolute;left:12px;top:17px;font:12px Georgia;color:#bdc78d}
.word-bonus-banner>strong{font:15px/1.2 'Knightle Herald',Georgia;letter-spacing:1.4px;color:#e9d496}
.word-bonus-banner>p{font:11px/1.3 Georgia;margin:4px 0 0;color:#c6d0b0}.word-bonus-banner p b{font:11px 'Knightle Quill',Georgia;color:#efce83;margin-left:6px}
@keyframes victory-veil{from{opacity:0}to{opacity:1}}
@keyframes victory-unfurl{0%{opacity:0;transform:scaleX(.2) scaleY(.7)}65%{opacity:1;transform:scaleX(1.035) scaleY(1)}100%{opacity:1;transform:none}}
@keyframes victory-letter-seal{0%{opacity:0;filter:brightness(2)}100%{opacity:1;filter:brightness(1)}}
@keyframes victory-blade-meet{from{opacity:0;transform:translateY(-12px) rotate(calc((var(--blade)*2 - 1)*85deg))}70%{opacity:1;transform:translateY(2px) rotate(calc((var(--blade)*2 - 1)*35deg))}100%{opacity:1;transform:translateY(0) rotate(calc((var(--blade)*2 - 1)*42deg))}}
@keyframes victory-gold-sweep{from{opacity:0;transform:translateX(-60%)}30%{opacity:1}to{opacity:0;transform:translateX(60%)}}
@container game-stage (max-height:560px){.shell.stage>.knight-identity{gap:7px;padding:24px 23px}.identity-wordmark{width:162px;height:35px}.identity-portrait{width:108px;height:116px;margin:0}.knight-identity h1{font-size:22px;margin:0}.knight-identity form{margin-top:7px;gap:9px}.identity-nameframe input{height:38px}.knight-identity .btn{min-height:42px}.identity-chosen-name{font-size:21px;padding:10px 12px 13px}.identity-confirm-copy{font-size:11px!important;min-height:32px}.identity-actions{min-height:80px}.victory-carving{padding:11px 15px 10px;width:248px}.encounter-victory .victory-carving>strong{font-size:27px}.victory-carving>small{font-size:5.5px}.victory-blades{top:calc(50% - 42px)}.victory-blades svg{height:43px}.word-bonus-banner{bottom:7px;padding:8px 13px 8px 28px;min-width:205px}}
@media(orientation:landscape) and (max-height:500px){.shell.stage>.knight-identity{display:grid;grid-template-columns:145px 1fr;max-width:720px;gap:6px 25px;padding:24px}.identity-portrait{grid-column:1;grid-row:1/7;width:132px;height:143px}.identity-wordmark,.knight-identity>.eyebrow,.knight-identity h1,.knight-identity form,.identity-chosen-name,.identity-confirm-copy,.identity-actions,.knight-identity>p{grid-column:2}.identity-wordmark{justify-self:center;height:28px}.identity-actions{min-height:65px}.knight-identity h1{font-size:20px}.identity-confirm-copy{min-height:0}.identity-chosen-name{font-size:20px;padding:7px}.identity-portrait{grid-row:1/8}}
@media(prefers-reduced-motion:reduce){.identity-sealed .identity-portrait,.identity-sealed .identity-seal,.identity-sealed .identity-aura,.identity-sealed .identity-chosen-name>span,.identity-sealed .identity-chosen-name>i,.identity-sealed h1,.identity-signed,.victory-carving,.victory-carving:after,.encounter-victory .victory-carving>strong,.victory-blades svg{animation:none!important}.identity-sealed .identity-seal{opacity:1}.identity-sparks,.victory-embers{display:none}.victory-blades svg{transform:rotate(calc((var(--blade)*2 - 1)*42deg))}}
