.study-interface .requirements{gap:5px;max-width:156px;min-height:44px}
.study-interface .upper-requirements .skill-slot,.study-interface .upper-requirements .skill-slot.legal,.study-interface .upper-requirements .skill-slot.occupied[data-owner]{width:44px;height:44px;min-height:44px;flex-basis:44px}
.study-interface .skill-slot{transition:box-shadow .15s,background .15s;transform:none}
.study-interface .skill-slot.occupied{transform:none;box-shadow:inset 0 0 0 2px #fff3c366,2px 3px 0 #17120f}
.study-interface .skill-slot.drag-over{outline:4px solid #d5f5a6;outline-offset:3px;box-shadow:0 0 0 7px #223d25;background:#efffd7;transform:none}
.drag-over::after{content:'✓';position:absolute;right:-8px;top:-12px;background:#254a2b;color:#fff8dc;border:2px solid #d5f5a6;border-radius:50%;width:21px;height:21px;line-height:18px;font-size:16px}
#drop-hint{position:fixed;z-index:201;pointer-events:none;color:#fff8dc;background:#254a2b;border:1px solid #d5f5a6;padding:6px 10px;border-radius:4px;font-size:.8rem;white-space:nowrap;box-shadow:0 3px 8px #0005}
#drag-follower>svg{width:80%;height:80%}
.dragging-die .drag-source{opacity:.12}
.dragging-die .game-card{transition:none;transform:none}
.dragging-die #drag-follower{height:auto!important;aspect-ratio:1;max-height:76px}
.study-interface .dragon-track:not(.no-dragon),.dragon-track:not(.no-dragon){min-height:155px;padding:88px 0 43px;margin:8px 0 14px;isolation:isolate}
.dragon-track:not(.no-dragon)::before{content:'';position:absolute;z-index:-1;inset:14px 0 29px;background:linear-gradient(90deg,#382a20,#67452e 50%,#8c4026);border:1px solid #c3a26b;border-radius:40% 40% 8px 8px}
.dragon-track .dragon-step{border:0;border-top:2px dashed #c3a26b;background:transparent!important;color:#fff1cf!important;padding:5px 2px 0;font-weight:bold}
.dragon-track .dragon-step.current{color:#ffe293!important}
.dragon-track .dragon-pawn{width:118px;top:-12px;filter:drop-shadow(4px 10px 3px #1a130a99);pointer-events:none;transform:translateX(-50%);transition:left 1s cubic-bezier(.16,.75,.3,1)}
.dragon-pawn>.dragon-figure{width:100%;height:105px;overflow:visible}
.dragon-track .dragon-pawn>.dragon-figure{animation:dragon-breathe 4.8s ease-in-out infinite;transform-origin:center bottom}
.dragon-wings{transform-origin:65px 70px}.dragon-head{transform-origin:65px 75px}
.dragon-track .dragon-pawn.dragon-stride>.dragon-figure{animation:dragon-prowl .35s ease-in-out 3 alternate;transform-origin:center bottom}
.dragon-track .dragon-rig-wing{animation:dragon-watch-wing 3.4s ease-in-out infinite alternate}.dragon-track .dragon-rig-rear{animation:dragon-watch-rear 3.4s ease-in-out infinite alternate}
.dragon-stride .dragon-rig-wing,.cinematic-finale:not([data-finale-step="0"]) .dragon-rig-wing{animation:dragon-flight-wing .5s ease-in-out 4 alternate}.dragon-stride .dragon-rig-rear,.cinematic-finale:not([data-finale-step="0"]) .dragon-rig-rear{animation:dragon-flight-rear .5s ease-in-out 4 alternate}
.dragon-breath{position:absolute;left:87%;top:48%;width:90px;height:42px;pointer-events:none;opacity:0;transform-origin:left center;background:radial-gradient(ellipse at left,#fff1a4 0 16%,#f2ac4d 30%,#cf4b2a 55%,transparent 73%);clip-path:polygon(0 45%,70% 0,100% 30%,85% 48%,100% 80%,65% 100%,0 60%)}
.dragon-stride .dragon-breath{animation:dragon-fire 1.1s ease-out}
.dragon-chase-caption{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:8px;color:#fff2d5;font-size:.77rem;line-height:1.4}
.dragon-chase-caption span{display:flex;align-items:center;gap:5px;font-size:.73rem}
.dragon-chase-caption svg{flex-shrink:0}
.dragon-track[data-danger="3"]::before{background:linear-gradient(90deg,#382a20,#7c3322 80%)}
.dragon-track[data-danger="3"] .dragon-chase-caption strong{color:#ffe093}
.dragon-track .soul-count,.dragon-track .life-count{bottom:-20px}
.dragon-sentinel{position:absolute;top:34%;right:-3px;width:95px;pointer-events:none;z-index:3;filter:drop-shadow(2px 4px 2px #0008)}
.dragon-sentinel svg{width:100%;height:90px}
.dragon-blocked .blocked-label{top:58%;padding:4px 2px;font-size:.67rem}
@keyframes dragon-wingbeat{to{transform:scaleX(.76) rotate(-8deg)}}
@keyframes dragon-prowl{to{transform:translateY(-8px) rotate(-4deg) scale(1.05)}}
@keyframes dragon-breathe{50%{transform:translateY(-2px) scaleY(1.025)}}
@keyframes dragon-watch-wing{to{transform:rotate(-2deg) scaleY(.98)}}
@keyframes dragon-watch-rear{to{transform:rotate(2deg) scaleY(.98)}}
@keyframes dragon-flight-wing{to{transform:rotate(-9deg) scaleY(.87)}}
@keyframes dragon-flight-rear{to{transform:rotate(9deg) scaleY(.89)}}
@keyframes dragon-roar{40%{transform:translateY(-8px) rotate(-12deg)}}
@keyframes dragon-footfall{to{transform:translateY(-5px)}}
@keyframes dragon-fire{0%,20%,100%{opacity:0;transform:scaleX(.1)}40%,70%{opacity:1;transform:scaleX(1)}}
.cinematic-finale{max-width:1120px;padding:22px 20px 45px;color:#fff1d4}
.study-interface .cinematic-finale{color:#302c25}
.cinematic-finale h1{font-size:clamp(2rem,4.5vw,3.8rem);color:#ffe39c;margin:6px 0 20px;text-wrap:balance}
.study-interface .cinematic-finale h1{color:#603c20}
.cinematic-finale>.result-round{color:#e4cfa9;margin:0}
.study-interface .cinematic-finale>.result-round,.study-interface .cinematic-finale>p{color:#635037}
.finale-theatre{position:relative;isolation:isolate;height:340px;max-width:920px;margin:0 auto;overflow:hidden;perspective:900px;border-radius:48% 48% 8px 8px;background:radial-gradient(ellipse at 50% 80%,#8b6440,#31261f 63%);border:4px solid #896b44;box-shadow:0 7px 0 #4d3928}
.finale-stone{position:absolute;inset:0 auto 0 0;width:38%;background:repeating-linear-gradient(0deg,#6e553d 0 50px,#3b2c20 51px 54px);z-index:-1;transition:transform 1.8s cubic-bezier(.2,.7,.2,1);box-shadow:inset -15px 0 35px #201b14}
.stone-right{left:auto;right:0;box-shadow:inset 15px 0 35px #201b14}
.escape-gate{position:absolute;width:240px;height:300px;bottom:-8px;left:calc(50% - 120px);border:18px solid #be9a63;border-bottom:0;border-radius:48% 48% 0 0;background:linear-gradient(#fff7cd,#edbb62);overflow:hidden;box-shadow:0 0 50px #ffe6a144;z-index:-1}
.escape-gate>div{position:absolute;inset:0 50% 0 0;background:repeating-linear-gradient(90deg,#6f3e25 0 20px,#432817 21px 24px);border:4px solid #3e281a;transition:transform 1.8s cubic-bezier(.2,.7,.2,1);transform-origin:left}
.escape-gate>div+div{inset:0 0 0 50%;transform-origin:right}
.finale-rays{position:absolute;inset:0;opacity:0;transition:opacity 1.2s;pointer-events:none;z-index:-1}
.finale-rays i{position:absolute;width:70px;height:550px;left:calc(50% - 35px);top:30%;background:linear-gradient(#ffeab86b,transparent);transform-origin:50% 0;transform:rotate(calc(var(--ray)*30deg));clip-path:polygon(40% 0,60% 0,100% 100%,0 100%)}
.finale-dragon{position:absolute;width:250px;height:250px;top:6px;left:calc(50% - 125px);transition:transform 1.6s cubic-bezier(.2,.8,.2,1),opacity 1s;filter:drop-shadow(6px 15px 5px #0008);z-index:2}
.finale-dragon>.dragon-figure{width:100%;height:100%}
.finale-evidence{position:absolute;display:flex;align-items:center;justify-content:center;gap:12px;inset:auto 0 15px;transition:transform 1.3s,opacity 1s;z-index:3}
.evidence-card{width:95px;height:135px;border:3px solid #d6b875;background:#382a20;border-radius:5px;box-shadow:3px 5px 0 #0e140e88;overflow:hidden;transform:rotate(-6deg);transition:transform .8s}
.evidence-card:nth-child(2){transform:translateY(-8px);z-index:1}.evidence-card:nth-child(3){transform:rotate(6deg)}
.evidence-card>span{display:grid;place-items:center;height:94px;background:#715334}.evidence-card img{width:100%;height:100%;object-fit:cover}.evidence-card>div{display:flex;justify-content:center;align-items:center;gap:1px;height:35px;background:#eee0bf}.evidence-card>div svg{width:17px;height:22px}
.finale-life,.finale-souls{display:flex;align-items:center;justify-content:center;color:#fff4cc;gap:10px;font-size:3rem;background:#30261ed9;padding:8px 16px;border-radius:8px}
.finale-life>svg{width:65px;height:65px}.finale-souls span{display:inline-flex;transition:transform 1.5s,opacity 1.5s}
.victory-party{position:absolute;inset:auto 16px 14px;display:flex;justify-content:center;gap:20px;z-index:5;pointer-events:none}
.escape-character{width:120px;opacity:0;transform:translateY(100px) scale(.65);transition:opacity .7s,transform 1.4s cubic-bezier(.17,.8,.2,1);transition-delay:calc(var(--arrival)*.14s)}
.escape-character>div{height:142px;overflow:hidden;border-radius:45% 45% 5px 5px;border:2px solid #e7c78c;background:#e1c9a3;box-shadow:4px 7px 0 #1a170d77}.escape-character .portrait{width:100%;height:100%}.escape-character>strong{display:block;background:#30261ef5;color:#fff0c8;font-size:.84rem;padding:6px 5px;overflow-wrap:anywhere;border-bottom:3px solid #e7bd62}
.flying-trophy{position:absolute;left:calc(50% - 46px);top:10px;width:92px;opacity:0;z-index:6;filter:drop-shadow(3px 5px 3px #0008)}
.flying-trophy svg{width:100%;height:auto}
.finale-embers{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:4;opacity:0}
.finale-embers i{position:absolute;left:calc(8% + var(--ember)*3.6%);bottom:-10px;width:5px;height:10px;background:#ffdb84;border-radius:50%;animation:escape-ember 2.8s ease-out both;animation-delay:calc(var(--ember)*.07s);animation-play-state:paused}
.cinematic-finale[data-finale-step="0"] .finale-dragon{transform:translateX(-180px) scale(.65)}
.cinematic-finale:not([data-finale-step="0"])[data-winner=heroes] .escape-gate>div:first-child{transform:perspective(450px) rotateY(-100deg)}
.cinematic-finale:not([data-finale-step="0"])[data-winner=heroes] .escape-gate>div+div{transform:perspective(450px) rotateY(100deg)}
.cinematic-finale:not([data-finale-step="0"]) .finale-rays{opacity:1}
.cinematic-finale:not([data-finale-step="0"]) .finale-dragon>.dragon-figure{animation:dragon-prowl .5s ease-in-out 4 alternate}
.cinematic-finale:not([data-finale-step="0"])[data-winner=heroes] .finale-dragon{transform:translate(-300px,-90px) rotate(-22deg) scale(.6);opacity:.4}
.cinematic-finale:not([data-finale-step="0"])[data-ending=dragon] .finale-dragon{transform:translate(80px,-10px) scale(1.12)}
.cinematic-finale:not([data-finale-step="0"])[data-winner=sorcerer] .dragon-breath{animation:dragon-fire 1.8s ease-out}
.cinematic-finale:not([data-finale-step="0"]) .evidence-card.final-reveal{transform:translateY(-22px) rotateY(360deg);background:#fff1b6;outline:3px solid #fff1b6}
.cinematic-finale:not([data-finale-step="0"]) .finale-souls span{transform:translate(calc(50px - var(--soul)*20px),-120px) scale(.1);opacity:0}
.cinematic-finale[data-finale-step="2"] .flying-trophy{animation:trophy-award 2.3s cubic-bezier(.15,.8,.2,1) both}
.cinematic-finale[data-finale-step="2"] .finale-evidence,.cinematic-finale[data-finale-step="3"] .finale-evidence{transform:translateY(120px) scale(.7);opacity:0}
.cinematic-finale[data-finale-step="3"] .escape-character{opacity:1;transform:translateY(0) scale(1)}
.cinematic-finale[data-finale-step="3"][data-winner=sorcerer] .finale-dragon{transform:translate(200px,-40px) scale(.8)}
.cinematic-finale[data-finale-step="3"] .finale-embers{opacity:1}.cinematic-finale[data-finale-step="3"] .finale-embers i{animation-play-state:running}
.cinematic-finale .finale-caption{font-family:Georgia,serif;font-size:clamp(1.1rem,2vw,1.5rem);min-height:1.5em;color:#ffe2a0;margin:20px 0 6px}
.study-interface .cinematic-finale .finale-caption{color:#60411f}
.cinematic-finale .finale-reason{font-size:.9rem;margin:0 auto;max-width:650px;line-height:1.5}
.cinematic-finale .trophy-score{margin:16px 0;gap:55px}.cinematic-finale .trophy-score span{color:#e1cda7;min-width:100px}.cinematic-finale .trophy-score strong{font-size:3.3rem;animation:none}.cinematic-finale .trophy-score small{font-size:.72rem}.study-interface .cinematic-finale .trophy-score span{color:#5e4b31}.study-interface .cinematic-finale .trophy-score strong{color:#65451f}
.cinematic-finale[data-finale-step="2"] .winning-score strong{animation:trophy-count .7s ease-out}
.finale-chapters{display:flex;justify-content:center;gap:5px;margin:16px auto;max-width:650px}.finale-chapters button{display:flex;align-items:center;justify-content:center;gap:7px;flex:1;font-size:.82rem;padding:8px;min-height:44px}.finale-chapters button[aria-pressed=true]{background:#e7bd62;color:#30231a;border-color:#806233}
.cinematic-finale .result-actions{gap:8px;margin-top:16px}.cinematic-finale .result-actions button{font-size:.86rem}
.cinematic-finale.finale-paused *{animation-play-state:paused!important}
.cinematic-finale.finale-still *{animation:none!important;transition:none!important}
.winner-names{font-size:.9rem;line-height:1.5}
.study-interface .cinematic-finale .winner-names{color:#54412c}
.study-interface .skill-slot{scroll-margin:110px 15px 240px}
@media(min-width:561px){.study-interface .tray,.study-interface .extra-zone:has(.extra-cards>.game-card:only-child)+.tray{position:relative;bottom:auto}}
@media(max-width:560px){
  .study-interface .play-guide{display:none}.study-interface .player-summary .mini-dice{display:none}.study-interface .player-summary{flex-basis:125px;padding:5px 7px}.study-interface .players-strip{gap:6px}.study-interface .match-heading{min-height:40px}.study-interface .tray-head{min-height:34px}.study-interface .tray-actions{gap:5px;flex-wrap:nowrap}.study-interface .tray-actions .roll-button{min-width:125px;flex:1;padding:8px 6px;font-size:.72rem}.study-interface .tray-actions .roll-button kbd{display:none}.study-interface .tray-actions .secondary{min-width:0;padding:8px 5px;font-size:.67rem}.study-interface .toss-hint{display:none}.study-interface .dice-row{height:65px}.study-interface .dice-row:not(:has(.die-button:not(.table-die))){height:0}.study-interface .table-zone{padding-bottom:210px}
  .study-interface .tray .tray-actions .roll-button{min-width:110px!important}.study-interface .tray .tray-actions .secondary{min-width:44px;flex:1 1 0}
}
@media(max-width:560px) and (max-height:844px){
  .whole-table-dice .die-button{width:44px;height:64px;min-height:64px}.whole-table-dice .die-button .flat-face{width:44px;height:44px;border-radius:7px}.whole-table-dice .die-caption{font-size:.62rem}.shared-flat-face{width:32px;height:32px;left:-16px;top:-16px;border-radius:6px;padding:2px}.shared-die-name{top:18px;width:46px;left:-23px;font-size:9px;line-height:13px;padding:0 2px}
  #table-dice-surface .shared-flat-face{width:32px;height:32px;left:-16px;top:-16px}#table-dice-surface .shared-die-name{top:18px;width:46px;left:-23px;font-size:9px;line-height:13px;padding:0 2px}
}
@keyframes trophy-award{0%{opacity:0;transform:translateY(100px) scale(.2) rotate(-20deg)}25%{opacity:1;transform:translateY(5px) scale(1.2) rotate(8deg)}65%{opacity:1;transform:translateY(12px) scale(1) rotate(0)}100%{opacity:0;transform:translateY(365px) scale(.25)}}
@keyframes trophy-count{40%{transform:scale(1.3)}}
@keyframes escape-ember{0%{opacity:0;transform:translate(0,0) scale(.3)}20%{opacity:1}100%{opacity:0;transform:translate(var(--drift),-310px) scale(.4)}}
@media(max-width:560px){
  .dragon-track .dragon-pawn{width:90px;top:-2px}.dragon-pawn>.dragon-figure{height:80px}.study-interface .dragon-track:not(.no-dragon){min-height:145px;padding-top:76px;padding-bottom:50px}.dragon-chase-caption{flex-direction:column;gap:1px;align-items:flex-start;font-size:.74rem}.dragon-chase-caption span{font-size:.69rem}.dragon-track .dragon-breath{width:55px}.dragon-sentinel{width:80px;top:32%}
  .cinematic-finale{padding:18px 10px 35px}.cinematic-finale h1{margin-bottom:14px}.finale-theatre{height:290px;border-width:3px}.escape-gate{width:180px;height:250px;left:calc(50% - 90px);border-width:13px}.finale-dragon{width:180px;height:180px;left:calc(50% - 90px);top:22px}.cinematic-finale[data-finale-step="0"] .finale-dragon{transform:translate(-75px,-20px) scale(.6)}.cinematic-finale:not([data-finale-step="0"])[data-winner=heroes] .finale-dragon{transform:translate(-120px,-70px) scale(.5)}.cinematic-finale[data-finale-step="3"][data-winner=sorcerer] .finale-dragon{transform:translate(90px,-35px) scale(.65)}
  .victory-party{gap:6px;inset:auto 8px 15px}.escape-character{width:calc((100vw - 62px)/4);max-width:100px}.escape-character>div{height:108px}.escape-character>strong{font-size:.65rem;padding:5px 2px}.victory-party:has(.escape-character:only-child) .escape-character{width:125px;max-width:125px}.victory-party:has(.escape-character:only-child) .escape-character>div{height:140px}.evidence-card{width:75px;height:110px}.evidence-card>span{height:73px}.finale-evidence{gap:8px}.finale-chapters{gap:3px}.finale-chapters button{font-size:.7rem;flex-direction:column;gap:3px;padding:6px 3px}.cinematic-finale .trophy-score{gap:35px}.cinematic-finale .finale-caption{min-height:2.6em;margin-top:16px}.cinematic-finale .result-actions{gap:6px}.cinematic-finale .result-actions button{font-size:.76rem;padding:9px 10px}.flying-trophy{width:75px;left:calc(50% - 37px)}
}
.calm .dragon-pawn,.calm .cinematic-finale *{transition:none!important}.calm .dragon-track *,.calm .dragon-stride *,.calm .cinematic-finale *{animation:none!important}.calm .finale-embers{display:none}
@media(prefers-reduced-motion:reduce){.dragon-pawn,.cinematic-finale *{transition:none!important}.dragon-track *,.dragon-stride *,.cinematic-finale *{animation:none!important}.finale-embers{display:none}}
