/* A full-scene water/fire duel, shared by the class camp and the end overlay. */
@property --series-clash{syntax:'<percentage>';inherits:true;initial-value:50%}
.vocab-series-view-root{position:relative;min-width:0;width:100%;height:100%;min-height:0;isolation:isolate}
.vocab-series-view-root[hidden]{display:none!important}
.vocab-series-view{--series-blue:#87e9ff;--series-red:#ff9a62;--series-gold:#efd79b;position:relative;isolation:isolate;width:100%;height:100%;min-height:340px;overflow:hidden;background:#06131f;color:#fff1d3;text-shadow:0 3px 18px #000c;pointer-events:none}
.vocab-series-view *{box-sizing:border-box}
.vocab-series-view .series-landscape{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.3;filter:saturate(.3) contrast(1.1)}
.vocab-series-view .series-field{position:absolute;top:0;bottom:0;overflow:hidden}
.vocab-series-view .series-field-a{left:0;width:var(--series-clash);background:none}
.vocab-series-view .series-field-b{left:var(--series-clash);right:0;background:none}
.vocab-series-view .series-boundary{display:none}
.vocab-series-view .series-territories{position:absolute;top:0;left:calc(var(--series-clash) - 50%);width:100%;height:100%;overflow:visible}
.vocab-series-view .series-front{filter:blur(7px)}
.vocab-series-view .series-front-a{animation:series-water-front 17s ease-in-out infinite}
.vocab-series-view .series-front-b{animation:series-fire-front 17s ease-in-out infinite}
.vocab-series-view .series-front-fringe{fill:none;stroke-width:62;filter:blur(14px);opacity:.28;stroke-linecap:round;stroke-linejoin:round}
.vocab-series-view .series-front-fringe-a{stroke:#70d5eb;stroke-width:74;transform:translateX(-9px);animation:series-contact-front 13.7s ease-in-out infinite}
.vocab-series-view .series-front-fringe-b{stroke:#f4a367;stroke-width:51;opacity:.32;transform:translateX(9px);animation:series-contact-front 19.3s ease-in-out infinite reverse;animation-delay:-6.2s}
.vocab-series-view .series-houses{position:absolute;inset:0;z-index:4}
.vocab-series-view .series-team{--series-color:var(--series-blue);position:absolute;top:0;height:100%;left:0;width:var(--series-clash);min-width:0}
.vocab-series-view .series-team-b{--series-color:var(--series-red);left:var(--series-clash);width:calc(100% - var(--series-clash))}
.vocab-series-view .series-emblem{position:absolute;left:50%;bottom:38%;transform:translateX(-50%);width:min(73%,43vh,440px);aspect-ratio:192/208;display:grid;place-items:center;max-height:48vh}
.vocab-series-view .series-emblem::before{content:'';position:absolute;inset:11% 8%;border-radius:50%;background:radial-gradient(ellipse,color-mix(in srgb,var(--series-color) 20%,transparent),transparent 70%);filter:blur(8px)}
.vocab-series-view .series-emblem img{display:block;position:relative;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 10px 18px #000a) drop-shadow(0 0 24px color-mix(in srgb,var(--series-color) 25%,transparent));transform-origin:50% 58%}
.vocab-series-view .series-crown{display:none;position:absolute;z-index:1;top:1%;left:calc(50% - 6px);width:12px;height:12px;border:1px solid #fff1c7;background:#d4b976;transform:rotate(45deg);box-shadow:0 0 16px #e9d3a070}
.vocab-series-view .series-team[data-won='true'] .series-crown{display:block}
.vocab-series-view .series-tally{position:absolute;top:65%;left:50%;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;min-width:60px}
.vocab-series-view .series-points{font:500 clamp(66px,13vh,132px)/.9 Georgia,'Times New Roman',serif;letter-spacing:-.045em;color:#fff5dc;font-variant-numeric:lining-nums tabular-nums}
.vocab-series-view .series-gain{position:absolute;bottom:calc(100% + 9px);left:50%;transform:translateX(-50%);color:var(--series-color);font:600 clamp(22px,3vh,32px)/1 Georgia,serif;white-space:nowrap}
.vocab-series-view .series-beams{position:absolute;inset:0;z-index:2}
.vocab-series-view .series-beam{--series-color:var(--series-blue);position:absolute;top:43%;height:clamp(90px,18vh,160px);transform:translateY(-50%);isolation:isolate}
.vocab-series-view .series-beam-a{left:0;width:var(--series-clash)}
.vocab-series-view .series-beam-b{--series-color:var(--series-red);left:var(--series-clash);right:0;transform:translateY(-50%) scaleX(-1)}
.vocab-series-view .series-energy{position:absolute;inset:8% 0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--series-color) 20%,transparent) 30%,color-mix(in srgb,var(--series-color) 50%,transparent));clip-path:polygon(0 22%,100% 42%,100% 58%,0 78%);filter:blur(3px)}
.vocab-series-view .series-energy::before{content:'';position:absolute;top:calc(50% - 7px);left:0;right:0;height:14px;border-radius:50%;background:linear-gradient(90deg,transparent,var(--series-color) 40%,#fff0c8);box-shadow:0 0 17px var(--series-color),0 0 45px var(--series-color)}
.vocab-series-view .series-stream{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 7px var(--series-color))}
.vocab-series-view .series-flow-sheet{fill:var(--series-color);opacity:.25;transform-origin:50% 50%;animation:series-liquid-shape 4.7s ease-in-out infinite alternate}
.vocab-series-view .series-flow-strand{fill:none;stroke:var(--series-color);stroke-width:5;stroke-linecap:round;stroke-dasharray:170 90 310 130;animation:series-stream-flow 4.6s linear infinite}
.vocab-series-view .series-flow-two{stroke:#d7faff;stroke-width:3;opacity:.7;stroke-dasharray:100 160 240 120;animation-duration:5.3s;animation-delay:-2.7s}
.vocab-series-view .series-flow-three{stroke-width:10;opacity:.3;stroke-dasharray:270 150 160 140;animation-duration:6.1s;animation-delay:-1.4s}
.vocab-series-view .series-flow-spine{fill:none;stroke:#d9f8ff;stroke-width:3;opacity:.8}
.vocab-series-view .series-beam-b .series-flow-sheet{opacity:.38;animation-name:series-fire-shape;animation-duration:3.1s}
.vocab-series-view .series-beam-b .series-flow-strand{stroke:#ffb65b;stroke-dasharray:95 65 220 90;animation-duration:3.8s}
.vocab-series-view .series-beam-b .series-flow-two{stroke:#ffe3ac;stroke-width:4;animation-duration:4.3s}
.vocab-series-view .series-beam-b .series-flow-three{stroke:#ff592c;stroke-width:12;opacity:.42;animation-duration:5.1s}
.vocab-series-view .series-contact{position:absolute;z-index:3;left:var(--series-clash);top:43%;width:clamp(100px,17vw,215px);height:clamp(110px,22vh,215px);transform:translate(-50%,-50%);perspective:500px}
.vocab-series-view .series-orb{position:absolute;top:15%;width:66%;height:70%;border-radius:48% 52% 44% 56%;mix-blend-mode:screen;filter:blur(1px);transform-origin:center}
.vocab-series-view .series-orb-a{left:-6%;background:radial-gradient(ellipse at 65% 52%,#c3fbff8c,#19b5e85c 40%,#087cb82b 65%,transparent 75%);box-shadow:inset -7px 1px 22px #7ee8ff66;animation:series-water-orb 5.8s ease-in-out infinite alternate}
.vocab-series-view .series-orb-b{right:-6%;background:radial-gradient(ellipse at 35% 48%,#ffe9bda1,#ef8b355c 40%,#c8371a2b 65%,transparent 75%);box-shadow:inset 7px -1px 22px #ffc07566;animation:series-fire-orb 4.9s ease-in-out infinite alternate}
.vocab-series-view .series-orbit{position:absolute;left:-3%;top:22%;width:106%;height:57%;border:2px solid #c3f9ff9c;border-left-color:transparent;border-bottom-color:#d5ac6570;border-radius:50%;box-shadow:0 0 10px #b4edee24;animation:series-contact-orbit 7.8s linear infinite}
.vocab-series-view .series-orbit-two{left:17%;top:-9%;width:66%;height:116%;border-color:#ffe3a17a;border-right-color:transparent;animation-direction:reverse;animation-duration:9.4s}
.vocab-series-view .series-contact-core{position:absolute;left:calc(50% - 6px);top:calc(50% - 25px);width:12px;height:50px;background:linear-gradient(transparent,#fff7cf80,transparent);border-radius:50%;box-shadow:0 0 23px #ffe5ab4d;animation:series-contact-breathe 3.9s ease-in-out infinite alternate}
.vocab-series-view .series-particles{position:absolute;inset:0}
.vocab-series-view .series-particles i{position:absolute;left:50%;top:50%;width:4px;height:4px;border-radius:50%;background:#b6eeff;box-shadow:0 0 8px #98eaff66;animation:series-contact-particle 3.4s ease-out infinite;animation-delay:var(--spark-delay)}
.vocab-series-view .series-particles i:nth-child(even){background:#ffbe7c;box-shadow:0 0 8px #ffb66b66}
.vocab-series-view .series-progress{position:absolute;z-index:5;left:clamp(24px,4vw,72px);right:auto;bottom:clamp(24px,4vh,44px);max-width:30%;display:flex;flex-direction:column;align-items:flex-start;gap:14px}
.vocab-series-view .series-counter{color:#f0e8d4;font:600 13px/1 system-ui,sans-serif;letter-spacing:.13em;font-variant-numeric:tabular-nums}
.vocab-series-view .series-counter span{color:#c5d1ce;margin:0 4px}
.vocab-series-view .series-rounds{list-style:none;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:14px;margin:0;padding:0}
.vocab-series-view .series-gem{flex:none;position:relative;display:grid;place-items:center;width:25px;height:25px;border:1px solid #e5e3cc55;background:#07151c8c;transform:rotate(45deg)}
.vocab-series-view .series-gem>span{display:grid;place-items:center;width:100%;height:100%;transform:rotate(-45deg)}
.vocab-series-view .series-gem svg{width:16px;height:16px;fill:currentColor;stroke:currentColor;stroke-width:.7}
.vocab-series-view .series-gem[data-winner='A']{color:var(--series-blue);border-color:#8ee4ffb0;background:#153c5799}
.vocab-series-view .series-gem[data-winner='B']{color:var(--series-red);border-color:#ffab79b0;background:#59241899}
.vocab-series-view .series-gem[data-winner='draw']{color:#f0dfad;border-color:#dbcda78c;background:linear-gradient(135deg,#24485b99 50%,#683e3599 50%)}
.vocab-series-view .series-gem[data-winner='draw'] svg{fill:none;stroke-width:2}
.vocab-series-view .series-gem[data-current='true']::after{content:'';position:absolute;inset:-4px;border:1px solid #f6e4b08c}
.vocab-series-view .series-gem[data-winner='pending']{opacity:.45;background:#07151c4d}
.vocab-series-view .series-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.vocab-series-view[data-surge='true']:not([data-reduced='true']){animation:series-territory-surge 1100ms cubic-bezier(.18,.7,.22,1) both}
.vocab-series-view[data-surge='true']:not([data-reduced='true']) .series-beams{animation:series-force-surge 1100ms ease-out both}
.vocab-series-view:not([data-phase='status']):not([data-reduced='true']) .series-team[data-won='true'] .series-emblem img{animation:series-crest-victory 1100ms cubic-bezier(.15,.7,.2,1) both}
@keyframes series-territory-surge{from{--series-clash:var(--series-from)}to{--series-clash:var(--series-to)}}
@keyframes series-force-surge{0%{transform:scaleY(.82)}42%{transform:scaleY(1.4)}100%{transform:scaleY(1)}}
@keyframes series-crest-victory{0%{transform:scale(.94)}44%{transform:scale(1.07)}100%{transform:scale(1)}}
@keyframes series-stream-flow{to{stroke-dashoffset:-1400}}
@keyframes series-liquid-shape{from{transform:translateY(-5px) scaleY(.84)}to{transform:translateY(5px) scaleY(1.12)}}
@keyframes series-fire-shape{from{transform:translateY(7px) scaleY(.8) skewY(.6deg)}to{transform:translateY(-7px) scaleY(1.24) skewY(-.6deg)}}
@keyframes series-water-orb{from{transform:translate(-4%,5%) rotate(-12deg) scale(.94);border-radius:48% 52% 44% 56%}to{transform:translate(16%,-5%) rotate(20deg) scale(1.08);border-radius:57% 43% 53% 47%}}
@keyframes series-fire-orb{from{transform:translate(5%,-5%) rotate(14deg) scale(1.05);border-radius:52% 48% 58% 42%}to{transform:translate(-14%,6%) rotate(-19deg) scale(.95);border-radius:43% 57% 46% 54%}}
@keyframes series-contact-orbit{from{transform:rotateX(58deg) rotateZ(-24deg)}to{transform:rotateX(58deg) rotateZ(336deg)}}
@keyframes series-contact-breathe{from{transform:rotate(-12deg) scaleY(.8)}to{transform:rotate(12deg) scaleY(1.16)}}
@keyframes series-contact-particle{0%{transform:translate(0,0) scale(.5);opacity:0}20%{opacity:.65}100%{transform:translate(calc(var(--spark-side)*85px),var(--spark-y)) scale(.15);opacity:0}}
@keyframes series-field-drift{from{transform:translateX(-8%)}to{transform:translateX(8%)}}
[data-paused='true']:not(#gameScene) .vocab-series-view,[data-paused='true']:not(#gameScene) .vocab-series-view *,[data-paused='true']:not(#gameScene) .vocab-series-view *::before,[data-paused='true']:not(#gameScene) .vocab-series-view *::after,.vocab-series-view-root[data-suspended='true'] .vocab-series-view,.vocab-series-view-root[data-suspended='true'] .vocab-series-view *,.vocab-series-view-root[data-suspended='true'] .vocab-series-view *::after,[aria-hidden='true'] .vocab-series-view,[aria-hidden='true'] .vocab-series-view *,[hidden] .vocab-series-view,[hidden] .vocab-series-view *,#phaseOverlay[data-pause-ui='true'] .vocab-series-view,#phaseOverlay[data-pause-ui='true'] .vocab-series-view *{animation-play-state:paused!important}
.vocab-series-view[data-reduced='true'],.vocab-series-view[data-reduced='true'] *,.vocab-series-view[data-reduced='true'] *::before,.vocab-series-view[data-reduced='true'] *::after,#gameScene[data-motion='reduced'] .vocab-series-view,#gameScene[data-motion='reduced'] .vocab-series-view *,#gameScene[data-motion='reduced'] .vocab-series-view *::after{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){.vocab-series-view,.vocab-series-view *,.vocab-series-view *::before,.vocab-series-view *::after{animation:none!important;transition:none!important}}
@media(max-height:600px){.vocab-series-view .series-tally{top:64%}.vocab-series-view .series-emblem{width:min(73%,41vh,310px)}.vocab-series-view .series-points{font-size:68px}.vocab-series-view .series-progress{gap:10px}.vocab-series-view .series-gem{width:21px;height:21px}.vocab-series-view .series-rounds{gap:12px}}
@media(max-width:600px) and (min-height:650px){.vocab-series-view .series-emblem{bottom:42%}.vocab-series-view .series-emblem{width:88%}.vocab-series-view .series-points{font-size:64px}.vocab-series-view .series-contact{top:42%;width:110px;height:140px}.vocab-series-view .series-beam{top:42%}.vocab-series-view .series-progress{bottom:20px;max-width:38%}}

@keyframes series-water-front{0%,100%{d:path("M -1000 -80 L 500 -80 C 536 8 470 54 492 116 C 532 178 470 220 481 284 C 482 333 538 360 522 424 C 502 469 465 476 488 542 C 528 598 530 647 493 691 C 466 734 482 807 516 841 C 538 888 472 956 500 1080 L -1000 1080 Z")} 37%{d:path("M -1000 -80 L 500 -80 C 476 16 528 67 514 116 C 480 166 532 230 518 284 C 474 332 489 384 481 424 C 472 469 536 485 524 542 C 479 593 483 650 515 691 C 534 741 471 798 484 841 C 472 898 531 963 505 1080 L -1000 1080 Z")} 71%{d:path("M -1000 -80 L 500 -80 C 518 10 484 52 478 116 C 469 184 514 218 526 284 C 534 330 479 371 495 424 C 537 472 520 490 477 542 C 466 590 527 646 524 691 C 477 736 498 796 528 841 C 523 897 480 960 493 1080 L -1000 1080 Z")}}
@keyframes series-fire-front{0%,100%{d:path("M 500 -80 C 536 8 470 54 492 116 C 532 178 470 220 481 284 C 482 333 538 360 522 424 C 502 469 465 476 488 542 C 528 598 530 647 493 691 C 466 734 482 807 516 841 C 538 888 472 956 500 1080 L 2000 1080 L 2000 -80 Z")} 37%{d:path("M 500 -80 C 476 16 528 67 514 116 C 480 166 532 230 518 284 C 474 332 489 384 481 424 C 472 469 536 485 524 542 C 479 593 483 650 515 691 C 534 741 471 798 484 841 C 472 898 531 963 505 1080 L 2000 1080 L 2000 -80 Z")} 71%{d:path("M 500 -80 C 518 10 484 52 478 116 C 469 184 514 218 526 284 C 534 330 479 371 495 424 C 537 472 520 490 477 542 C 466 590 527 646 524 691 C 477 736 498 796 528 841 C 523 897 480 960 493 1080 L 2000 1080 L 2000 -80 Z")}}
@keyframes series-contact-front{0%,100%{d:path("M 500 -80 C 536 8 470 54 492 116 C 532 178 470 220 481 284 C 482 333 538 360 522 424 C 502 469 465 476 488 542 C 528 598 530 647 493 691 C 466 734 482 807 516 841 C 538 888 472 956 500 1080")} 37%{d:path("M 500 -80 C 476 16 528 67 514 116 C 480 166 532 230 518 284 C 474 332 489 384 481 424 C 472 469 536 485 524 542 C 479 593 483 650 515 691 C 534 741 471 798 484 841 C 472 898 531 963 505 1080")} 71%{d:path("M 500 -80 C 518 10 484 52 478 116 C 469 184 514 218 526 284 C 534 330 479 371 495 424 C 537 472 520 490 477 542 C 466 590 527 646 524 691 C 477 736 498 796 528 841 C 523 897 480 960 493 1080")}}
/* Integrated series results occupy the complete scene. */
.vocab-series-running #phaseOverlay[data-phase="final"]{padding:0;background:#03141c;overflow:hidden}
.vocab-series-running #phaseOverlay[data-phase="final"] .phase-card{opacity:1;position:absolute;inset:0;width:100%;height:100svh;max-width:none;max-height:none;margin:0;padding:0;overflow:hidden;background:transparent;border:0;border-radius:0;box-shadow:none;transform:none}
.vocab-series-running #vocabSeriesResult{position:absolute;inset:0;z-index:1}
.vocab-series-running #phaseOverlay[data-phase="final"] #phaseTitle{position:absolute;z-index:3;left:50%;top:24px;transform:translateX(-50%);max-width:90%;font-size:clamp(27px,3.4vw,48px);line-height:1.1;margin:0;text-align:center;color:#fff0c8;text-shadow:0 3px 20px #021324}
.vocab-series-running #phaseOverlay[data-phase="final"] :is(#phaseEyebrow,#phaseDetails,#finalScore,#raceAwards){display:none!important}
.vocab-series-running #phaseOverlay[data-phase="final"] #finalHeroes:not([data-series='true']){display:none!important}
.vocab-series-running #phaseOverlay[data-phase="final"] .final-actions{position:absolute;z-index:3;left:50%;bottom:24px;transform:translateX(-50%);margin:0;padding:0;background:none;border:0;display:flex;justify-content:center;min-width:230px}
.vocab-series-running #phaseOverlay[data-phase="final"] #phaseAction{min-width:230px;min-height:56px;font-size:20px;padding:12px 30px;border-radius:30px;box-shadow:0 8px 35px #0006}
.vocab-series-running #vocabSeriesSave{position:absolute;bottom:12px;right:18px;color:#c5e4cc;font:15px/1 system-ui;z-index:3}
.vocab-series-running #phaseOverlay[data-phase="final"] #learningReview{position:absolute;z-index:4;right:24px;bottom:64px;max-width:260px;max-height:45vh;overflow:auto;margin:0;background:#061c26bb;border-radius:12px;backdrop-filter:blur(14px)}
@media(max-height:600px){.vocab-series-running #phaseOverlay[data-phase="final"] #phaseTitle{top:15px;font-size:27px}.vocab-series-running #phaseOverlay[data-phase="final"] .final-actions{bottom:16px}.vocab-series-running #phaseOverlay[data-phase="final"] #phaseAction{min-height:46px;font-size:18px}.vocab-series-running #phaseOverlay[data-phase="final"] #learningReview{right:12px;bottom:70px;font-size:12px;max-width:220px}}
@media(max-width:600px){.vocab-series-running #phaseOverlay[data-phase="final"] #learningReview{max-width:170px;right:12px;bottom:90px}}

.vocab-series-running:has(#phaseOverlay[data-phase="final"]) .topbar{visibility:hidden;pointer-events:none}

.vocab-series-running #phaseOverlay[data-phase="final"] #learningReview[open]{width:min(440px,85vw);max-width:85vw;padding:14px}.vocab-series-running #phaseOverlay[data-phase="final"] #learningReview[open] .personal-score-bands{grid-template-columns:repeat(2,minmax(0,1fr))}.vocab-series-running #phaseOverlay[data-phase="final"] #learningReview[open] .personal-self-check{margin:12px 0}.vocab-series-running #phaseOverlay[data-phase="final"] #learningReview:not([open]) #personalSelfCheck{display:none}

/* An opt-in round victory hands its charge to the saved class duel. The
   existing Continue remains outside this presentation layer and usable. */
/* A stored comeback is a charged native crest: two crossing energy orbits,
   two light nodes and paired runes, never another caption or text badge. */
.vocab-series-view .series-comeback{position:absolute;z-index:2;inset:-9% -11%;pointer-events:none;filter:drop-shadow(0 0 8px color-mix(in srgb,var(--series-color) 48%,transparent))}
.vocab-series-view .series-charge-orbits{position:absolute;inset:0;width:100%;height:100%;overflow:visible;fill:none;color:var(--series-color)}
.vocab-series-view .series-charge-track{stroke:currentColor;stroke-width:1;opacity:.24}
.vocab-series-view .series-charge-orbit{stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-dasharray:90 26 9 22 30 54 6 25;filter:drop-shadow(0 0 4px currentColor);animation:series-charge-flow 6s linear infinite,series-charge-breathe 3.2s ease-in-out infinite alternate}
.vocab-series-view .series-charge-orbit-two{stroke:#fff1c4;stroke-width:2;stroke-dasharray:66 20 7 36 28 48;animation-direction:reverse,alternate-reverse;animation-duration:7.8s,3.9s;opacity:.76}
.vocab-series-view .series-charge-satellites{transform-origin:120px 130px;animation:series-charge-turn 8.8s linear infinite}
.vocab-series-view .series-charge-node{fill:#f7ffe8;stroke:var(--series-color);stroke-width:3;filter:drop-shadow(0 0 7px currentColor)}
.vocab-series-view .series-charge-rune{position:absolute;left:31%;bottom:6%;width:38%;height:14%;overflow:visible;fill:#fff5ca;stroke:var(--series-color);stroke-width:1.5;filter:drop-shadow(0 0 9px var(--series-color));animation:series-charge-rune 3.2s ease-in-out infinite alternate}
.vocab-series-view .series-comeback[data-charge='1'] .series-charge-second{display:none}
.vocab-series-view .series-victory-intro{position:absolute;inset:0;z-index:8;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding-bottom:9vh;pointer-events:none;background:radial-gradient(ellipse at 50% 42%,#03121ef8 0%,#03121ee8 39%,#03121e85 67%,transparent 91%);animation:series-victory-arrival 900ms cubic-bezier(.18,.7,.2,1) both}
.vocab-series-view .series-victory-seal{position:relative;display:flex;justify-content:center;align-items:center;isolation:isolate}
.vocab-series-view .series-victory-seal::before{content:'';position:absolute;inset:4% -20%;z-index:-1;border-radius:50%;background:radial-gradient(ellipse,#f0dc9b4d,transparent 67%);filter:blur(14px)}
.vocab-series-view .series-victory-seal img{display:block;width:clamp(160px,31vh,295px);height:clamp(173px,34vh,320px);object-fit:contain;filter:drop-shadow(0 10px 22px #000a) drop-shadow(0 0 22px #f4dfa45c);animation:series-victory-emblem 900ms cubic-bezier(.15,.8,.2,1) both}
.vocab-series-view .series-victory-intro[data-race-winner='draw'] .series-victory-seal img{width:clamp(125px,25vh,230px);height:clamp(135px,27vh,250px)}
.vocab-series-view .series-victory-intro>strong{font:500 clamp(27px,5vh,48px)/1 Georgia,serif;letter-spacing:.04em;color:#fff1c9;text-shadow:0 3px 18px #000a}
.vocab-series-view[data-celebrate='true']:not([data-reduced='true'])[data-surge='true']{animation:series-territory-surge 1400ms cubic-bezier(.16,.74,.22,1) 900ms both}
.vocab-series-view[data-celebrate='true']:not([data-reduced='true']) .series-beams{animation:series-victory-force 1400ms ease-out 900ms both}
.vocab-series-view[data-celebrate='true']:not([data-reduced='true']) .series-gain{animation:series-award-reveal 850ms ease-out 1000ms both}
.vocab-series-view[data-celebrate='true']:not([data-reduced='true']) .series-team[data-won='true'] .series-emblem img{animation:series-crest-victory 1400ms cubic-bezier(.15,.7,.2,1) 900ms both}
.vocab-series-view .series-victory-wave{position:absolute;z-index:3;left:-5%;right:-5%;top:14%;height:58%;opacity:0;pointer-events:none;overflow:hidden;animation:series-wave-life 1400ms ease-out 900ms both}
.vocab-series-view .series-victory-wave::before{content:'';position:absolute;left:-8%;top:10%;bottom:10%;width:44%;border:2px solid #b3f5ff8c;border-radius:50%;box-shadow:inset -12px 0 45px #5edfff26,0 0 35px #8beaff36;filter:blur(1px);transform:skewX(-18deg);animation:series-wave-travel 1400ms cubic-bezier(.18,.7,.2,1) 900ms both}
.vocab-series-view[data-race-winner='B'] .series-victory-wave{transform:scaleX(-1)}
.vocab-series-view[data-race-winner='B'] .series-victory-wave::before{border-color:#ffcf8f9c;box-shadow:inset -12px 0 45px #ff9b392d,0 0 35px #ffb56240}
.vocab-series-view[data-race-winner='draw'] .series-victory-wave{display:none}
.vocab-series-running #phaseOverlay[data-phase='final'] :is(.final-actions,#learningReview,#vocabSeriesSave){z-index:12}
.vocab-series-running #phaseOverlay[data-phase='final']:has(.vocab-series-view[data-celebrate='true']) #phaseTitle{animation:series-heading-reveal 350ms ease-out 900ms both}
@keyframes series-victory-arrival{0%{opacity:0;transform:scale(.96)}13%,73%{opacity:1}100%{opacity:0;visibility:hidden;transform:scale(1.07)}}
@keyframes series-victory-emblem{0%{transform:translateY(18px) scale(.78)}35%{transform:translateY(-4px) scale(1.06)}70%{transform:translateY(0) scale(1)}100%{transform:translateY(-8px) scale(1.05)}}
@keyframes series-victory-force{0%{transform:scaleY(.8)}35%{transform:scaleY(1.9)}100%{transform:scaleY(1)}}
@keyframes series-award-reveal{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@keyframes series-heading-reveal{from{opacity:0}to{opacity:1}}
@keyframes series-wave-life{0%{opacity:0}18%{opacity:.7}72%{opacity:.35}100%{opacity:0}}
@keyframes series-wave-travel{from{translate:-20% 0;scale:.65 1}to{translate:175% 0;scale:1.2 .7}}
@keyframes series-charge-flow{to{stroke-dashoffset:-1040}}
@keyframes series-charge-turn{to{transform:rotate(360deg)}}
@keyframes series-charge-breathe{from{stroke-opacity:.62}to{stroke-opacity:1}}
@keyframes series-charge-rune{from{opacity:.66;transform:translateY(1px) scale(.96)}to{opacity:1;transform:translateY(-1px) scale(1.04)}}
/* The increased award has two release fronts inside the original 1400ms push.
   It never adds another waiting phase or extends the victory overlay. */
.vocab-series-view .series-release-echo{position:absolute;left:-8%;top:10%;bottom:10%;width:44%;border:3px solid #e8ffd6c4;border-radius:50%;box-shadow:inset -15px 0 48px #79e7ff38,0 0 42px #c9f9ff55;filter:blur(.5px);transform:skewX(-18deg);opacity:0;pointer-events:none;animation:series-double-wave-travel 1120ms cubic-bezier(.18,.7,.2,1) 1180ms both,series-double-wave-life 1120ms ease-out 1180ms both}
.vocab-series-view[data-race-winner='B'] .series-release-echo{border-color:#fff1c6d6;box-shadow:inset -15px 0 48px #ffad563b,0 0 42px #ffce8b66}
.vocab-series-view[data-release-charge='2'][data-celebrate='true']:not([data-reduced='true']) .series-beams{animation-name:series-double-force}
@keyframes series-double-wave-travel{from{translate:-20% 0;scale:.65 1}to{translate:175% 0;scale:1.2 .7}}
@keyframes series-double-wave-life{0%{opacity:0}19%{opacity:.94}76%{opacity:.76}100%{opacity:0}}
@keyframes series-double-force{0%{transform:scaleY(.8)}24%{transform:scaleY(1.95)}45%{transform:scaleY(1.08)}64%{transform:scaleY(1.78)}100%{transform:scaleY(1)}}
/* Reduced motion skips the transient winner layer instead of leaving an
   unanimated screen in front of the authoritative final score. */
.vocab-series-view[data-reduced='true'] .series-victory-intro,.vocab-series-view[data-reduced='true'] .series-victory-wave,#gameScene[data-motion='reduced'] .series-victory-intro,#gameScene[data-motion='reduced'] .series-victory-wave{display:none!important}
@media(prefers-reduced-motion:reduce){.vocab-series-view .series-victory-intro,.vocab-series-view .series-victory-wave{display:none!important}}
@media(max-height:600px){.vocab-series-view .series-victory-intro{padding-bottom:15vh;gap:5px}}
/* Include the new pseudo-element impulse and external final heading in the
   same exact pause/visibility contract as the existing class duel. */
.vocab-series-view-root[data-suspended='true'] .vocab-series-view *::before,#phaseOverlay[data-pause-ui='true'] .vocab-series-view *::before,#phaseOverlay[data-pause-ui='true'] #phaseTitle,.vocab-series-running #phaseOverlay:has(.vocab-series-view-root[data-suspended='true']) #phaseTitle{animation-play-state:paused!important}
/* Missed words (25.10.2026): sits left of the centred Continue without moving it. */
.vocab-series-running #phaseOverlay[data-phase="final"] #missedWordsButton{position:absolute;right:calc(100% + 14px);top:50%;transform:translateY(-50%);white-space:nowrap;margin:0}
/* Winner and loser Rangers (25.10.2026) stand on their own side of the duel. */
.vocab-series-running #phaseOverlay[data-phase="final"] .final-heroes[data-series='true']{position:absolute;inset:0;z-index:2;display:block;width:100%;height:100%;margin:0;pointer-events:none}
.vocab-series-running #phaseOverlay[data-phase="final"] .final-heroes[data-series='true'] .final-hero{position:absolute;bottom:15%;width:clamp(120px,26vh,210px);height:clamp(120px,26vh,210px);background:radial-gradient(ellipse at 50% 88%,#00000055,transparent 65%);filter:drop-shadow(0 8px 14px #0008)}
.vocab-series-running #phaseOverlay[data-phase="final"] .final-heroes[data-series='true'] #finalHeroA{left:5%}
.vocab-series-running #phaseOverlay[data-phase="final"] .final-heroes[data-series='true'] #finalHeroB{right:5%}
.vocab-series-running #phaseOverlay[data-phase="final"] .final-heroes[data-series='true'] #finalHeroB>div,.vocab-series-running #phaseOverlay[data-phase="final"] .final-heroes[data-series='true'] #finalHeroB>img{transform:scaleX(-1)}
.vocab-series-running #phaseOverlay[data-phase="final"] .final-hero[data-won='false']{filter:drop-shadow(0 8px 14px #0008) saturate(.75) brightness(.85)}
@media(max-width:700px){.vocab-series-running #phaseOverlay[data-phase="final"] .final-heroes[data-series='true'] .final-hero{width:96px;height:96px;bottom:12%}}
.vocab-series-running #phaseOverlay[data-phase="final"] #finalHeroes[data-series='true']{height:100%;width:100%}
/* Final test 27.10.2026 (S2): the losing team's crest and score stay at the outer edge,
   so its ranger steps inward instead of standing on the score. */
.vocab-series-running #phaseOverlay[data-phase="final"] .final-heroes[data-series='true'] #finalHeroA[data-won='false']{left:20%}
.vocab-series-running #phaseOverlay[data-phase="final"] .final-heroes[data-series='true'] #finalHeroB[data-won='false']{right:20%}
/* Painted v3 result portraits. Gameplay figures and the crest/force scene stay native. */
.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'] .final-hero{bottom:clamp(38px,7vh,84px);width:clamp(220px,36vw,470px);height:clamp(230px,43vh,480px);background:none;filter:drop-shadow(0 8px 20px #0005)}
.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'] #finalHeroA{left:2.5%;right:auto}.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'] #finalHeroB{right:2.5%;left:auto}
.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'] .final-hero>div{display:none!important}.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'] .final-hero>img{display:block;width:100%;height:100%;object-fit:contain;object-position:center bottom;position:relative;z-index:1}.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'] .final-hero[hidden]{display:none!important}
.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'][data-outcome='draw'] .final-hero{width:clamp(190px,29vw,390px);height:clamp(230px,40vh,450px)}
@media(max-width:700px){.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'] .final-hero{bottom:clamp(125px,20vh,180px);width:min(42vw,180px);height:30vh}.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'][data-outcome='draw'] .final-hero{width:min(40vw,165px);height:30vh}}
/* Figures and forces lead; exact series numbers remain in teacher details. */
.vocab-series-running #phaseOverlay[data-phase='final'] .series-tally,.vocab-series-running #phaseOverlay[data-phase='final'] .series-counter{display:none!important}
.vocab-series-running #phaseOverlay[data-phase='final'] #finalStats{position:absolute;z-index:13;bottom:12px;right:18px;max-width:380px;max-height:50vh;overflow:auto;text-align:left;font:14px/1.5 system-ui;color:#c9d7d2}.vocab-series-running #phaseOverlay[data-phase='final'] #finalStats summary{min-height:44px;align-content:center;cursor:pointer}.vocab-series-running #phaseOverlay[data-phase='final'] #finalStats[open]{bottom:18%;background:#061c26f0;border:1px solid #c0ceba55;border-radius:14px;padding:16px 22px}.vocab-series-running #phaseOverlay[data-phase='final'] #finalNumbers{white-space:pre-line}

/* A quiet ground light anchors the complete illustration above the controls. */
.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'] .final-hero::before{content:'';position:absolute;z-index:0;left:24%;width:52%;height:5%;bottom:4%;border-radius:50%;background:radial-gradient(ellipse,#8ae6ff52,#73bde019 50%,transparent 74%);filter:blur(3px)}
.vocab-series-running #phaseOverlay[data-phase='final'] .final-heroes[data-painted='true'] #finalHeroB::before{background:radial-gradient(ellipse,#ffc98b59,#e5915419 50%,transparent 74%)}
