/* Friends release: the same carved-stone UI, tactile ice and quiet studio cards. */
.critical-focus .gauge-runner{contain:layout style;will-change:transform;transition:none!important;animation:none!important}
.critical-focus .gauge-cursor{box-shadow:0 0 3px #fff6,0 0 9px #e9f1c544;filter:none}
.world-rumble{scale:none!important;animation:chamber-tremor97 1.8s linear both;transform-origin:center}
@keyframes chamber-tremor97{0%,100%{transform:none}12%{transform:translate(1px,0)}22%{transform:translate(-2px,1px)}34%{transform:translate(2px,-1px)}46%{transform:translate(-2px,0)}58%{transform:translate(2px,1px)}70%{transform:translate(-1px,-1px)}82%{transform:translate(1px,0)}}
.baronRise .combat-head h1{animation-delay:4.05s}.baronRise .enemy-frame,.baronRise .enemy-health-fill{animation-delay:3.45s}.baronRise .trait-emblem{animation-delay:4.75s}.baronRise .rune-board-controls>.guess-board{animation-delay:4.55s}
.icebreak-focus .critical-window{overflow:visible}
.icebreak-focus .focus-rune.iceblock-stage{width:198px;height:184px;margin-block:12px 5px;perspective:700px}
.iceblock-art{filter:drop-shadow(0 9px 4px #0008);transform:translateZ(0)}
.iceblock{will-change:transform}.iceblock canvas{filter:saturate(.7)}
.ice-fractures{stroke:#28566b;stroke-width:.55;filter:drop-shadow(.45px .4px #d7ede9);stroke-linecap:butt;stroke-linejoin:miter}
.ice-fractures .crack-two{stroke-width:.38}.ice-fractures .ice-scar{stroke:#23475a;stroke-width:.8;filter:none}
.ice-dent{fill:#3b6578;stroke:#c3d9db;stroke-width:.45;opacity:0}
.icebreak-focus[data-cracks='1'] .ice-dent,.icebreak-focus[data-cracks='2'] .ice-dent{opacity:1}
.icebreak-focus[data-cracks='2'] .ice-dent{transform:translate(-1px,1px) scale(1.08);transform-origin:43px 53px}
.icebreak-focus[data-cracks='3'] .ice-fractures{opacity:0;transition:opacity .12s}
.icebreak-pick{width:225px;height:225px;left:calc(43% - 2px);top:calc(53% - 153px);transform-origin:2px 153px;will-change:transform;filter:drop-shadow(2px 3px 1px #0a182599)}
.icebreak-focus[data-strike='2']{--pick-x:-8px;--pick-y:5px}.icebreak-focus[data-strike='3']{--pick-x:-15px;--pick-y:9px}
.icebreak-focus.ice-hit .icebreak-pick{animation:pick-swing97 .57s linear both}
@keyframes pick-swing97{
 0%{opacity:0;transform:translate(65vw,-80px) rotate(-38deg)}
 10%{opacity:1;transform:translate(44vw,-67px) rotate(-29deg);animation-timing-function:cubic-bezier(.55,.05,.9,.45)}
 30%,40%{opacity:1;transform:translate(var(--pick-x),var(--pick-y)) rotate(0deg)}
 52%{opacity:1;transform:translate(calc(var(--pick-x) + 5px),calc(var(--pick-y) - 4px)) rotate(-4deg);animation-timing-function:cubic-bezier(.4,0,.9,.3)}
 100%{opacity:0;transform:translate(65vw,-90px) rotate(-32deg)}
}
.icebreak-focus.ice-hit .iceblock{animation:ice-weight97 .57s linear both}
@keyframes ice-weight97{0%,29%,100%{transform:none}30%,39%{transform:translate(-4px,3px) rotate(-2deg)}47%{transform:translate(2px,-1px) rotate(.7deg)}62%{transform:translate(-1px,1px)}78%{transform:none}}
.icebreak-chips{left:43%;top:53%}.icebreak-chips i{width:calc(5px + var(--chip)*.4px);height:calc(4px + var(--chip)*.3px);background:#91abb9 url('assets/quest/ice-block-v97.png') 35% 60%/300%;image-rendering:pixelated;box-shadow:inset 1px 1px #e1f0e9;clip-path:polygon(8% 14%,70% 0,100% 45%,50% 100%,0 60%);filter:none;will-change:transform,opacity}
.ice-hit .icebreak-chips i{animation:ice-chips97 .65s .17s cubic-bezier(.2,.5,.65,1) both}
@keyframes ice-chips97{0%{opacity:1;transform:translate(0,0) rotate(0)}40%{opacity:1;transform:translate(calc((var(--chip) - 5.5)*13px),calc(-22px - (var(--chip) - 5.5)*2px)) rotate(calc(var(--chip)*27deg))}100%{opacity:0;transform:translate(calc((var(--chip) - 5.5)*22px),calc(60px + var(--chip)*6px)) rotate(calc(var(--chip)*47deg))}}
.icebreak-focus[data-cracks='3'] .ice-left{animation:ice-cleave-left97 1.05s cubic-bezier(.25,.2,.75,1) both}.icebreak-focus[data-cracks='3'] .ice-right{animation:ice-cleave-right97 1.05s cubic-bezier(.25,.2,.75,1) both}
@keyframes ice-cleave-left97{0%,8%{transform:none;opacity:1}28%{transform:translate(-17px,-5px) rotate(-11deg);opacity:1}70%{opacity:1}100%{transform:translate(-58px,160px) rotate(-38deg);opacity:0}}
@keyframes ice-cleave-right97{0%,8%{transform:none;opacity:1}28%{transform:translate(20px,-3px) rotate(12deg);opacity:1}70%{opacity:1}100%{transform:translate(64px,173px) rotate(43deg);opacity:0}}
.frozen-row.frost-forming .tile-frost{animation:frost-capture97 .62s both;animation-delay:calc(.46s + var(--tile-index)*38ms)}
@keyframes frost-capture97{0%{opacity:0;clip-path:polygon(40% 100%,60% 100%,50% 100%)}18%{opacity:1}100%{opacity:1;clip-path:polygon(-100% 100%,200% 100%,50% -180%)}}
.frost-shard{background:none;box-shadow:none}.frost-shard canvas{filter:saturate(.63) contrast(1.05);opacity:.94}.tile-frost>svg{opacity:.48}
.iceWarning .frozen-row .tile{animation:ice-pressure97 .34s linear infinite;animation-delay:calc(var(--tile-index)*.035s)}
@keyframes ice-pressure97{0%,100%{translate:0 0;rotate:0deg}20%{translate:-1px .5px;rotate:-.8deg}60%{translate:1px -.5px;rotate:.7deg}}
.iceShatter .frost-shard{animation:ice-fall97 1.25s cubic-bezier(.35,0,.85,.5) both;animation-delay:calc(var(--tile-index)*23ms + var(--shard)*16ms)}
@keyframes ice-fall97{0%{opacity:1;transform:none}10%{opacity:1;transform:translate(calc((var(--shard) - 2.5)*3px),-5px) rotate(calc((var(--shard) - 2.5)*5deg))}85%{opacity:1}100%{opacity:0;transform:translate(calc((var(--shard) - 2.5)*25px),105dvh) rotate(calc((var(--shard) - 2.5)*60deg))}}
.audio-switches{display:flex;gap:8px;flex-wrap:wrap}.audio-switches .btn{flex:1;min-width:120px}.audio-level{display:flex;gap:18px;align-items:center;margin:16px 0;color:#c7bea2;font:13px Georgia}.audio-level input{flex:1;accent-color:#bca46a;min-width:100px;height:24px}
.playtest-gate{position:fixed;inset:0;z-index:10010;background:#080b0c;color:#d8d0b7;display:grid;place-items:center;text-align:center;padding:max(20px,env(safe-area-inset-top)) 22px max(20px,env(safe-area-inset-bottom));overflow:auto}
.playtest-gate>div{opacity:0;max-width:360px;width:100%;margin:auto}.playtest-studio p{font:12px 'Knightle Quill',Georgia;letter-spacing:3px;margin:0 0 30px}.playtest-studio img{display:block;image-rendering:pixelated;width:192px;height:192px;margin:auto;box-shadow:0 0 0 1px #a5976c66,0 0 0 5px #151b1b;object-fit:cover}
.no-ai-mark{width:140px;height:140px;position:relative;margin:0 auto 32px;display:grid;place-items:center}.no-ai-mark b{font:bold 64px Georgia;color:#d4d0c2}.no-ai-mark svg{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#b83e3a;stroke-width:10}.playtest-statement p{font:17px/1.65 'Knightle Quill',Georgia;margin:0 auto;max-width:310px}
.playtest-invitation .eyebrow{font-size:9px;letter-spacing:2px;color:#a39167;margin:0 0 16px}.playtest-invitation h1{font:26px/1.3 'Knightle Herald',Georgia;color:#e0d0a5;letter-spacing:.5px;margin:0}.invitation-rule{font:9px Georgia;display:flex;gap:16px;align-items:center;justify-content:center;margin:19px 0;color:#9c8457}.invitation-rule:before,.invitation-rule:after{content:'';width:74px;height:1px;background:linear-gradient(90deg,transparent,#756340)}.invitation-rule:after{rotate:180deg}.invitation-copy{font:14px/1.5 Georgia;color:#a5aaa0;margin:0 0 25px}
.passcode-digits{display:flex;justify-content:center;gap:11px;margin:0 auto 24px}.passcode-digits i{display:grid;place-items:center;width:43px;height:48px;border:1px solid #6e6650;background:#131b1c;box-shadow:inset 0 0 0 3px #20292a}.passcode-digits i:after{content:'';width:8px;height:8px;background:#d7c18b;rotate:45deg;opacity:0;transition:opacity .08s}.passcode-digits i.filled:after{opacity:1}.passcode-pad{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;max-width:260px;margin:auto}.passcode-pad button{touch-action:manipulation;min-height:54px;background:linear-gradient(#28302d,#192220);border:1px solid #776b4d;box-shadow:inset 0 0 0 2px #101918,0 2px #020606;color:#e0d4b7;font:22px 'Knightle Quill',Georgia;cursor:pointer}.passcode-pad button[data-passkey=ENTER]{font-size:10px;color:#ead49d;background:linear-gradient(#3e3b29,#292b20)}.passcode-pad button:active{transform:translateY(2px);filter:brightness(1.2)}.passcode-pad button:focus-visible{outline:2px solid #ded4a9;outline-offset:2px}.passcode-status{font:9px/1.7 'Knightle Quill',Georgia;color:#b9b5a4;min-height:32px;margin:20px 0 18px}.playtest-invitation>small{font:8px 'Knightle Quill',Georgia;letter-spacing:1px;color:#69776e}.admitted .passcode-status{color:#b9d4a4}.admitted .passcode-digits i{border-color:#a5bd8c;box-shadow:inset 0 0 12px #69875544}.passcode-digits.incorrect{animation:passcode-error97 .28s}.passcode-digits.incorrect i{border-color:#ad6254}
@keyframes passcode-error97{25%{translate:-5px 0}75%{translate:5px 0}}
body.playtest-gated #welcome-loading,body.playtest-gated #app,body.playtest-gated #achievement-toast,body.playtest-gated #toast{visibility:hidden}
@media(max-height:700px){.icebreak-focus .focus-rune.iceblock-stage{width:160px;height:149px;margin:3px auto}.icebreak-focus .timing-copy{margin:12px 0 9px}.playtest-invitation h1{font-size:23px}.passcode-pad button{min-height:48px}.passcode-digits{margin-bottom:16px}.invitation-copy{margin-bottom:18px}}
@media(orientation:landscape) and (max-height:560px){.icebreak-focus .focus-rune.iceblock-stage{width:105px;height:98px;margin:0 auto}.icebreak-focus .critical-window{padding-top:10px;padding-bottom:10px}.icebreak-focus .timing-copy{margin:8px 0}.icebreak-pick{width:180px;height:180px;top:calc(53% - 123px);transform-origin:2px 123px}.playtest-gate{padding:18px}.playtest-studio img{width:142px;height:142px}.playtest-studio p{margin-bottom:18px}.playtest-invitation{display:grid;grid-template-columns:1fr 1fr;gap:5px 22px;max-width:600px!important}.playtest-invitation>.eyebrow,.playtest-invitation>h1,.invitation-copy,.invitation-rule{grid-column:1}.passcode-pad{grid-column:2;grid-row:1 / 7;width:100%}.passcode-digits{grid-column:1;margin:10px 0}.passcode-status{grid-column:1;margin:4px 0}.playtest-invitation>small{grid-column:1 / 3;margin-top:12px}.invitation-rule{margin:8px 0}.invitation-copy{margin-bottom:0}.passcode-pad button{min-height:44px}}
@media(prefers-reduced-motion:reduce){.world-rumble,.ice-hit .iceblock,.iceWarning .frozen-row .tile,.passcode-digits.incorrect{animation:none!important}.icebreak-focus.ice-hit .icebreak-pick{animation-duration:.01ms}.ice-hit .icebreak-chips{display:none}.icebreak-focus[data-cracks='3'] .ice-half{animation-duration:.2s}.frozen-row.frost-forming .tile-frost{animation-duration:.1s;animation-delay:0s}.iceShatter .frost-shard{animation-duration:.2s}}
.btn.reset-playtest-button{border-color:#b66f56;background:linear-gradient(#57372d,#35271f);color:#f4d0b3;box-shadow:inset 0 1px #e6aa7855,0 3px #121b15}
.settings-list>.reset-playtest-setting{border-color:#78513d}
.reset-playtest-dialog{border-color:#96704c;background:linear-gradient(#29382d,#16241d);box-shadow:0 0 0 3px #101b15,0 18px 60px #000a;text-align:center}
.reset-playtest-dialog .eyebrow{color:#c5ae7d}
.reset-playtest-dialog .reset-playtest-warning{color:#e5ac91}
.reset-playtest-actions{display:grid;gap:10px;margin-top:20px}

/* The viewport frame never becomes a transformed containing block on impact.
   Its shading fills the stage once, without subtracting the ad space twice. */
.shell.stage.stage-combat{animation:none!important;transform:none!important;translate:none!important;scale:none!important}
.shell.stage.stage-combat:before{position:absolute;inset:0;height:auto}
@media(min-width:1024px) and (min-height:660px){
 .stage-combat .combat .command-line,.stage-combat .combat .command-line.has-elixir{display:flex;width:max-content;max-width:100%;justify-content:center;justify-self:center;align-items:center;gap:24px;margin:0 auto;padding:0 10px}
 .stage-combat .combat .command-line>.combat-purse{position:relative;inset:auto;transform:none;translate:none;margin:0;width:auto;min-width:80px;max-width:120px;flex:none}
 .stage-combat .combat .command-line>.combat-purse>div{justify-content:center}
 .stage-combat .combat .command-line>.knight-status{margin:0;width:auto;max-width:none;flex:none}
 .stage-combat .combat .command-line>.ward-rack{left:calc(100% + 20px);top:50%;transform:translate(-50%,-50%)}
 body #achievement-toast,body:has(.stage-combat) #achievement-toast,body:not(:has(.stage-combat)) #achievement-toast{top:84px;right:24px;left:auto;bottom:auto;width:220px;min-width:220px;max-width:220px;transform:translateX(18px)}
 body #achievement-toast.show,body:has(.stage-combat) #achievement-toast.show{transform:translateX(0)}
}
