/* A finite, shared-clock finale. No motion repeats on local renders or reloads. */
.prize-setting{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;margin:.75rem 0;font-size:.85rem;color:#d4e2f7}.prize-setting input{width:18px;height:18px;margin:0;accent-color:#79d8ad}.prize-setting .helper{flex-basis:100%;margin-left:26px;font-size:.72rem}
.coffee-finale{position:relative;isolation:isolate;overflow:hidden;padding:2rem 2rem 1.5rem;background:radial-gradient(ellipse at 50% 0,#253d71,#080f22 68%);border:1px solid #e8c278;box-shadow:0 0 70px var(--stage-glow),inset 0 1px 0 #fff3;animation:finale-house-lights 6.7s ease-out var(--celebration-delay,0ms) both}.coffee-finale>*{position:relative;z-index:1}.coffee-finale h2{font-family:Impact,'Arial Narrow',sans-serif;font-size:clamp(2.3rem,5vw,4.3rem);letter-spacing:.025em;line-height:1.05;color:#fff0c2;text-shadow:0 3px 0 #73602c;margin:.5rem 0}.coffee-finale .winning-names{color:#fff0c2;font-size:clamp(1rem,2vw,1.4rem);margin:.65rem 0;overflow-wrap:anywhere}.coffee-finale .winner-trophy{margin:.25rem auto;font-size:2rem}.coffee-finale .winner-trophy .team-badge{width:74px;height:74px;filter:drop-shadow(0 0 13px #f7ce6855)}.coffee-finale .eyebrow{letter-spacing:.18em;font-size:.65rem}.finale-result{background:transparent;border:0;animation:finale-reveal .7s ease-out var(--winner-delay,0ms) both}.finale-score,.tiebreak-caption{color:#c4d4eb;font-size:.8rem;margin:.4rem 0}.coffee-finale .finale-spotlights{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}.finale-spotlights i{position:absolute;top:-100px;left:12%;width:35%;height:650px;transform-origin:50% 0;background:linear-gradient(#f4db8c24,transparent);clip-path:polygon(48% 0,52% 0,100% 100%,0 100%);animation:finale-light-sweep 6s ease-in-out var(--celebration-delay,0ms) both}.finale-spotlights i+ i{left:55%;animation-direction:reverse;background:linear-gradient(#b6d3ff26,transparent)}
.coffee-finale .finale-suspense{position:absolute;inset:2rem 1rem auto;min-height:235px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;pointer-events:none;animation:finale-suspense-out 6s linear var(--celebration-delay,0ms) both}.finale-suspense>.eyebrow{color:#e8c27e}.finale-suspense>strong{font-family:Impact,'Arial Narrow',sans-serif;letter-spacing:.035em;font-size:clamp(2.6rem,6vw,5rem);color:#fff0c2}.finale-suspense>span:last-of-type{font-size:.9rem;color:#bdcde9}.suspense-dots{display:flex;gap:.6rem}.suspense-dots i{width:7px;height:7px;border-radius:50%;background:var(--stage-accent);box-shadow:0 0 12px var(--stage-glow)}
.personal-victory{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.4rem 1rem;max-width:720px;margin:.8rem auto;padding:.7rem 1rem;border:1px solid #a9e4bd;border-radius:10px;background:linear-gradient(110deg,#165237,#072c22);animation:finale-reveal .6s ease-out var(--personal-delay,0ms) both}.personal-victory strong{color:#fff0bb;font-size:1rem}.personal-victory span{color:#d8f1df;font-size:.8rem}
.coffee-finale .finale-podiums{display:flex;align-items:flex-end;justify-content:center;flex-wrap:wrap;gap:.8rem;max-width:900px;margin:1.2rem auto}.finale-podiums .finish-podium{position:relative;order:var(--podium-order);flex:1 1 180px;max-width:230px;min-width:0;min-height:calc(var(--podium-height)*1px);padding:1rem .7rem!important;border:1px solid #bd8e65;background:linear-gradient(155deg,#54392d,#15213a 75%);border-radius:12px 12px 3px 3px;box-shadow:inset 0 2px 0 #fff2,0 14px 30px #0004;animation:podium-rise .85s cubic-bezier(.2,.8,.2,1) var(--podium-delay,0ms) both}.finale-podiums .finish-podium[data-place="2"]{background:linear-gradient(155deg,#56677d,#15213a 75%);border-color:#b3c7dc}.finale-podiums .finish-podium[data-place="1"]{background:linear-gradient(155deg,#75602e,#26243a 85%);border-color:#eec579}.finale-podiums .finish-podium.is-winner{box-shadow:0 0 30px #ffe19926,inset 0 2px 0 #fff4}.finale-podiums .finish-podium .team-badge{width:48px;height:48px;margin:.3rem auto}.finale-podiums .medal-number{font-family:Impact,'Arial Narrow',sans-serif;font-size:1.55rem;color:#ffe7ad;letter-spacing:.03em}.finale-podiums .finish-podium>span{font-size:.7rem;line-height:1.35;color:#dce8f7;overflow-wrap:anywhere}.finale-podiums .finish-podium>strong{display:block;margin-top:.5rem;font-size:1.65rem;color:#fff5d6}.finale-podiums strong small{font-size:.48rem;letter-spacing:.1em;color:#c4cddd}.finale-podiums .place-shared{font-size:.6rem!important;color:#b8c7e0!important;margin-top:.25rem}.finale-other-teams{display:flex;justify-content:center;flex-wrap:wrap;gap:.4rem 1rem;color:#b4c6e2;font-size:.66rem;margin:.7rem auto;animation:finale-reveal .5s ease-out var(--winner-delay,0ms) both}.finale-other-teams strong{color:#eee1b7;margin-left:.3rem}
.coffee-prize{display:flex;align-items:center;justify-content:center;gap:1.6rem;max-width:940px;margin:1.5rem auto;padding:1.1rem 1.8rem;border:1px solid #69be98;border-radius:20px;background:radial-gradient(ellipse at top left,#14613c77,#06271d 75%);box-shadow:inset 0 1px 0 #afffd522,0 10px 40px #0003;animation:coffee-reveal .75s cubic-bezier(.2,.8,.2,1) var(--prize-delay,0ms) both}.coffee-prize-copy{min-width:0;text-align:left}.coffee-prize .eyebrow{color:#bde3c6;font-size:.6rem}.coffee-prize h3{font-family:Impact,'Arial Narrow',sans-serif;letter-spacing:.03em;font-size:clamp(2rem,3.5vw,3.2rem);line-height:1.05;margin:.5rem 0;color:#fff0c2}.coffee-prize h4{font-size:1.05rem;color:#d7f3de;margin:.5rem 0}.coffee-prize p{margin:.4rem 0;font-size:.8rem}.prize-delivery{color:#b5d3c3;font-size:.7rem!important}
.coffee-envelope{position:relative;width:260px;height:190px;flex:0 0 260px;perspective:800px;margin-top:.5rem}.envelope-back,.envelope-front,.envelope-flap{position:absolute;left:10px;right:10px;bottom:0;height:126px;border-radius:8px}.envelope-back{background:#004f36;border:1px solid #82cca9;box-shadow:0 15px 22px #0005}.envelope-front{z-index:3;background:linear-gradient(145deg,#00754a,#004f37);clip-path:polygon(0 0,50% 48%,100% 0,100% 100%,0 100%);display:flex;align-items:flex-end;justify-content:center;padding-bottom:19px}.envelope-front span{color:#e1eecf;font-size:.52rem;letter-spacing:.18em}.envelope-flap{z-index:4;bottom:62px;height:64px;background:#08744e;clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:50% 0;backface-visibility:hidden;animation:envelope-open .65s ease-in-out var(--flap-delay,0ms) both}.envelope-card{position:absolute;z-index:2;left:0;right:0;bottom:24px;animation:coffee-card-rise .85s cubic-bezier(.2,.8,.2,1) var(--card-delay,0ms) both}.coffee-envelope .coffee-art{display:block;width:100%;height:165px;overflow:visible}.prize-steam{animation:coffee-steam 1.1s ease-in-out var(--steam-delay,0ms) 3 both}
.prize-pending{max-width:850px;padding:1.4rem;margin:1.4rem auto;border:1px solid #e7c679;border-radius:16px;background:linear-gradient(135deg,#493c2566,#12203c)}.prize-pending .eyebrow{color:#ffe099}.prize-pending h3{font-size:1.4rem;margin:.6rem 0}.tiebreak-choices{display:flex;flex-wrap:wrap;gap:.6rem;justify-content:center;margin-top:1rem}.tiebreak-choices button{font-size:.85rem}.is-overtime .finale-result,.is-overtime .finish-podium,.is-overtime .finale-other-teams{animation:none}.is-overtime .finale-spotlights{display:none}.coffee-finale.is-overtime{border-color:#ffc372;background:radial-gradient(ellipse at 50% 0,#4f3a26,#0b152e 70%);animation:none}
.session-honors{margin:2rem 0 1.2rem}.session-honors>.eyebrow{color:#a9bcdd}.session-honors h3{font-size:1.6rem;margin:.4rem 0 1rem}.honors-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:1rem;max-width:1170px;margin:auto}.honor-card{padding:1.2rem 1rem;border:1px solid #756b4b;border-radius:16px;background:radial-gradient(ellipse at 50% 0,#394567,#142039 70%);animation:honor-reveal .65s cubic-bezier(.2,.8,.2,1) var(--honor-delay,0ms) both;box-shadow:0 8px 25px #0003}.award-mark{width:58px;height:58px;margin:auto}.honor-card h4{font-size:1.15rem;color:#ffe3a0;margin:.5rem 0 1rem}.honor-teams{display:flex;flex-direction:column;gap:.5rem}.honor-teams>div{display:flex;align-items:center;justify-content:center;gap:.45rem}.winner-stage .honor-teams .team-badge{width:30px;height:30px;flex:0 0 30px;margin:0}.honor-teams strong{font-size:.8rem;text-align:left;line-height:1.4;overflow-wrap:anywhere}.honor-metric{color:#aee8c9;font-size:.85rem;font-weight:700}.honor-card .helper,.honors-note{font-size:.73rem;line-height:1.5;color:#b9c9df}.honors-note{margin:1rem auto;max-width:850px}.winner-stage .winner-actions{margin-top:1rem}.finale-footnote{font-size:.75rem}
@keyframes finale-house-lights{0%,65%{background-color:#020612;box-shadow:inset 0 0 120px #0009}100%{background-color:#0b152e;box-shadow:0 0 70px var(--stage-glow)}}
@keyframes finale-light-sweep{0%{transform:rotate(-30deg);opacity:0}15%{opacity:.9}85%{opacity:.7}100%{transform:rotate(32deg);opacity:0}}
@keyframes finale-suspense-out{0%,88%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
@keyframes finale-reveal{from{opacity:0;visibility:hidden;transform:translateY(12px)}to{opacity:1;visibility:visible;transform:none}}
@keyframes podium-rise{from{opacity:0;visibility:hidden;transform:translateY(45px) scale(.92)}to{opacity:1;visibility:visible;transform:none}}
@keyframes coffee-reveal{from{opacity:0;visibility:hidden;transform:perspective(900px) rotateY(-8deg) translateY(18px)}to{opacity:1;visibility:visible;transform:none}}
@keyframes envelope-open{from{transform:rotateX(0)}to{transform:rotateX(180deg)}}
@keyframes coffee-card-rise{from{transform:translateY(45px) scale(.88)}to{transform:translateY(-28px) rotate(-3deg)}}
@keyframes coffee-steam{0%{opacity:0;transform:translateY(7px)}40%{opacity:.8}100%{opacity:0;transform:translateY(-7px)}}
@keyframes honor-reveal{from{opacity:0;visibility:hidden;transform:translateY(20px) scale(.95)}to{opacity:1;visibility:visible;transform:none}}
@media(max-width:650px){.coffee-prize{flex-direction:column;gap:.6rem;padding:1rem}.coffee-prize-copy{text-align:center}.coffee-envelope{flex-basis:auto;transform:scale(.9);margin-bottom:-10px}.honors-grid{grid-template-columns:1fr}.coffee-finale{padding:1.1rem .8rem}.tiebreak-choices{flex-direction:column}.winner-actions{flex-direction:column}.winner-actions button{width:100%}.finale-podiums .finish-podium{flex-basis:105px;min-height:175px;padding:.7rem .4rem!important}.finale-podiums .finish-podium>span{font-size:.65rem}.coffee-finale .finale-suspense{inset:1rem .6rem auto}.coffee-finale .winner-trophy .team-badge{width:58px;height:58px}.coffee-finale .winning-names{font-size:1rem}.coffee-envelope{max-width:100%}}
@media(prefers-reduced-motion:reduce){.coffee-finale,.finale-result,.personal-victory,.finale-podiums .finish-podium,.finale-other-teams,.coffee-prize,.envelope-flap,.envelope-card,.prize-steam,.honor-card{animation:none!important;opacity:1;visibility:visible;transform:none}.finale-suspense,.finale-spotlights{display:none!important}.envelope-card{bottom:52px}.envelope-flap{display:none}.prize-steam{opacity:.6}}
