:root{color-scheme:light;--ink:#291d2e;--muted:#796b72;--paper:#fffdf9;--line:#e9e3df;--ease:cubic-bezier(.22,1,.36,1);--blue:#0071e3;--round:28px}*{box-sizing:border-box}html{min-width:280px;scroll-behavior:smooth;scroll-padding-top:24px;overflow-x:clip}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:18px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:clip}h1,h2,h3,p,figure{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;color:inherit}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--blue);outline-offset:5px}button:disabled{opacity:.5;cursor:default}[hidden]{display:none!important}svg{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}button svg{pointer-events:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link{position:fixed;top:10px;left:10px;z-index:1100;background:#fff;padding:10px 16px;border-radius:14px;transform:translateY(-200%)}.skip-link:focus{transform:none}.spectrum{height:5px;background:linear-gradient(90deg,#ffda00 0 16.66%,#ffa600 16.66% 33.33%,#277a12 33.33% 50%,#763094 50% 66.66%,#1866aa 66.66% 83.33%,#b61928 83.33%)}
.shell{min-height:calc(100svh - 5px);display:flex;flex-direction:column;position:relative;isolation:isolate;overflow:clip}.header{min-height:96px;padding:16px clamp(24px,5.3vw,92px);display:flex;align-items:center;justify-content:space-between;gap:20px;z-index:2;border-bottom:1px solid #efe9e188;background:#fffdf9a8}.header-leading{display:flex;align-items:center;gap:clamp(10px,1.7vw,26px);min-width:0}.ios-back{display:inline-flex;align-items:center;gap:3px;min-height:44px;padding:7px 5px 7px 0;color:#007aff;text-decoration:none;font-size:16px;font-weight:500;letter-spacing:-.01em;flex:none;user-select:none}.ios-back svg{width:25px;height:25px;stroke-width:2.2}.ios-back:hover{opacity:.72}.ios-back:active{transform:scale(.96)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;flex:none}.brand-logo{width:48px;height:53px;object-fit:contain}.brand-name{font-family:Montserrat,Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:19px;font-weight:900;letter-spacing:.075em;line-height:1.15;background:linear-gradient(100deg,#d9a900,#ed7920 50%,#ab1135);background-clip:text;-webkit-background-clip:text;color:transparent}.brand-name span{display:block;font-size:10px;letter-spacing:.24em;margin-top:5px;color:#381740}.menu-trigger,.secondary{display:inline-flex;align-items:center;justify-content:center;gap:14px;background:#ffffffa6;border:1px solid #ded7d2;border-radius:100px;padding:13px 22px;min-height:50px;font-size:16px;font-weight:500;text-decoration:none;transition:transform .3s var(--ease),background .3s,box-shadow .3s}.menu-trigger:hover,.secondary:hover{background:#fff;box-shadow:0 6px 24px #34211c0a;transform:translateY(-2px)}.menu-trigger{gap:18px;user-select:none}
.hero{width:100%;max-width:1800px;margin:auto;flex:1;display:grid;grid-template-columns:49% 51%;align-items:center;min-height:570px;position:relative}.copy{z-index:1;padding:35px 0 50px clamp(24px,5.3vw,92px)}.eyebrow{display:flex;align-items:center;gap:12px;color:#87716d;font-size:13px;font-weight:600;letter-spacing:.17em;text-transform:uppercase;margin-bottom:25px}.eyebrow:before{content:'';width:24px;height:1px;background:currentColor;opacity:.5}.wordmark{width:fit-content;font-family:Montserrat,Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:clamp(80px,9.7vw,167px);font-weight:900;line-height:.94;letter-spacing:-.045em;padding-right:.065em;color:#db6321;background:linear-gradient(104deg,#e9bf00 2%,#f3aa0d 25%,#f58921 48%,#e36129 73%,#b91538 98%);background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.techversity{display:block;font-size:clamp(19px,2.17vw,37px);line-height:1.2;letter-spacing:.23em;font-weight:800;color:#381740;margin-top:12px}.tagline{font-size:clamp(23px,2.15vw,34px);line-height:1.4;letter-spacing:-.04em;margin:32px 0;color:#74606c}.tagline strong{font-weight:600;color:#3b273f}.hero-actions,.tools-actions{display:flex;align-items:center;flex-wrap:wrap;gap:14px}.primary{display:inline-flex;align-items:center;justify-content:center;gap:19px;min-height:54px;padding:14px 23px;border:1px solid #302333;border-radius:100px;background:#302333;color:#fff;font-size:16px;font-weight:500;text-decoration:none;transition:transform .3s var(--ease),box-shadow .3s,background .3s;user-select:none}.primary:hover{transform:translateY(-2px);box-shadow:0 8px 24px #371c2422;background:#4a3449}.primary:active,.secondary:active{transform:scale(.97)}.primary svg{width:17px;height:17px}.secondary{min-height:54px}.text-link{color:#94552f;text-decoration:none;display:inline-flex;gap:10px;align-items:center;min-height:44px;font-size:16px;font-weight:500}.text-link:hover{text-decoration:underline;text-underline-offset:5px}
.viewer-wrap{position:relative;align-self:stretch;min-width:0;min-height:570px}.viewer{position:absolute;inset:-10px 0 -10px -25px;touch-action:auto;cursor:default;user-select:none;pointer-events:none;outline-offset:-10px!important}.viewer canvas{display:block;width:100%;height:100%;position:absolute}.viewer-hint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;white-space:nowrap;font-size:12px;letter-spacing:.02em;color:#8d7e84;pointer-events:none}.viewer-hint svg{width:16px;height:16px}.viewer-error{position:absolute;inset:24%;display:grid;place-items:center;text-align:center;font-size:15px;color:var(--muted)}.footer{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:20px clamp(24px,5.3vw,92px) 30px;position:relative}.scroll-cue{display:inline-flex;align-items:center;gap:15px;text-decoration:none;font-size:13px;font-weight:500;letter-spacing:.08em;min-height:44px;color:#806e78}.scroll-cue span{font-size:24px;animation:scroll-nudge 1.8s ease-in-out infinite}.footer-signature{display:flex;align-items:center;gap:16px;font-size:12px;color:#8a7c80}.mini-spectrum{display:flex;gap:4px}.mini-spectrum i{width:15px;height:4px;border-radius:4px;background:var(--c)}@keyframes scroll-nudge{50%{transform:translateY(5px)}}
.liquid-field{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden;contain:paint}.liquid-field i{position:absolute;width:70%;height:85%;top:5%;right:-10%;border-radius:50%;background:radial-gradient(ellipse at center,#ffcf735c,transparent 68%);animation:liquid-flow 14s ease-in-out infinite alternate;will-change:transform}.liquid-field i:nth-child(2){width:65%;height:80%;right:-8%;top:28%;background:radial-gradient(ellipse at center,#ef999533,transparent 70%);animation-duration:18s;animation-delay:-7s}.liquid-field i:nth-child(3){width:50%;height:70%;right:27%;top:24%;background:radial-gradient(ellipse at center,#b7c9d633,transparent 68%);animation-duration:20s;animation-delay:-11s}@keyframes liquid-flow{0%{transform:translate3d(-8%,-6%,0) scale(.9) rotate(-15deg)}50%{transform:translate3d(8%,8%,0) scale(1.17) rotate(12deg)}100%{transform:translate3d(-9%,14%,0) scale(1.08) rotate(-8deg)}}.motion-asleep *{animation-play-state:paused!important}.copy>*{animation:copy-in .8s var(--ease) both}.copy h1{animation-delay:.06s}.copy .techversity{animation-delay:.12s}.copy .tagline{animation-delay:.18s}.copy .hero-actions{animation-delay:.24s}@keyframes copy-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}.is-loading .copy>*{animation-play-state:paused}
.preloader{display:none}.js .preloader{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#fffdf9;transition:opacity .35s,visibility .35s}.js .preloader.is-complete{opacity:0;visibility:hidden;pointer-events:none}.is-loading body{overflow:hidden}.preloader-stage{width:min(350px,80vw);height:min(360px,50svh);position:relative}.preloader-stage canvas{display:block;width:100%;height:100%}.loader-wordmark{font-family:Montserrat,Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-size:27px;font-weight:900;letter-spacing:.10em;color:#d46a1c;text-align:center}.loader-wordmark span{display:block;font-size:10px;letter-spacing:.25em;color:#381740;margin-top:4px}.loader-caption{font-size:13px;color:#89736b;margin-top:20px}.loader-line{width:100px;height:3px;margin-top:15px;background:#efe4d8;overflow:hidden;border-radius:10px}.loader-line:after{content:'';display:block;height:100%;width:50%;background:linear-gradient(90deg,#ffd400,#ee8425,#ac1535);animation:loader-flow .8s ease-in-out infinite alternate}@keyframes loader-flow{to{transform:translateX(100%)}}
.page-content{position:relative}.content-section{padding:110px clamp(24px,7vw,112px);max-width:1480px;margin:auto;scroll-margin-top:20px}.section-heading h2{font-size:clamp(38px,4.9vw,70px);line-height:1.07;letter-spacing:-.06em;font-weight:600;margin-bottom:26px;text-wrap:balance}.section-heading h2 span{color:#a08b80}.section-intro{font-size:20px;line-height:1.65;color:var(--muted);max-width:650px;letter-spacing:-.015em}.identity-section{display:grid;grid-template-columns:1.1fr 1fr;gap:10%;border-top:1px solid var(--line)}.identity-copy p{font-size:19px;line-height:1.75;color:var(--muted);margin-bottom:20px;letter-spacing:-.015em}.identity-copy .lead{font-size:clamp(27px,3vw,40px);line-height:1.25;font-weight:500;letter-spacing:-.045em;color:#ab4d2b;margin-bottom:27px}.heritage-band{height:54px;display:flex;overflow:hidden}.heritage-band i{flex:1;background-color:var(--c);background-image:repeating-linear-gradient(45deg,transparent 0 22px,#ffffff17 22px 30px,transparent 30px 45px),repeating-linear-gradient(-45deg,transparent 0 22px,#00000012 22px 30px,transparent 30px 45px)}.heritage-band i:nth-child(1){--c:#ffd400}.heritage-band i:nth-child(2){--c:#ffa500}.heritage-band i:nth-child(3){--c:#297413}.heritage-band i:nth-child(4){--c:#75318e}.heritage-band i:nth-child(5){--c:#1969aa}.heritage-band i:nth-child(6){--c:#ae2024}
.principle-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:54px}.principle{padding:32px;background:#fff;border:1px solid var(--line);border-radius:var(--round);overflow:hidden;transition:box-shadow .3s,transform .4s var(--ease)}.principle:hover{box-shadow:0 15px 40px #472c1810}.principle-no{font-size:13px;color:#aa968c}.principle h3{font-size:27px;line-height:1.25;font-weight:600;letter-spacing:-.045em;margin:28px 0 14px}.principle p{font-size:17px;line-height:1.7;color:var(--muted)}.design-symbol,.color-orbit{height:94px;margin:25px 0;display:grid;place-items:center;color:var(--accent)}.spark-symbol{font-size:90px;line-height:1;animation:spark-turn 9s ease-in-out infinite}@keyframes spark-turn{50%{transform:rotate(35deg) scale(.9)}}.color-orbit{display:flex;align-items:center;justify-content:center;gap:5px}.color-orbit i{width:19px;height:52px;border-radius:30px;background:var(--c);animation:color-wave 2.5s ease-in-out infinite alternate}.color-orbit i:nth-child(1){--c:#f0c500}.color-orbit i:nth-child(2){--c:#ee8623;animation-delay:-.4s}.color-orbit i:nth-child(3){--c:#387c1b;animation-delay:-.8s}.color-orbit i:nth-child(4){--c:#763694;animation-delay:-1.2s}.color-orbit i:nth-child(5){--c:#2269a2;animation-delay:-1.6s}.color-orbit i:nth-child(6){--c:#a81733;animation-delay:-2s}@keyframes color-wave{to{transform:scaleY(.6) translateY(-10px)}}.weave-symbol{width:70px;height:70px;border:10px double #af2135;margin:37px auto;transform:rotate(45deg);box-shadow:inset 0 0 0 8px #fff,inset 0 0 0 13px #ee9a36;animation:weave-breathe 4s ease-in-out infinite}@keyframes weave-breathe{50%{transform:rotate(45deg) scale(.85)}}
.talents-section{border-top:1px solid var(--line)}.talent-list{margin-top:48px}.talent-row{display:grid;grid-template-columns:40px 1fr 1fr 12px;align-items:center;gap:22px;padding:28px 0;border-top:1px solid var(--line)}.talent-number{font-size:13px;color:var(--accent)}.talent-row h3{font-size:clamp(23px,2.5vw,31px);line-height:1.25;font-weight:500;letter-spacing:-.04em}.talent-row p{font-size:17px;color:var(--muted)}.talent-dot{width:10px;height:10px;border-radius:50%;background:var(--accent)}.artwork-section{background:#f6f0e9;border-radius:34px}.identity-art{margin-top:40px}.identity-art img{display:block;width:100%;height:auto;aspect-ratio:16/9;background:linear-gradient(120deg,#f4e8d8,#e7d9d2);border-radius:18px}.identity-art figcaption{font-size:14px;color:#907b71;text-align:center;margin-top:20px}.news-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px;margin-top:45px}.news-grid img{width:100%;height:auto;aspect-ratio:9/7;object-fit:cover;display:block;border-radius:24px;background:linear-gradient(110deg,#f2e5d3,#e6dfdd)}.news-grid figcaption{font-size:20px;font-weight:500;margin-top:18px;letter-spacing:-.02em}.news-grid figcaption span{display:block;font-size:14px;color:#958580;margin-top:4px;font-weight:400}.tools-section{position:relative;isolation:isolate;text-align:center;overflow:hidden;border-radius:34px;background:#f8f4ed}.tools-section .eyebrow,.tools-actions{justify-content:center}.tools-section .section-intro{margin:auto}.tools-section .liquid-field{z-index:-1}.tools-section .liquid-field i{right:20%}.tools-actions{margin-top:34px}.closing-footer{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:45px clamp(24px,7vw,112px);margin-top:65px;border-top:1px solid var(--line)}.closing-footer p{font-size:14px;color:#8b7872}.back-top{font-size:14px;text-decoration:none;padding:12px 0}.reveal-on-scroll{opacity:0;transform:translateY(20px);transition:opacity .75s var(--ease),transform .75s var(--ease)}.reveal-on-scroll.in-view{opacity:1;transform:none}
/* Native dialogs: keyboard focus containment, Escape, and compact tool navigation. */
dialog{color:var(--ink);background:#fffdfb;border:1px solid #e6dfd8;padding:0;box-shadow:0 24px 110px #27192625;max-width:calc(100vw - 24px);overscroll-behavior:contain}dialog::backdrop{background:#25192c44}dialog[open]{animation:dialog-in .3s var(--ease)}@keyframes dialog-in{from{opacity:0;transform:translateY(15px) scale(.98)}to{opacity:1;transform:none}}.dialog-top{padding:24px 28px;display:flex;align-items:center;justify-content:space-between;gap:20px}.dialog-label{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#8c7a76;font-weight:600}.icon-button{display:grid;place-items:center;width:44px;height:44px;flex:none;border-radius:50%;border:1px solid var(--line);background:#fff;font-size:25px}.icon-button:hover{background:#f4efea}.link-menu{position:fixed;inset:12px 12px 12px auto;width:440px;height:calc(100dvh - 24px);max-height:calc(100dvh - 24px);margin:0;border-radius:28px;overflow:auto}.menu-content{padding:16px 28px}.menu-title{font-size:44px;line-height:1.06;font-weight:600;letter-spacing:-.05em;margin-bottom:30px}.menu-title span{color:#a58a7b}.menu-nav{display:flex;flex-direction:column}.menu-link{display:grid;grid-template-columns:24px 1fr 20px;gap:14px;padding:22px 0;border-top:1px solid var(--line);text-decoration:none;align-items:center}.link-no{font-size:12px;color:#a39288}.link-title{display:block;font-size:19px;font-weight:500}.link-description{display:block;font-size:14px;line-height:1.5;color:#8c7d76;margin-top:4px}.menu-link>svg{width:17px;height:17px;color:#988479}.menu-foot{margin:18px 28px 28px;border-top:1px solid var(--line);padding-top:22px;font-size:14px;color:#907b72}.menu-foot .mini-spectrum{margin-bottom:15px}.tools-dialog{width:790px;max-height:calc(100dvh - 32px);border-radius:30px;margin:auto;overflow:auto}.tools-dialog-body{padding:4px 30px 32px}.tools-dialog h2{font-size:clamp(30px,4vw,43px);letter-spacing:-.05em;line-height:1.12;margin-bottom:14px}.tools-dialog-intro{font-size:17px;color:var(--muted);margin-bottom:25px}.tool-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:28px 0}.tool-card{display:flex;flex-direction:column;align-items:flex-start;gap:12px;padding:25px;background:#fff;border:1px solid var(--line);border-radius:22px;text-decoration:none;transition:transform .3s var(--ease),box-shadow .3s;position:relative}.tool-card:hover{transform:translateY(-4px);box-shadow:0 12px 30px #412b1e0d}.tool-icon{display:grid;place-items:center;width:48px;height:48px;font-size:27px;border-radius:16px;background:linear-gradient(130deg,#ffe09c77,#f2beb477);color:#ab6025}.tool-title{font-size:20px;line-height:1.2;font-weight:600;letter-spacing:-.035em}.tool-description{font-size:15px;line-height:1.6;color:var(--muted)}.tool-arrow{margin-top:auto;color:#ac8c76;font-size:23px}noscript p{padding:18px 24px;text-align:center;background:#f6eee5;font-size:16px}
/* Tool workspaces share the same type, spacing, and controls. */
.tool-page{min-height:100svh}.workspace{max-width:1120px;padding:70px 32px 100px;margin:auto}.workspace-heading{margin-bottom:35px}.workspace-heading h1{font-size:clamp(40px,6vw,72px);letter-spacing:-.065em;line-height:1.05;margin:18px 0}.workspace-heading p{color:var(--muted);max-width:700px;font-size:20px}.workspace-heading .text-link{font-size:14px}.workspace-panel{background:#fff;border:1px solid var(--line);padding:32px;border-radius:28px}.control-row{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-top:24px}.control-row label{font-size:16px;font-weight:500}.control-row select,.control-row input,.notes-title{padding:11px 15px;border:1px solid #ded5d0;border-radius:12px;background:#fff;color:var(--ink);min-height:48px}.palette-preview{height:280px;border-radius:20px;background:linear-gradient(120deg,#f0c500,#ec8120,#a71934);position:relative;overflow:hidden;display:grid;place-items:center}.palette-preview:after{content:'';position:absolute;inset:-50%;background:radial-gradient(ellipse at 40% 40%,#ffffff60,transparent 55%);animation:liquid-flow 12s ease-in-out infinite alternate;pointer-events:none}.palette-preview strong{position:relative;z-index:1;font-size:clamp(36px,7vw,70px);letter-spacing:-.06em;color:#261b27;background:#ffffffc9;padding:0 20px;border-radius:18px}.swatches{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-top:20px}.swatch{border:1px solid var(--line);border-radius:14px;padding:0;background:#fff;overflow:hidden;text-align:left;font-size:13px}.swatch i{display:block;height:62px;background:var(--swatch)}.swatch span{display:block;padding:10px}.code-output{display:block;background:#f6f3ef;padding:16px;border-radius:14px;margin-top:22px;font-family:ui-monospace,monospace;font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere}.status-message{min-height:28px;font-size:14px;color:#876548;margin-top:18px}.timer-panel{text-align:center;padding:48px 24px}.timer-display{font-size:clamp(70px,13vw,140px);font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:-.075em;line-height:1.25;margin:25px 0}.timer-panel .control-row{justify-content:center}.timer-status{font-size:17px;color:var(--muted)}.note-label{font-size:15px;font-weight:500;display:block;margin-bottom:8px}.notes-title{width:100%;font-size:22px;margin-bottom:24px}.notes-editor{display:block;width:100%;min-height:320px;resize:vertical;border:1px solid #ded5d0;border-radius:16px;padding:20px;font-size:18px;line-height:1.8;background:#fff;color:var(--ink)}.notes-meta{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;margin-top:14px;color:#8f7970;font-size:14px}.danger-button{color:#aa3636}.tool-nav{display:flex;gap:12px;flex-wrap:wrap;margin-top:28px}.tool-nav a{font-size:14px;padding:8px 13px;text-decoration:none;border-radius:12px;background:#f4eee8}.tool-nav a[aria-current=page]{color:#fff;background:#372a3c}
@media(min-width:1700px){.hero,.viewer-wrap{min-height:660px}}
@media(max-width:1050px){.hero-actions{gap:10px}.hero-actions .primary,.hero-actions .secondary{font-size:14px;padding:13px 17px}.principle{padding:24px}.principle-grid{gap:16px}.footer-signature>span{display:none}.identity-section{gap:6%}.tools-dialog .tool-grid{grid-template-columns:1fr}.tools-dialog .tool-card{display:grid;grid-template-columns:48px 1fr 20px;column-gap:18px}.tools-dialog .tool-icon{grid-row:1/3}.tools-dialog .tool-description{grid-column:2}.tools-dialog .tool-arrow{grid-column:3;grid-row:1/3;margin:0;align-self:center}}
@media(max-width:720px){body{font-size:17px}.header{min-height:80px;padding:12px 22px}.brand-logo{width:37px;height:43px}.brand-name{font-size:16px}.brand-name span{font-size:8px}.brand{gap:9px}.menu-trigger{padding:10px 16px;font-size:14px;min-height:44px;gap:12px}.hero{grid-template-columns:1fr;min-height:0;align-content:start;padding:0 22px}.viewer-wrap{grid-row:1;min-height:0;height:clamp(290px,43svh,420px);margin-top:0}.viewer{inset:0 -10px}.viewer-hint{bottom:5px;font-size:11px}.copy{text-align:center;padding:25px 0 20px;max-width:540px;margin:auto;width:100%}.copy .eyebrow{display:none}.wordmark{font-size:clamp(68px,17vw,119px);margin:auto}.techversity{font-size:clamp(16px,3.9vw,26px);letter-spacing:.23em;margin-top:10px;padding-left:.23em}.tagline{font-size:clamp(23px,5.1vw,28px);margin:25px 0;line-height:1.35}.hero-actions{justify-content:center;gap:12px}.hero-actions .primary,.hero-actions .secondary{font-size:15px;padding:13px 19px;min-height:50px}.footer{padding:16px 24px 25px;justify-content:center}.footer-signature{display:none}.liquid-field i{width:120%;height:75%;right:-30%;top:0}.liquid-field i:nth-child(2){width:110%;top:15%}.liquid-field i:nth-child(3){width:90%;right:15%}.content-section{padding:72px 24px}.eyebrow{font-size:11px;letter-spacing:.12em;margin-bottom:22px}.section-heading h2{font-size:clamp(37px,9vw,50px);margin-bottom:22px}.section-intro{font-size:18px}.identity-section{grid-template-columns:1fr;gap:22px}.identity-copy p{font-size:18px}.identity-copy .lead{font-size:30px}.heritage-band{height:38px}.principle-grid{grid-template-columns:1fr;gap:18px;margin-top:34px}.principle{padding:28px}.principle h3{font-size:28px}.principle p{font-size:18px}.talent-row{grid-template-columns:25px 1fr 10px;gap:10px 13px;padding:25px 0}.talent-row p{grid-column:2;grid-row:2;font-size:16px}.talent-dot{grid-column:3;grid-row:1}.talent-row h3{font-size:25px}.artwork-section,.tools-section{border-radius:0}.identity-art img{border-radius:15px}.news-grid{grid-template-columns:1fr;gap:32px;margin-top:35px}.news-grid figcaption{font-size:21px}.tools-actions{gap:12px}.tools-actions .text-link{width:100%;justify-content:center}.closing-footer{margin-top:20px;padding:35px 24px;flex-wrap:wrap;gap:20px}.closing-footer p{order:3;width:100%;font-size:13px}.link-menu{inset:8px;width:calc(100vw - 16px);height:calc(100dvh - 16px);max-height:calc(100dvh - 16px);max-width:none;border-radius:24px}.dialog-top{padding:20px 23px}.menu-content{padding:10px 24px}.menu-title{font-size:38px}.menu-link{padding:19px 0}.tools-dialog{border-radius:24px}.tools-dialog-body{padding:4px 23px 25px}.tools-dialog .tool-card{padding:20px;column-gap:13px}.tool-title{font-size:20px}.tool-description{font-size:15px}.tool-grid{grid-template-columns:1fr}.workspace{padding:40px 20px 70px}.workspace-heading p{font-size:18px}.workspace-panel{padding:22px}.workspace .tool-card{padding:26px}.swatches{grid-template-columns:repeat(3,1fr)}.palette-preview{height:230px}.control-row{gap:12px}.control-row .primary,.control-row .secondary{font-size:15px}.notes-editor{padding:16px;font-size:17px}.notes-title{font-size:20px}.timer-panel{padding:32px 15px}.tool-page .header .text-link{font-size:14px}.preloader-stage{height:min(340px,48svh)}}
@media(max-width:360px){.header{padding:12px 16px}.hero{padding:0 16px}.brand-name{font-size:14px}.menu-trigger{padding:10px 13px}.menu-trigger>span:first-child{display:none}.hero-actions .primary,.hero-actions .secondary{padding:12px 14px;font-size:14px}.content-section{padding-left:20px;padding-right:20px}.tools-dialog .tool-card{grid-template-columns:36px 1fr 16px;padding:16px}.tool-icon{width:36px;height:40px;font-size:23px}}
@media(max-height:660px) and (min-width:721px){.header{min-height:76px}.hero,.viewer-wrap{min-height:420px}.copy{padding-top:25px;padding-bottom:25px}.wordmark{font-size:clamp(76px,9vw,125px)}.tagline{margin:25px 0}.footer{padding-top:10px;padding-bottom:18px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal-on-scroll{opacity:1;transform:none}.liquid-field i{will-change:auto}}
/* IGNITE live event application */
body[data-page=home] .shell{min-height:calc(100svh - 101px)}.header-actions{display:flex;gap:12px;align-items:center}.soft{color:var(--muted);font-size:16px;line-height:1.6}.small{font-size:13px}.spaced{margin-top:24px}.full{width:100%}.workspace.wide{max-width:1520px}.workspace.narrow{max-width:720px}.heading-row{display:flex;align-items:center;justify-content:space-between;gap:24px}.heading-row h1{flex:1}.connection{font-size:12px;color:#47794b;white-space:nowrap;align-self:center;display:inline-flex;gap:8px;align-items:center}.connection:before{content:'';width:7px;height:7px;border-radius:50%;background:#5caa64;box-shadow:0 0 0 5px #5caa6414;animation:connection-pulse 2s ease-in-out infinite}.connection.offline{color:#b87330}.connection.offline:before{background:#bb823d;animation:none}@keyframes connection-pulse{50%{box-shadow:0 0 0 8px #5caa6409}}.experience-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:40px}.experience-card{display:flex;flex-direction:column;gap:18px;padding:32px 25px;border:1px solid var(--line);border-radius:28px;background:linear-gradient(140deg,#fff,#fffaf3);text-decoration:none;transition:transform .35s var(--ease),box-shadow .35s}.experience-card:hover{transform:translateY(-5px);box-shadow:0 15px 35px #532b1610}.experience-card h3{font-size:24px;line-height:1.2;letter-spacing:-.04em}.experience-card p{font-size:17px;color:var(--muted);line-height:1.6}.card-arrow{margin-top:auto;font-size:25px;color:#a27e67}.panel{background:#fff;border:1px solid var(--line);border-radius:26px;padding:28px;min-width:0}.panel h2{font-size:25px;line-height:1.2;letter-spacing:-.035em;margin-bottom:16px}.panel h3{font-size:20px;line-height:1.25;letter-spacing:-.025em}.stack{display:flex;flex-direction:column;gap:19px}.stack h2,.stack p{margin:0}.stack>button{align-self:flex-start}.stack>button.full{align-self:stretch}label{font-size:14px;font-weight:500;display:block;color:#6f5c69}input:not([type=checkbox]):not([type=range]):not([type=color]),select,textarea{display:block;width:100%;min-width:0;min-height:48px;padding:11px 14px;margin-top:7px;border:1px solid #dcd3d8;border-radius:12px;background:#fff;color:#302335;font-size:16px;line-height:1.5}textarea{resize:vertical}input[type=file]{padding:10px!important;font-size:13px!important}input[type=color]{width:100%;height:43px;margin-top:7px;border:1px solid var(--line);border-radius:10px;background:#fff}input[type=range]{width:100%;accent-color:#b27533}input[type=checkbox]{width:18px;height:18px;flex:none;accent-color:#a86728}.check{display:flex;align-items:center;gap:11px;font-weight:400;font-size:16px}.two-fields{display:grid;grid-template-columns:1fr 1fr;gap:15px}.notice{padding:18px 22px;border-radius:18px;background:#fff4df;border:1px solid #efd8aa;font-size:16px;margin-bottom:22px;line-height:1.65}.notice.success{background:#eff8ef;border-color:#c3dbc5;color:#305c37}.notice.error{background:#fff0ed;border-color:#ecc4bc;color:#8d3c30}.section-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px;flex-wrap:wrap}.section-bar h2{margin:0;font-size:24px}.pill{font-size:12px;letter-spacing:.02em;border-radius:100px;background:#f5ede4;color:#927254;padding:7px 13px;display:inline-flex;align-items:center}.candidate-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:25px}.candidate-card{background:#fff;border:1px solid var(--line);border-radius:26px;overflow:hidden;min-width:0}.portrait{position:relative;width:100%;aspect-ratio:3/4;background:linear-gradient(135deg,#fff2cd,#eed2c7);overflow:hidden}.portrait>img{width:100%;height:100%;object-fit:cover;display:block}.photo-placeholder{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px;background:radial-gradient(ellipse at 70% 25%,#ffffffe0,transparent 50%),linear-gradient(150deg,#fde6a8,#e8b1a83b);color:#b07748}.photo-placeholder>span{font-size:64px;font-weight:600;letter-spacing:-.08em}.photo-placeholder small{font-size:12px}.candidate-number{position:absolute;top:17px;left:17px;min-width:35px;height:35px;border-radius:50%;background:#fffdfbe8;display:grid;place-items:center;font-size:13px;font-weight:600;color:#835c39}.candidate-info{padding:23px}.candidate-info h2{font-size:24px;letter-spacing:-.04em;line-height:1.2;margin-bottom:12px}.candidate-info>p{font-size:16px;line-height:1.65;color:var(--muted);white-space:pre-line}.candidate-info .section-bar{margin:24px 0 0;gap:12px}.candidate-info .primary{font-size:14px;min-height:46px;padding:11px 16px}.privacy-note{font-size:13px;line-height:1.8;color:#95827a;margin:35px auto 0;max-width:750px;text-align:center}.confirm-candidate{display:flex;align-items:center;gap:20px}.confirm-candidate .portrait{width:90px;flex:none;aspect-ratio:3/4;border-radius:17px}.confirm-candidate .candidate-number{width:25px;height:25px;min-width:25px;font-size:10px;top:8px;left:8px}.confirm-candidate .photo-placeholder span{font-size:30px}.confirm-candidate .photo-placeholder small{display:none}.confirm-candidate h2{margin:5px 0 0;font-size:27px}.empty-state{padding:35px 15px;color:#9b8880;font-size:16px;text-align:center;line-height:1.7}.candidate-grid>.empty-state{grid-column:1/-1}.candidate-strip{display:flex;gap:12px;overflow-x:auto;overscroll-behavior-x:contain;padding:5px 5px 18px;margin-bottom:25px}.candidate-chip{display:flex;align-items:center;gap:10px;flex:none;min-height:56px;padding:9px 17px;background:#fff;border:1px solid var(--line);border-radius:17px;font-size:14px}.candidate-chip img{width:35px;height:38px;border-radius:9px;object-fit:cover}.candidate-chip.selected{border-color:#c59457;background:#fff3db;color:#8c5a27}.score-layout{display:grid;grid-template-columns:minmax(190px,1fr) minmax(300px,1.65fr);gap:30px}.score-total{display:flex;align-items:baseline;justify-content:center;gap:14px;padding:32px 0 20px;color:#9a8377;font-size:14px}.score-total strong{font-size:47px;line-height:1.2;font-weight:500;letter-spacing:-.06em;color:#ab6a2c;font-variant-numeric:tabular-nums}.compact-heading{font-size:29px;letter-spacing:-.04em;margin-top:10px}#score-version{margin-bottom:25px}.live-grid,.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px;align-items:start}.result-row{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:13px;padding:22px 0 14px;border-bottom:1px solid var(--line)}.result-row .rank{font-size:17px;color:#b58c5d}.result-row strong{font-size:17px;font-weight:500}.result-row small{display:block;font-size:12px;color:#a18c82;margin-top:5px}.result-row>strong{font-size:25px;letter-spacing:-.04em;font-variant-numeric:tabular-nums;color:#9d6228}.result-meter{grid-column:2/-1;height:4px;background:#f2e9de;border-radius:10px;overflow:hidden}.result-meter:after{content:'';width:var(--result);height:100%;display:block;background:linear-gradient(90deg,#f3c522,#df7833,#ad2940);transition:width .65s var(--ease)}.tab-bar{display:flex;gap:8px;overflow-x:auto;padding:7px;background:#f3eee8;border-radius:19px;margin-bottom:20px}.tab-bar button{white-space:nowrap;padding:11px 18px;border-radius:13px;border:0;background:transparent;font-size:14px;color:#8d776d}.tab-bar button.active{background:#fff;box-shadow:0 3px 8px #5a35100c;color:#6e4229}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin:30px 0}.stat-grid strong{display:block;font-size:42px;line-height:1.1;font-weight:500;letter-spacing:-.055em;color:#ac7237}.stat-grid span{display:block;font-size:14px;color:#987f70;margin-top:10px}.admin-list{display:flex;flex-direction:column;gap:16px}.mini-candidate{display:flex;align-items:center;justify-content:space-between;gap:20px}.mini-candidate .soft{margin-top:8px}.list-row{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:17px 0;border-bottom:1px solid var(--line);font-size:15px;overflow-wrap:anywhere}.list-row small{display:block;color:#9a867b;font-size:12px;line-height:1.6;margin-top:5px}.list-row .secondary{min-height:38px;font-size:12px;padding:8px 12px;flex:none}.table-wrap{max-width:100%;overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}th{font-size:12px;font-weight:500;color:#a18a7c;padding:14px 12px;border-bottom:1px solid var(--line)}td{padding:14px 12px;border-bottom:1px solid var(--line);max-width:250px;overflow-wrap:anywhere;vertical-align:top}.link-button{border:0;background:none;padding:6px 10px;font-size:13px;color:#a43f38}.login-form{max-width:480px;margin:30px auto}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:14px 22px;border-radius:100px;color:#fff;background:#322538;box-shadow:0 8px 35px #20152825;z-index:1200;font-size:14px;max-width:calc(100vw - 35px);width:max-content;text-align:center;line-height:1.5}.status-message{overflow-wrap:anywhere}.status-message:not(:empty){padding:10px 0}#message-body code{user-select:all;white-space:pre-wrap}.closing-footer{margin-top:35px}.experience-card:focus-visible{outline-offset:5px}
@media(max-width:1100px){.experience-grid{grid-template-columns:repeat(2,1fr)}.candidate-grid{grid-template-columns:repeat(2,1fr)}.workspace.wide{padding:55px 24px 75px}}
@media(max-width:800px){.admin-grid,.live-grid{grid-template-columns:1fr}.score-layout{grid-template-columns:1fr}.score-layout #judge-selected .candidate-card{display:flex;align-items:center}.score-layout #judge-selected .portrait{width:110px;flex:none;aspect-ratio:3/4}.score-layout #judge-selected .candidate-info{padding:20px}.score-layout #judge-selected .candidate-info p{font-size:14px}.score-layout #judge-selected .candidate-info h2{font-size:24px}.score-layout #judge-selected .photo-placeholder span{font-size:35px}.score-layout #judge-selected .photo-placeholder small{display:none}.heading-row{flex-wrap:wrap;gap:16px}.connection{font-size:11px}}
@media(max-width:540px){body[data-page=home] .shell{min-height:calc(100svh - 86px)}.header{padding-left:16px;padding-right:16px}.header-leading{gap:7px}.ios-back{font-size:0;gap:0;padding-right:0}.ios-back svg{width:28px;height:28px}.header-leading .brand-logo{width:40px;height:44px}.header-leading .brand-name{font-size:16px}.header-leading .brand-name span{font-size:8px}.header-actions{gap:9px}.header-actions .icon-button{width:36px;height:36px;font-size:21px}.header .menu-trigger{font-size:12px;min-height:40px;padding:9px 13px}.experience-grid{grid-template-columns:1fr}.experience-card{display:grid;grid-template-columns:48px 1fr 20px;gap:10px 16px;padding:25px}.experience-card .tool-icon{grid-row:1/3}.experience-card h3{font-size:22px}.experience-card p{grid-column:2;font-size:16px}.experience-card .card-arrow{grid-column:3;grid-row:1/3;align-self:center;margin:0}.workspace,.workspace.wide{padding:38px 19px 65px}.workspace-heading h1{font-size:46px}.workspace-heading p{font-size:17px}.heading-row .connection{width:100%;margin-bottom:12px}.panel{padding:22px;border-radius:22px}.candidate-grid{grid-template-columns:1fr;gap:23px}.candidate-grid .portrait{max-height:370px}.candidate-grid .candidate-card{max-width:440px;width:100%;margin:auto}.candidate-info{padding:22px}.candidate-info .primary{min-height:46px;font-size:15px}.confirm-candidate .portrait{width:75px}.confirm-candidate h2{font-size:24px}.section-bar{gap:12px}.section-bar h2{font-size:23px}.score-total{gap:10px}.score-total strong{font-size:40px}.candidate-chip{font-size:12px;padding:8px 13px}.candidate-chip img{width:28px;height:33px}.result-row strong{font-size:15px}.result-row>strong{font-size:23px}.tab-bar{border-radius:16px}.tab-bar button{padding:10px 14px;font-size:13px}.mini-candidate{padding:20px;gap:14px}.mini-candidate .secondary{padding:8px 12px;min-height:40px;font-size:13px}.list-row .secondary{max-width:115px;white-space:normal}.two-fields{gap:11px}.privacy-note{font-size:12px}.footer>.soft{display:none}.toast{border-radius:18px;bottom:16px}.tools-dialog{max-width:calc(100vw - 22px)}.tools-dialog-body{padding-left:22px;padding-right:22px}}

/* 2026-09 admin simplification ------------------------------------------------ */
.admin-global-menu{position:sticky;top:0;z-index:25;width:100%;margin:0;padding:9px max(18px,calc((100vw - 1320px)/2));border-radius:0;border-top:1px solid #ffffffcc;border-bottom:1px solid #ddd7d2;background:#f7f7f8e8;backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);box-shadow:0 1px 0 #fff inset;scrollbar-width:none}.admin-global-menu::-webkit-scrollbar{display:none}.admin-global-menu button{flex:0 0 auto;border-radius:999px;padding:9px 15px;color:#6e6e73;font-size:13px;font-weight:600;letter-spacing:-.01em}.admin-global-menu button.active{background:#fff;color:#1d1d1f;box-shadow:0 1px 8px #0000000d,0 0 0 1px #00000008}.admin-body{padding-top:32px}.admin-titlebar{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:24px}.admin-titlebar h1{font-size:clamp(34px,4vw,52px);line-height:1;letter-spacing:-.055em;font-weight:650}.compact-action{min-height:38px;padding:8px 14px;font-size:13px}.candidate-manager{display:grid;gap:24px}.candidate-simple-form{padding:24px}.candidate-entry-grid{display:grid;grid-template-columns:minmax(180px,250px) minmax(0,1fr);gap:28px;align-items:stretch}.candidate-photo-picker{min-height:245px;border:1px dashed #c9c2bc;border-radius:24px;background:linear-gradient(180deg,#fafafa,#f5f5f7);display:flex!important;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:7px;padding:24px;cursor:pointer;transition:border-color .2s,background .2s,transform .2s}.candidate-photo-picker:hover{border-color:#999;background:#fff;transform:translateY(-1px)}.candidate-photo-picker input{position:absolute;inline-size:1px;block-size:1px;opacity:0;pointer-events:none}.candidate-photo-picker strong{font-size:17px;color:#1d1d1f}.candidate-photo-picker small{font-size:12px;color:#86868b;max-width:180px;overflow-wrap:anywhere}.upload-kicker{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#86868b}.candidate-fields{display:flex;flex-direction:column;justify-content:center;gap:16px}.candidate-fields label{margin:0}.candidate-fields textarea{resize:vertical}.optional{font-size:11px;font-weight:500;color:#9a9a9f}.compact-check{margin-top:2px!important}.text-button{border:0;background:transparent;color:#007aff;font-weight:600;font-size:14px;padding:8px 0}.candidate-admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.candidate-admin-card{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:13px;align-items:center;padding:16px 18px;border:1px solid var(--line);border-radius:20px;background:#fff}.candidate-admin-number{width:42px;height:42px;display:grid;place-items:center;border-radius:13px;background:#f5f5f7;font-weight:700;font-variant-numeric:tabular-nums}.candidate-admin-copy{min-width:0}.candidate-admin-copy strong{display:block;font-size:16px}.candidate-admin-copy small{display:block;margin-top:2px;color:#8a8a8f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.candidate-state{display:inline-block;margin-top:7px;padding:3px 8px;border-radius:999px;font-size:10px;font-weight:700;background:#f1f1f3;color:#68686d}.candidate-state.is-on{background:#eef8ef;color:#2f6a38}.candidate-state.is-off{background:#f4f4f5;color:#8a8a8f}.candidate-admin-card .secondary{min-height:38px;padding:8px 13px;font-size:12px}.nice-file,input[type=file]{width:100%;min-height:50px;padding:6px;border:1px solid #d9d4cf;border-radius:14px;background:#fafafa;color:#6e6e73;font-size:13px;cursor:pointer}.nice-file::file-selector-button,input[type=file]::file-selector-button{border:0;border-radius:10px;background:#1d1d1f;color:#fff;padding:10px 14px;margin-right:12px;font:600 13px Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;cursor:pointer}.nice-file:hover,input[type=file]:hover{background:#fff}.nice-file:hover::file-selector-button,input[type=file]:hover::file-selector-button{background:#353538}body[data-page=admin] .workspace{max-width:1320px}.admin-body>.status-message:empty{display:none}
@media(max-width:900px){.candidate-entry-grid{grid-template-columns:1fr}.candidate-photo-picker{min-height:180px}.candidate-admin-grid{grid-template-columns:1fr}.admin-global-menu{padding-left:16px;padding-right:16px}.admin-body{padding-top:24px}}
@media(max-width:540px){.admin-global-menu{top:0;padding-top:7px;padding-bottom:7px}.admin-global-menu button{padding:9px 13px;font-size:12px}.admin-titlebar{margin-bottom:18px}.admin-titlebar h1{font-size:36px}.candidate-simple-form{padding:18px}.candidate-entry-grid{gap:18px}.candidate-photo-picker{min-height:150px;border-radius:18px}.candidate-fields .two-fields{grid-template-columns:76px minmax(0,1fr)}.candidate-admin-card{grid-template-columns:38px minmax(0,1fr) auto;padding:13px}.candidate-admin-number{width:38px;height:38px;border-radius:12px}.candidate-admin-copy small{max-width:180px}.nice-file,input[type=file]{font-size:12px}.nice-file::file-selector-button,input[type=file]::file-selector-button{padding:9px 11px;margin-right:8px}}
.candidate-photo-picker input[type=file]{position:absolute!important;width:1px!important;height:1px!important;min-height:1px!important;margin:0!important;padding:0!important;border:0!important;opacity:0!important;pointer-events:none!important;overflow:hidden}

/* 2026-09-13 interaction + responsive polish -------------------------------- */
.header{position:relative}
.viewer-hint{display:none!important}

/* Admin global navigation: sits below the normal header, then becomes the only
   sticky chrome after the header scrolls away. */
.admin-global-menu{position:sticky;top:0;z-index:60;display:flex;align-items:center;justify-content:center;gap:clamp(18px,3vw,42px);overflow-x:auto;width:100%;margin:0;padding:0 max(18px,calc((100vw - 1320px)/2));min-height:52px;background:rgba(255,255,255,.84);border:0;border-bottom:1px solid rgba(0,0,0,.09);box-shadow:none;backdrop-filter:saturate(180%) blur(22px);-webkit-backdrop-filter:saturate(180%) blur(22px)}
.admin-global-menu button{position:relative;flex:0 0 auto;min-height:52px;padding:2px 0 0;border:0;border-radius:0;background:transparent!important;box-shadow:none!important;color:#6e6e73;font-size:13px;font-weight:600;letter-spacing:-.01em;white-space:nowrap;transform:none!important}
.admin-global-menu button:hover{color:#1d1d1f}
.admin-global-menu button.active{color:#1d1d1f;background:transparent;box-shadow:none}
.admin-global-menu button.active:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;border-radius:2px;background:#1d1d1f;animation:menu-underline .22s ease both}
@keyframes menu-underline{from{transform:scaleX(.25);opacity:.25}to{transform:scaleX(1);opacity:1}}

/* Status pills become quiet underlined labels rather than capsules. */
.pill{display:inline-flex;align-items:center;padding:0 0 4px;border-radius:0;background:transparent!important;color:#6e6e73;border-bottom:1.5px solid currentColor;font-size:12px;font-weight:600;letter-spacing:.01em}
.candidate-state{display:inline-block;margin-top:7px;padding:0 0 2px;border-radius:0;background:transparent!important;border-bottom:1px solid currentColor;font-size:10px;font-weight:700}
.candidate-state.is-on{color:#356a3d}.candidate-state.is-off{color:#8a8a8f}
.underline-action{border-bottom:1px solid currentColor;border-radius:0!important;padding-left:0!important;padding-right:0!important}

.field-note{margin:-7px 0 3px;padding-left:30px;color:#8a8a8f;font-size:12px;line-height:1.5}

/* Candidate cards use a fixed 3:4 visual frame. Images are contained rather
   than cropped, so the complete uploaded portrait stays visible. */
.candidate-grid{align-items:stretch;grid-auto-rows:1fr}
.candidate-card{height:100%;display:flex;flex-direction:column;transition:border-color .25s ease,box-shadow .25s ease,transform .25s ease}
.portrait{aspect-ratio:3/4;background:#f5f5f7;display:grid;place-items:center}
.portrait>img{width:100%;height:100%;object-fit:contain;object-position:center;display:block;background:#f5f5f7}
.candidate-info{display:flex;flex:1;flex-direction:column;min-height:225px}
.candidate-info>p{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;min-height:4.95em}
.candidate-info .candidate-card-footer{margin-top:auto;padding-top:18px}
.candidate-actions{display:flex;align-items:center;gap:10px}
.share-button{width:44px;height:44px;display:grid;place-items:center;border:1px solid #d7d7dc;border-radius:50%;background:#fff;color:#1d1d1f;cursor:pointer;transition:background .2s ease,transform .2s ease,border-color .2s ease;flex:none}
.share-button:hover{background:#f5f5f7;border-color:#bdbdc2}.share-button:active{transform:scale(.94)}
.share-button svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.candidate-card.shared-target{border-color:#007aff;box-shadow:0 0 0 4px rgba(0,122,255,.09);animation:shared-card 1.6s ease}
@keyframes shared-card{0%,100%{transform:translateY(0)}30%{transform:translateY(-4px)}}

/* Lightweight post-vote acknowledgement, intentionally no green box. */
.vote-success{display:flex;align-items:center;justify-content:center;gap:14px;margin:4px auto 30px;padding:10px 0;color:#1d1d1f;text-align:left}
.vote-success[hidden]{display:none}
.vote-success>span:last-child{display:flex;flex-direction:column;gap:2px}
.vote-success strong{font-size:18px;letter-spacing:-.02em}.vote-success small{font-size:12px;color:#86868b}
.vote-check{width:46px;height:46px;display:block;flex:none}
.vote-check svg{width:100%;height:100%;fill:none;stroke:#007aff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}
.vote-check circle{stroke-dasharray:145;stroke-dashoffset:145;animation:vote-circle .55s cubic-bezier(.65,0,.45,1) forwards}
.vote-check path{stroke-dasharray:36;stroke-dashoffset:36;animation:vote-check .35s .42s cubic-bezier(.65,0,.45,1) forwards}
@keyframes vote-circle{to{stroke-dashoffset:0}}@keyframes vote-check{to{stroke-dashoffset:0}}


/* File controls keep native accessibility while looking intentional. */
.upload-field{display:grid!important;gap:7px}.upload-field>span{font-size:13px;font-weight:600;color:#3a3a3c}
.nice-file,input[type=file]{border:1px solid #d2d2d7;border-radius:15px;background:#f7f7f8;min-height:52px;padding:6px;color:#6e6e73}
.nice-file::file-selector-button,input[type=file]::file-selector-button{min-height:38px;border:0;border-radius:10px;background:#1d1d1f;color:#fff;padding:8px 14px;margin-right:12px;font:600 13px Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.nice-file:focus-visible,input[type=file]:focus-visible{outline:3px solid rgba(0,122,255,.24);outline-offset:2px}

/* Give the hero renderer a little more visual breathing room around the full plinth. */
.viewer-wrap{overflow:visible;padding-bottom:10px}.viewer{inset:-6px -1% -2px -3%}

@media(max-width:900px){
 .admin-global-menu{justify-content:flex-start;gap:24px;padding:0 18px}
 .candidate-grid{grid-template-columns:repeat(2,minmax(0,1fr))}

}
@media(max-width:600px){
 .admin-global-menu{min-height:48px;gap:22px;padding:0 16px}.admin-global-menu button{min-height:48px;font-size:12px}
 .candidate-grid{grid-template-columns:1fr;grid-auto-rows:auto}
 .candidate-info{min-height:0}.candidate-info>p{min-height:0}
 .candidate-card-footer{align-items:center}.candidate-actions{width:100%;justify-content:flex-end}.candidate-actions .primary{flex:1}
 .vote-success{justify-content:flex-start;margin-bottom:22px}
 .viewer{inset:0 -2% 2px -2%}
}
@media(prefers-reduced-motion:reduce){.vote-check circle,.vote-check path,.candidate-card.shared-target{animation:none;stroke-dashoffset:0}}

/* 2026-09-13 v6 judge/admin interaction refinements -------------------------------- */
body[data-page=admin] #admin-login[hidden]{display:none!important}
body[data-page=admin] #admin-workspace:not([hidden]){display:block}
body[data-page=admin] .admin-global-menu{position:sticky!important;top:0!important;z-index:100!important;margin:0!important;width:100%!important;min-height:52px!important;border-top:0!important;border-bottom:1px solid rgba(0,0,0,.09)!important;background:rgba(255,255,255,.9)!important;backdrop-filter:saturate(180%) blur(22px)!important;-webkit-backdrop-filter:saturate(180%) blur(22px)!important}
body[data-page=admin] .admin-global-menu button{border-radius:0!important;background:transparent!important;box-shadow:none!important;padding-left:0!important;padding-right:0!important}
body[data-page=admin] .admin-global-menu button.active{color:#1d1d1f!important}
.judging-auto-note{padding-left:0;margin:0;color:#86868b}

/* Powered by Whisser footer */
.powered-by{display:inline-flex;align-items:center;gap:8px;text-decoration:none;color:#6e6e73;font-size:12px;font-weight:500;white-space:nowrap}
.powered-by img{display:block;width:auto;height:19px;max-width:110px;object-fit:contain}
.powered-by:hover{opacity:.68}

/* v9 interaction polish */
.app-progress{position:fixed;z-index:4000;left:0;right:0;top:0;height:3px;pointer-events:none;opacity:0;overflow:hidden;transition:opacity .18s ease}.app-progress i{display:block;width:36%;height:100%;background:linear-gradient(90deg,#007aff,#6e5cff,#d46a1c);transform:translateX(-110%);border-radius:0 4px 4px 0}.app-progress.active{opacity:1}.app-progress.active i{animation:app-progress-run 1.05s cubic-bezier(.4,0,.2,1) infinite}@keyframes app-progress-run{0%{transform:translateX(-110%)}65%{transform:translateX(210%)}100%{transform:translateX(310%)}}
button,.primary,.secondary,.text-button,.menu-link,.candidate-card,.candidate-admin-card,.panel{transition:transform .24s cubic-bezier(.2,.8,.2,1),box-shadow .24s ease,background-color .24s ease,border-color .24s ease,opacity .2s ease}button:active,.primary:active,.secondary:active{transform:scale(.975)}button.is-busy{position:relative;color:transparent!important;pointer-events:none}button.is-busy>*{visibility:hidden}button.is-busy:after{content:'';position:absolute;left:50%;top:50%;width:16px;height:16px;margin:-9px 0 0 -9px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;color:#fff;animation:button-spin .65s linear infinite}.secondary.is-busy:after,.text-button.is-busy:after,.danger-text.is-busy:after{color:#1d1d1f}@keyframes button-spin{to{transform:rotate(360deg)}}
[data-panel]:not([hidden]),.candidate-card,.candidate-admin-card,.result-row,.list-row{animation:ui-rise .32s cubic-bezier(.2,.8,.2,1) both}@keyframes ui-rise{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:none}}
.skeleton{position:relative;overflow:hidden;background:#f2f2f4;border-radius:18px;min-height:92px}.skeleton:after{content:'';position:absolute;inset:0;background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.75) 45%,transparent 70%);transform:translateX(-100%);animation:skeleton-sweep 1.15s ease-in-out infinite}.skeleton i,.skeleton b,.skeleton span{display:block;background:#e4e4e8;border-radius:8px}.skeleton i{height:44px;width:44px;margin:15px}.skeleton b{height:12px;width:52%;margin:-54px 15px 0 72px}.skeleton span{height:9px;width:35%;margin:12px 15px 15px 72px}.skeleton-card{min-height:410px}.skeleton-card i{width:100%;height:300px;margin:0;border-radius:0}.skeleton-card b{width:48%;height:18px;margin:24px}.skeleton-card span{width:65%;margin:12px 24px}.skeleton-chip{display:inline-block;width:180px;min-height:56px;border-radius:17px}.skeleton-row{min-height:70px}@keyframes skeleton-sweep{to{transform:translateX(100%)}}
.candidate-admin-actions{display:flex;align-items:center;gap:10px}.danger-text{border:0;background:transparent;padding:8px 4px;color:#d70015;font:600 12px Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;text-decoration:underline;text-decoration-color:transparent;text-underline-offset:4px;cursor:pointer}.danger-text:hover{text-decoration-color:currentColor}.candidate-admin-card:hover{border-color:#d4d4d8;box-shadow:0 10px 30px rgba(0,0,0,.045)}
.powered-by span{display:inline!important}.powered-by strong{font-weight:700;color:#1d1d1f}.powered-by img{transition:transform .25s ease}.powered-by:hover img{transform:translateX(2px)}
@media(max-width:720px){.powered-by span{display:inline!important}.candidate-admin-actions{gap:6px}.candidate-admin-card{grid-template-columns:38px minmax(0,1fr) auto}}
@media(prefers-reduced-motion:reduce){.app-progress.active i,.skeleton:after{animation:none}.candidate-card,.candidate-admin-card,.result-row,.list-row,[data-panel]:not([hidden]){animation:none}button,.primary,.secondary,.text-button,.menu-link,.candidate-card,.candidate-admin-card,.panel{transition:none}}

/* v10 — destructive controls */
.row-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.danger-zone{border-color:rgba(215,0,21,.18)!important;background:linear-gradient(180deg,#fff,#fffafa)}
.danger-action{appearance:none;border:1px solid rgba(215,0,21,.28);background:#fff;color:#d70015;padding:12px 16px;border-radius:12px;font:700 13px Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;cursor:pointer;transition:background-color .2s,border-color .2s,transform .2s}
.danger-action:hover{background:#fff5f5;border-color:rgba(215,0,21,.42)}
.danger-action.full{width:100%}



/* v11 — simplified 1–10 judging + moderator-controlled live stage */
.judge-stage-note{display:flex;align-items:center;gap:10px;min-height:42px;margin:0 0 16px;color:#6e6e73;font-size:13px;font-weight:600}
.stage-sync-dot{width:9px;height:9px;border-radius:50%;background:#34c759;box-shadow:0 0 0 0 rgba(52,199,89,.35);animation:stage-pulse 1.8s ease-out infinite}.stage-sync-dot.waiting{background:#ff9f0a;box-shadow:none;animation:none}@keyframes stage-pulse{0%{box-shadow:0 0 0 0 rgba(52,199,89,.3)}70%{box-shadow:0 0 0 9px rgba(52,199,89,0)}100%{box-shadow:0 0 0 0 rgba(52,199,89,0)}}
.score-layout-simple{grid-template-columns:minmax(0,1fr) minmax(330px,430px);align-items:start}.judge-score-panel{position:sticky;top:90px}.judge-current-card{max-width:520px;margin-inline:auto}.single-score-control{display:grid;gap:14px}.single-score-control>label{font-size:12px;color:#86868b;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.score-number-wrap{display:flex;align-items:baseline;justify-content:center;gap:10px;padding:14px 0}.score-number-wrap input{width:128px!important;min-height:82px!important;margin:0!important;padding:8px 12px!important;border:0!important;border-bottom:2px solid #d2d2d7!important;border-radius:0!important;background:transparent!important;text-align:center;font-size:58px!important;font-weight:700!important;letter-spacing:-.06em;color:#1d1d1f}.score-number-wrap input:focus{border-bottom-color:#007aff!important;box-shadow:none!important}.score-number-wrap span{font-size:20px;color:#8e8e93}.score-quick{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.score-quick button{min-height:44px;border:1px solid #e2e2e6;border-radius:11px;background:#fff;color:#3a3a3c;font-weight:700;cursor:pointer;transition:transform .18s var(--ease),background-color .18s,color .18s,border-color .18s}.score-quick button:hover{background:#f5f5f7}.score-quick button:active{transform:scale(.96)}.score-quick button.active{background:#1d1d1f;border-color:#1d1d1f;color:#fff}.judge-score-panel .score-total{border-top:1px solid #ececef;margin-top:18px;padding-top:22px}.judge-score-panel .score-total strong{color:#1d1d1f}
.underlined-status{display:inline-block;font-size:12px;font-weight:700;color:#6e6e73;padding-bottom:3px;border-bottom:1px solid currentColor}
.live-workspace{max-width:1500px}.live-heading{margin-bottom:26px}.live-stage{display:grid;grid-template-columns:minmax(300px,.8fr) minmax(0,1.2fr);gap:34px;min-height:560px;padding:28px!important;overflow:hidden}.live-waiting{min-height:360px;grid-column:1/-1;display:grid;place-items:center;align-content:center;text-align:center;gap:8px;color:#6e6e73}.live-waiting h2{font-size:32px;letter-spacing:-.04em;color:#1d1d1f}.live-waiting p{margin:0}.live-pulse{width:14px;height:14px;border-radius:50%;background:#007aff;box-shadow:0 0 0 0 rgba(0,122,255,.3);animation:live-pulse 1.8s ease-out infinite}@keyframes live-pulse{0%{box-shadow:0 0 0 0 rgba(0,122,255,.3)}70%{box-shadow:0 0 0 18px rgba(0,122,255,0)}100%{box-shadow:0 0 0 0 rgba(0,122,255,0)}}
.live-candidate-visual{display:flex;flex-direction:column;gap:18px;min-width:0}.live-candidate-visual .portrait{width:100%;max-height:470px;aspect-ratio:3/4;border-radius:22px;background:#f4f4f6;overflow:hidden}.live-candidate-visual .portrait img{width:100%;height:100%;object-fit:contain;background:#f7f7f8}.live-candidate-name span{font-size:12px;font-weight:700;color:#8e8e93;text-transform:uppercase;letter-spacing:.06em}.live-candidate-name h2{margin:6px 0 0;font-size:clamp(34px,4vw,60px);line-height:1;letter-spacing:-.055em}.live-scoreboard{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-content:start}.live-average,.live-weighted{padding:22px;border:1px solid #ececef;border-radius:20px;background:#fff}.live-average span,.live-weighted span{display:block;font-size:12px;color:#8e8e93;font-weight:700}.live-average strong,.live-weighted strong{display:inline-block;margin-top:8px;font-size:clamp(46px,6vw,78px);line-height:1;letter-spacing:-.07em}.live-average small,.live-weighted small{color:#8e8e93}.live-progress{grid-column:1/-1;font-size:13px;color:#6e6e73}.anonymous-scores{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:9px}.anonymous-score{min-height:92px;padding:14px;border:1px solid #e6e6e9;border-radius:16px;background:#fafafa;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto auto;gap:3px 8px;align-items:end}.anonymous-score span{font-size:12px;color:#6e6e73;font-weight:700;align-self:start}.anonymous-score strong{font-size:31px;letter-spacing:-.04em}.anonymous-score small{font-size:11px;color:#8e8e93}.anonymous-score.pending{opacity:.65}.live-support{margin-top:24px}.live-score-hidden{grid-column:1/-1;padding:24px;border:1px dashed #d2d2d7;border-radius:16px;color:#6e6e73}.live-score-hidden span{font-weight:700;color:#1d1d1f}
.moderator-workspace{max-width:780px}.moderator-heading{margin-bottom:22px}.moderator-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}.moderator-topbar p{margin:6px 0 0}.moderator-current{min-height:420px;padding:22px!important}.moderator-card{display:grid;grid-template-columns:minmax(180px,280px) minmax(0,1fr);gap:24px;align-items:center}.moderator-card .portrait{width:100%;aspect-ratio:3/4;border-radius:20px;overflow:hidden}.moderator-card .portrait img{width:100%;height:100%;object-fit:contain;background:#f7f7f8}.moderator-card h2{margin:6px 0 10px;font-size:38px;letter-spacing:-.05em}.moderator-average{margin-top:22px;padding-top:16px;border-top:1px solid #ececef}.moderator-average span{display:block;font-size:12px;color:#8e8e93}.moderator-average strong{display:block;margin-top:4px;font-size:28px}.moderator-controls{position:sticky;bottom:14px;z-index:20;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;margin:18px 0 0;padding:10px;border:1px solid rgba(0,0,0,.08);border-radius:22px;background:rgba(255,255,255,.9);box-shadow:0 14px 45px rgba(0,0,0,.12);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px)}.moderator-nav{min-height:58px;display:flex;align-items:center;justify-content:center;gap:9px;border:0;border-radius:15px;background:#1d1d1f;color:#fff;font-weight:700;cursor:pointer}.moderator-nav span{font-size:30px;line-height:1}.moderator-nav small{font-size:13px}.moderator-nav:disabled{opacity:.28;cursor:not-allowed}.moderator-position{min-width:66px;text-align:center;font-size:13px;font-weight:700;color:#6e6e73}
@media(max-width:900px){.score-layout-simple{grid-template-columns:1fr}.judge-score-panel{position:relative;top:auto}.live-stage{grid-template-columns:1fr;min-height:0}.live-candidate-visual{display:grid;grid-template-columns:170px minmax(0,1fr);align-items:end}.live-candidate-visual .portrait{max-height:none}.live-scoreboard{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.score-quick{grid-template-columns:repeat(5,1fr);gap:5px}.score-quick button{min-height:40px;border-radius:9px}.score-number-wrap input{font-size:52px!important}.live-stage{padding:16px!important;gap:20px}.live-candidate-visual{grid-template-columns:120px minmax(0,1fr);gap:14px}.live-candidate-name h2{font-size:34px}.live-scoreboard{grid-template-columns:1fr 1fr;gap:9px}.live-average,.live-weighted{padding:14px;border-radius:15px}.live-average strong,.live-weighted strong{font-size:42px}.anonymous-scores{grid-template-columns:repeat(2,1fr)}.anonymous-score{min-height:78px;padding:11px}.moderator-current{padding:15px!important;min-height:330px}.moderator-card{grid-template-columns:115px minmax(0,1fr);gap:15px;align-items:start}.moderator-card h2{font-size:30px}.moderator-card p:not(.soft){display:none}.moderator-controls{bottom:max(10px,env(safe-area-inset-bottom));border-radius:19px;padding:8px}.moderator-nav{min-height:54px}.moderator-nav small{font-size:12px}}
@media(max-width:420px){.live-scoreboard{grid-template-columns:1fr}.live-progress,.anonymous-scores{grid-column:1}.anonymous-scores{grid-template-columns:repeat(2,1fr)}.live-candidate-visual{grid-template-columns:96px minmax(0,1fr)}.moderator-card{grid-template-columns:100px minmax(0,1fr)}.moderator-nav small{display:none}.moderator-position{min-width:52px}}
@media(prefers-reduced-motion:reduce){.stage-sync-dot,.live-pulse{animation:none}.score-quick button{transition:none}}

/* v12 — decimal judging, unified live presentation, unified scoring accounts */
.score-number-wrap input{width:158px!important;min-height:94px!important;font-size:72px!important}
.live-workspace{max-width:1540px;padding-top:34px}.live-stage{display:block;min-height:620px;padding:24px!important;overflow:hidden}.live-presentation-head{display:flex;justify-content:flex-end;align-items:center;margin-bottom:18px}.live-presentation-head>div{display:flex;align-items:center;gap:16px}.live-presentation-head p{margin:0;color:#8e8e93;font-size:14px;font-weight:600}.live-presentation-grid{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(0,1.18fr);gap:38px;align-items:center}.live-scoreboard{display:grid;grid-template-columns:1fr;gap:22px;align-content:center}.live-average{padding:28px 30px;border:1px solid #ececef;border-radius:24px;background:#fff}.live-average span{display:block;font-size:14px;color:#8e8e93;font-weight:700;letter-spacing:.01em}.live-average strong{display:inline-block;margin-top:7px;font-size:clamp(76px,9vw,132px);line-height:.9;letter-spacing:-.075em}.live-average small{font-size:22px;color:#8e8e93}.anonymous-scores{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}.anonymous-score{min-height:126px;padding:18px 18px 15px;border:1px solid #e6e6e9;border-radius:18px;background:#fafafa;display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr;gap:6px 10px;align-items:end}.anonymous-score span{font-size:13px;color:#6e6e73;font-weight:700;align-self:start}.anonymous-score strong{font-size:clamp(44px,5vw,68px);line-height:.95;letter-spacing:-.06em}.anonymous-score small{font-size:12px;color:#8e8e93;align-self:end;padding-bottom:4px}.anonymous-score.pending{opacity:.55}.live-candidate-visual{gap:16px}.live-candidate-visual .portrait{max-height:535px}.live-candidate-name h2{font-size:clamp(40px,5vw,70px)}
.moderator-workspace{padding-top:26px}.moderator-topbar{margin-top:0}.moderator-current{min-height:390px}
.staff-panel .section-bar{align-items:flex-start}.staff-panel .section-bar>div{min-width:0}.staff-panel .field-note{margin:5px 0 0}.staff-dialog{width:min(520px,calc(100vw - 24px))}.staff-dialog .tools-dialog-body{padding-top:0}.staff-table{width:100%;border-collapse:collapse}.staff-table th,.staff-table td{padding:14px 10px;border-bottom:1px solid #ececef;text-align:left;vertical-align:middle}.staff-table th{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:#8e8e93}.staff-table td:last-child{text-align:right}.staff-table .row-actions{justify-content:flex-end;flex-wrap:nowrap}.staff-table .underlined-status{font-size:12px}.staff-table strong{font-size:15px}
@media(max-width:900px){.live-presentation-grid{grid-template-columns:1fr;gap:22px}.live-candidate-visual{display:grid;grid-template-columns:190px minmax(0,1fr);align-items:end}.live-candidate-visual .portrait{max-height:none}.live-presentation-head{margin-bottom:12px}.live-stage{min-height:0}.anonymous-scores{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.score-number-wrap input{width:140px!important;min-height:84px!important;font-size:62px!important}.live-workspace{padding-top:20px}.live-stage{padding:15px!important;border-radius:20px}.live-presentation-head{justify-content:flex-start}.live-presentation-head>div{width:100%;justify-content:space-between;gap:10px}.live-presentation-head p{font-size:12px}.live-candidate-visual{grid-template-columns:118px minmax(0,1fr);gap:14px}.live-candidate-name h2{font-size:34px}.live-scoreboard{gap:14px}.live-average{padding:20px;border-radius:18px}.live-average strong{font-size:72px}.live-average small{font-size:17px}.anonymous-scores{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.anonymous-score{min-height:102px;padding:13px;border-radius:14px}.anonymous-score strong{font-size:45px}.staff-panel .section-bar{align-items:center}.staff-panel .section-bar .field-note{display:none}.staff-table thead{display:none}.staff-table,.staff-table tbody,.staff-table tr,.staff-table td{display:block;width:100%}.staff-table tr{position:relative;padding:13px 0;border-bottom:1px solid #ececef}.staff-table td{padding:2px 0;border:0}.staff-table td:nth-child(2),.staff-table td:nth-child(3){display:inline-block;width:auto;margin-right:10px}.staff-table td:last-child{position:absolute;right:0;top:10px;width:auto}.staff-table td:first-child{padding-right:130px}.staff-dialog{border-radius:22px}}
@media(max-width:420px){.live-candidate-visual{grid-template-columns:92px minmax(0,1fr)}.live-candidate-name h2{font-size:29px}.live-average strong{font-size:62px}.anonymous-score strong{font-size:40px}.anonymous-scores{grid-template-columns:repeat(2,minmax(0,1fr))}.staff-table td:last-child{position:static;margin-top:8px;text-align:left}.staff-table td:first-child{padding-right:0}.staff-table .row-actions{justify-content:flex-start}}
.staff-dialog .dialog-top h2{font-size:22px!important;letter-spacing:-.03em;margin:0}


/* v13 — direct heart voting + presentation alignment */
.fan-workspace{padding-top:34px}.fan-status-bar{margin-bottom:20px}.fan-vote-portrait{cursor:pointer;position:relative;transition:transform .28s var(--ease),filter .28s ease}.fan-vote-portrait:hover{transform:translateY(-2px)}.fan-vote-portrait:active{transform:scale(.992)}
.vote-heart{width:46px;height:46px;display:grid;place-items:center;flex:none;border:1px solid #dedee3;border-radius:50%;background:#fff;color:#8e8e93;cursor:pointer;transition:transform .22s var(--ease),color .22s ease,border-color .22s ease,background .22s ease,box-shadow .22s ease}.vote-heart svg{width:23px;height:23px;fill:transparent;stroke:currentColor;stroke-width:1.8;transition:fill .22s ease,transform .22s var(--ease)}.vote-heart:hover:not(:disabled){color:#ff2d55;border-color:#ffb5c7;box-shadow:0 7px 22px rgba(255,45,85,.12);transform:translateY(-1px)}.vote-heart:active:not(:disabled){transform:scale(.92)}.vote-heart.voted{color:#ff2d55;border-color:rgba(255,45,85,.28);background:rgba(255,45,85,.055)}.vote-heart.voted svg{fill:currentColor;transform:scale(1.06)}.vote-heart:disabled{opacity:.38}.vote-heart.voted:disabled{opacity:1}.candidate-card.is-voted{border-color:rgba(255,45,85,.26);box-shadow:0 12px 32px rgba(255,45,85,.08)}.candidate-card.is-voting{pointer-events:none;opacity:.74}.candidate-card.is-voting .vote-heart{animation:heart-pulse .7s ease-in-out infinite alternate}@keyframes heart-pulse{to{transform:scale(1.12);color:#ff2d55}}
.vote-confetti-bit{position:fixed;z-index:5000;width:7px;height:11px;border-radius:2px;background:var(--c);pointer-events:none;transform:translate(-50%,-50%);animation:vote-confetti .82s cubic-bezier(.16,.72,.28,1) var(--delay) forwards}@keyframes vote-confetti{0%{opacity:1;transform:translate(-50%,-50%) translate(0,0) rotate(0)}100%{opacity:0;transform:translate(-50%,-50%) translate(var(--dx),var(--dy)) rotate(var(--rot))}}
.judge-workspace-compact{padding-top:30px}
.live-hero-grid{display:grid;grid-template-columns:minmax(320px,.88fr) minmax(300px,1.12fr);gap:30px;align-items:stretch}.live-candidate-visual{align-self:stretch}.live-average.ignite-live-average{min-height:100%;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:34px 38px;border:1px solid #ececef;border-radius:26px;background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(250,250,252,.96));overflow:hidden;position:relative}.live-average.ignite-live-average:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 70% 20%,rgba(243,170,13,.10),transparent 34%),radial-gradient(circle at 85% 70%,rgba(118,48,148,.08),transparent 36%);pointer-events:none}.live-average.ignite-live-average>span{position:relative;font-size:14px;color:#6e6e73;font-weight:700}.live-average.ignite-live-average>div{position:relative;display:flex;align-items:baseline;gap:12px;margin-top:12px}.live-average.ignite-live-average strong{margin:0;font-size:clamp(88px,11vw,158px);line-height:.82;letter-spacing:-.085em;background:linear-gradient(100deg,#e9bf00,#f58921,#e36129,#b91538,#763094,#1866aa,#277a12,#e9bf00);background-size:240% 100%;background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:ignite-score-flow 5.5s linear infinite;text-shadow:0 1px 1px rgba(41,29,46,.08);-webkit-text-stroke:.25px rgba(41,29,46,.10);filter:saturate(1.08) contrast(1.06)}.live-average.ignite-live-average small{font-size:24px;color:#6e6e73;font-weight:650}.live-judge-scores{margin-top:20px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}@keyframes ignite-score-flow{to{background-position:240% 0}}
@media(max-width:900px){.live-hero-grid{grid-template-columns:minmax(180px,.8fr) minmax(0,1.2fr);gap:18px}.live-candidate-visual{display:flex;flex-direction:column;align-items:stretch}.live-average.ignite-live-average{padding:24px}.live-average.ignite-live-average strong{font-size:clamp(72px,13vw,118px)}}
@media(max-width:650px){.fan-workspace{padding-top:20px}.candidate-actions{width:auto}.candidate-actions .primary{flex:0}.vote-heart{width:44px;height:44px}.live-hero-grid{grid-template-columns:118px minmax(0,1fr);gap:14px;align-items:stretch}.live-candidate-visual{display:flex;flex-direction:column;gap:10px}.live-candidate-visual .portrait{width:118px;max-height:none}.live-candidate-name h2{font-size:28px}.live-average.ignite-live-average{padding:16px;border-radius:18px}.live-average.ignite-live-average>span{font-size:11px}.live-average.ignite-live-average>div{gap:6px;margin-top:7px}.live-average.ignite-live-average strong{font-size:clamp(54px,16vw,82px)}.live-average.ignite-live-average small{font-size:15px}.live-judge-scores{margin-top:12px;grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:420px){.live-hero-grid{grid-template-columns:92px minmax(0,1fr)}.live-candidate-visual .portrait{width:92px}.live-candidate-name h2{font-size:24px}.live-average.ignite-live-average{padding:13px}.live-average.ignite-live-average strong{font-size:54px}}
@media(prefers-reduced-motion:reduce){.fan-vote-portrait,.vote-heart,.vote-heart svg{transition:none}.candidate-card.is-voting .vote-heart,.vote-confetti-bit,.live-average.ignite-live-average strong{animation:none}}

/* v14 — changeable fan vote, live portrait stage, inline account validation */
.vote-heart.voted{color:#ff2d55!important;border-color:#ff2d55!important;background:#fff0f4!important;box-shadow:0 8px 24px rgba(255,45,85,.18)}
.vote-heart.voted svg{fill:#ff2d55!important;stroke:#ff2d55!important;transform:scale(1.1)}
.candidate-card.is-voted{border-color:rgba(255,45,85,.42)!important;box-shadow:0 15px 38px rgba(255,45,85,.12)!important}
.candidate-card.vote-land{animation:vote-card-land .72s var(--ease)}
.candidate-card.vote-release{animation:vote-card-release .58s var(--ease)}
@keyframes vote-card-land{0%{transform:scale(.985)}42%{transform:scale(1.018);box-shadow:0 20px 48px rgba(255,45,85,.18)}100%{transform:scale(1)}}
@keyframes vote-card-release{0%{transform:scale(1)}45%{transform:scale(.985);opacity:.82}100%{transform:scale(1);opacity:1}}
.vote-pop-feedback{position:fixed;z-index:3000;pointer-events:none;display:flex;align-items:center;gap:8px;transform:translate(-50%,-10%) scale(.72);opacity:0;padding:10px 14px;border-radius:999px;background:rgba(29,29,31,.92);color:#fff;box-shadow:0 12px 36px rgba(0,0,0,.18);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);transition:opacity .18s ease,transform .55s cubic-bezier(.22,.8,.25,1)}
.vote-pop-feedback.show{opacity:1;transform:translate(-50%,-115%) scale(1)}
.vote-pop-feedback span{width:20px;height:20px;color:#ff2d55;display:grid;place-items:center}
.vote-pop-feedback span svg{width:20px;height:20px;fill:#ff2d55;stroke:#ff2d55;stroke-width:1.8}
.vote-pop-feedback strong{font-size:12px;white-space:nowrap;letter-spacing:.01em}

.live-stage-grid{display:grid;grid-template-columns:minmax(400px,.9fr) minmax(0,1.1fr);gap:clamp(28px,4vw,64px);align-items:start}
.live-candidate-column{min-width:0;display:flex;flex-direction:column;align-items:flex-start;gap:18px}
.live-candidate-column .live-portrait{width:min(100%,560px);height:min(72vh,760px);max-height:none!important;aspect-ratio:3/4;border-radius:26px;overflow:hidden;background:#f4f4f6;box-shadow:0 18px 48px rgba(26,18,31,.08)}
.live-candidate-column .live-portrait>img{width:100%;height:100%;object-fit:contain!important;object-position:center!important;background:#f7f7f8}
.live-candidate-column .live-candidate-name{width:min(100%,560px)}
.live-candidate-column .live-candidate-name h2{font-size:clamp(42px,4.8vw,72px);line-height:.98;margin-top:7px}
.live-metrics-column{min-width:0;display:flex;flex-direction:column;gap:20px;align-self:stretch}
.live-metrics-column .ignite-live-average{min-height:300px;height:auto;padding:34px 38px}
.live-average-meta{display:flex!important;gap:18px;flex-wrap:wrap;margin-top:24px;padding-top:18px;border-top:1px solid rgba(29,29,31,.08);width:100%}
.live-average-meta span{font-size:13px!important;color:#6e6e73!important;font-weight:650!important}
.live-judge-block{min-width:0}
.live-judge-label{font-size:12px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#8e8e93;margin:0 0 10px 2px}
.live-metrics-column .live-judge-scores{margin-top:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:11px}
.live-metrics-column .anonymous-score{min-height:118px}

.validated-field{position:relative}
.validated-field input{transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}
.inline-input-feedback{display:block;margin-top:6px;font-size:11px;line-height:1.35;color:#8e8e93;font-weight:600;transition:color .18s ease,transform .18s ease}
.validated-field.is-invalid input{border-color:#ff3b30!important;background:#fff8f7!important;box-shadow:0 0 0 4px rgba(255,59,48,.10)!important}
.validated-field.is-invalid .inline-input-feedback{color:#d92d20;transform:translateX(2px)}
.validated-field.shake{animation:field-shake .34s ease}
@keyframes field-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}50%{transform:translateX(4px)}75%{transform:translateX(-2px)}}

@media(max-width:980px){
 .live-stage-grid{grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);gap:22px}
 .live-candidate-column .live-portrait{height:auto;width:100%;max-width:430px}
 .live-metrics-column .ignite-live-average{min-height:250px;padding:26px}
 .live-metrics-column .live-judge-scores{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:720px){
 .live-stage-grid{grid-template-columns:1fr;gap:18px}
 .live-candidate-column{display:grid;grid-template-columns:132px minmax(0,1fr);align-items:end;gap:14px}
 .live-candidate-column .live-portrait{width:132px;height:auto;border-radius:18px}
 .live-candidate-column .live-candidate-name{width:auto;padding-bottom:4px}
 .live-candidate-column .live-candidate-name h2{font-size:34px}
 .live-metrics-column{gap:14px}
 .live-metrics-column .ignite-live-average{min-height:0;padding:19px;border-radius:18px}
 .live-average-meta{margin-top:14px;padding-top:12px;gap:10px}
 .live-metrics-column .live-judge-scores{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
 .staff-table thead{display:none}.staff-table,.staff-table tbody,.staff-table tr,.staff-table td{display:block;width:100%}.staff-table tr{position:relative;padding:13px 0;border-bottom:1px solid #ececef}.staff-table td{padding:2px 0;border:0}.staff-table td:first-child,.staff-table td:nth-child(2){display:inline-block;width:auto;margin-right:12px}.staff-table td:last-child{position:static;margin-top:8px}.staff-table .row-actions{justify-content:flex-start}
}
@media(max-width:440px){
 .live-candidate-column{grid-template-columns:100px minmax(0,1fr)}
 .live-candidate-column .live-portrait{width:100px}
 .live-candidate-column .live-candidate-name h2{font-size:29px}
 .live-metrics-column .ignite-live-average strong{font-size:62px}
}
@media(prefers-reduced-motion:reduce){.candidate-card.vote-land,.candidate-card.vote-release,.vote-pop-feedback,.validated-field.shake{animation:none!important;transition:none!important}}

/* v15 — plain live average, still fan cards, summary results */
.fan-vote-portrait:hover,.candidate-card:hover{transform:none!important;filter:none!important}
.candidate-card{transform:none!important}
.live-average-plain{min-height:300px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:34px 38px;border:1px solid #ececef;border-radius:26px;background:#fff;color:#1d1d1f}
.live-average-plain>span{font-size:14px;color:#6e6e73;font-weight:700}
.live-average-plain>div{display:flex;align-items:baseline;gap:12px;margin-top:12px}
.live-average-plain strong{margin:0;font-size:clamp(88px,11vw,158px);line-height:.82;letter-spacing:-.085em;color:#1d1d1f!important;background:none!important;-webkit-text-fill-color:currentColor!important;text-shadow:none!important;filter:none!important;animation:none!important}
.live-average-plain small{font-size:24px;color:#6e6e73;font-weight:650}
.live-average-plain .live-average-meta{display:flex;gap:18px;flex-wrap:wrap;margin-top:24px;padding-top:18px;border-top:1px solid rgba(29,29,31,.08);width:100%}
.live-average-plain .live-average-meta span{font-size:13px;color:#6e6e73;font-weight:650}
.summary-workspace{max-width:1540px;padding-top:34px}.summary-heading{margin-bottom:24px}.summary-heading h1{margin:0;font-size:clamp(36px,5vw,66px);letter-spacing:-.06em;line-height:.95}.summary-heading p{margin:10px 0 0;color:#6e6e73;font-size:16px}.summary-skeleton-grid,.summary-highlight-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px;margin-bottom:20px}.summary-highlight{min-height:148px;padding:22px;border:1px solid #e6e6ea;border-radius:22px;background:#fff;display:flex;flex-direction:column;justify-content:flex-end}.summary-highlight-overall{background:#1d1d1f;color:#fff;border-color:#1d1d1f}.summary-highlight>span{font-size:12px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:#8e8e93}.summary-highlight-overall>span,.summary-highlight-overall>small{color:#c7c7cc}.summary-highlight>strong{margin-top:12px;font-size:clamp(24px,2.4vw,36px);line-height:1;letter-spacing:-.045em}.summary-highlight>small{margin-top:9px;font-size:13px;color:#6e6e73;font-weight:650}.summary-table-panel{padding:24px!important}.summary-table-wrap{width:100%;overflow:auto;border:1px solid #ececef;border-radius:18px}.summary-table{min-width:760px;background:#fff}.summary-table th{position:sticky;top:0;z-index:2;background:#fafafa;white-space:nowrap;padding:14px}.summary-table th small{display:block;margin-top:4px;font-size:10px;color:#aaa;font-weight:600}.summary-table td{padding:14px;vertical-align:middle;white-space:nowrap}.summary-table td strong{font-size:17px;color:#1d1d1f}.summary-table td small{display:block;margin-top:4px;font-size:11px;color:#8e8e93}.summary-rank{font-size:18px;font-weight:800;color:#6e6e73}.summary-candidate{display:flex;align-items:center;gap:11px;min-width:190px}.summary-avatar{width:46px;height:58px;border-radius:10px;overflow:hidden;background:#f2f2f5;display:grid;place-items:center;flex:none;font-weight:800;color:#8e8e93}.summary-avatar img{width:100%;height:100%;object-fit:contain;background:#f6f6f7}.summary-candidate strong{display:block;font-size:15px}.summary-candidate small{margin-top:3px!important}.summary-table td:nth-child(2),.summary-table th:nth-child(2){position:sticky;left:0;z-index:1;background:#fff}.summary-table th:nth-child(2){z-index:3;background:#fafafa}
@media(max-width:720px){.live-average-plain{min-height:0;padding:19px;border-radius:18px}.live-average-plain strong{font-size:72px}.live-average-plain small{font-size:16px}.live-average-plain .live-average-meta{margin-top:14px;padding-top:12px;gap:10px}.summary-workspace{padding-top:22px}.summary-heading h1{font-size:38px}.summary-highlight-grid{grid-template-columns:1fr 1fr}.summary-highlight{min-height:126px;padding:17px}.summary-highlight>strong{font-size:24px}.summary-table-panel{padding:14px!important}}
@media(max-width:480px){.summary-highlight-grid{grid-template-columns:1fr}.summary-heading p{font-size:14px}.live-average-plain strong{font-size:60px}}

/* v16 · Moderator-owned rounds, judge round completion, printable summary */
.moderator-manager-grid{display:grid;grid-template-columns:minmax(280px,.72fr) minmax(340px,1.28fr);gap:18px;margin:18px 0 24px;align-items:start}.moderator-round-form,.moderator-round-list-panel{min-height:100%}.moderator-round-list-panel select{width:100%}.moderator-round-row{transition:border-color .2s ease,background .2s ease}.moderator-round-row.is-active{border-left:3px solid #007aff;padding-left:14px;background:#f7fbff}.moderator-stage-section{margin-top:4px}.judge-thank-you{min-height:360px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:42px!important}.judge-thank-check{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:#f2f8f3;color:#1e7d35;font-size:30px;font-weight:800;margin-bottom:18px;animation:judge-thank-in .55s var(--ease) both}.judge-thank-you h2{font-size:clamp(38px,6vw,70px);letter-spacing:-.055em;line-height:.95;margin:8px 0 14px}.judge-thank-you>p:last-child{max-width:560px;color:#6e6e73}@keyframes judge-thank-in{from{opacity:0;transform:scale(.72)}to{opacity:1;transform:none}}.stage-sync-dot.complete{background:#34c759;box-shadow:0 0 0 5px rgba(52,199,89,.1)}.summary-heading-actions{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.summary-print{flex:none}
@media(max-width:880px){.moderator-manager-grid{grid-template-columns:1fr}.moderator-round-list-panel{min-height:0}}
@media(max-width:600px){.moderator-manager-grid{gap:12px;margin-top:12px}.moderator-round-form,.moderator-round-list-panel{padding:18px!important}.summary-heading-actions{align-items:center}.summary-print{min-height:44px;padding:10px 16px}.judge-thank-you{min-height:300px;padding:28px 20px!important}}
@media(prefers-reduced-motion:reduce){.judge-thank-check{animation:none}}
@media print{
 @page{size:auto;margin:12mm}
 html,body{background:#fff!important;color:#000!important;font-size:11pt;overflow:visible!important}
 .spectrum,.header,.closing-footer,#navigation,#message-dialog,#toast,.app-progress,.summary-print,.summary-heading p,.skip-link{display:none!important}
 main{display:block!important}.summary-workspace{max-width:none!important;width:100%!important;padding:0!important;margin:0!important}.summary-heading{margin:0 0 12mm!important}.summary-heading h1{font-size:28pt!important;color:#000!important}.summary-highlight-grid{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:6mm!important;break-inside:avoid}.summary-highlight,.summary-highlight-overall{min-height:0!important;padding:5mm!important;background:#fff!important;color:#000!important;border:1px solid #bbb!important;box-shadow:none!important}.summary-highlight>span,.summary-highlight>small,.summary-highlight-overall>span,.summary-highlight-overall>small{color:#555!important}.summary-table-panel{padding:0!important;border:0!important;box-shadow:none!important}.summary-table-wrap{overflow:visible!important;border:0!important}.summary-table{min-width:0!important;width:100%!important;font-size:9pt!important}.summary-table th,.summary-table td{position:static!important;white-space:normal!important;padding:3mm 2mm!important;border-bottom:1px solid #ddd!important}.summary-avatar{width:28px!important;height:36px!important}.summary-table-panel .section-bar{break-after:avoid}.notice{border:1px solid #bbb!important;background:#fff!important;color:#000!important}
}

/* v17 — moderator candidate/category workflow + category fan voting */
.wordmark{font-size:clamp(70px,8.6vw,148px);letter-spacing:-.052em}.loader-wordmark{letter-spacing:.08em}.fan-category-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin-top:18px}.fan-category-card{position:relative;min-height:clamp(320px,48vw,560px);padding:0;border:1px solid var(--line);border-radius:30px;overflow:hidden;background:#f4f1ed;cursor:pointer;text-align:left;box-shadow:0 12px 38px rgba(45,25,32,.06)}.fan-category-card>img,.fan-category-placeholder{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.fan-category-placeholder{display:grid;place-items:center;background:linear-gradient(140deg,#f7ebd6,#f5d8dc 55%,#dfe7f4)}.fan-category-placeholder span{font-size:88px;font-weight:900;color:#fff;text-shadow:0 6px 30px rgba(0,0,0,.12)}.fan-category-card:after{content:'';position:absolute;inset:0;background:linear-gradient(to top,rgba(22,17,22,.72),rgba(22,17,22,.08) 55%,transparent)}.fan-category-overlay{position:absolute;z-index:2;left:0;right:0;bottom:0;padding:28px;color:#fff;display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.fan-category-overlay strong{font-size:clamp(28px,3vw,44px);line-height:1;letter-spacing:-.045em}.fan-category-overlay small{font-size:13px;font-weight:700;display:inline-flex;align-items:center;gap:7px}.fan-category-overlay small i{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#34c759;font-style:normal}.fan-category-card.is-complete{border-color:rgba(52,199,89,.35)}.fan-category-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:8px 0 24px}.fan-category-toolbar .inline-back{position:static}.fan-category-toolbar strong{font-size:22px;letter-spacing:-.03em}.fan-complete-state{min-height:46svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:14px}.fan-complete-check{width:72px;height:72px;border-radius:50%;display:grid;place-items:center;background:#f0f8f1;color:#24823b;font-size:34px;font-weight:900}.fan-complete-state h2{font-size:clamp(34px,5vw,58px);letter-spacing:-.05em}.fan-vote-transition{position:fixed;inset:0;z-index:900;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:rgba(255,253,249,.88);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);opacity:0;transform:scale(.985);transition:opacity .18s ease,transform .18s ease}.fan-vote-transition.show{opacity:1;transform:none}.fan-transition-check{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;background:#ff2d55;color:white;font-size:36px;font-weight:900;box-shadow:0 18px 45px rgba(255,45,85,.2)}.fan-vote-transition strong{font-size:30px;letter-spacing:-.04em}.fan-vote-transition[hidden]{display:none!important}

.moderator-workspace{max-width:1180px}.moderator-candidate-manager,.moderator-category-manager{margin-top:22px}.moderator-candidate-form,.moderator-category-form{display:grid;grid-template-columns:minmax(220px,.65fr) minmax(0,1.35fr);gap:22px;margin:18px 0 26px;padding:20px;border:1px solid var(--line);border-radius:22px;background:#fcfbfa}.moderator-candidate-form[hidden],.moderator-category-form[hidden]{display:none!important}.moderator-candidate-meta{display:grid;grid-template-columns:minmax(240px,.85fr) minmax(220px,1.15fr);gap:16px;align-items:end}.ios-choice{border:0;padding:0;margin:0}.ios-choice legend{font-size:14px;font-weight:500;color:#6f5c69;margin-bottom:7px}.ios-choice{display:grid;grid-template-columns:1fr 1fr;padding:3px;border-radius:14px;background:#ececef}.ios-choice label{position:relative;margin:0;cursor:pointer}.ios-choice input{position:absolute;opacity:0;pointer-events:none}.ios-choice span{display:block;padding:10px 14px;border-radius:11px;text-align:center;color:#6e6e73;font-size:14px;font-weight:700;transition:background .2s ease,color .2s ease,box-shadow .2s ease}.ios-choice input:checked+span{background:#fff;color:#1d1d1f;box-shadow:0 1px 5px rgba(0,0,0,.12)}.moderator-photo-picker{min-height:250px}.moderator-category-form{grid-template-columns:minmax(190px,.52fr) minmax(0,1fr)}.category-cover-picker{display:block;position:relative;min-height:230px;border:1px dashed #c9c3c8;border-radius:20px;overflow:hidden;background:#f6f5f4;cursor:pointer}.category-cover-picker input{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;opacity:0;cursor:pointer;z-index:3}.category-cover-preview{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#6e6e73;gap:6px}.category-cover-preview img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.category-cover-preview span{position:absolute;left:12px;right:12px;bottom:12px;padding:8px 10px;border-radius:10px;background:rgba(255,255,255,.9);color:#1d1d1f;font-size:12px;font-weight:700}.moderator-category-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.moderator-category-admin-card{display:grid;grid-template-columns:82px minmax(0,1fr) auto;gap:14px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:18px;background:#fff}.moderator-category-admin-card>img,.moderator-category-admin-card>.fan-category-placeholder{width:82px;height:82px;border-radius:14px;object-fit:cover;position:relative}.moderator-category-admin-card>.fan-category-placeholder span{font-size:32px}.moderator-category-admin-card strong,.moderator-category-admin-card small{display:block}.moderator-category-admin-card small{margin-top:4px;color:#8e8e93}.moderator-stage-filter{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:24px 0 12px}.moderator-stage-filter>span{font-size:13px;font-weight:800;color:#6e6e73;text-transform:uppercase;letter-spacing:.08em}.segmented-control{display:inline-grid;grid-auto-flow:column;padding:3px;background:#ececef;border-radius:13px}.segmented-control button{border:0;background:transparent;border-radius:10px;padding:9px 14px;font:700 13px Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#6e6e73;cursor:pointer}.segmented-control button.active{background:#fff;color:#1d1d1f;box-shadow:0 1px 5px rgba(0,0,0,.12)}

.admin-account-list small,.staff-table td small{display:block;margin-top:3px;color:#8e8e93}.candidate-admin-card.is-hidden{opacity:.62}.candidate-card,.fan-category-card,.moderator-category-admin-card{transition:border-color .18s ease,box-shadow .18s ease}.candidate-card:hover,.fan-category-card:hover,.moderator-category-admin-card:hover{transform:none!important}.vote-heart:hover:not(:disabled){transform:none!important}.experience-card:hover{transform:none!important}

@media(max-width:900px){.fan-category-grid{gap:14px}.moderator-candidate-form,.moderator-category-form{grid-template-columns:1fr}.moderator-candidate-meta{grid-template-columns:1fr}.moderator-category-list{grid-template-columns:1fr}}
@media(max-width:650px){.wordmark{font-size:clamp(56px,15.5vw,92px)}.fan-category-grid{grid-template-columns:1fr 1fr;gap:10px}.fan-category-card{min-height:270px;border-radius:20px}.fan-category-overlay{padding:16px;display:block}.fan-category-overlay strong{font-size:24px;display:block}.fan-category-overlay small{margin-top:8px}.moderator-candidate-manager,.moderator-category-manager{padding:18px!important}.moderator-candidate-form,.moderator-category-form{padding:12px;margin-left:-4px;margin-right:-4px}.moderator-category-admin-card{grid-template-columns:64px minmax(0,1fr);}.moderator-category-admin-card>img,.moderator-category-admin-card>.fan-category-placeholder{width:64px;height:64px}.moderator-category-admin-card .row-actions{grid-column:1/-1;justify-content:flex-end}.moderator-stage-filter{align-items:flex-start;flex-direction:column}.segmented-control{width:100%;grid-template-columns:repeat(3,1fr);grid-auto-flow:unset}.segmented-control button{padding:10px 8px}}
@media(max-width:420px){.fan-category-grid{grid-template-columns:1fr}.fan-category-card{min-height:360px}.fan-category-overlay strong{font-size:30px}}
@media(prefers-reduced-motion:reduce){.fan-vote-transition,.ios-choice span,.candidate-card,.fan-category-card,.moderator-category-admin-card{transition:none!important}}

/* v18 — compact moderator/admin UX + fan voting completion */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* Moderator: one task at a time. */
.moderator-workspace{max-width:1180px;margin-inline:auto;padding-top:28px}
.moderator-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:14px;padding:0 2px}
.moderator-status-copy{min-width:0}
.moderator-status-copy .soft{margin:4px 0 0;font-size:13px;line-height:1.35}
.moderator-signout{min-height:40px;padding:9px 14px;white-space:nowrap}
.moderator-tabs{position:sticky;top:0;z-index:35;display:flex;align-items:center;gap:28px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;margin:0 0 20px;padding:0 2px;background:rgba(255,253,251,.94);backdrop-filter:blur(18px) saturate(145%);-webkit-backdrop-filter:blur(18px) saturate(145%);border-bottom:1px solid var(--line)}
.moderator-tabs::-webkit-scrollbar{display:none}
.moderator-tabs button{appearance:none;border:0;background:transparent;color:var(--muted);font:inherit;font-size:14px;font-weight:650;white-space:nowrap;padding:14px 1px 13px;position:relative;min-height:48px}
.moderator-tabs button:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:999px;background:var(--ink);transform:scaleX(0);transform-origin:center;transition:transform .22s var(--ease)}
.moderator-tabs button.active{color:var(--ink)}
.moderator-tabs button.active:after{transform:scaleX(1)}
.moderator-tab-content{min-height:440px}
.moderator-tab-panel[hidden]{display:none!important}
.moderator-tab-panel>.panel,.moderator-tab-panel .panel{box-shadow:none}
.moderator-stage-settings{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(310px,1.2fr);align-items:end;gap:20px;padding:18px 20px;margin-bottom:14px}
.moderator-stage-settings label{margin:0}
.moderator-stage-filter{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin:0}
.moderator-stage-filter>span{font-size:13px;color:var(--muted);font-weight:600;white-space:nowrap}
.moderator-stage-section{display:grid;gap:12px}
.moderator-current{margin:0;min-height:260px}
.moderator-manager-grid{gap:14px}
.moderator-rounds-grid{align-items:start}
.moderator-section-heading{margin-bottom:16px;align-items:center}
.moderator-section-heading h2{margin-bottom:1px}
.moderator-section-heading .field-note{margin:3px 0 0;max-width:620px}
.moderator-candidate-form,.moderator-category-form{margin:0 0 18px;padding:18px;border:1px solid var(--line);border-radius:18px;background:#fff}
.moderator-candidate-form{gap:16px}
.moderator-category-form{gap:16px}
.moderator-candidate-meta{gap:14px}
.form-actions{justify-content:flex-end}
.form-actions .primary,.form-actions .secondary{min-width:92px}

/* Compact list actions: icon only, accessible through aria-label/title. */
.icon-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex-wrap:nowrap}
.icon-action{appearance:none;display:inline-grid;place-items:center;width:36px;height:36px;min-width:36px;padding:0;border:0;border-radius:50%;background:transparent;color:#6f625d;transition:background .18s var(--ease),color .18s var(--ease),transform .18s var(--ease)}
.icon-action svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.icon-action:hover,.icon-action:focus-visible{background:#f2eeea;color:var(--ink)}
.icon-action:active{transform:scale(.92)}
.icon-action.danger{color:#b42318}
.icon-action.danger:hover,.icon-action.danger:focus-visible{background:#fff0ef;color:#b42318}
.candidate-admin-card{grid-template-columns:54px 42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:11px 12px;border-radius:16px}
.candidate-admin-thumb{width:54px;aspect-ratio:3/4;border-radius:11px;overflow:hidden;background:#f2efeb;display:grid;place-items:center;color:#8d8179;font-size:12px;font-weight:700}
.candidate-admin-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.candidate-admin-number{font-size:13px;font-weight:700;text-align:center;color:var(--muted)}
.candidate-admin-copy{min-width:0}
.candidate-admin-copy strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.candidate-admin-copy small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.candidate-admin-actions{align-self:center}
.moderator-category-admin-card{grid-template-columns:60px minmax(0,1fr) auto;gap:12px;padding:10px 12px;border-radius:16px}
.moderator-category-admin-card>img,.moderator-category-admin-card>.fan-category-placeholder{width:60px;height:68px;border-radius:11px}
.moderator-round-row{padding:12px 4px}

/* Admin: calmer density and mobile-first global tabs. */
.admin-global-menu{gap:25px;padding-left:max(18px,calc((100vw - 1180px)/2));padding-right:max(18px,calc((100vw - 1180px)/2));overflow-x:auto;scrollbar-width:none}
.admin-global-menu::-webkit-scrollbar{display:none}
.admin-global-menu button{white-space:nowrap;min-height:48px;font-size:14px;padding-top:13px;padding-bottom:12px}
.admin-body{padding-top:28px!important}
.admin-titlebar{margin-bottom:16px}
.admin-titlebar h1{font-size:clamp(34px,5vw,52px);letter-spacing:-.045em}
.admin-body .panel{box-shadow:none}
.admin-body .section-bar{gap:12px}
.staff-table th,.staff-table td{padding-top:13px;padding-bottom:13px}
.staff-table td:last-child{width:92px;text-align:right}
.admin-grid{gap:16px}

/* Fan voting: clean back control and completed-vote recap. */
.fan-category-back,.fan-category-back:hover,.fan-category-back:focus-visible{border:0!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;padding:8px 4px 8px 0!important;min-height:42px;color:var(--ink)}
.fan-category-back svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.fan-category-toolbar{min-height:50px}
.fan-complete-state{display:flex;flex-direction:column;align-items:center;gap:18px;padding:28px 0 8px;text-align:center}
.fan-complete-check{width:62px;height:62px;border-radius:50%;display:grid;place-items:center;background:#111;color:#fff;font-size:31px;font-weight:700;box-shadow:0 8px 25px rgba(0,0,0,.08)}
.fan-complete-votes{width:min(100%,760px);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.fan-complete-vote{display:grid;grid-template-columns:62px minmax(0,1fr) 34px;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:18px;background:#fff;text-align:left}
.fan-complete-portrait{width:62px!important;aspect-ratio:3/4!important;border-radius:12px!important;min-height:0!important}
.fan-complete-portrait .candidate-number{display:none}
.fan-complete-vote>div:nth-child(2){min-width:0}
.fan-complete-vote small{display:block;color:var(--muted);font-size:11px;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fan-complete-vote strong{display:block;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fan-complete-heart{display:grid;place-items:center;color:#ff2d55}
.fan-complete-heart svg{width:24px;height:24px;fill:currentColor;stroke:currentColor;stroke-width:1.5}
.fan-review-home{appearance:none;width:48px;height:48px;border:1px solid var(--line);border-radius:50%;background:#fff;display:grid;place-items:center;color:var(--ink);box-shadow:0 6px 18px rgba(0,0,0,.04);transition:transform .18s var(--ease),background .18s var(--ease)}
.fan-review-home:hover,.fan-review-home:focus-visible{background:#f6f2ee}
.fan-review-home:active{transform:scale(.94)}
.fan-review-home svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

@media(max-width:800px){
  .moderator-workspace{padding-top:18px!important}
  .moderator-tabs{margin-left:-19px;margin-right:-19px;padding-left:19px;padding-right:19px;gap:24px}
  .moderator-stage-settings{grid-template-columns:1fr;align-items:stretch;gap:14px;padding:16px}
  .moderator-stage-filter{justify-content:space-between}
  .moderator-stage-filter .segmented-control{flex:1;max-width:360px}
  .moderator-rounds-grid{grid-template-columns:1fr}
  .moderator-candidate-form,.moderator-category-form{padding:15px;border-radius:16px}
  .admin-body{padding-top:22px!important}
  .admin-global-menu{padding-left:19px;padding-right:19px;gap:22px}
}

@media(max-width:560px){
  .moderator-topbar{align-items:flex-start;margin-bottom:10px}
  .moderator-status-copy .soft{font-size:12px;max-width:240px}
  .moderator-signout{min-height:36px;padding:7px 11px;font-size:12px}
  .moderator-tabs{top:0;margin-left:-19px;margin-right:-19px;margin-bottom:14px;padding-left:19px;padding-right:19px;gap:20px}
  .moderator-tabs button{font-size:13px;min-height:45px;padding:12px 0}
  .moderator-stage-settings{padding:14px;border-radius:18px}
  .moderator-stage-filter{display:grid;gap:7px}
  .moderator-stage-filter .segmented-control{max-width:none;width:100%}
  .moderator-current{min-height:0;padding:16px}
  .moderator-controls{margin-top:0}
  .moderator-nav{min-height:54px}
  .moderator-section-heading{align-items:flex-start;margin-bottom:12px}
  .moderator-section-heading .field-note{display:none}
  .moderator-section-heading .compact-action{min-width:70px}
  .candidate-admin-grid{gap:8px}
  .candidate-admin-card{grid-template-columns:46px 30px minmax(0,1fr) 74px;gap:8px;padding:9px}
  .candidate-admin-thumb{width:46px;border-radius:9px}
  .candidate-admin-number{font-size:11px}
  .candidate-admin-copy small:nth-of-type(2){display:none}
  .candidate-admin-actions{gap:1px}
  .icon-action{width:34px;height:34px;min-width:34px}
  .moderator-category-admin-card{grid-template-columns:50px minmax(0,1fr) 74px;padding:9px;gap:9px}
  .moderator-category-admin-card>img,.moderator-category-admin-card>.fan-category-placeholder{width:50px;height:58px}
  .moderator-candidate-meta{grid-template-columns:1fr!important}
  .two-fields{grid-template-columns:1fr 1fr}
  .form-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
  .form-actions .primary,.form-actions .secondary{width:100%;min-width:0}
  .admin-global-menu{gap:19px;padding-left:16px;padding-right:16px}
  .admin-body{padding-left:16px!important;padding-right:16px!important}
  .admin-titlebar h1{font-size:36px}
  .admin-grid{gap:12px}
  .admin-body .panel{padding:17px}
  .staff-table{font-size:13px}
  .staff-table th,.staff-table td{padding:10px 7px}
  .fan-category-toolbar{gap:8px}
  .fan-category-back span{display:none}
  .fan-category-back{width:36px!important;padding:5px 0!important}
  .fan-complete-state{padding-top:20px;gap:14px}
  .fan-complete-check{width:54px;height:54px;font-size:27px}
  .fan-complete-votes{grid-template-columns:1fr;gap:8px}
  .fan-complete-vote{grid-template-columns:52px minmax(0,1fr) 30px;padding:8px 10px;border-radius:15px}
  .fan-complete-portrait{width:52px!important;border-radius:10px!important}
}

/* v19 — refined live stage + simplified responsive summary */
.live-workspace{max-width:1560px;padding-top:26px}
.live-stage{position:relative;isolation:isolate;min-height:620px;padding:clamp(18px,2.2vw,32px)!important;border:1px solid rgba(74,48,37,.12);border-radius:30px;background:linear-gradient(145deg,rgba(255,255,255,.98),rgba(255,250,245,.94));box-shadow:0 24px 70px rgba(62,35,22,.08);overflow:hidden}
.live-stage:before{content:"";position:absolute;z-index:-2;inset:-20%;background:radial-gradient(circle at 22% 18%,rgba(255,202,86,.13),transparent 30%),radial-gradient(circle at 82% 24%,rgba(185,82,101,.09),transparent 28%),radial-gradient(circle at 55% 100%,rgba(75,102,162,.07),transparent 32%);pointer-events:none}
.live-stage:after{content:"";position:absolute;z-index:-1;inset:0;border-radius:inherit;box-shadow:inset 0 1px 0 rgba(255,255,255,.9),inset 0 0 0 1px rgba(255,255,255,.26);pointer-events:none}
.live-stage-grid{display:grid;grid-template-columns:minmax(360px,.9fr) minmax(0,1.1fr);gap:clamp(24px,4vw,62px);align-items:start;animation:live-stage-reveal .42s var(--ease) both}
@keyframes live-stage-reveal{from{opacity:.35;transform:translateY(7px)}to{opacity:1;transform:none}}
.live-candidate-column{min-width:0;display:block;position:relative}
.live-candidate-column .live-portrait{width:min(100%,600px);height:min(76vh,790px);aspect-ratio:3/4;border-radius:28px;overflow:hidden;background:#f5f2ee;box-shadow:0 22px 52px rgba(36,24,24,.12),0 0 0 1px rgba(255,255,255,.75) inset}
.live-candidate-column .live-portrait:after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(255,255,255,.14),transparent 32%,transparent 70%,rgba(255,220,160,.08));pointer-events:none}
.live-candidate-column .live-portrait>img{width:100%;height:100%;object-fit:contain!important;object-position:center!important;background:linear-gradient(180deg,#faf9f8,#f2efed)}
.live-candidate-column .candidate-number{top:18px;left:18px;min-width:42px;height:42px;background:rgba(255,255,255,.92);box-shadow:0 7px 20px rgba(0,0,0,.08);font-size:14px;font-weight:800}
.live-metrics-column{min-width:0;display:flex;flex-direction:column;gap:18px;align-self:stretch}
.live-average-plain{min-height:300px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;padding:clamp(26px,3vw,42px);border:1px solid rgba(74,48,37,.11);border-radius:28px;background:linear-gradient(150deg,#fff 0%,#fffdfb 62%,#fff7ed 100%);box-shadow:0 18px 45px rgba(67,40,25,.06);color:#1d1d1f;position:relative;overflow:hidden}
.live-average-plain:after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;right:-80px;top:-85px;background:radial-gradient(circle,rgba(236,180,82,.16),transparent 70%);pointer-events:none}
.live-average-plain>span{font-size:12px;color:#8d8179;font-weight:800;letter-spacing:.08em;text-transform:uppercase}
.live-average-value{display:flex;align-items:baseline;gap:10px;margin-top:10px}
.live-average-plain .live-average-value strong{margin:0;font-size:clamp(92px,10vw,152px);line-height:.82;letter-spacing:-.08em;color:#171517!important;background:none!important;-webkit-text-fill-color:currentColor!important;text-shadow:none!important;filter:none!important;animation:none!important;font-variant-numeric:tabular-nums}
.live-average-plain .live-average-value small{font-size:21px;color:#8e8e93;font-weight:700}
.live-current-candidate{width:100%;margin-top:24px;padding-top:20px;border-top:1px solid rgba(70,45,32,.09)}
.live-current-candidate h2{margin:0;font-size:clamp(34px,4vw,60px);line-height:.98;letter-spacing:-.055em;color:#1d1d1f}
.live-current-candidate p{margin:9px 0 0;color:#8b7569;font-size:14px;font-weight:700;letter-spacing:.015em}
.live-judge-block{min-width:0;padding:18px 20px 20px;border:1px solid rgba(74,48,37,.09);border-radius:24px;background:rgba(255,255,255,.78);box-shadow:0 14px 36px rgba(56,37,28,.045);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.live-judge-label{font-size:11px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;color:#9b8c83;margin:0 0 11px 2px}
.live-judge-scores{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(112px,1fr))!important;gap:8px!important;margin:0!important}
.live-judge-scores .anonymous-score{min-height:72px!important;padding:11px 13px!important;border:1px solid #ece7e3!important;border-radius:15px!important;background:#fff!important;display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;box-shadow:0 5px 16px rgba(52,34,26,.035);opacity:1!important}
.live-judge-scores .anonymous-score span{font-size:11px!important;color:#81736c!important;font-weight:750!important;white-space:nowrap}
.live-judge-scores .anonymous-score strong{font-size:clamp(27px,2.5vw,38px)!important;line-height:1!important;letter-spacing:-.045em!important;color:#201d20!important;font-variant-numeric:tabular-nums}
.live-judge-scores .anonymous-score small{display:none!important}
.live-judge-scores .anonymous-score.pending{background:#fbfaf9!important;color:#9b8f88!important}
.judge-score-spinner{width:19px;height:19px;border-radius:50%;border:2px solid #e4ddd7;border-top-color:#9b7960;animation:judge-wait-spin .75s linear infinite;flex:none}
@keyframes judge-wait-spin{to{transform:rotate(360deg)}}
.compact-empty{padding:18px!important;font-size:13px!important}
.live-waiting-luxe{min-height:500px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center}

/* Summary: glanceable result cards instead of a wide data table. */
.summary-workspace{max-width:1380px;padding-top:26px}
.summary-heading{margin-bottom:18px}
.summary-heading-actions{display:flex;align-items:center;justify-content:space-between;gap:16px}
.summary-heading h1{margin:0;font-size:clamp(34px,4.4vw,58px);letter-spacing:-.055em;line-height:.95}
.summary-heading p{display:none}
.summary-print{min-height:42px;padding:9px 15px}
.summary-spotlight-strip{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(210px,1fr);gap:10px;overflow-x:auto;overscroll-behavior-x:contain;padding:2px 2px 12px;margin-bottom:12px;scrollbar-width:none}
.summary-spotlight-strip::-webkit-scrollbar{display:none}
.summary-spotlight{min-height:132px;padding:18px;border:1px solid #ebe6e2;border-radius:20px;background:#fff;display:flex;flex-direction:column;justify-content:flex-end;box-shadow:0 9px 24px rgba(44,29,24,.035)}
.summary-spotlight.is-primary{background:#1e1b1d;color:#fff;border-color:#1e1b1d}
.summary-spotlight>span{font-size:10px;font-weight:850;letter-spacing:.085em;text-transform:uppercase;color:#94857d}
.summary-spotlight.is-primary>span{color:#c9c0bc}
.summary-spotlight>strong{margin-top:8px;font-size:20px;line-height:1.08;letter-spacing:-.035em}
.summary-spotlight>b{margin-top:8px;font-size:14px;color:#8a7468}
.summary-spotlight.is-primary>b{color:#eee7e3}
.summary-notice{margin:0 0 12px;padding:13px 16px;font-size:13px}
.summary-ranking{margin-top:4px}
.summary-ranking-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 2px}
.summary-ranking-head h2{margin:0;font-size:22px;letter-spacing:-.035em}
.summary-ranking-head span{font-size:12px;color:#91827a;font-weight:700}
.summary-result-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.summary-result-card{padding:16px;border:1px solid #ebe7e4;border-radius:21px;background:#fff;box-shadow:0 10px 28px rgba(40,28,22,.035);min-width:0}
.summary-result-card.is-winner{border-color:#d7c1a2;box-shadow:0 14px 36px rgba(164,116,58,.08)}
.summary-result-head{display:grid;grid-template-columns:42px 54px minmax(0,1fr);align-items:center;gap:10px;min-width:0}
.summary-result-rank{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#f5f1ed;color:#715e52;font-size:13px;font-weight:850}
.summary-result-card.is-winner .summary-result-rank{background:#1d1d1f;color:#fff}
.summary-result-card .summary-avatar{width:54px;height:68px;border-radius:12px;overflow:hidden;background:#f4f1ef;display:grid;place-items:center;color:#877a73;font-size:12px;font-weight:850}
.summary-result-card .summary-avatar img{width:100%;height:100%;object-fit:contain;background:#f7f5f4}
.summary-result-name{min-width:0}
.summary-result-name strong{display:block;font-size:17px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.summary-result-name small{display:block;margin-top:5px;color:#93847c;font-size:11px;font-weight:650}
.summary-result-metrics{display:flex;gap:10px;margin-top:14px}
.summary-result-metrics>div{flex:1;min-width:0;padding:12px 13px;border-radius:14px;background:#f8f6f4}
.summary-result-metrics span{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.08em;color:#988981;font-weight:800}
.summary-result-metrics strong{display:block;margin-top:4px;font-size:24px;line-height:1;letter-spacing:-.04em;color:#242024;font-variant-numeric:tabular-nums}
.summary-round-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:9px}
.summary-round-chip{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 10px;border:1px solid #eee9e5;border-radius:12px}
.summary-round-chip span{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;color:#8d7d75;font-weight:700}
.summary-round-chip strong{font-size:15px;color:#282328;font-variant-numeric:tabular-nums}

@media(max-width:900px){
 .live-stage-grid{grid-template-columns:minmax(260px,.78fr) minmax(0,1.22fr);gap:20px}
 .live-candidate-column .live-portrait{height:auto;width:100%;max-width:460px}
 .live-average-plain{min-height:250px;padding:24px}
 .summary-result-grid{grid-template-columns:1fr}
}
@media(max-width:680px){
 .live-workspace{padding-top:16px}
 .live-stage{padding:14px!important;border-radius:21px}
 .live-stage-grid{grid-template-columns:112px minmax(0,1fr);grid-template-areas:"portrait average" "judges judges";gap:12px;align-items:start}
 .live-candidate-column{grid-area:portrait}
 .live-candidate-column .live-portrait{width:112px;height:auto;border-radius:17px}
 .live-candidate-column .candidate-number{top:8px;left:8px;min-width:29px;height:29px;font-size:11px}
 .live-metrics-column{display:contents}
 .live-average-plain{grid-area:average;min-height:0;padding:16px;border-radius:18px;justify-content:flex-start}
 .live-average-plain>span{font-size:9px}
 .live-average-value{margin-top:6px;gap:6px}
 .live-average-plain .live-average-value strong{font-size:clamp(54px,17vw,82px)}
 .live-average-plain .live-average-value small{font-size:13px}
 .live-current-candidate{margin-top:12px;padding-top:11px}
 .live-current-candidate h2{font-size:clamp(23px,7vw,34px)}
 .live-current-candidate p{margin-top:5px;font-size:11px}
 .live-judge-block{grid-area:judges;padding:13px;border-radius:18px}
 .live-judge-scores{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
 .live-judge-scores .anonymous-score{min-height:60px!important;padding:9px 10px!important;border-radius:12px!important}
 .live-judge-scores .anonymous-score strong{font-size:28px!important}
 .judge-score-spinner{width:17px;height:17px}
 .summary-workspace{padding-top:18px}
 .summary-heading{margin-bottom:12px}
 .summary-heading h1{font-size:36px}
 .summary-print{width:42px;min-width:42px;overflow:hidden;color:transparent;position:relative;padding:0}
 .summary-print:after{content:"⌁";position:absolute;inset:0;display:grid;place-items:center;color:#1d1d1f;font-size:20px;transform:rotate(90deg)}
 .summary-spotlight-strip{grid-auto-columns:minmax(178px,78vw);margin-left:-2px;margin-right:-2px}
 .summary-spotlight{min-height:115px;padding:15px;border-radius:17px}
 .summary-spotlight>strong{font-size:18px}
 .summary-result-grid{gap:8px}
 .summary-result-card{padding:12px;border-radius:17px}
 .summary-result-head{grid-template-columns:36px 46px minmax(0,1fr);gap:8px}
 .summary-result-rank{width:34px;height:34px;font-size:12px}
 .summary-result-card .summary-avatar{width:46px;height:58px;border-radius:10px}
 .summary-result-name strong{font-size:15px}
 .summary-result-metrics{margin-top:10px;gap:7px}
 .summary-result-metrics>div{padding:10px;border-radius:12px}
 .summary-result-metrics strong{font-size:21px}
 .summary-round-grid{grid-template-columns:1fr 1fr;gap:6px}
 .summary-round-chip{padding:8px 9px}
}
@media(max-width:390px){
 .live-stage-grid{grid-template-columns:96px minmax(0,1fr);gap:9px}
 .live-candidate-column .live-portrait{width:96px}
 .live-average-plain{padding:13px}
 .live-average-plain .live-average-value strong{font-size:52px}
 .live-current-candidate h2{font-size:22px}
 .live-judge-scores{grid-template-columns:1fr 1fr!important}
 .summary-round-grid{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){.live-stage-grid,.judge-score-spinner{animation:none}}

@media print{
 .summary-spotlight-strip{display:grid!important;grid-template-columns:repeat(3,1fr)!important;grid-auto-flow:unset!important;overflow:visible!important;gap:5mm!important}
 .summary-spotlight{min-height:0!important;padding:4mm!important;background:#fff!important;color:#000!important;border:1px solid #bbb!important;box-shadow:none!important}
 .summary-spotlight>span,.summary-spotlight>b{color:#555!important}
 .summary-result-grid{display:grid!important;grid-template-columns:repeat(2,1fr)!important;gap:4mm!important}
 .summary-result-card{break-inside:avoid;padding:4mm!important;border:1px solid #bbb!important;box-shadow:none!important}
 .summary-result-rank{border:1px solid #bbb!important;background:#fff!important;color:#000!important}
 .summary-result-metrics>div{background:#fff!important;border:1px solid #ddd!important}
 .summary-round-chip{border:1px solid #ddd!important}
}
.live-average-plain .live-current-candidate{display:block!important;align-items:initial!important;gap:0!important}
.live-average-plain .live-average-value{display:flex!important}


/* v20 — restore hero tagline + cleaner live score hierarchy */
.live-average-plain .live-current-candidate{margin:0 0 20px!important;padding:0 0 18px!important;border-top:0!important;border-bottom:1px solid rgba(70,45,32,.09)!important}
.live-candidate-name{margin:0!important;font-size:clamp(34px,4vw,60px)!important;line-height:.98!important;letter-spacing:-.055em!important;color:#1d1d1f!important}
.live-average-plain .live-current-candidate p{margin:8px 0 0!important}
.live-judge-scores{grid-template-columns:repeat(auto-fit,minmax(86px,1fr))!important}
.live-judge-scores .anonymous-score{justify-content:center!important;text-align:center!important;min-height:68px!important;padding:10px 12px!important}
.live-judge-scores .anonymous-score strong{width:100%;text-align:center}
.live-judge-scores .anonymous-score.pending{justify-content:center!important}
@media(max-width:650px){.live-average-plain .live-current-candidate{margin-bottom:11px!important;padding-bottom:10px!important}.live-candidate-name{font-size:clamp(23px,7vw,34px)!important}.live-judge-scores{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* 2026-09-15 v21 smooth/live performance pass -----------------------------
   Keep polling invisible, preserve DOM nodes between updates, and use only
   compositor-friendly micro feedback on data that actually changes. */
.fan-vote-transition{
  background:transparent!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  pointer-events:none!important;
  gap:8px!important;
}
.fan-vote-transition .fan-transition-check{
  width:62px!important;
  height:62px!important;
  font-size:29px!important;
  box-shadow:0 12px 34px rgba(255,45,85,.18)!important;
  transform:translateZ(0) scale(.92);
  transition:transform .24s var(--ease),opacity .18s ease;
}
.fan-vote-transition strong{
  padding:6px 12px;
  border:1px solid rgba(0,0,0,.06);
  border-radius:999px;
  background:rgba(255,255,255,.94);
  box-shadow:0 8px 24px rgba(0,0,0,.07);
  font-size:15px!important;
  letter-spacing:-.01em!important;
}
.fan-vote-transition.show .fan-transition-check{transform:translateZ(0) scale(1)}
.candidate-card.is-voting{opacity:1!important}
.candidate-card,.fan-category-card,.moderator-category-admin-card,.candidate-admin-card{
  contain:layout paint style;
}
.fan-category-card>img,.candidate-card .portrait>img,.candidate-admin-thumb img,
.moderator-category-admin-card>img{backface-visibility:hidden;transform:translateZ(0)}

/* Live updates no longer replay the whole stage animation for every score. */
.live-stage-grid{animation:none!important;contain:layout paint style}
.live-stage-grid.stage-enter{animation:live-stage-reveal .38s var(--ease) both!important}
.live-average-value strong.score-refresh{animation:live-score-refresh .24s var(--ease) both}
.live-judge-scores .anonymous-score.score-arrived{animation:judge-score-arrive .28s var(--ease) both}
@keyframes live-score-refresh{0%{opacity:.72;transform:translate3d(0,4px,0)}100%{opacity:1;transform:translate3d(0,0,0)}}
@keyframes judge-score-arrive{0%{opacity:.55;transform:scale(.96)}100%{opacity:1;transform:scale(1)}}
.live-judge-block{backdrop-filter:none!important;-webkit-backdrop-filter:none!important;background:rgba(255,255,255,.94)!important}
.live-candidate-column .live-portrait,.live-average-plain,.live-judge-block{contain:layout paint style}

/* Polling should never look like a page load. The top progress bar now only
   appears after a foreground request lasts long enough to be meaningful. */
.app-progress{will-change:opacity}
.app-progress i{will-change:transform}

/* Reduce paint work for long management/result lists without changing layout. */
.summary-result-card,.list-row{content-visibility:auto;contain-intrinsic-size:1px 92px}

@media(max-width:650px){
  .fan-vote-transition .fan-transition-check{width:54px!important;height:54px!important;font-size:26px!important}
  .live-judge-scores .anonymous-score.score-arrived{animation-duration:.22s}
}
@media(prefers-reduced-motion:reduce){
  .live-stage-grid.stage-enter,.live-average-value strong.score-refresh,
  .live-judge-scores .anonymous-score.score-arrived,.fan-vote-transition .fan-transition-check{animation:none!important;transition:none!important}
}


/* 2026-09-15 v22 — calmer experience cards, linked vote receipts, polished auth */
.experiences-section{position:relative;overflow:hidden}
.experiences-section:before{content:"";position:absolute;inset:10% -18% auto auto;width:420px;height:420px;border-radius:50%;background:radial-gradient(circle,rgba(245,198,73,.12),rgba(218,99,93,.055) 45%,transparent 72%);pointer-events:none;filter:blur(4px)}
.experience-heading{position:relative;z-index:1}
.experience-grid{position:relative;z-index:1;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;max-width:1120px;margin-top:34px}
.experience-card{position:relative;display:grid;grid-template-columns:62px minmax(0,1fr) 36px;align-items:center;gap:19px;min-height:150px;padding:24px 25px;border-radius:26px;background:rgba(255,255,255,.82);border:1px solid rgba(91,65,68,.105);box-shadow:0 12px 38px rgba(62,35,38,.045);overflow:hidden;transition:border-color .25s ease,box-shadow .25s ease,background-color .25s ease;transform:none!important}
.experience-card:before{content:"";position:absolute;left:0;right:0;top:0;height:2px;background:linear-gradient(90deg,#f6c833,#ed8d2e,#bd344d,#7d3f9b,#3476b7,#4f8a48);opacity:.72;transform:scaleX(.42);transform-origin:left;transition:transform .45s var(--ease),opacity .3s ease}
.experience-card:hover,.experience-card:focus-visible{transform:none!important;border-color:rgba(105,72,69,.2);background:#fff;box-shadow:0 18px 48px rgba(54,30,34,.075)}
.experience-card:hover:before,.experience-card:focus-visible:before{transform:scaleX(1);opacity:1}
.experience-icon{position:relative;width:62px;height:62px;border-radius:21px;display:grid;place-items:center;background:linear-gradient(145deg,#fff8e6,#f8e4dc 55%,#eee3f7);color:#8b5336;box-shadow:inset 0 0 0 1px rgba(105,72,69,.08),0 10px 24px rgba(110,62,42,.06);will-change:transform}
.experience-icon:after{content:"";position:absolute;inset:8px;border-radius:15px;border:1px solid rgba(255,255,255,.82);pointer-events:none}
.experience-icon svg{width:27px;height:27px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;animation:experience-icon-float 5.8s ease-in-out infinite}
.experience-card:nth-child(2) .experience-icon svg{animation-delay:-1.4s}.experience-card:nth-child(3) .experience-icon svg{animation-delay:-2.8s}.experience-card:nth-child(4) .experience-icon svg{animation-delay:-4.2s}
@keyframes experience-icon-float{0%,100%{transform:translate3d(0,0,0) rotate(0)}50%{transform:translate3d(0,-3px,0) rotate(2deg)}}
.experience-copy{min-width:0}.experience-copy small{display:block;margin-bottom:7px;color:#a08678;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.experience-card h3{margin:0;font-size:clamp(22px,2.2vw,29px);line-height:1.07;letter-spacing:-.045em}.experience-card p{margin:8px 0 0;font-size:15px;line-height:1.5;color:var(--muted)}
.experience-open{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#f7f3ef;color:#7d665b;transition:background .22s ease,color .22s ease}.experience-open svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.experience-card:hover .experience-open,.experience-card:focus-visible .experience-open{background:#302333;color:#fff}

/* Completed fan votes are links back to the exact candidate card. */
.fan-complete-vote{color:inherit;text-decoration:none;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;grid-template-columns:62px minmax(0,1fr) 54px}
.fan-complete-vote:hover,.fan-complete-vote:focus-visible{border-color:#d6bfc7;background:#fffdfd;box-shadow:0 10px 28px rgba(72,37,48,.07);outline:none}
.fan-complete-action{display:flex;align-items:center;justify-content:flex-end;gap:7px}.fan-complete-arrow{width:17px;height:17px;fill:none;stroke:#8a737a;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.fan-complete-heart{display:grid;place-items:center}.fan-complete-heart svg{width:22px;height:22px;fill:#ff2d55;stroke:#ff2d55;stroke-width:1.7}.fan-complete-vote:hover .fan-complete-arrow,.fan-complete-vote:focus-visible .fan-complete-arrow{stroke:#302333}

/* Sign-in surfaces share one quiet, premium visual system. */
.auth-host{min-height:min(620px,67svh);display:grid;place-items:center;padding-top:24px;padding-bottom:34px}
.auth-card.login-form{position:relative;width:min(100%,520px);max-width:none;margin:0;padding:34px 34px 30px;border-radius:31px;overflow:hidden;background:rgba(255,255,255,.94);border:1px solid rgba(77,55,67,.11);box-shadow:0 24px 70px rgba(55,32,47,.085);gap:0}
.auth-accent{position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,#f1c927,#ec8930,#bd354d,#75429b,#3173b4,#4e8b49);opacity:.78}
.auth-head{display:flex;align-items:center;gap:16px;margin-bottom:12px}.auth-head h2{margin:0!important;font-size:31px!important;letter-spacing:-.045em!important}.auth-kicker{margin:0 0 5px!important;color:#9b8278!important;font-size:10px!important;font-weight:800;letter-spacing:.13em;text-transform:uppercase}
.auth-mark{width:54px;height:54px;display:grid;place-items:center;flex:none;border-radius:18px;background:linear-gradient(145deg,#fff6de,#f5e5df 56%,#ece5f5);color:#744d4f;box-shadow:inset 0 0 0 1px rgba(103,72,72,.08)}.auth-mark svg{width:26px;height:26px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.auth-copy{margin:0 0 25px!important;color:#8a777f!important;font-size:14px!important;line-height:1.55!important;padding-left:70px}
.auth-fields{display:grid;gap:15px}.auth-field{margin:0!important;color:#6d5a64;font-size:12px;font-weight:700}.auth-field>span:first-child{display:block;margin:0 0 7px 2px}.auth-input-shell{display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:10px;width:100%;min-height:54px;padding:0 14px;border:1px solid #ded6db;border-radius:16px;background:#fbfaf9;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.auth-input-shell:focus-within{border-color:#9b7d8b;background:#fff;box-shadow:0 0 0 4px rgba(122,82,102,.08)}.auth-input-shell>svg{width:20px;height:20px;fill:none;stroke:#9a858d;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.auth-input-shell input{width:100%!important;min-height:52px!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;outline:0!important;color:#2f2430;font-size:16px}
.auth-submit{width:100%;min-height:52px;margin-top:22px!important;display:flex;align-items:center;justify-content:center;gap:10px;border-radius:16px!important;align-self:stretch!important}.auth-submit svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;transition:transform .22s ease}.auth-submit:hover svg{transform:translateX(2px)}.auth-status{min-height:0;margin:10px 2px 0!important;padding:0!important;color:#a04444;font-size:13px!important;line-height:1.45}.auth-status:empty{margin:0!important}
.auth-card.auth-error{animation:auth-shake .34s ease}@keyframes auth-shake{0%,100%{transform:none}25%{transform:translateX(-5px)}50%{transform:translateX(4px)}75%{transform:translateX(-2px)}}

@media(max-width:800px){.experience-grid{grid-template-columns:1fr}.experience-card{min-height:136px}.auth-host{min-height:58svh}}
@media(max-width:540px){.experiences-section{padding-left:19px!important;padding-right:19px!important}.experience-grid{gap:11px;margin-top:26px}.experience-card{grid-template-columns:52px minmax(0,1fr) 32px;gap:14px;min-height:122px;padding:18px;border-radius:22px}.experience-icon{width:52px;height:52px;border-radius:17px}.experience-icon svg{width:23px;height:23px}.experience-copy small{font-size:9px;margin-bottom:5px}.experience-card h3{font-size:22px}.experience-card p{font-size:13px;margin-top:6px}.experience-open{width:32px;height:32px}.auth-host{padding:12px 0 28px;min-height:56svh}.auth-card.login-form{padding:27px 20px 23px;border-radius:25px}.auth-head{gap:13px}.auth-mark{width:48px;height:48px;border-radius:16px}.auth-head h2{font-size:27px!important}.auth-copy{padding-left:0;margin-bottom:22px!important}.fan-complete-vote{grid-template-columns:52px minmax(0,1fr) 48px}}
@media(prefers-reduced-motion:reduce){.experience-icon svg,.auth-card.auth-error{animation:none!important}.auth-submit svg{transition:none}}


/* v23 — direct tabbed fan voting and quieter sign-in cards */
.fan-browser{min-width:0}
.fan-browser-controls{display:flex;align-items:center;gap:12px;margin:8px 0 18px;min-width:0}
.fan-tabs-wrap{min-width:0;flex:1;overflow:hidden}
.fan-category-tabs{display:flex;align-items:center;gap:8px;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:3px 2px 5px;scroll-snap-type:x proximity}
.fan-category-tabs::-webkit-scrollbar{display:none}
.fan-category-tabs button{appearance:none;display:inline-flex;align-items:center;gap:7px;flex:0 0 auto;scroll-snap-align:start;min-height:42px;padding:9px 15px;border:1px solid #ded7da;border-radius:999px;background:#fff;color:#6f6268;font:700 13px/1 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;cursor:pointer;white-space:nowrap;transition:background .2s ease,color .2s ease,border-color .2s ease,box-shadow .2s ease}
.fan-category-tabs button:hover{border-color:#c9bcc2;background:#fffdfc}
.fan-category-tabs button.active{border-color:#2f2530;background:#2f2530;color:#fff;box-shadow:0 7px 18px rgba(45,35,46,.12)}
.fan-tab-state{width:17px;height:17px;display:grid;place-items:center;border-radius:50%;font-size:10px;font-weight:900;background:transparent;color:#fff;transition:background .2s ease,color .2s ease}
.fan-category-tabs button.is-complete:not(.active) .fan-tab-state{background:#ff2d55;color:#fff}
.fan-category-tabs button:not(.is-complete) .fan-tab-state:empty{display:none}
.fan-browser-meta{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin:0 2px 16px}.fan-browser-meta strong{font-size:19px;letter-spacing:-.025em}.fan-browser-meta .soft{font-size:12px}
.fan-search{position:relative;flex:0 0 auto;width:44px;height:44px;border:1px solid #ded7da;border-radius:22px;background:#fff;overflow:hidden;transition:width .3s cubic-bezier(.22,1,.36,1),border-color .2s ease,box-shadow .2s ease}
.fan-search:focus-within{border-color:#a88f99;box-shadow:0 0 0 4px rgba(122,82,102,.07)}
.fan-search.is-open{width:min(310px,38vw)}
.fan-search-toggle,.fan-search-close{position:absolute;top:0;width:44px;height:42px;display:grid;place-items:center;border:0;background:transparent;color:#6f6268;cursor:pointer;z-index:2}
.fan-search-toggle{left:0}.fan-search-close{right:0;font:400 26px/1 Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;opacity:0;pointer-events:none;transform:scale(.8);transition:opacity .18s ease,transform .22s ease}
.fan-search-toggle svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.fan-search input{position:absolute;inset:0 42px 0 42px;width:calc(100% - 84px)!important;min-height:42px!important;padding:0!important;margin:0!important;border:0!important;background:transparent!important;box-shadow:none!important;outline:0!important;opacity:0;pointer-events:none;font-size:14px!important;color:var(--ink)}
.fan-search.is-open input{opacity:1;pointer-events:auto}.fan-search.is-open .fan-search-close{opacity:1;pointer-events:auto;transform:none}.fan-search.is-open .fan-search-toggle{color:#3e3038}
.fan-candidate-grid .candidate-card[hidden]{display:none!important}
.fan-candidate-category{display:inline-flex;align-items:center;min-height:24px;padding:4px 9px;margin-bottom:9px;border-radius:999px;background:#f5f1ef;color:#876f79;font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase}
.fan-search-empty{margin-top:12px}
/* Keep candidate cards still; only controls communicate interaction. */
.fan-vote-portrait,.fan-vote-portrait:hover,.fan-vote-portrait:active{transform:none!important;filter:none!important}
/* Sign-in: title + fields only, without decorative top bar or explanatory copy. */
.auth-accent,.auth-kicker,.auth-copy{display:none!important}
.auth-card.login-form{overflow:visible;padding-top:31px}
.auth-head{margin-bottom:25px!important;align-items:center}.auth-head h2{margin:0!important}.auth-mark{background:#f7f3ef;box-shadow:inset 0 0 0 1px rgba(103,72,72,.07)}
@media(max-width:650px){.fan-browser-controls{gap:8px;margin-top:2px}.fan-category-tabs{gap:7px}.fan-category-tabs button{min-height:40px;padding:8px 13px;font-size:12px}.fan-search{width:40px;height:40px;border-radius:20px}.fan-search-toggle,.fan-search-close{width:40px;height:38px}.fan-search.is-open{width:min(65vw,270px)}.fan-search input{inset:0 38px 0 38px;width:calc(100% - 76px)!important}.fan-browser-meta{margin-bottom:12px}.fan-browser-meta strong{font-size:17px}.fan-candidate-category{margin-bottom:7px}.auth-card.login-form{padding-top:25px}.auth-head{margin-bottom:22px!important}}
@media(max-width:420px){.fan-search.is-open{width:min(70vw,250px)}.fan-browser-controls{align-items:flex-start}.fan-tabs-wrap{padding-top:0}.fan-category-tabs button{padding-left:12px;padding-right:12px}}
@media(prefers-reduced-motion:reduce){.fan-category-tabs button,.fan-tab-state,.fan-search,.fan-search-close{transition:none!important}}

.fan-search input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;display:none}

/* 2026-09-15 v24 — immersive live presentation -------------------------- */
body[data-page=live]{background:#fbf8f5}
body[data-page=live] .header{
  position:fixed;z-index:80;top:max(12px,env(safe-area-inset-top));left:50%;
  width:calc(100vw - 28px);max-width:1080px;min-height:72px;
  padding:10px 18px;transform:translateX(-50%);border:1px solid rgba(64,42,47,.11);
  border-radius:25px;background:rgba(255,253,250,.9);box-shadow:0 12px 42px rgba(38,24,30,.06);
  backdrop-filter:blur(24px) saturate(1.08);-webkit-backdrop-filter:blur(24px) saturate(1.08);
  transition:width .72s cubic-bezier(.22,1,.36,1),max-width .72s cubic-bezier(.22,1,.36,1),min-height .6s cubic-bezier(.22,1,.36,1),padding .6s cubic-bezier(.22,1,.36,1),border-radius .6s cubic-bezier(.22,1,.36,1),box-shadow .6s ease,background .6s ease
}
body[data-page=live] .header-actions{display:none!important}
body[data-page=live] .header-leading{width:100%;justify-content:flex-start;gap:12px}
body[data-page=live] .header .brand-logo,body[data-page=live] .header .brand-name,body[data-page=live] .header .brand-name span,body[data-page=live] .ios-back span{transition:all .58s cubic-bezier(.22,1,.36,1)}
body[data-page=live].live-immersive .header{width:min(440px,calc(100vw - 26px));max-width:440px;min-height:58px;padding:7px 13px;border-radius:999px;background:rgba(255,253,250,.94);box-shadow:0 16px 48px rgba(39,22,31,.1)}
body[data-page=live].live-immersive .header .brand-logo{width:39px;height:43px}
body[data-page=live].live-immersive .header .brand-name{font-size:16px;letter-spacing:.065em}
body[data-page=live].live-immersive .header .brand-name span{font-size:8px;margin-top:3px;letter-spacing:.2em}
body[data-page=live].live-immersive .ios-back{gap:0;padding-right:0}
body[data-page=live].live-immersive .ios-back span{max-width:0;opacity:0;overflow:hidden;transform:translateX(-5px)}
body[data-page=live] main{min-height:100svh;padding-top:96px}
body[data-page=live] .live-workspace{padding-top:14px;padding-bottom:20px;min-height:calc(100svh - 96px)}
body[data-page=live] .closing-footer{display:none!important}
body[data-page=live].live-immersive .live-stage{min-height:calc(100dvh - 132px)}
html:fullscreen body[data-page=live],html:-webkit-full-screen body[data-page=live]{background:#fbf8f5}
html:fullscreen body[data-page=live] main,html:-webkit-full-screen body[data-page=live] main{min-height:100dvh}

/* Spectral progress is only visible while at least one judge is pending. */
.live-spectrum-loader{position:absolute;z-index:8;left:24px;right:24px;top:0;height:3px;border-radius:0 0 999px 999px;overflow:hidden;opacity:0;transform:translateY(-1px);transition:opacity .45s ease}
.live-spectrum-loader i{position:absolute;inset:0;width:240%;background:linear-gradient(90deg,#f5d52e 0%,#f08b2f 16%,#c83e52 33%,#8d45a0 50%,#3a78bb 67%,#4b914f 84%,#f5d52e 100%);transform:translate3d(-48%,0,0);will-change:transform}
.live-stage.scores-pending .live-spectrum-loader{opacity:.95}
.live-stage.scores-pending .live-spectrum-loader i{animation:live-spectrum-flow 4.2s linear infinite}
.live-stage.scores-pending:before{animation:live-ambient-breathe 8s ease-in-out infinite;will-change:transform,opacity}
@keyframes live-spectrum-flow{to{transform:translate3d(-6%,0,0)}}
@keyframes live-ambient-breathe{0%,100%{transform:scale(1) rotate(0);opacity:.78}50%{transform:scale(1.045) rotate(1.4deg);opacity:1}}

/* Premium score arrival: a tiny number travels to the portrait, then the
   portrait gets one restrained spectral pulse. */
.live-score-flight{position:absolute;z-index:20;display:grid;place-items:center;min-width:42px;height:42px;padding:0 10px;border-radius:999px;background:rgba(30,25,30,.9);color:#fff;font-size:18px;font-weight:850;letter-spacing:-.035em;font-variant-numeric:tabular-nums;box-shadow:0 10px 30px rgba(30,20,28,.2);pointer-events:none;transform:translate(-50%,-50%);animation:live-score-flight .76s cubic-bezier(.2,.78,.28,1) forwards}
@keyframes live-score-flight{0%{opacity:0;transform:translate(-50%,-50%) scale(.7);filter:blur(3px)}18%{opacity:1;filter:blur(0)}72%{opacity:.9;transform:translate(calc(-50% + var(--fly-x)),calc(-50% + var(--fly-y))) scale(.9)}100%{opacity:0;transform:translate(calc(-50% + var(--fly-x)),calc(-50% + var(--fly-y))) scale(.54)}}
.live-candidate-column .live-portrait.score-kiss{animation:live-portrait-kiss .68s cubic-bezier(.22,1,.36,1)}
.live-candidate-column .live-portrait.score-kiss>img{animation:live-portrait-image-kiss .68s cubic-bezier(.22,1,.36,1)}
@keyframes live-portrait-kiss{0%,100%{box-shadow:0 0 0 0 rgba(222,139,54,0)}38%{box-shadow:0 0 0 3px rgba(245,193,57,.38),0 0 0 7px rgba(151,67,146,.1),0 24px 54px rgba(75,37,54,.12)}}
@keyframes live-portrait-image-kiss{0%,100%{transform:scale(1)}42%{transform:scale(1.012)}}
.live-judge-scores .anonymous-score.score-arrived strong{animation:live-number-enter .48s cubic-bezier(.18,.78,.25,1)}
@keyframes live-number-enter{0%{opacity:0;transform:translateY(9px) scale(.9);filter:blur(4px)}60%{opacity:1;filter:blur(0)}100%{transform:none}}
.live-average-value strong.score-refresh{animation:live-average-lift .42s cubic-bezier(.22,1,.36,1)!important}
@keyframes live-average-lift{0%{opacity:.68;transform:translateY(5px)}100%{opacity:1;transform:none}}

@media(max-width:680px){
 body[data-page=live] .header{width:calc(100vw - 20px);top:max(8px,env(safe-area-inset-top));min-height:64px;padding:8px 12px}
 body[data-page=live].live-immersive .header{width:min(350px,calc(100vw - 18px));min-height:54px;padding:6px 10px}
 body[data-page=live].live-immersive .header .brand-logo{width:35px;height:39px}
 body[data-page=live].live-immersive .header .brand-name{font-size:14px}
 body[data-page=live] main{padding-top:82px}
 body[data-page=live] .live-workspace{padding-top:8px;min-height:calc(100svh - 82px)}
 body[data-page=live].live-immersive .live-stage{min-height:calc(100dvh - 106px)}
 .live-spectrum-loader{left:14px;right:14px}
 .live-score-flight{min-width:36px;height:36px;font-size:15px;padding:0 8px}
}
@media(prefers-reduced-motion:reduce){
 body[data-page=live] .header,body[data-page=live] .header *,
 .live-stage.scores-pending .live-spectrum-loader i,.live-stage.scores-pending:before,
 .live-score-flight,.live-candidate-column .live-portrait.score-kiss,
 .live-candidate-column .live-portrait.score-kiss>img,.live-judge-scores .anonymous-score.score-arrived strong,
 .live-average-value strong.score-refresh{animation:none!important;transition:none!important}
 .live-score-flight{display:none!important}
}

/* 2026-09-15 v25 — one-click live presentation + judge mobile scoring polish */
body[data-page=live] .header-leading{
  display:grid;grid-template-columns:46px minmax(0,1fr) 46px;align-items:center;
  width:100%;gap:8px;position:relative
}
body[data-page=live] .header-leading .ios-back{grid-column:1;justify-self:start;z-index:2}
body[data-page=live] .header-leading .brand{
  grid-column:2;justify-self:center;justify-content:center;min-width:0;max-width:100%;
  text-align:left
}
body[data-page=live].live-immersive .header-leading{grid-template-columns:38px minmax(0,1fr) 38px}
body[data-page=live].live-immersive .header .brand{gap:9px}
body[data-page=live].live-immersive .header .brand-name{white-space:nowrap}

/* The live experience card keeps its regular visual language, while the click
   itself is used as the browser gesture that enters fullscreen presentation. */
#live-experience-card:active .experience-icon{transform:scale(.96)}

/* Judge: make the current candidate the visual anchor without forcing the
   score controls off-screen. The score field is a text/decimal keypad target,
   avoiding native number steppers and clipped decimal glyphs. */
.judge-current-card{transition:opacity .28s ease,transform .34s cubic-bezier(.22,1,.36,1)}
.judge-current-card .judge-current{background:#f5f3f1}
.judge-current-card .candidate-info{display:flex;flex-direction:column;justify-content:center}
.judge-candidate-kicker{
  display:inline-flex;align-items:center;width:max-content;max-width:100%;margin-bottom:9px;
  font-size:11px;font-weight:800;line-height:1.2;letter-spacing:.075em;text-transform:uppercase;
  color:#8b756c;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.score-number-wrap{
  align-items:center!important;gap:12px!important;padding:8px 0 5px!important;
  min-width:0
}
.score-number-wrap input{
  -webkit-appearance:none!important;appearance:none!important;
  width:min(196px,72vw)!important;min-width:0!important;min-height:102px!important;
  padding:8px 12px 10px!important;border:1px solid #e4dfe2!important;border-radius:22px!important;
  background:#fbfaf9!important;box-shadow:inset 0 1px 0 rgba(255,255,255,.8)!important;
  text-align:center;font-size:72px!important;line-height:1!important;font-weight:800!important;
  letter-spacing:-.055em!important;font-variant-numeric:tabular-nums lining-nums;color:#231d23;
  caret-color:#8c4f67;transition:border-color .22s ease,box-shadow .22s ease,background-color .22s ease,transform .18s ease
}
.score-number-wrap input::placeholder{color:#c6bdc2;opacity:.72}
.score-number-wrap input:focus{
  border-color:#9f6a7c!important;background:#fff!important;
  box-shadow:0 0 0 4px rgba(128,74,101,.09),0 12px 28px rgba(61,35,49,.06)!important;
  outline:none!important
}
.score-number-wrap span{flex:none;font-size:18px!important;font-weight:650;color:#9a8c93!important}
.judge-score-panel{transition:box-shadow .28s ease,border-color .28s ease}
.judge-score-panel:focus-within{border-color:rgba(114,75,93,.2);box-shadow:0 18px 54px rgba(55,34,45,.07)}
.score-quick button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}

@media(max-width:700px){
  .judge-workspace-compact{padding:18px 14px 44px!important}
  .judge-workspace-compact .section-bar{margin-bottom:8px;align-items:center;gap:10px}
  .judge-workspace-compact .section-bar>div{min-width:0;flex:1}
  .judge-workspace-compact .compact-heading{margin-top:4px;font-size:clamp(22px,6.4vw,29px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .judge-workspace-compact .section-bar .secondary{min-height:40px;padding:8px 13px;font-size:12px}
  .judge-stage-note{min-height:34px;margin:0 0 9px;font-size:11px;gap:8px}
  .score-layout-simple{gap:12px!important}
  #judge-selected{min-width:0}
  .judge-current-card{
    display:grid!important;grid-template-columns:minmax(148px,46vw) minmax(0,1fr)!important;
    align-items:stretch!important;max-width:none!important;margin:0!important;border-radius:24px!important;
    box-shadow:0 14px 36px rgba(58,35,43,.055)
  }
  .judge-current-card .judge-current{
    width:100%!important;max-width:none!important;height:100%!important;min-height:220px!important;
    aspect-ratio:3/4!important;border-radius:0!important
  }
  .judge-current-card .judge-current>img{object-fit:contain!important;background:#f5f3f1}
  .judge-current-card .candidate-number{top:12px;left:12px;min-width:32px;height:32px;font-size:12px}
  .judge-current-card .candidate-info{padding:17px 14px!important;min-width:0}
  .judge-current-card .candidate-info h2{
    margin:0!important;font-size:clamp(24px,7vw,34px)!important;line-height:1.02!important;
    letter-spacing:-.052em!important;overflow-wrap:anywhere
  }
  .judge-current-card .candidate-info>p{display:-webkit-box;margin-top:10px;font-size:12px!important;line-height:1.45!important;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
  .judge-candidate-kicker{margin-bottom:7px;font-size:9px}
  .judge-score-panel{padding:17px 16px 16px!important;border-radius:24px!important}
  .single-score-control{gap:9px!important}
  .single-score-control>label{font-size:10px;letter-spacing:.08em}
  .score-number-wrap{padding:1px 0 2px!important;gap:9px!important}
  .score-number-wrap input{
    width:min(190px,60vw)!important;min-height:84px!important;padding:6px 10px 8px!important;
    border-radius:19px!important;font-size:clamp(56px,17vw,72px)!important;line-height:1!important
  }
  .score-number-wrap span{font-size:15px!important}
  .score-quick{grid-template-columns:repeat(5,minmax(0,1fr))!important;gap:6px!important}
  .score-quick button{min-height:42px!important;padding:6px 2px;border-radius:12px!important;font-size:14px}
  #score-weight-copy{margin:1px 0 0;font-size:11px;line-height:1.4;text-align:center}
  #score-version{margin:8px 0 10px!important;font-size:11px;line-height:1.35;text-align:center}
  #score-submit{min-height:50px;border-radius:15px;font-size:15px}
  #score-message{min-height:18px;margin-top:7px;text-align:center;font-size:12px}
}
@media(max-width:430px){
  body[data-page=live] .header-leading{grid-template-columns:34px minmax(0,1fr) 34px}
  body[data-page=live].live-immersive .header-leading{grid-template-columns:30px minmax(0,1fr) 30px}
  body[data-page=live].live-immersive .header .brand{gap:7px}
  body[data-page=live].live-immersive .header .brand-logo{width:32px;height:35px}
  body[data-page=live].live-immersive .header .brand-name{font-size:13px}
  body[data-page=live].live-immersive .header .brand-name span{font-size:7px;margin-top:2px}
  .judge-current-card{grid-template-columns:minmax(142px,47vw) minmax(0,1fr)!important}
  .judge-current-card .judge-current{min-height:206px!important}
  .judge-current-card .candidate-info{padding:14px 12px!important}
  .judge-current-card .candidate-info h2{font-size:clamp(22px,7vw,29px)!important}
  .judge-current-card .candidate-info>p{-webkit-line-clamp:2;font-size:11px!important}
  .score-number-wrap input{width:min(178px,61vw)!important;min-height:80px!important}
}
@media(max-width:350px){
  .judge-current-card{grid-template-columns:138px minmax(0,1fr)!important}
  .judge-current-card .candidate-info>p{display:none}
  .score-quick button{font-size:13px}
}
@media(prefers-reduced-motion:reduce){
  .judge-current-card,.score-number-wrap input,.judge-score-panel,#live-experience-card:active .experience-icon{transition:none!important}
}
body[data-page=live].live-from-experience main{animation:live-page-arrive .52s cubic-bezier(.22,1,.36,1) both}
@keyframes live-page-arrive{from{opacity:.25;transform:scale(.992) translateY(8px);filter:blur(3px)}to{opacity:1;transform:none;filter:blur(0)}}
@media(prefers-reduced-motion:reduce){body[data-page=live].live-from-experience main{animation:none!important}}

/* 2026-09-15 v26 — polished live candidate handoff ------------------------ */
body[data-page=live] .ios-back{
  color:#007aff!important;
  -webkit-tap-highlight-color:transparent;
}
body[data-page=live] .ios-back svg{stroke:currentColor!important}

/* A soft glass frame keeps the portrait readable while borrowing the
   candidate image as a restrained, blurred backdrop. The duplicate image is
   decorative and only changes when the moderator changes candidates. */
.live-portrait-frame{
  position:relative;isolation:isolate;width:min(100%,600px);padding:12px;
  border-radius:34px;background:rgba(255,255,255,.38);
  border:1px solid rgba(255,255,255,.62);
  box-shadow:0 24px 62px rgba(44,28,31,.11),inset 0 1px 0 rgba(255,255,255,.82);
  backdrop-filter:blur(20px) saturate(1.05);-webkit-backdrop-filter:blur(20px) saturate(1.05);
  overflow:hidden
}
.live-portrait-backdrop{position:absolute;z-index:-2;inset:-8%;overflow:hidden;pointer-events:none}
.live-portrait-backdrop img{
  width:100%;height:100%;object-fit:cover;display:block;opacity:.24;
  filter:blur(34px) saturate(.92) contrast(.98);transform:scale(1.14)
}
.live-portrait-frame:after{
  content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(145deg,rgba(255,255,255,.58),rgba(255,250,246,.18));
  pointer-events:none
}
.live-candidate-column .live-portrait-frame .live-portrait{
  width:100%;height:min(73vh,760px);max-height:none!important;border-radius:24px;
  box-shadow:0 18px 46px rgba(36,24,24,.10),0 0 0 1px rgba(255,255,255,.68) inset
}
.live-candidate-column .candidate-number{
  top:20px;left:20px;min-width:50px;height:50px;padding:0 11px;
  border-radius:999px;font-size:17px;font-weight:850;letter-spacing:-.025em;
  background:rgba(255,255,255,.94);box-shadow:0 9px 26px rgba(27,20,24,.12);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)
}

/* Candidate changes now overlap the outgoing and incoming stage for a short
   cross-slide instead of replacing the DOM in a single frame. */
.live-stage-grid.live-stage-incoming,.live-stage-grid.live-stage-outgoing{
  will-change:transform,opacity,filter;
  transition:opacity .52s cubic-bezier(.22,1,.36,1),transform .58s cubic-bezier(.22,1,.36,1),filter .52s ease
}
.live-stage-grid.live-stage-incoming{opacity:0;filter:blur(7px)}
.live-stage-grid.live-stage-incoming.from-next{transform:translate3d(24px,0,0) scale(.992)}
.live-stage-grid.live-stage-incoming.from-prev{transform:translate3d(-24px,0,0) scale(.992)}
.live-stage-grid.live-stage-incoming.transition-ready{opacity:1;filter:blur(0);transform:translate3d(0,0,0) scale(1)}
.live-stage-grid.live-stage-outgoing{opacity:1;filter:blur(0);transform:translate3d(0,0,0) scale(1)}
.live-stage-grid.live-stage-outgoing.to-prev.transition-ready{opacity:0;filter:blur(5px);transform:translate3d(-18px,0,0) scale(.994)}
.live-stage-grid.live-stage-outgoing.to-next.transition-ready{opacity:0;filter:blur(5px);transform:translate3d(18px,0,0) scale(.994)}

/* Keep the stage height stable during a handoff so fullscreen presentation
   does not jump when the two portraits overlap briefly. */
.live-stage{contain:layout paint style}
.live-stage-grid.is-current{position:relative;z-index:3}

@media(max-width:900px){
 .live-portrait-frame{width:100%;max-width:460px;padding:9px;border-radius:28px}
 .live-candidate-column .live-portrait-frame .live-portrait{height:auto}
 .live-candidate-column .candidate-number{min-width:44px;height:44px;font-size:15px;top:15px;left:15px}
}
@media(max-width:650px){
 .live-portrait-frame{width:112px;padding:5px;border-radius:20px}
 .live-candidate-column .live-portrait-frame .live-portrait{width:100%;height:auto;border-radius:15px}
 .live-portrait-backdrop{inset:-14%}.live-portrait-backdrop img{filter:blur(20px);opacity:.2}
 .live-candidate-column .candidate-number{top:9px;left:9px;min-width:34px;height:34px;padding:0 8px;font-size:13px}
 .live-stage-grid.live-stage-incoming.from-next{transform:translate3d(14px,0,0) scale(.994)}
 .live-stage-grid.live-stage-incoming.from-prev{transform:translate3d(-14px,0,0) scale(.994)}
 .live-stage-grid.live-stage-outgoing.to-prev.transition-ready{transform:translate3d(-10px,0,0) scale(.996)}
 .live-stage-grid.live-stage-outgoing.to-next.transition-ready{transform:translate3d(10px,0,0) scale(.996)}
}
@media(max-width:420px){
 .live-portrait-frame{width:96px}
 .live-candidate-column .candidate-number{min-width:32px;height:32px;font-size:12px}
}
@media(prefers-reduced-motion:reduce){
 .live-stage-grid.live-stage-incoming,.live-stage-grid.live-stage-outgoing{transition:none!important;filter:none!important;transform:none!important}
 .live-stage-grid.live-stage-incoming{opacity:1!important}.live-stage-grid.live-stage-outgoing{display:none!important}
}

/* v27 — synchronized stage motion, standby mode, safer account actions */
.menu-logout{appearance:none;width:100%;border:0;border-top:1px solid var(--line);background:transparent;color:#d92d20;text-align:left;font:inherit;cursor:pointer}
.menu-logout:hover{background:rgba(217,45,32,.045)}
.menu-logout-icon{display:grid;place-items:center;width:24px;height:24px;color:#d92d20}
.menu-logout-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.menu-logout>span:nth-child(2){font-size:19px;font-weight:600;color:#d92d20}
.menu-logout>span:last-child{color:#d92d20}

.smooth-candidate-host,.moderator-current{display:grid;position:relative;overflow:hidden}
.smooth-swap-item{grid-area:1/1;min-width:0;transition:opacity .42s cubic-bezier(.22,1,.36,1),transform .46s cubic-bezier(.22,1,.36,1),filter .4s ease;will-change:opacity,transform,filter}
.smooth-swap-item.is-incoming.from-next{opacity:0;transform:translate3d(26px,0,0) scale(.992);filter:blur(3px)}
.smooth-swap-item.is-incoming.from-prev{opacity:0;transform:translate3d(-26px,0,0) scale(.992);filter:blur(3px)}
.smooth-swap-item.is-incoming.is-moving{opacity:1;transform:none}
.smooth-swap-item.is-outgoing{pointer-events:none;z-index:2}
.smooth-swap-item.is-outgoing.to-prev.is-moving{opacity:0;transform:translate3d(-20px,0,0) scale(.995);filter:blur(2px)}
.smooth-swap-item.is-outgoing.to-next.is-moving{opacity:0;transform:translate3d(20px,0,0) scale(.995);filter:blur(2px)}

.sync-loading{min-height:140px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;text-align:center;color:var(--muted);font-size:14px;font-weight:650}
.sync-dots{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:42px;height:18px}
.sync-dots i{display:block;width:7px;height:7px;border-radius:50%;background:#7d6b62;opacity:.28;animation:sync-dot 1.05s ease-in-out infinite}
.sync-dots i:nth-child(2){animation-delay:.14s}.sync-dots i:nth-child(3){animation-delay:.28s}
.sync-dots.compact{gap:4px;min-width:30px}.sync-dots.compact i{width:5px;height:5px}
@keyframes sync-dot{0%,60%,100%{opacity:.22;transform:translateY(0) scale(.9)}30%{opacity:1;transform:translateY(-3px) scale(1)}}

.judge-round-bar{margin-bottom:12px!important}
.judge-sync-wait{padding:18px!important;min-height:210px;display:grid;place-items:center;background:linear-gradient(145deg,#fff,#fcfaf8);box-shadow:none}
.judge-sync-wait .sync-loading{min-height:160px}
.judge-submit{display:flex!important;align-items:center;justify-content:center;gap:10px;min-height:54px}
.judge-submit svg{width:19px;height:19px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;transition:transform .25s var(--ease)}
.judge-submit:not(:disabled):active svg{transform:translate3d(3px,-2px,0) rotate(-3deg)}
.judge-score-panel .status-message:empty{display:none}

.moderator-stage-settings{grid-template-columns:minmax(220px,.8fr) minmax(310px,1.2fr) auto!important;align-items:end!important}
.moderator-pause-button{appearance:none;min-height:48px;padding:10px 16px;border:1px solid #dfd7d1;border-radius:15px;background:rgba(255,255,255,.82);box-shadow:0 8px 25px rgba(46,31,24,.045);display:inline-flex;align-items:center;justify-content:center;gap:9px;color:#4d403a;font:inherit;font-size:13px;font-weight:750;cursor:pointer;transition:transform .22s var(--ease),box-shadow .22s var(--ease),border-color .22s var(--ease),background .22s var(--ease)}
.moderator-pause-button:hover{border-color:#c9bbb1;box-shadow:0 11px 30px rgba(46,31,24,.075)}
.moderator-pause-button:active{transform:scale(.975)}
.moderator-pause-button.is-paused{color:#a3342f;border-color:#e5beb9;background:#fff7f6}
.pause-symbol{display:flex;align-items:center;justify-content:center;gap:3px;width:18px;height:18px}
.pause-symbol i{display:block;width:3px;height:11px;border-radius:3px;background:currentColor;transition:transform .25s var(--ease)}
.moderator-pause-button.is-paused .pause-symbol{gap:0}
.moderator-pause-button.is-paused .pause-symbol i:first-child{width:0;height:0;background:transparent;border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:9px solid currentColor;border-radius:0}
.moderator-pause-button.is-paused .pause-symbol i:last-child{display:none}

.moderator-controls{display:grid;grid-template-columns:minmax(132px,1fr) auto minmax(132px,1fr);align-items:center;gap:12px}
.moderator-nav{position:relative;overflow:hidden;min-height:58px;border:1px solid rgba(71,54,45,.12)!important;border-radius:18px!important;background:linear-gradient(145deg,rgba(255,255,255,.96),rgba(249,246,243,.9))!important;box-shadow:0 12px 34px rgba(52,35,27,.055),inset 0 1px 0 rgba(255,255,255,.9)!important;color:#2f2926!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:10px!important;padding:9px 16px!important;transition:transform .22s var(--ease),box-shadow .25s var(--ease),border-color .25s var(--ease)!important}
.moderator-nav:before{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 18%,rgba(255,255,255,.72) 48%,transparent 78%);transform:translateX(-130%);transition:transform .65s var(--ease);pointer-events:none}
.moderator-nav:not(:disabled):hover:before{transform:translateX(130%)}
.moderator-nav:not(:disabled):hover{border-color:rgba(71,54,45,.2)!important;box-shadow:0 15px 40px rgba(52,35,27,.085)!important}
.moderator-nav:not(:disabled):active{transform:scale(.975)}
.moderator-nav:disabled{opacity:.34!important;box-shadow:none!important}
.moderator-nav small{font-size:12px!important;font-weight:760!important;letter-spacing:.01em}
.moderator-nav-icon{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:rgba(45,38,34,.055);transition:transform .24s var(--ease),background .24s var(--ease)}
.moderator-nav-icon svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.moderator-nav.previous:not(:disabled):hover .moderator-nav-icon{transform:translateX(-2px)}
.moderator-nav.next:not(:disabled):hover .moderator-nav-icon{transform:translateX(2px)}
.moderator-position{min-width:62px;text-align:center;font-variant-numeric:tabular-nums;font-size:12px;font-weight:750;color:#76665e}
.moderator-position.is-syncing{display:grid;place-items:center}
.moderator-stage-wait{min-height:230px;display:grid;place-items:center}
.moderator-live-paused{display:inline-flex;align-items:center;gap:7px;width:max-content;margin-bottom:8px;font-size:11px;font-weight:780;color:#a3342f;background:#fff4f2;border:1px solid #f0d0cc;border-radius:999px;padding:6px 9px}
.moderator-live-paused i{width:7px;height:7px;border-radius:50%;background:#d54a42;box-shadow:0 0 0 4px rgba(213,74,66,.09);animation:standby-status 1.6s ease-in-out infinite}
@keyframes standby-status{50%{opacity:.45;box-shadow:0 0 0 8px rgba(213,74,66,.025)}}

.moderator-standby-manager{max-width:850px;margin-inline:auto}
.moderator-standby-form{max-width:650px}
.standby-mode-choice{grid-template-columns:repeat(3,1fr)!important}
.standby-image-picker{display:grid;gap:9px;padding:14px;border:1px dashed #d9cec7;border-radius:18px;background:#fcfaf8;cursor:pointer}
.standby-image-picker input[type=file]{margin:0!important}
.standby-image-preview{min-height:150px;border-radius:14px;background:#f2efec;display:grid;place-items:center;overflow:hidden;text-align:center;color:var(--muted);position:relative}
.standby-image-preview img{width:100%;height:210px;object-fit:contain;background:#eeeae6;display:block}
.standby-image-preview span{position:absolute;left:10px;bottom:10px;max-width:calc(100% - 20px);padding:5px 8px;border-radius:8px;background:rgba(255,255,255,.88);backdrop-filter:blur(10px);font-size:11px;color:#51443f;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.standby-save{align-self:flex-start!important}

.live-stage.is-standby{display:grid;place-items:center;background:linear-gradient(145deg,#fffdfb,#f8f4f0)}
.live-standby-shell{position:relative;isolation:isolate;width:min(900px,92%);min-height:min(620px,72vh);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:26px;text-align:center;padding:clamp(24px,5vw,64px);overflow:hidden}
.standby-halo{position:absolute;z-index:-1;width:min(720px,90vw);aspect-ratio:1;border-radius:50%;background:conic-gradient(from 40deg,rgba(243,184,38,.11),rgba(225,98,48,.08),rgba(130,72,150,.08),rgba(39,106,176,.08),rgba(67,139,74,.07),rgba(243,184,38,.11));filter:blur(42px);animation:standby-halo-loop 10s linear infinite}
.live-standby-shell h2{font-size:clamp(34px,6vw,76px);line-height:1.02;letter-spacing:-.055em;max-width:850px;margin:0;color:#262124}
.live-standby-image{width:min(560px,80vw);max-height:52vh;display:grid;place-items:center;animation:standby-image-loop 5.8s ease-in-out infinite}
.live-standby-image img{max-width:100%;max-height:52vh;object-fit:contain;border-radius:24px;filter:drop-shadow(0 22px 42px rgba(49,32,23,.1))}
.standby-loader{display:flex;gap:7px;align-items:center;justify-content:center;height:22px}
.standby-loader span{width:7px;height:7px;border-radius:50%;background:#6f625c;opacity:.24;animation:sync-dot 1.05s ease-in-out infinite}
.standby-loader span:nth-child(2){animation-delay:.14s}.standby-loader span:nth-child(3){animation-delay:.28s}
@keyframes standby-halo-loop{to{transform:rotate(360deg)}}
@keyframes standby-image-loop{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-7px) scale(1.006)}}

body[data-page=live] .ios-back{color:#007aff!important}
body[data-page=live] .ios-back svg{stroke:#007aff!important}

@media(max-width:900px){.moderator-stage-settings{grid-template-columns:1fr 1fr!important}.moderator-pause-button{grid-column:1/-1;width:100%}.moderator-standby-manager{max-width:none}}
@media(max-width:650px){
 .smooth-swap-item.is-incoming.from-next{transform:translate3d(15px,0,0) scale(.994)}.smooth-swap-item.is-incoming.from-prev{transform:translate3d(-15px,0,0) scale(.994)}
 .judge-round-bar{margin-bottom:8px!important}.judge-sync-wait{min-height:190px;border-radius:22px!important}.judge-submit{min-height:52px;border-radius:15px!important}.judge-submit svg{width:18px;height:18px}
 .moderator-stage-settings{grid-template-columns:1fr!important}.moderator-pause-button{grid-column:auto}.moderator-controls{grid-template-columns:1fr auto 1fr;gap:8px}.moderator-nav{min-height:54px!important;border-radius:16px!important;padding:8px 10px!important}.moderator-nav-icon{width:28px;height:28px}.moderator-nav small{font-size:11px!important}.moderator-position{min-width:46px;font-size:11px}
 .standby-mode-choice{grid-template-columns:repeat(3,minmax(0,1fr))!important}.standby-mode-choice span{padding-inline:8px!important;font-size:12px!important}.standby-image-preview{min-height:120px}.standby-image-preview img{height:170px}
 .live-standby-shell{min-height:65vh;gap:20px;padding:24px 12px}.live-standby-shell h2{font-size:clamp(32px,10vw,48px)}.live-standby-image{width:min(88vw,480px)}
 .menu-logout>span:nth-child(2){font-size:18px}
}
@media(prefers-reduced-motion:reduce){.smooth-swap-item,.sync-dots i,.moderator-live-paused i,.standby-halo,.live-standby-image,.standby-loader span{animation:none!important;transition:none!important}.smooth-swap-item{transform:none!important;filter:none!important}.moderator-nav:before{display:none}}
.live-standby-mark{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.78);border:1px solid rgba(90,72,62,.12);box-shadow:0 14px 36px rgba(49,32,23,.07),inset 0 1px 0 rgba(255,255,255,.9);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);animation:standby-mark-loop 2.8s ease-in-out infinite}
.live-standby-mark svg{width:23px;height:23px;fill:none;stroke:#6e5e57;stroke-width:2;stroke-linecap:round}
@keyframes standby-mark-loop{50%{transform:scale(1.045);box-shadow:0 18px 44px rgba(49,32,23,.09),0 0 0 8px rgba(104,86,76,.03)}}
@media(prefers-reduced-motion:reduce){.live-standby-mark{animation:none!important}}

/* 2026-09-17 v28 — compact moderator controls + unified account access ----- */
.judge-submit{margin-top:18px!important}

/* Previous/Next need a clear touch target without looking like primary actions. */
.moderator-nav{
  background:#f0f0f2!important;
  border-color:#d9dade!important;
  box-shadow:0 8px 24px rgba(28,28,30,.055),inset 0 1px 0 rgba(255,255,255,.72)!important;
}
.moderator-nav:not(:disabled):hover{
  background:#e8e8eb!important;
  border-color:#c9cacf!important;
  box-shadow:0 11px 28px rgba(28,28,30,.075)!important;
}
.moderator-nav-icon{background:rgba(60,60,67,.075)}

/* The stage settings are two calm rows: round, then filter + pause. */
.moderator-stage-settings{
  grid-template-columns:minmax(220px,.75fr) minmax(0,1.25fr)!important;
  align-items:end!important;
  gap:16px!important;
}
.moderator-stage-actions{display:flex;align-items:flex-end;justify-content:flex-end;gap:10px;min-width:0}
.moderator-stage-actions .moderator-stage-filter{flex:1;min-width:0;margin:0}
.moderator-stage-actions .segmented-control{min-height:44px;align-items:stretch}
.moderator-stage-actions .segmented-control button{min-height:38px}
.moderator-pause-button{
  flex:0 0 92px;width:92px;min-width:92px;min-height:44px;height:44px;padding:6px 10px!important;
  border-radius:13px!important;box-shadow:none!important;background:#ececef!important;border-color:transparent!important;
}
.moderator-pause-button:hover{background:#e4e4e8!important;border-color:transparent!important;box-shadow:none!important}
.moderator-pause-button.is-paused{background:#fff0ef!important;color:#b42318!important}

/* Standby status is a quiet underline, not another pill. */
.moderator-live-paused{
  margin:0 0 10px;padding:0 0 4px;border:0;border-bottom:1px solid currentColor;border-radius:0;
  background:transparent;box-shadow:none;color:#a3342f;font-size:11px;font-weight:780;
}
.moderator-live-paused i{display:none}

/* Standby presentation: no rounded card/outline; only a subtle lower rule. */
.live-stage.is-standby{
  border:0!important;border-radius:0!important;box-shadow:none!important;background:transparent!important;
}
.live-stage.is-standby .live-standby-shell{
  border:0!important;border-bottom:1px solid rgba(84,69,61,.16)!important;border-radius:0!important;
}

/* Candidate descriptions stay editable, but are intentionally omitted from moderator lists/stage. */
.moderator-card-copy>p:not(.soft){display:none!important}

.account-workspace{padding-top:clamp(26px,6vw,76px)}
.account-session{max-width:620px;margin-inline:auto}

@media(max-width:900px){
  .moderator-stage-settings{grid-template-columns:1fr!important}
  .moderator-stage-actions{width:100%}
}
@media(max-width:650px){
  .judge-submit{margin-top:16px!important}
  .moderator-stage-settings{gap:12px!important;padding:13px!important}
  .moderator-stage-actions{display:flex!important;align-items:flex-end!important;gap:8px!important;flex-wrap:nowrap!important}
  .moderator-stage-actions .moderator-stage-filter{display:block!important;flex:1 1 auto;min-width:0}
  .moderator-stage-actions .moderator-stage-filter>span{display:none}
  .moderator-stage-actions .segmented-control{width:100%;max-width:none!important;grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:unset}
  .moderator-stage-actions .segmented-control button{padding:8px 5px!important;font-size:11px!important;min-width:0}
  .moderator-pause-button{flex:0 0 78px;width:78px;min-width:78px;height:44px;min-height:44px;font-size:11px!important;gap:6px!important}
  .pause-symbol{width:15px;height:15px}
  .moderator-nav{background:#ededf0!important}
}
@media(max-width:370px){
  .moderator-pause-button{flex-basis:70px;width:70px;min-width:70px;padding-inline:6px!important}
  .moderator-stage-actions .segmented-control button{font-size:10px!important;padding-inline:3px!important}
}

/* v29 — category-led candidates, large-screen moderator stage island, cleaner fan completion */

/* Candidate management: the voting category is the source of the candidate group. */
.moderator-candidate-meta{display:block!important}
.moderator-candidate-meta>label{width:100%;margin:0}
.candidate-admin-card{grid-template-columns:58px minmax(0,1fr) auto!important;gap:12px!important}
.candidate-admin-thumb{position:relative;width:58px!important;isolation:isolate}
.candidate-admin-thumb>img{position:relative;z-index:0}
.candidate-admin-thumb>.candidate-admin-number{
  position:absolute;z-index:2;left:0;right:0;bottom:0;height:48%;min-width:0;
  display:flex;align-items:flex-end;justify-content:center;padding:0 4px 6px;
  margin:0;color:#fff;text-align:center;font-size:13px;font-weight:850;line-height:1;
  background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.68));
  text-shadow:0 1px 4px rgba(0,0,0,.35);pointer-events:none;
}
.candidate-admin-copy small{color:var(--muted)}

/* Stage settings are intentionally simple: active round + pause. */
.moderator-stage-settings{grid-template-columns:minmax(260px,1fr) auto!important}
.moderator-stage-actions{width:auto!important;display:flex!important;align-items:flex-end!important;justify-content:flex-end!important}
.moderator-stage-actions .moderator-pause-button{margin:0}

/* Desktop/laptop: keep the stage large and move transport controls into a right-side island. */
@media(min-width:1050px){
  .moderator-stage-section{
    grid-template-columns:minmax(0,1fr) 102px!important;
    grid-template-rows:auto!important;
    align-items:start!important;
    gap:18px!important;
  }
  .moderator-current{grid-column:1;grid-row:1;min-height:470px!important;padding:24px!important}
  .moderator-card{grid-template-columns:minmax(230px,340px) minmax(0,1fr)!important;gap:32px!important;min-height:420px}
  .moderator-card .moderator-portrait{max-height:440px;margin:auto}
  .moderator-card h2{font-size:clamp(38px,4vw,58px)!important}
  .moderator-controls{
    grid-column:2;grid-row:1;position:sticky!important;top:96px!important;z-index:24;
    width:102px;margin:0!important;padding:10px!important;border-radius:30px!important;
    display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:9px!important;
    background:rgba(242,242,247,.88)!important;border:1px solid rgba(60,60,67,.12)!important;
    box-shadow:0 18px 52px rgba(28,28,30,.12)!important;
    backdrop-filter:blur(22px) saturate(145%)!important;-webkit-backdrop-filter:blur(22px) saturate(145%)!important;
  }
  .moderator-nav{
    width:100%!important;min-width:0!important;min-height:82px!important;padding:10px 6px!important;
    border-radius:21px!important;flex-direction:column!important;gap:6px!important;
    background:#e5e5ea!important;
  }
  .moderator-nav.next{flex-direction:column-reverse!important}
  .moderator-nav small{font-size:11px!important}
  .moderator-nav-icon{width:34px!important;height:34px!important;background:rgba(60,60,67,.08)!important}
  .moderator-position{
    width:100%!important;min-width:0!important;padding:9px 3px!important;border-radius:15px;
    background:rgba(255,255,255,.74);font-size:12px!important;font-weight:800!important;
    color:#5f5f65!important;font-variant-numeric:tabular-nums;
  }
}

/* Phone/tablet: retain the original horizontal transport layout. */
@media(max-width:1049px){
  .moderator-stage-section{display:grid!important;grid-template-columns:1fr!important;gap:12px!important}
  .moderator-current{grid-column:auto!important;grid-row:auto!important}
  .moderator-controls{
    grid-column:auto!important;grid-row:auto!important;position:sticky!important;
    display:grid!important;grid-template-columns:1fr auto 1fr!important;width:auto!important;
  }
}
@media(max-width:650px){
  .moderator-stage-settings{grid-template-columns:1fr auto!important;align-items:end!important}
  .moderator-stage-actions{width:auto!important}
  .moderator-pause-button{width:78px!important;min-width:78px!important}
  .candidate-admin-card{grid-template-columns:50px minmax(0,1fr) 72px!important;gap:9px!important}
  .candidate-admin-thumb{width:50px!important}
  .candidate-admin-thumb>.candidate-admin-number{font-size:11px;padding-bottom:5px}
}
@media(max-width:430px){
  .moderator-stage-settings{grid-template-columns:minmax(0,1fr) auto!important;gap:9px!important}
  .moderator-round-select select{font-size:13px!important}
}

/* Standby is always optically centered regardless of text/image/both mode. */
.live-standby-shell{margin-inline:auto!important;text-align:center!important;align-items:center!important;justify-content:center!important}
.live-standby-shell h2{margin-left:auto!important;margin-right:auto!important;text-align:center!important}
.live-standby-image{margin-left:auto!important;margin-right:auto!important;justify-items:center!important}
.live-standby-image img{margin:auto!important;object-position:center center!important}
.standby-image-preview{justify-items:center!important;text-align:center!important}
.standby-image-preview img{margin:auto!important;object-position:center center!important}

/* Fan category completion: fill the pill green; the check itself has no badge/background. */
.fan-category-tabs button.is-complete{
  background:#34c759!important;border-color:#34c759!important;color:#fff!important;
  box-shadow:0 7px 18px rgba(52,199,89,.18)!important;
}
.fan-category-tabs button.is-complete:hover{background:#2fba52!important;border-color:#2fba52!important}
.fan-category-tabs button.is-complete.active{background:#34c759!important;border-color:#34c759!important;color:#fff!important}
.fan-tab-state{
  width:auto!important;height:auto!important;min-width:0!important;border-radius:0!important;
  background:transparent!important;color:inherit!important;font-size:11px!important;font-weight:900!important;
}
.fan-category-tabs button.is-complete .fan-tab-state{background:transparent!important;color:inherit!important}
.fan-candidate-category{
  min-height:0!important;padding:0!important;margin-bottom:8px!important;border-radius:0!important;
  background:transparent!important;color:#876f79!important;
}

@media(prefers-reduced-motion:reduce){
  .moderator-controls,.fan-category-tabs button{transition:none!important}
}
/* Ensure the candidate number overlay fully replaces the older standalone number tile. */
.candidate-admin-thumb>.candidate-admin-number{
  width:auto!important;height:50%!important;border-radius:0!important;
}

/* 2026-09-18 v30 — quieter completion, share feedback, glass candidates, compact stage filters */
.fan-category-tabs button.is-complete{
  background:#31594d!important;
  border-color:#31594d!important;
  color:#fff!important;
  box-shadow:0 7px 18px rgba(35,72,61,.16)!important;
}
.fan-category-tabs button.is-complete:hover{
  background:#294c42!important;
  border-color:#294c42!important;
}
.fan-category-tabs button.is-complete.active{
  background:#31594d!important;
  border-color:#31594d!important;
  color:#fff!important;
  box-shadow:0 8px 22px rgba(35,72,61,.2)!important;
}
.fan-category-tabs button.is-complete .fan-tab-state{
  background:transparent!important;
  color:inherit!important;
}

/* Share is lightweight but visibly responsive. */
.share-button{position:relative;overflow:visible;will-change:transform}
.share-button::after{
  content:'';position:absolute;inset:-5px;border-radius:50%;pointer-events:none;
  border:1px solid rgba(73,83,79,.24);opacity:0;transform:scale(.66);
}
.share-button.share-tapped svg{animation:ignitify-share-lift .42s cubic-bezier(.22,1,.36,1)}
.share-button.share-tapped::after{animation:ignitify-share-ring .46s ease-out}
.share-button.share-sent{background:#edf4f0!important;border-color:#9ab1a8!important;color:#31594d!important}
.share-button.share-sent svg{animation:ignitify-share-sent .5s cubic-bezier(.22,1,.36,1)}
.share-button.share-error{animation:ignitify-share-error .28s ease;color:#a34343!important}
@keyframes ignitify-share-lift{0%{transform:none}45%{transform:translateY(-3px) scale(1.06)}100%{transform:none}}
@keyframes ignitify-share-ring{0%{opacity:.5;transform:scale(.66)}100%{opacity:0;transform:scale(1.28)}}
@keyframes ignitify-share-sent{0%{transform:scale(.9)}55%{transform:scale(1.12)}100%{transform:none}}
@keyframes ignitify-share-error{0%,100%{transform:none}35%{transform:translateX(-2px)}70%{transform:translateX(2px)}}

/* Fan candidate card: portrait-derived ambient blur + translucent white glass info. */
.fan-candidate-grid .candidate-card{
  position:relative;isolation:isolate;
  background:rgba(255,255,255,.58)!important;
  border-color:rgba(88,72,80,.11)!important;
  box-shadow:0 18px 50px rgba(40,28,35,.08)!important;
}
.fan-candidate-grid .candidate-card-ambient{
  position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none;background:#f5f1ef;
}
.fan-candidate-grid .candidate-card-ambient::after{
  content:'';position:absolute;inset:0;background:rgba(255,255,255,.68);
}
.fan-candidate-grid .candidate-card-ambient img{
  width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.18);filter:blur(34px) saturate(.9);opacity:.34;
}
.fan-candidate-grid .portrait{position:relative;z-index:1}
.fan-candidate-grid .candidate-info{
  position:relative;z-index:3;margin:-22px 12px 12px;padding:21px 20px 19px!important;
  border:1px solid rgba(255,255,255,.72);border-radius:21px;
  background:rgba(255,255,255,.72)!important;
  box-shadow:0 10px 30px rgba(37,28,33,.075);
  backdrop-filter:blur(24px) saturate(130%);-webkit-backdrop-filter:blur(24px) saturate(130%);
}
.fan-candidate-grid .candidate-info>p{color:#776b71!important}

/* Round + voting category + Pause share one compact stage settings block. */
.moderator-stage-settings{
  display:grid!important;
  grid-template-columns:minmax(150px,.72fr) minmax(170px,1fr) auto!important;
  align-items:end!important;gap:12px!important;
}
.moderator-round-select,.moderator-stage-category-select{min-width:0!important;margin:0!important}
.moderator-round-select select,.moderator-stage-category-select select{
  width:100%!important;min-width:0!important;
}
.moderator-stage-actions{align-self:end!important}

@media(max-width:650px){
  .fan-candidate-grid .candidate-info{margin:-17px 9px 9px;padding:18px 16px 16px!important;border-radius:18px}
  .moderator-stage-settings{
    grid-template-columns:minmax(0,1fr) minmax(0,1fr) 78px!important;
    gap:8px!important;padding:12px!important;
  }
  .moderator-round-select,.moderator-stage-category-select{font-size:11px!important}
  .moderator-round-select select,.moderator-stage-category-select select{
    min-height:43px!important;margin-top:5px!important;padding:8px 27px 8px 9px!important;
    font-size:12px!important;border-radius:12px!important;
  }
  .moderator-pause-button{width:78px!important;min-width:78px!important;min-height:43px!important;padding:8px 6px!important}
}
@media(max-width:390px){
  .moderator-stage-settings{grid-template-columns:minmax(0,1fr) minmax(0,1fr) 70px!important;gap:6px!important;padding:10px!important}
  .moderator-round-select select,.moderator-stage-category-select select{font-size:11px!important;padding-left:7px!important}
  .moderator-pause-button{width:70px!important;min-width:70px!important;font-size:11px!important}
}
@media(prefers-reduced-motion:reduce){
  .share-button.share-tapped svg,.share-button.share-tapped::after,.share-button.share-sent svg,.share-button.share-error{animation:none!important}
}

/* v31 — portrait-led glass UI, scalable summary, finite loading states -------- */

/* Fan voting: the exact candidate portrait becomes the whole card atmosphere.
   The enlarged copy is deeply blurred and covered by a solid white 40% glass
   veil; the real portrait remains sharp and locked to 3:4. */
.fan-candidate-grid .candidate-card{
  position:relative!important;isolation:isolate;overflow:hidden!important;
  background:transparent!important;
  border:1px solid rgba(255,255,255,.62)!important;
  box-shadow:0 24px 64px rgba(35,26,31,.10)!important;
}
.fan-candidate-grid .candidate-card-ambient{
  display:block!important;position:absolute!important;z-index:0!important;inset:-34px!important;
  overflow:hidden!important;pointer-events:none!important;background:#ece8e7!important;
}
.fan-candidate-grid .candidate-card-ambient img{
  width:100%!important;height:100%!important;display:block!important;object-fit:cover!important;object-position:center!important;
  transform:scale(1.26)!important;filter:blur(52px) saturate(.88) contrast(.98)!important;opacity:1!important;
}
.fan-candidate-grid .candidate-card-ambient::after{
  content:""!important;position:absolute!important;inset:0!important;background:rgba(255,255,255,.40)!important;
}
.fan-candidate-grid .portrait{
  position:relative!important;z-index:1!important;width:100%!important;height:auto!important;max-height:none!important;
  aspect-ratio:3/4!important;background:rgba(255,255,255,.28)!important;
}
.fan-candidate-grid .portrait>img{
  width:100%!important;height:100%!important;object-fit:cover!important;object-position:center!important;
}
.fan-candidate-grid .candidate-info{
  position:relative!important;z-index:2!important;margin:-24px 12px 12px!important;padding:22px 20px 20px!important;
  border:1px solid rgba(255,255,255,.70)!important;border-radius:22px!important;
  background:rgba(255,255,255,.40)!important;
  box-shadow:0 16px 40px rgba(42,31,37,.09),inset 0 1px 0 rgba(255,255,255,.72)!important;
  backdrop-filter:blur(28px) saturate(125%)!important;-webkit-backdrop-filter:blur(28px) saturate(125%)!important;
}
.fan-candidate-grid .candidate-info h2,.fan-candidate-grid .candidate-info>p,.fan-candidate-grid .candidate-card-footer{position:relative;z-index:1}

/* Live presentation: the same candidate photo fills the whole live stage as a
   diffused background. A 40% white veil keeps typography and score controls
   clean while the foreground portrait is always a true 3:4 crop. */
.live-stage-grid{position:relative!important;isolation:isolate!important}
.live-stage-candidate-ambient{
  position:absolute;z-index:0;inset:calc(clamp(18px,2.2vw,32px) * -1);overflow:hidden;pointer-events:none;
}
.live-stage-candidate-ambient img{
  width:100%;height:100%;object-fit:cover;object-position:center;display:block;
  transform:scale(1.18);filter:blur(58px) saturate(.86) contrast(.98);opacity:1;
}
.live-stage-candidate-ambient i{position:absolute;inset:0;background:rgba(255,255,255,.40)}
.live-stage:not(.is-standby){background:transparent!important;border-color:rgba(255,255,255,.62)!important}
.live-stage:not(.is-standby):before{opacity:.30!important}
.live-portrait-backdrop{display:none!important}
.live-portrait-frame{
  width:min(100%,560px,54vh)!important;padding:10px!important;
  background:rgba(255,255,255,.40)!important;border:1px solid rgba(255,255,255,.72)!important;
  backdrop-filter:blur(24px) saturate(120%)!important;-webkit-backdrop-filter:blur(24px) saturate(120%)!important;
}
.live-candidate-column .live-portrait-frame .live-portrait{
  width:100%!important;height:auto!important;max-height:none!important;aspect-ratio:3/4!important;border-radius:24px!important;
}
.live-candidate-column .live-portrait-frame .live-portrait>img{
  width:100%!important;height:100%!important;object-fit:cover!important;object-position:center!important;background:transparent!important;
}
.live-average-plain,.live-judge-block{
  background:rgba(255,255,255,.40)!important;border-color:rgba(255,255,255,.70)!important;
  box-shadow:0 18px 52px rgba(45,31,38,.08),inset 0 1px 0 rgba(255,255,255,.72)!important;
  backdrop-filter:blur(28px) saturate(122%)!important;-webkit-backdrop-filter:blur(28px) saturate(122%)!important;
}
.live-judge-scores .anonymous-score{background:rgba(255,255,255,.48)!important;border-color:rgba(255,255,255,.66)!important;backdrop-filter:blur(15px)!important;-webkit-backdrop-filter:blur(15px)!important}

/* Summary results: one calm ranking list that scales to many rounds. Round
   leaders and per-round scores stay available, but no longer consume the top
   of the page as a growing wall of cards. */
.summary-skeleton-list{display:grid;gap:9px}
.summary-skeleton-list .skeleton-row{min-height:84px;border-radius:18px}
.summary-leaders{margin:0 0 14px;border:1px solid #e8e4e2;border-radius:18px;background:#fff;overflow:hidden}
.summary-leaders>summary,.summary-round-details>summary{
  list-style:none;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;
}
.summary-leaders>summary::-webkit-details-marker,.summary-round-details>summary::-webkit-details-marker{display:none}
.summary-leaders>summary{display:grid;grid-template-columns:minmax(0,1fr) auto 22px;align-items:center;gap:10px;padding:15px 17px;font-weight:750}
.summary-leaders>summary small{color:#8d8581;font-size:11px;font-weight:700}
.summary-leaders>summary svg,.summary-round-details>summary svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;transition:transform .22s ease}
.summary-leaders[open]>summary svg,.summary-round-details[open]>summary svg{transform:rotate(180deg)}
.summary-leader-list{border-top:1px solid #eeeae8;padding:3px 17px 10px}
.summary-leader-row{display:grid;grid-template-columns:minmax(110px,.8fr) minmax(0,1.5fr) auto;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid #f1eeec}
.summary-leader-row:last-child{border-bottom:0}.summary-leader-row span{font-size:11px;color:#8b817c;font-weight:700}.summary-leader-row strong{font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.summary-leader-row b{font-size:15px;font-variant-numeric:tabular-nums}
.summary-simple-list{display:grid;gap:9px}
.summary-simple-row{
  display:grid;grid-template-columns:46px minmax(230px,1.7fr) minmax(90px,.55fr) minmax(80px,.45fr);
  gap:13px;align-items:center;padding:12px 14px;border:1px solid #e9e5e3;border-radius:18px;background:#fff;min-width:0;
  box-shadow:0 7px 22px rgba(40,29,34,.025)
}
.summary-simple-row.is-top{border-color:#d7cec7;box-shadow:0 10px 28px rgba(52,38,43,.055)}
.summary-simple-rank{font-size:14px;font-weight:850;color:#756a66;font-variant-numeric:tabular-nums;text-align:center}
.summary-simple-row.is-top .summary-simple-rank{color:#1d1d1f}
.summary-simple-person{display:grid;grid-template-columns:46px minmax(0,1fr);gap:11px;align-items:center;min-width:0}
.summary-simple-person .summary-avatar{width:46px;height:auto;aspect-ratio:3/4;border-radius:10px;overflow:hidden}
.summary-simple-person .summary-avatar img{width:100%;height:100%;object-fit:cover!important}
.summary-simple-name{min-width:0}.summary-simple-name>strong{display:block;font-size:15px;line-height:1.12;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-simple-name>small{display:block;margin-top:4px;font-size:10px;color:#928984;font-weight:650}
.summary-badges{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}.summary-badge{display:inline-flex;align-items:center;min-height:20px;padding:3px 7px;border-radius:999px;background:#f1efed;color:#6e6662;font-size:8px;font-weight:850;letter-spacing:.04em;text-transform:uppercase}.summary-badge.top{background:#252326;color:#fff}.summary-badge.fan{background:#edf3ef;color:#365f51}
.summary-simple-stat{min-width:0}.summary-simple-stat span{display:block;font-size:9px;color:#958c87;font-weight:800;text-transform:uppercase;letter-spacing:.075em}.summary-simple-stat strong{display:block;margin-top:3px;font-size:21px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.035em}
.summary-round-details{grid-column:2/-1;border-top:1px solid #f0ecea;margin-top:0;padding-top:8px}
.summary-round-details>summary{display:inline-flex;align-items:center;gap:5px;color:#746b67;font-size:11px;font-weight:750;padding:4px 0}
.summary-round-details>summary svg{width:15px;height:15px}
.summary-round-lines{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:6px;margin-top:8px}
.summary-round-line{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0;padding:8px 10px;border-radius:10px;background:#f8f6f5}
.summary-round-line span{min-width:0;font-size:10px;color:#786f6b;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.summary-round-line strong{font-size:13px;font-variant-numeric:tabular-nums}.summary-round-line em{margin-left:6px;color:#35604f;font-size:8px;font-style:normal;font-weight:850;text-transform:uppercase;letter-spacing:.04em}
.summary-round-line.is-leader{background:#f0f5f2}

.loading-fallback{min-height:120px;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:8px;padding:22px;text-align:center;color:#756b67}
.loading-fallback strong{font-size:14px;color:#433b3f}.loading-fallback small{font-size:11px;color:#948b87}

@media(max-width:900px){
  .live-portrait-frame{width:min(100%,460px,49vh)!important}
  .summary-simple-row{grid-template-columns:42px minmax(180px,1fr) 82px 72px}
}
@media(max-width:650px){
  .fan-candidate-grid .candidate-info{margin:-18px 9px 9px!important;padding:18px 16px 16px!important;border-radius:18px!important}
  .live-portrait-frame{width:112px!important;padding:5px!important;border-radius:20px!important}
  .live-candidate-column .live-portrait-frame .live-portrait{aspect-ratio:3/4!important;border-radius:15px!important}
  .live-stage-candidate-ambient{inset:-14px!important}
  .live-stage-candidate-ambient img{filter:blur(42px) saturate(.84);transform:scale(1.24)}
  .summary-simple-row{grid-template-columns:34px minmax(0,1fr) 66px;gap:9px;padding:11px}
  .summary-simple-stat:nth-of-type(2){grid-column:3}.summary-simple-stat:nth-of-type(3){grid-column:3}
  .summary-simple-stat span{font-size:8px}.summary-simple-stat strong{font-size:18px}
  .summary-round-details{grid-column:2/-1}
  .summary-leader-row{grid-template-columns:1fr auto}.summary-leader-row strong{grid-column:1/-1;grid-row:2;white-space:normal}.summary-leader-row b{grid-column:2;grid-row:1}
  .summary-round-lines{grid-template-columns:1fr}
}
@media(max-width:390px){
  .live-portrait-frame{width:96px!important}
  .summary-simple-row{grid-template-columns:30px minmax(0,1fr) 58px;gap:7px;padding:10px 8px}
  .summary-simple-person{grid-template-columns:40px minmax(0,1fr);gap:8px}.summary-simple-person .summary-avatar{width:40px}.summary-simple-name>strong{font-size:13px}.summary-simple-stat strong{font-size:16px}
}

/* Summary printing: print the report only. Navigation, dialogs, buttons and
   disclosure controls are deliberately excluded. Closed round details expand
   on paper so the output is complete without printing interactive controls. */
@media print{
  body[data-page=summary]{background:#fff!important}
  body[data-page=summary]>.spectrum,body[data-page=summary]>.app-progress,
  body[data-page=summary]>.header,body[data-page=summary]>.closing-footer,
  body[data-page=summary] dialog,body[data-page=summary] #toast,
  body[data-page=summary] .summary-print,body[data-page=summary] .skip-link,
  body[data-page=summary] .summary-leaders>summary,body[data-page=summary] .summary-round-details>summary{display:none!important}
  body[data-page=summary] main{padding:0!important;margin:0!important;min-height:0!important}
  body[data-page=summary] .summary-workspace{display:block!important;width:100%!important;max-width:none!important;padding:0!important;margin:0!important}
  body[data-page=summary] .summary-heading{margin:0 0 7mm!important}.summary-heading h1{font-size:24pt!important}
  body[data-page=summary] .summary-leaders{display:block!important;border:0!important;margin:0 0 5mm!important}
  body[data-page=summary] .summary-leader-list{display:block!important;border:0!important;padding:0!important}
  body[data-page=summary] .summary-simple-list{display:block!important}
  body[data-page=summary] .summary-simple-row{display:grid!important;grid-template-columns:11mm minmax(55mm,1fr) 24mm 20mm!important;gap:3mm!important;break-inside:avoid;padding:3mm 0!important;border:0!important;border-bottom:1px solid #ccc!important;border-radius:0!important;box-shadow:none!important}
  body[data-page=summary] .summary-simple-person .summary-avatar{width:10mm!important;height:13.33mm!important;border-radius:2mm!important}
  body[data-page=summary] .summary-round-details{grid-column:2/-1!important;display:block!important;border-top:0!important;padding-top:1mm!important}
  body[data-page=summary] .summary-round-details:not([open])>.summary-round-lines{display:grid!important}
  body[data-page=summary] .summary-round-lines{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:1.5mm!important;margin-top:1mm!important}
  body[data-page=summary] .summary-round-line{background:#fff!important;border:1px solid #ddd!important;border-radius:1.5mm!important;padding:1.5mm 2mm!important}
  body[data-page=summary] .summary-badge{border:1px solid #bbb!important;background:#fff!important;color:#000!important}
}

@media(prefers-reduced-motion:reduce){.summary-leaders>summary svg,.summary-round-details>summary svg{transition:none!important}}

.live-stage-grid>.live-candidate-column,.live-stage-grid>.live-metrics-column{position:relative;z-index:1}

/* v32 — full-stage portrait glass, flush fan info, zero-jump live handoffs ----- */

/* Fan cards: keep the candidate portrait as the full atmospheric background,
   but let the information glass run edge-to-edge with only the upper corners
   rounded. The parent card owns the lower corner clipping. */
.fan-candidate-grid .candidate-info{
  width:100%!important;
  margin:0!important;
  padding:22px 20px 20px!important;
  border-left:0!important;
  border-right:0!important;
  border-bottom:0!important;
  border-radius:24px 24px 0 0!important;
  background:rgba(255,255,255,.40)!important;
  box-shadow:0 -12px 36px rgba(42,31,37,.06),inset 0 1px 0 rgba(255,255,255,.76)!important;
  backdrop-filter:blur(30px) saturate(126%)!important;
  -webkit-backdrop-filter:blur(30px) saturate(126%)!important;
}

/* A heart tap sends one subtle red glass ripple across the card. It never
   captures input and removes itself after the short feedback animation. */
.fan-heart-ripple{
  position:absolute;z-index:8;inset:0;pointer-events:none;overflow:hidden;
  border-radius:inherit;opacity:0;
  background:
    radial-gradient(circle at var(--ripple-x,50%) var(--ripple-y,50%),
      rgba(255,45,85,.24) 0,
      rgba(255,45,85,.13) 18%,
      rgba(255,45,85,.055) 38%,
      rgba(255,45,85,0) 68%);
  backdrop-filter:blur(1.5px) saturate(112%);
  -webkit-backdrop-filter:blur(1.5px) saturate(112%);
  transform:scale(.86);transform-origin:var(--ripple-x,50%) var(--ripple-y,50%);
}
.fan-heart-ripple.is-active{animation:fan-heart-glass-ripple .68s cubic-bezier(.2,.72,.2,1) both}
@keyframes fan-heart-glass-ripple{
  0%{opacity:0;transform:scale(.72)}
  24%{opacity:1;transform:scale(.93)}
  64%{opacity:.62;transform:scale(1.025)}
  100%{opacity:0;transform:scale(1.06)}
}

/* The candidate image atmosphere now belongs to the entire Live Stage rather
   than to the inner grid. The stage itself clips it to the exact rounded
   corners, so the blur never bleeds outside the presentation card. */
.live-stage:not(.is-standby){
  position:relative!important;
  isolation:isolate!important;
  overflow:hidden!important;
  border-radius:30px!important;
  background:rgba(255,255,255,.40)!important;
}
.live-stage-ambient-host{
  position:absolute;z-index:0;inset:0;border-radius:inherit;overflow:hidden;
  pointer-events:none;background:#ece8e7;
}
.live-stage-ambient-layer{
  position:absolute;inset:0;border-radius:inherit;overflow:hidden;
  opacity:1;transform:translate3d(0,0,0) scale(1);
  transition:opacity .58s cubic-bezier(.22,1,.36,1),transform .64s cubic-bezier(.22,1,.36,1),filter .58s ease;
  will-change:opacity,transform,filter;
}
.live-stage-ambient-layer img{
  position:absolute;inset:-10%;width:120%;height:120%;display:block;
  object-fit:cover;object-position:center;
  transform:scale(1.13);filter:blur(64px) saturate(.88) contrast(.98);
}
.live-stage-ambient-layer i{
  position:absolute;inset:0;background:rgba(255,255,255,.40);
}
.live-stage-ambient-incoming{opacity:0;filter:blur(5px)}
.live-stage-ambient-incoming.from-next{transform:translate3d(1.2%,0,0) scale(1.018)}
.live-stage-ambient-incoming.from-prev{transform:translate3d(-1.2%,0,0) scale(1.018)}
.live-stage-ambient-incoming.transition-ready,.live-stage-ambient-layer.is-current{
  opacity:1;filter:blur(0);transform:translate3d(0,0,0) scale(1)
}
.live-stage-ambient-outgoing.to-prev.transition-ready{opacity:0;transform:translate3d(-.8%,0,0) scale(1.012)}
.live-stage-ambient-outgoing.to-next.transition-ready{opacity:0;transform:translate3d(.8%,0,0) scale(1.012)}

/* Keep every candidate handoff in one fixed stage plane. Incoming and outgoing
   layouts overlap inside this scene instead of briefly entering normal flow at
   the bottom of the stage. */
.live-stage-scene{
  position:relative;z-index:2;width:100%;min-width:0;
  transition:height .58s cubic-bezier(.22,1,.36,1);
}
.live-stage-scene.is-transitioning{overflow:hidden}
.live-stage-scene>.live-stage-grid{width:100%;margin:0!important}
.live-stage-grid.live-stage-incoming,.live-stage-grid.live-stage-outgoing{
  backface-visibility:hidden;-webkit-backface-visibility:hidden;
  transform-origin:center center;
}
.live-stage:after{z-index:5!important}
.live-spectrum-loader{z-index:9!important}
.live-score-flight{z-index:20!important}

@media(max-width:650px){
  .fan-candidate-grid .candidate-info{
    margin:0!important;padding:18px 16px 16px!important;
    border-radius:20px 20px 0 0!important;
  }
  .live-stage:not(.is-standby){border-radius:21px!important}
  .live-stage-ambient-layer img{inset:-14%;width:128%;height:128%;filter:blur(46px) saturate(.86)}
}

@media(prefers-reduced-motion:reduce){
  .fan-heart-ripple.is-active{animation:none!important;display:none!important}
  .live-stage-ambient-layer,.live-stage-scene{transition:none!important}
}

/* v33 — calm white surfaces, square presentation edges, fluid fan reveal ------ */

/* Fan voting no longer derives its surface from a blurred copy of the portrait.
   The portrait stays sharp at 3:4 while the card uses a quiet white gradient. */
.fan-candidate-grid .candidate-card{
  position:relative!important;
  isolation:isolate!important;
  overflow:hidden!important;
  border-radius:0!important;
  border:1px solid rgba(63,52,59,.10)!important;
  background:
    radial-gradient(circle at 92% 4%,rgba(255,237,218,.44),transparent 34%),
    radial-gradient(circle at 8% 92%,rgba(233,239,247,.48),transparent 38%),
    linear-gradient(180deg,rgba(255,255,255,.99),rgba(249,248,247,.96))!important;
  box-shadow:0 18px 44px rgba(42,31,37,.065)!important;
}
.fan-candidate-grid .candidate-card::before{
  content:'';position:absolute;z-index:0;inset:auto -18% -12% 24%;height:34%;pointer-events:none;
  background:rgba(255,255,255,.84);filter:blur(30px);opacity:.8;
}
.fan-candidate-grid .candidate-card-ambient{display:none!important}
.fan-candidate-grid .portrait{
  position:relative!important;z-index:1!important;border-radius:0!important;
  width:100%!important;aspect-ratio:3/4!important;max-height:none!important;
}
.fan-candidate-grid .portrait>img{width:100%!important;height:100%!important;object-fit:cover!important;object-position:center!important}
.fan-candidate-grid .candidate-info{
  position:relative!important;z-index:2!important;width:100%!important;margin:0!important;
  border:0!important;border-top:1px solid rgba(76,63,70,.075)!important;border-radius:0!important;
  padding:22px 20px 20px!important;
  background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(255,255,255,.98))!important;
  box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}

/* Lightweight one-shot reveal as fan cards enter the viewport. */
.fan-candidate-grid .candidate-card.fan-scroll-reveal{
  opacity:0;transform:translate3d(0,22px,0) scale(.992);
  transition:
    opacity .62s cubic-bezier(.22,1,.36,1) var(--fan-reveal-delay,0ms),
    transform .72s cubic-bezier(.22,1,.36,1) var(--fan-reveal-delay,0ms),
    box-shadow .28s ease;
  will-change:opacity,transform;
}
.fan-candidate-grid .candidate-card.fan-scroll-reveal.is-visible{
  opacity:1;transform:translate3d(0,0,0) scale(1);will-change:auto;
}

/* Live presentation returns to a clean white stage. Candidate-photo ambience is
   intentionally removed; only a very quiet spectrum-tinted white wash remains. */
.live-stage:not(.is-standby){
  position:relative!important;isolation:isolate!important;overflow:hidden!important;
  border-radius:0!important;
  border:1px solid rgba(76,63,70,.10)!important;
  background:
    radial-gradient(circle at 12% 8%,rgba(255,225,181,.20),transparent 31%),
    radial-gradient(circle at 88% 90%,rgba(208,225,245,.22),transparent 34%),
    linear-gradient(145deg,#fff 0%,#fffdfa 48%,#fafcff 100%)!important;
  box-shadow:0 24px 70px rgba(39,29,35,.055)!important;
}
.live-stage-ambient-host,.live-stage-candidate-ambient{display:none!important}
.live-stage:not(.is-standby):before{opacity:.12!important}
.live-portrait-frame{
  background:rgba(255,255,255,.72)!important;
  border-color:rgba(70,58,65,.09)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
.live-average-plain,.live-judge-block{
  background:rgba(255,255,255,.82)!important;
  border-color:rgba(70,58,65,.09)!important;
  box-shadow:0 14px 38px rgba(45,31,38,.05)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}
.live-judge-scores .anonymous-score{
  background:rgba(255,255,255,.9)!important;border-color:rgba(70,58,65,.085)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
}

@media(max-width:650px){
  .fan-candidate-grid .candidate-info{margin:0!important;padding:18px 16px 16px!important;border-radius:0!important}
  .live-stage:not(.is-standby){border-radius:0!important}
}
@media(prefers-reduced-motion:reduce){
  .fan-candidate-grid .candidate-card.fan-scroll-reveal{opacity:1!important;transform:none!important;transition:none!important;will-change:auto!important}
}

/* v34 — modern radius restored + restrained site-wide motion ------------------ */

/* Restore the rounded modern card language while keeping v33's quiet white
   gradient surfaces and strict 3:4 portrait treatment. */
.fan-candidate-grid .candidate-card{
  border-radius:26px!important;
  overflow:hidden!important;
  transition:border-color .28s ease,box-shadow .34s var(--ease),background-color .34s ease!important;
}
.fan-candidate-grid .portrait{
  border-radius:26px 26px 0 0!important;
  overflow:hidden!important;
}
.fan-candidate-grid .candidate-info{
  border-radius:0 0 26px 26px!important;
  overflow:hidden!important;
}

/* Live stage keeps the calm white gradient from v33, but returns to a modern
   presentation-card silhouette. Its overflow clips all score/transition effects
   cleanly to the same radius. */
.live-stage:not(.is-standby){
  border-radius:30px!important;
  overflow:hidden!important;
}

/* A slow spectrum drift provides a tiny amount of ambient movement without
   animating layout or forcing expensive repaint work throughout the interface. */
.spectrum{
  background-size:115% 100%;
  animation:v34-spectrum-drift 14s ease-in-out infinite alternate;
  will-change:background-position;
}
@keyframes v34-spectrum-drift{
  from{background-position:0% 50%}
  to{background-position:100% 50%}
}

/* One-shot page arrival. It runs on the page shell rather than individual live
   data cards, so polling never restarts the motion or causes flicker. */
.tool-page main,.page-content{
  animation:v34-page-settle .52s var(--ease) both;
}
@keyframes v34-page-settle{
  from{opacity:.72;transform:translate3d(0,7px,0)}
  to{opacity:1;transform:translate3d(0,0,0)}
}

/* Subtle persistent brand motion and micro-interaction polish. */
.header .brand-logo{
  animation:v34-brand-float 8s ease-in-out infinite;
  transform-origin:center center;
}
@keyframes v34-brand-float{
  0%,100%{transform:translate3d(0,0,0)}
  50%{transform:translate3d(0,-1.5px,0)}
}
.primary svg,.secondary svg,.text-link svg,.menu-trigger svg{
  transition:transform .32s var(--ease),opacity .25s ease;
}
.primary:hover svg,.text-link:hover svg{transform:translate3d(2px,0,0)}
.menu-trigger:hover svg{transform:scale(1.045)}

/* Keep panel motion visual-only: no translate-on-hover for voting cards, just a
   softer shadow response that cannot disturb scroll position. */
.workspace-panel,.panel,.auth-card,.experience-card,.tool-card{
  transition-property:box-shadow,border-color,background-color,opacity;
  transition-duration:.32s;
  transition-timing-function:var(--ease);
}

@media(max-width:650px){
  .fan-candidate-grid .candidate-card{border-radius:22px!important}
  .fan-candidate-grid .portrait{border-radius:22px 22px 0 0!important}
  .fan-candidate-grid .candidate-info{border-radius:0 0 22px 22px!important}
  .live-stage:not(.is-standby){border-radius:22px!important}
}

@media(prefers-reduced-motion:reduce){
  .spectrum,.tool-page main,.page-content,.header .brand-logo{animation:none!important}
  .primary svg,.secondary svg,.text-link svg,.menu-trigger svg{transition:none!important;transform:none!important}
}

/* v35 — category-scoped numbering + premium fan voting browser ---------------- */

/* The voting browser is one centered rounded switch surface. Category tabs and
   the expanding search live in the same control so mobile never looks detached. */
.fan-browser-controls{
  justify-content:center!important;
  margin:6px 0 18px!important;
}
.fan-switch-shell{
  width:min(100%,980px);
  min-width:0;
  display:flex;
  align-items:center;
  gap:7px;
  padding:5px;
  border:1px solid rgba(69,57,63,.11);
  border-radius:25px;
  background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(248,247,246,.95));
  box-shadow:0 12px 34px rgba(43,33,38,.055),inset 0 1px 0 rgba(255,255,255,.96);
}
.fan-tabs-wrap{flex:1 1 auto;min-width:0;overflow:hidden}
.fan-category-tabs{
  width:100%;
  justify-content:safe center;
  gap:5px!important;
  padding:0!important;
  overflow-x:auto;
}
.fan-category-tabs button{
  min-height:40px!important;
  padding:8px 14px!important;
  border:0!important;
  border-radius:18px!important;
  background:transparent!important;
  box-shadow:none!important;
  color:#70656a!important;
  transition:background .26s var(--ease),color .26s ease,box-shadow .26s ease,transform .22s var(--ease)!important;
}
.fan-category-tabs button:hover{background:rgba(255,255,255,.74)!important;color:#332a2f!important}
.fan-category-tabs button.active{
  background:#fff!important;
  color:#2d2529!important;
  box-shadow:0 4px 14px rgba(42,31,37,.075)!important;
}
/* Completed categories stay muted dark green, but no checkmark is rendered. */
.fan-category-tabs button.is-complete:not(.active){
  background:#315c4d!important;
  color:#fff!important;
}
.fan-category-tabs button.is-complete:not(.active):hover{background:#294f42!important;color:#fff!important}
.fan-category-tabs button.is-complete.active{
  background:#355f50!important;
  color:#fff!important;
  box-shadow:0 4px 14px rgba(42,79,65,.16)!important;
}
.fan-tab-state{display:none!important}

/* Search remains a true pill at every width, including its expanded mobile state. */
.fan-switch-shell .fan-search{
  flex:0 0 40px;
  width:40px!important;
  height:40px!important;
  border:1px solid rgba(69,57,63,.10)!important;
  border-radius:20px!important;
  background:rgba(255,255,255,.9)!important;
  box-shadow:none!important;
  overflow:hidden!important;
  transition:flex-basis .34s cubic-bezier(.22,1,.36,1),width .34s cubic-bezier(.22,1,.36,1),border-radius .3s ease,box-shadow .25s ease!important;
}
.fan-switch-shell .fan-search.is-open{
  flex-basis:min(300px,34vw);
  width:min(300px,34vw)!important;
  border-radius:20px!important;
  box-shadow:0 4px 16px rgba(48,37,42,.07)!important;
}
.fan-switch-shell .fan-search-toggle,.fan-switch-shell .fan-search-close{width:40px!important;height:38px!important}
.fan-switch-shell .fan-search input{inset:0 38px!important;width:calc(100% - 76px)!important}

/* Gold vote language. */
.vote-heart:hover:not(:disabled){color:#b38b37!important;border-color:rgba(179,139,55,.42)!important;box-shadow:0 7px 22px rgba(179,139,55,.12)!important}
.vote-heart.voted{
  color:#b28a36!important;
  border-color:rgba(178,138,54,.34)!important;
  background:linear-gradient(145deg,#fffaf0,#fffdf8)!important;
  box-shadow:0 8px 24px rgba(178,138,54,.14)!important;
}
.vote-heart.voted svg{fill:#b28a36!important;stroke:#b28a36!important;transform:scale(1.08)!important}
.candidate-card.is-voted{border-color:rgba(178,138,54,.27)!important;box-shadow:0 16px 38px rgba(139,105,35,.075)!important}
.candidate-card.is-voting .vote-heart{animation:v35-heart-gold .7s ease-in-out infinite alternate!important}
@keyframes v35-heart-gold{to{transform:scale(1.1);color:#b28a36}}
.fan-heart-ripple{
  background:radial-gradient(circle at var(--ripple-x,50%) var(--ripple-y,50%),rgba(196,154,62,.22) 0,rgba(196,154,62,.11) 20%,rgba(196,154,62,.045) 42%,rgba(196,154,62,0) 70%)!important;
}

/* Candidate information gets a restrained ivory-to-white gradient. */
.fan-candidate-grid .candidate-info{
  background:
    radial-gradient(circle at 92% 0%,rgba(246,226,181,.18),transparent 36%),
    linear-gradient(180deg,rgba(255,255,255,.94),rgba(250,249,247,.99))!important;
}
.fan-candidate-category{
  display:inline-block!important;
  min-height:0!important;
  padding:0!important;
  margin-bottom:8px!important;
  border-radius:0!important;
  background:transparent!important;
  color:#8d7448!important;
  font-family:"Playfair Display",Georgia,"Times New Roman",serif!important;
  font-size:12px!important;
  font-weight:700!important;
  font-style:italic;
  letter-spacing:.035em!important;
  line-height:1.25;
  text-transform:none!important;
}
.fan-candidate-grid.all-no-bio .candidate-info{padding-top:17px!important;padding-bottom:15px!important}
.fan-candidate-grid.all-no-bio .candidate-info h2{margin-bottom:0!important}
.fan-candidate-grid.all-no-bio .candidate-card-footer{margin-top:14px!important}

/* Social-style micro-confetti for Share: generic interaction glyphs, no brand dependency. */
.share-social-particle{
  position:fixed;z-index:1600;width:19px;height:19px;display:grid;place-items:center;
  pointer-events:none;color:#8d7040;opacity:0;transform:translate(-50%,-50%) scale(.55);
  animation:v35-share-social .78s cubic-bezier(.18,.8,.22,1) var(--share-delay,0ms) forwards;
  filter:drop-shadow(0 4px 5px rgba(66,46,23,.10));
}
.share-social-particle:nth-of-type(2n){color:#836d8f}.share-social-particle:nth-of-type(3n){color:#506f62}
.share-social-particle svg{width:100%;height:100%;fill:rgba(255,255,255,.96);stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
@keyframes v35-share-social{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.45) rotate(0)}
  18%{opacity:.92}
  70%{opacity:.72}
  100%{opacity:0;transform:translate(calc(-50% + var(--share-x)),calc(-50% + var(--share-y))) scale(1) rotate(var(--share-r))}
}

/* Scroll reveal stays transform/opacity-only and feels continuous during a long list. */
.fan-candidate-grid .candidate-card.fan-scroll-reveal{
  opacity:0!important;
  transform:translate3d(0,28px,0) scale(.987)!important;
  transition:
    opacity .68s cubic-bezier(.22,1,.36,1) var(--fan-reveal-delay,0ms),
    transform .76s cubic-bezier(.22,1,.36,1) var(--fan-reveal-delay,0ms),
    box-shadow .3s ease,border-color .3s ease!important;
  will-change:opacity,transform;
}
.fan-candidate-grid .candidate-card.fan-scroll-reveal.is-visible{opacity:1!important;transform:translate3d(0,0,0) scale(1)!important;will-change:auto}

@media(max-width:650px){
  .fan-switch-shell{width:100%;border-radius:22px;padding:4px;gap:5px}
  .fan-category-tabs{justify-content:flex-start!important;gap:4px!important}
  .fan-category-tabs button{min-height:38px!important;padding:7px 11px!important;border-radius:16px!important;font-size:11.5px!important}
  .fan-switch-shell .fan-search{flex-basis:38px;width:38px!important;height:38px!important;border-radius:19px!important}
  .fan-switch-shell .fan-search.is-open{flex-basis:min(210px,54vw);width:min(210px,54vw)!important;border-radius:19px!important}
  .fan-switch-shell .fan-search-toggle,.fan-switch-shell .fan-search-close{width:38px!important;height:36px!important}
  .fan-switch-shell .fan-search input{inset:0 35px!important;width:calc(100% - 70px)!important;font-size:13px!important}
  .fan-candidate-grid.all-no-bio .candidate-info{padding:15px 14px 13px!important}
}
@media(max-width:420px){
  .fan-switch-shell .fan-search.is-open{flex-basis:min(190px,56vw);width:min(190px,56vw)!important;border-radius:19px!important}
}
@media(prefers-reduced-motion:reduce){
  .share-social-particle{display:none!important;animation:none!important}
  .fan-candidate-grid .candidate-card.fan-scroll-reveal{opacity:1!important;transform:none!important;transition:none!important;will-change:auto!important}
}


/* v36 — segmented fan tabs, full-width search, consistent cards, silky image touch */

/* A larger iOS-like segmented track based on the supplied reference. */
.fan-browser-controls{
  margin:8px 0 20px!important;
  padding:0 2px;
}
.fan-switch-shell{
  width:min(100%,1040px)!important;
  min-height:58px;
  padding:6px!important;
  gap:6px!important;
  border:1px solid rgba(55,45,50,.08)!important;
  border-radius:32px!important;
  background:linear-gradient(180deg,#f2f2f4 0%,#ececef 100%)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.88),0 10px 30px rgba(39,31,35,.045)!important;
  overflow:hidden;
}
.fan-tabs-wrap{
  flex:1 1 auto!important;
  max-width:100%;
  opacity:1;
  transform:scale(1);
  transition:flex-basis .38s cubic-bezier(.22,1,.36,1),max-width .38s cubic-bezier(.22,1,.36,1),opacity .22s ease,transform .32s cubic-bezier(.22,1,.36,1)!important;
}
.fan-category-tabs{
  display:flex!important;
  justify-content:center!important;
  align-items:center!important;
  gap:4px!important;
  min-height:46px;
  padding:0!important;
  scrollbar-width:none;
}
.fan-category-tabs::-webkit-scrollbar{display:none}
.fan-category-tabs button{
  position:relative;
  flex:0 0 auto;
  min-height:46px!important;
  min-width:92px;
  padding:10px 20px!important;
  border:0!important;
  border-radius:23px!important;
  background:transparent!important;
  color:#62585d!important;
  font-size:13px!important;
  font-weight:700!important;
  letter-spacing:-.01em;
  box-shadow:none!important;
  transition:background .30s cubic-bezier(.22,1,.36,1),color .24s ease,box-shadow .30s cubic-bezier(.22,1,.36,1),transform .22s cubic-bezier(.22,1,.36,1)!important;
}
.fan-category-tabs button:hover:not(.active){background:rgba(255,255,255,.48)!important;color:#342c30!important}
.fan-category-tabs button:active{transform:scale(.975)}
.fan-category-tabs button.active{
  background:linear-gradient(135deg,#8e6d34 0%,#b38e48 100%)!important;
  color:#fff!important;
  box-shadow:0 7px 18px rgba(132,97,42,.22),inset 0 1px 0 rgba(255,255,255,.22)!important;
}
/* Completed categories remain identifiable without any checkmark. */
.fan-category-tabs button.is-complete:not(.active){
  background:#315748!important;
  color:#f8fffb!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.09)!important;
}
.fan-category-tabs button.is-complete.active{
  background:linear-gradient(135deg,#294c40,#396756)!important;
  color:#fff!important;
  box-shadow:0 7px 18px rgba(39,78,64,.20),inset 0 1px 0 rgba(255,255,255,.10)!important;
}

/* Search is part of the segmented track. Opening it smoothly gives the whole
   track to the input and moves category tabs out of the way. */
.fan-switch-shell .fan-search{
  flex:0 0 46px!important;
  width:46px!important;
  height:46px!important;
  border:0!important;
  border-radius:23px!important;
  background:rgba(255,255,255,.72)!important;
  box-shadow:inset 0 0 0 1px rgba(57,47,52,.07)!important;
  transition:flex .38s cubic-bezier(.22,1,.36,1),width .38s cubic-bezier(.22,1,.36,1),border-radius .32s ease,background .24s ease,box-shadow .28s ease!important;
}
.fan-switch-shell .fan-search-toggle,.fan-switch-shell .fan-search-close{
  width:46px!important;height:44px!important;
}
.fan-switch-shell .fan-search input{
  inset:0 44px!important;
  width:calc(100% - 88px)!important;
  font-size:15px!important;
}
.fan-switch-shell.is-searching .fan-tabs-wrap{
  flex:0 0 0!important;
  max-width:0!important;
  opacity:0;
  transform:scale(.985);
  pointer-events:none;
}
.fan-switch-shell.is-searching .fan-search,
.fan-switch-shell .fan-search.is-open{
  flex:1 1 100%!important;
  width:100%!important;
  max-width:none!important;
  border-radius:25px!important;
  background:#fff!important;
  box-shadow:0 5px 18px rgba(44,34,39,.08),inset 0 0 0 1px rgba(74,61,67,.08)!important;
}

/* Candidate cards maintain a consistent information rhythm even when some bios
   are longer or absent. The footer is always pinned to the same baseline. */
.fan-candidate-grid{align-items:stretch}
.fan-candidate-grid .candidate-card{
  height:100%;
  display:flex!important;
  flex-direction:column;
}
.fan-candidate-grid .portrait{flex:0 0 auto}
.fan-candidate-grid .candidate-info{
  flex:1 1 auto;
  display:flex!important;
  flex-direction:column;
  min-height:238px;
  padding:20px 19px 18px!important;
  background:
    radial-gradient(circle at 92% 4%,rgba(238,214,164,.18),transparent 36%),
    linear-gradient(155deg,rgba(255,255,255,.99),rgba(248,247,246,.98))!important;
}
.fan-candidate-grid .candidate-info h2{
  min-height:2.4em;
  margin:0 0 10px!important;
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.fan-candidate-grid .candidate-bio{
  min-height:4.55em;
  margin:0!important;
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
}
.fan-candidate-grid .candidate-card-footer{
  width:100%;
  min-height:50px;
  margin:auto 0 0!important;
  padding-top:16px;
  border-top:1px solid rgba(71,58,64,.065);
  flex-wrap:nowrap!important;
  align-items:center!important;
}
.fan-candidate-grid .candidate-card-footer .soft{white-space:nowrap}
.fan-candidate-grid.all-no-bio .candidate-info{min-height:164px!important;padding:18px 18px 16px!important}
.fan-candidate-grid.all-no-bio .candidate-bio{display:none!important;min-height:0!important}
.fan-candidate-grid.all-no-bio .candidate-info h2{min-height:2.4em;margin-bottom:8px!important}
.fan-candidate-grid.all-no-bio .candidate-card-footer{margin:auto 0 0!important;padding-top:12px!important}

/* Portrait taps are visual-only now. Voting is intentionally restricted to the
   gold heart button. A silky spectrum wash travels across the cover on touch. */
.fan-vote-portrait{cursor:pointer!important;isolation:isolate}
.fan-vote-portrait::after{
  content:"";
  position:absolute;
  z-index:4;
  inset:-4% -70%;
  pointer-events:none;
  opacity:0;
  transform:translate3d(-48%,0,0) skewX(-10deg);
  background:linear-gradient(105deg,transparent 28%,rgba(255,255,255,.08) 39%,rgba(247,201,88,.24) 47%,rgba(223,119,98,.16) 52%,rgba(131,92,154,.18) 58%,rgba(255,255,255,.09) 64%,transparent 73%);
  mix-blend-mode:screen;
}
.fan-vote-portrait.silk-touched::after{animation:v36-silk-cover .88s cubic-bezier(.22,1,.36,1) both}
.fan-vote-portrait.silk-touched>img{animation:v36-cover-breathe .88s cubic-bezier(.22,1,.36,1)}
@keyframes v36-silk-cover{
  0%{opacity:0;transform:translate3d(-50%,0,0) skewX(-10deg)}
  18%{opacity:.9}
  70%{opacity:.6}
  100%{opacity:0;transform:translate3d(50%,0,0) skewX(-10deg)}
}
@keyframes v36-cover-breathe{0%,100%{transform:scale(1)}45%{transform:scale(1.012)}}

/* Stronger GSAP-like scroll reveal without a GSAP dependency: a one-shot,
   transform/opacity-only entrance that does not run during polling. */
.fan-candidate-grid .candidate-card.fan-scroll-reveal{
  opacity:0!important;
  transform:translate3d(0,46px,0) scale(.978)!important;
  transform-origin:50% 65%;
  transition:
    opacity .78s cubic-bezier(.16,1,.3,1) var(--fan-reveal-delay,0ms),
    transform .92s cubic-bezier(.16,1,.3,1) var(--fan-reveal-delay,0ms),
    box-shadow .32s ease,border-color .32s ease!important;
  will-change:opacity,transform;
}
.fan-candidate-grid .candidate-card.fan-scroll-reveal.is-visible{
  opacity:1!important;
  transform:translate3d(0,0,0) scale(1)!important;
  will-change:auto;
}

@media(max-width:650px){
  .fan-switch-shell{min-height:54px;border-radius:29px!important;padding:5px!important;gap:5px!important}
  .fan-category-tabs{justify-content:flex-start!important;min-height:44px;gap:4px!important}
  .fan-category-tabs button{min-width:auto;min-height:44px!important;padding:9px 15px!important;border-radius:22px!important;font-size:12px!important}
  .fan-switch-shell .fan-search{flex-basis:44px!important;width:44px!important;height:44px!important;border-radius:22px!important}
  .fan-switch-shell .fan-search-toggle,.fan-switch-shell .fan-search-close{width:44px!important;height:42px!important}
  .fan-switch-shell .fan-search input{inset:0 42px!important;width:calc(100% - 84px)!important;font-size:14px!important}
  .fan-switch-shell.is-searching .fan-search,.fan-switch-shell .fan-search.is-open{width:100%!important;flex-basis:100%!important;border-radius:22px!important}
  .fan-candidate-grid .candidate-info{min-height:218px;padding:18px 16px 16px!important}
  .fan-candidate-grid .candidate-bio{min-height:4.45em;-webkit-line-clamp:3}
  .fan-candidate-grid.all-no-bio .candidate-info{min-height:150px!important;padding:16px 15px 14px!important}
}
@media(max-width:420px){
  .fan-browser-controls{padding:0!important}
  .fan-switch-shell{border-radius:27px!important}
  .fan-category-tabs button{padding-left:13px!important;padding-right:13px!important}
}
@media(prefers-reduced-motion:reduce){
  .fan-tabs-wrap,.fan-switch-shell .fan-search,.fan-category-tabs button{transition:none!important}
  .fan-vote-portrait.silk-touched::after,.fan-vote-portrait.silk-touched>img{animation:none!important}
  .fan-candidate-grid .candidate-card.fan-scroll-reveal{opacity:1!important;transform:none!important;transition:none!important;will-change:auto!important}
}


/* v37 — corrected segmented alignment, single active state, back feedback */
.fan-switch-shell{
  min-height:54px!important;
  padding:5px!important;
  gap:5px!important;
  border-radius:24px!important;
}
.fan-category-tabs{
  min-height:42px!important;
  align-items:center!important;
  justify-content:center!important;
  gap:4px!important;
}
.fan-category-tabs button{
  display:grid!important;
  place-items:center!important;
  align-content:center!important;
  justify-content:center!important;
  height:42px!important;
  min-height:42px!important;
  min-width:88px;
  padding:0 18px!important;
  margin:0!important;
  border-radius:15px!important;
  line-height:1!important;
  text-align:center!important;
  vertical-align:middle!important;
  background:transparent!important;
  color:#62585d!important;
  box-shadow:none!important;
}
.fan-category-tabs button:hover:not(.active),
.fan-category-tabs button.is-complete:not(.active),
.fan-category-tabs button.is-complete:not(.active):hover{
  background:rgba(255,255,255,.48)!important;
  color:#62585d!important;
  box-shadow:none!important;
}
.fan-category-tabs button.active,
.fan-category-tabs button.is-complete.active{
  background:linear-gradient(135deg,#9b7537 0%,#b68d46 100%)!important;
  color:#fff!important;
  box-shadow:0 5px 14px rgba(132,97,42,.18),inset 0 1px 0 rgba(255,255,255,.20)!important;
}
.fan-switch-shell .fan-search{
  flex-basis:42px!important;
  width:42px!important;
  height:42px!important;
  border-radius:15px!important;
}
.fan-switch-shell .fan-search-toggle,
.fan-switch-shell .fan-search-close{width:42px!important;height:40px!important}
.fan-switch-shell .fan-search input{inset:0 40px!important;width:calc(100% - 80px)!important}
.fan-switch-shell.is-searching .fan-search,
.fan-switch-shell .fan-search.is-open{border-radius:16px!important}

/* Header back feedback: iOS-blue tap halo + chevron micro-motion. */
.ios-back{
  position:relative;
  isolation:isolate;
  border-radius:16px;
  transition:opacity .2s ease,transform .22s cubic-bezier(.22,1,.36,1),background .22s ease!important;
}
.ios-back::before{
  content:"";
  position:absolute;
  z-index:-1;
  left:-8px;
  top:50%;
  width:40px;
  height:40px;
  border-radius:50%;
  background:rgba(0,122,255,.12);
  opacity:0;
  transform:translateY(-50%) scale(.56);
  pointer-events:none;
}
.ios-back.is-feedback::before{animation:v37-back-halo .24s cubic-bezier(.22,1,.36,1) both}
.ios-back.is-feedback svg{animation:v37-back-chevron .24s cubic-bezier(.22,1,.36,1) both}
@keyframes v37-back-halo{
  0%{opacity:0;transform:translateY(-50%) scale(.56)}
  42%{opacity:1;transform:translateY(-50%) scale(1)}
  100%{opacity:0;transform:translateY(-50%) scale(1.2)}
}
@keyframes v37-back-chevron{
  0%{transform:translateX(0)}
  45%{transform:translateX(-3px)}
  100%{transform:translateX(0)}
}

@media(max-width:650px){
  .fan-switch-shell{min-height:50px!important;border-radius:21px!important;padding:4px!important}
  .fan-category-tabs{min-height:40px!important}
  .fan-category-tabs button{
    height:40px!important;
    min-height:40px!important;
    min-width:auto;
    padding:0 14px!important;
    border-radius:13px!important;
    font-size:12px!important;
  }
  .fan-switch-shell .fan-search{flex-basis:40px!important;width:40px!important;height:40px!important;border-radius:13px!important}
  .fan-switch-shell .fan-search-toggle,.fan-switch-shell .fan-search-close{width:40px!important;height:38px!important}
  .fan-switch-shell .fan-search input{inset:0 38px!important;width:calc(100% - 76px)!important}
  .fan-switch-shell.is-searching .fan-search,.fan-switch-shell .fan-search.is-open{border-radius:14px!important}
}
@media(max-width:420px){
  .fan-switch-shell{border-radius:20px!important}
  .fan-category-tabs button{padding:0 12px!important;border-radius:12px!important}
}
@media(prefers-reduced-motion:reduce){
  .ios-back.is-feedback::before,.ios-back.is-feedback svg{animation:none!important}
}


/* v38 — active-only fan tabs + left mobile alignment + fries navigation icon */
.fan-category-tabs button,
.fan-category-tabs button.is-complete,
.fan-category-tabs button.is-complete:hover,
.fan-category-tabs button:hover:not(.active){
  background:transparent!important;
  color:#62585d!important;
  box-shadow:none!important;
}
.fan-category-tabs button.active,
.fan-category-tabs button.is-complete.active{
  background:linear-gradient(135deg,#9b7537 0%,#b68d46 100%)!important;
  color:#fff!important;
  box-shadow:0 5px 14px rgba(132,97,42,.18),inset 0 1px 0 rgba(255,255,255,.20)!important;
}

/* On phones the tabs start naturally from the left instead of floating in the center. */
@media(max-width:650px){
  .fan-category-tabs{
    justify-content:flex-start!important;
    gap:4px!important;
    padding-inline:0!important;
  }
  .fan-switch-shell{justify-content:flex-start!important}
}

/* Larger displays get calmer, more deliberate spacing while the group stays centered. */
@media(min-width:651px){
  .fan-category-tabs{
    justify-content:center!important;
    gap:clamp(8px,1.25vw,18px)!important;
    padding-inline:clamp(8px,1.6vw,22px)!important;
  }
  .fan-category-tabs button{
    min-width:clamp(92px,8.6vw,128px)!important;
    padding-inline:clamp(18px,2vw,28px)!important;
  }
}

/* Icon-only fries menu everywhere. No visible Menu word. */
.menu-trigger{
  width:48px!important;
  min-width:48px!important;
  height:48px!important;
  min-height:48px!important;
  padding:0!important;
  gap:0!important;
  border-radius:16px!important;
  display:inline-grid!important;
  place-items:center!important;
  font-size:0!important;
}
.menu-trigger .fries-icon{
  width:23px!important;
  height:23px!important;
  stroke-width:2!important;
  transition:transform .28s var(--ease),opacity .22s ease!important;
}
.menu-trigger:hover .fries-icon{transform:translateX(1px) scale(1.04)}
.menu-trigger:active .fries-icon{transform:scale(.92)}
@media(max-width:540px){
  .header .menu-trigger{
    width:42px!important;
    min-width:42px!important;
    height:42px!important;
    min-height:42px!important;
    padding:0!important;
    border-radius:14px!important;
  }
  .menu-trigger .fries-icon{width:21px!important;height:21px!important}
}
@media(prefers-reduced-motion:reduce){
  .menu-trigger .fries-icon{transition:none!important;transform:none!important}
}

/* v39 — focused fan voting/navigation polish */
/* The hero keeps its spectrum base while a narrow light pass creates a restrained premium shimmer. */
.wordmark{
  background-image:
    linear-gradient(112deg,transparent 35%,rgba(255,255,255,0) 43%,rgba(255,255,255,.9) 50%,rgba(255,255,255,0) 57%,transparent 65%),
    linear-gradient(104deg,#e9bf00 2%,#f3aa0d 25%,#f58921 48%,#e36129 73%,#b91538 98%);
  background-size:240% 100%,100% 100%;
  background-position:-170% 0,0 0;
  animation:ignitify-wordmark-shimmer 6.8s ease-in-out infinite;
}
@keyframes ignitify-wordmark-shimmer{
  0%,62%,100%{background-position:-170% 0,0 0}
  78%{background-position:170% 0,0 0}
}

/* Candidate/category swaps use one composited layer rather than a hard DOM flash. */
.fan-candidate-grid{
  transition:opacity .2s cubic-bezier(.22,1,.36,1),transform .3s cubic-bezier(.22,1,.36,1);
  transform-origin:50% 24px;
}
.fan-candidate-grid.is-tab-leaving{opacity:.36;transform:translateY(5px) scale(.997)}
.fan-candidate-grid.is-tab-skeleton{opacity:1;transform:none;pointer-events:none}
.fan-candidate-grid.is-tab-skeleton .skeleton-card{min-height:clamp(390px,50vw,610px);border-radius:24px;background:linear-gradient(145deg,#f5f2ef,#fbfaf8)}
.fan-candidate-grid.is-tab-entering{opacity:0;transform:translateY(7px) scale(.997)}
.fan-candidate-grid.is-tab-entering.is-tab-entered{opacity:1;transform:none}

/* Network-limit feedback stays interactive: the heart bounces back and a compact frosted notice explains why. */
.vote-heart.network-bounce{animation:fan-network-heart-bounce .56s cubic-bezier(.2,.9,.22,1.25)}
.candidate-card.network-blocked-feedback{animation:fan-network-card-pulse .58s ease both}
@keyframes fan-network-heart-bounce{0%{transform:scale(1)}25%{transform:scale(.82) rotate(-7deg)}55%{transform:scale(1.15) rotate(4deg)}78%{transform:scale(.97)}100%{transform:scale(1)}}
@keyframes fan-network-card-pulse{0%,100%{box-shadow:var(--fan-card-shadow,0 12px 34px rgba(48,36,34,.07))}45%{box-shadow:0 15px 44px rgba(128,73,55,.16),0 0 0 1px rgba(128,73,55,.08)}}
.fan-network-popup{
  position:fixed;z-index:1600;left:50%;bottom:max(20px,env(safe-area-inset-bottom));
  width:min(420px,calc(100vw - 28px));display:flex;align-items:center;gap:11px;
  padding:12px 15px;border:1px solid rgba(89,70,65,.12);border-radius:16px;
  background:rgba(255,252,248,.88);color:#4f4140;box-shadow:0 18px 56px rgba(44,30,35,.15);
  backdrop-filter:saturate(145%) blur(18px);-webkit-backdrop-filter:saturate(145%) blur(18px);
  opacity:0;transform:translate(-50%,14px) scale(.975);pointer-events:none;
  transition:opacity .24s ease,transform .36s cubic-bezier(.22,1,.36,1);
  font-size:13px;line-height:1.4;font-weight:600;
}
.fan-network-popup.is-visible{opacity:1;transform:translate(-50%,0) scale(1)}
.network-popup-icon{display:grid;place-items:center;flex:0 0 27px;width:27px;height:27px;border-radius:9px;background:#f4e9e4;color:#8a4037;font-weight:800}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.fan-network-popup{background:#fffaf5}}

/* The navigation drawer now eases in/out as a translucent side sheet, with a non-blur fallback. */
.link-menu{
  animation:none!important;
  background:rgba(255,253,250,.88)!important;
  backdrop-filter:saturate(150%) blur(28px);-webkit-backdrop-filter:saturate(150%) blur(28px);
  opacity:0;transform:translateX(30px) scale(.988);
  transition:opacity .25s ease,transform .38s cubic-bezier(.22,1,.36,1),box-shadow .3s ease;
}
.link-menu.is-visible{opacity:1;transform:none}
.link-menu.is-closing{opacity:0;transform:translateX(22px) scale(.99)}
.link-menu::backdrop{background:rgba(29,22,29,.12);backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0);opacity:0;transition:opacity .28s ease,backdrop-filter .34s ease,-webkit-backdrop-filter .34s ease}
.link-menu.is-visible::backdrop{opacity:1;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.link-menu.is-closing::backdrop{opacity:0;backdrop-filter:blur(0);-webkit-backdrop-filter:blur(0)}
.link-menu .dialog-top .icon-button[data-close]{color:#7d2428;border-color:rgba(125,36,40,.13);background:rgba(125,36,40,.045);transition:background .2s ease,transform .25s cubic-bezier(.22,1,.36,1),color .2s ease}
.link-menu .dialog-top .icon-button[data-close]:hover{background:rgba(125,36,40,.09);color:#68191e}
.link-menu .dialog-top .icon-button[data-close]:active{transform:scale(.9)}
.link-menu .dialog-label{color:#4d4147;font-size:13px;letter-spacing:.08em;text-transform:none;font-weight:700}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){.link-menu{background:#fffdf9!important}.link-menu::backdrop{background:rgba(29,22,29,.25)}}

@media(max-width:650px){
  .fan-candidate-grid.is-tab-skeleton .skeleton-card{min-height:390px;border-radius:20px}
  .fan-network-popup{bottom:max(14px,env(safe-area-inset-bottom));border-radius:14px;padding:11px 13px}
}
@media(prefers-reduced-motion:reduce){
  .wordmark{animation:none!important;background-position:170% 0,0 0}
  .fan-candidate-grid,.vote-heart.network-bounce,.candidate-card.network-blocked-feedback,.fan-network-popup,.link-menu{transition:none!important;animation:none!important;filter:none!important}
  .link-menu{transform:none!important}.fan-network-popup.is-visible{transform:translate(-50%,0)!important}
}

/* v40 — performance-first fan voting motion ---------------------------------- */
/* One composited indicator slides between category tabs. Buttons themselves no
   longer repaint their backgrounds, which makes tab changes feel continuous. */
.fan-tabs-wrap{min-width:0}
.fan-category-tabs{
  position:relative!important;
  isolation:isolate;
  scroll-behavior:smooth;
}
.fan-category-tabs .fan-tab-indicator{
  position:absolute;
  z-index:0;
  top:0;
  left:0;
  height:42px;
  width:88px;
  border-radius:14px;
  background:linear-gradient(135deg,#92703a 0%,#b88f47 100%);
  box-shadow:0 7px 18px rgba(132,97,42,.18),inset 0 1px 0 rgba(255,255,255,.22);
  transform:translate3d(0,0,0);
  transition:transform .44s cubic-bezier(.22,1,.36,1),width .38s cubic-bezier(.22,1,.36,1),box-shadow .28s ease;
  pointer-events:none;
  will-change:transform,width;
}
.fan-category-tabs .fan-tab-indicator.is-instant{transition:none!important}
.fan-category-tabs button,
.fan-category-tabs button.is-complete,
.fan-category-tabs button.is-complete:hover,
.fan-category-tabs button:hover:not(.active),
.fan-category-tabs button.active,
.fan-category-tabs button.is-complete.active{
  position:relative;
  z-index:1;
  background:transparent!important;
  box-shadow:none!important;
}
.fan-category-tabs button.active,
.fan-category-tabs button.is-complete.active{color:#fff!important}
.fan-category-tabs button:hover:not(.active){color:#30282c!important;background:rgba(255,255,255,.22)!important}
.fan-switch-shell.is-searching .fan-tab-indicator{opacity:0;transition:opacity .14s ease!important}

/* Search and the segmented shell stay on the compositor during expansion. */
.fan-switch-shell,.fan-tabs-wrap,.fan-search{
  transform:translateZ(0);
  backface-visibility:hidden;
}
.fan-switch-shell .fan-search{
  will-change:width,flex-basis,transform,opacity;
}

/* Initial Fan Voting preloader mirrors the homepage language without loading
   the 3D renderer, so it is cheap even on older phones. */
.fan-page-preloader{gap:0}
.fan-page-preloader .loader-wordmark{font-size:clamp(29px,6vw,42px);letter-spacing:.12em}
.fan-page-preloader .loader-caption{margin-top:12px}
.fan-page-preloader .loader-line{width:118px;margin-top:16px}

/* Every fan card owns its image-loading skeleton. The real card is already in
   layout underneath it, eliminating the jump when an image becomes available. */
.fan-candidate-grid .candidate-card{
  position:relative;
  overflow:hidden;
  content-visibility:auto;
  contain-intrinsic-size:auto 590px;
}
.fan-card-skeleton{
  position:absolute;
  z-index:12;
  inset:0;
  display:block;
  overflow:hidden;
  border-radius:inherit;
  background:linear-gradient(145deg,#f2efeb 0%,#faf8f5 48%,#f0ece7 100%);
  opacity:1;
  visibility:visible;
  pointer-events:none;
  transition:opacity .38s cubic-bezier(.22,1,.36,1),visibility 0s linear .38s;
}
.fan-card-skeleton::after{
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(104deg,transparent 22%,rgba(255,255,255,.18) 36%,rgba(255,255,255,.82) 48%,rgba(255,255,255,.22) 60%,transparent 76%);
  transform:translate3d(-110%,0,0);
  animation:v40-card-shimmer 1.28s cubic-bezier(.4,0,.2,1) infinite;
  will-change:transform;
}
.fan-card-skeleton i{
  display:block;
  width:100%;
  aspect-ratio:3/4;
  background:linear-gradient(155deg,#e8e4df,#f2efeb);
}
.fan-card-skeleton b,.fan-card-skeleton em,.fan-card-skeleton small{
  position:absolute;
  left:18px;
  display:block;
  height:12px;
  border-radius:999px;
  background:rgba(210,203,196,.72);
}
.fan-card-skeleton b{bottom:126px;width:34%;height:10px}
.fan-card-skeleton em{bottom:88px;width:68%;height:18px}
.fan-card-skeleton small{bottom:42px;width:44%;height:10px}
.fan-candidate-grid .candidate-card.is-media-ready .fan-card-skeleton{opacity:0;visibility:hidden}
@keyframes v40-card-shimmer{to{transform:translate3d(110%,0,0)}}

/* Category changes no longer rebuild the grid. Only visible cards ease out and
   in, while below-the-fold cards stay untouched. */
.fan-candidate-grid{transform:translateZ(0)}
.fan-candidate-grid.is-category-switching{pointer-events:none}

/* One-shot, scroll-driven candidate reveal. Transform + opacity only keeps the
   effect smooth on mobile GPUs and avoids expensive filters. */
.fan-candidate-grid .candidate-card.fan-scroll-reveal{
  opacity:0!important;
  transform:translate3d(0,32px,0) scale(.986)!important;
  transition:
    opacity .66s cubic-bezier(.16,1,.3,1) var(--fan-reveal-delay,0ms),
    transform .76s cubic-bezier(.16,1,.3,1) var(--fan-reveal-delay,0ms),
    box-shadow .26s ease,border-color .26s ease!important;
  will-change:opacity,transform;
}
.fan-candidate-grid .candidate-card.fan-scroll-reveal.is-visible{
  opacity:1!important;
  transform:translate3d(0,0,0) scale(1)!important;
  will-change:auto;
}

/* Keep controls and card interactions silky but short. */
.fan-candidate-grid .candidate-info{transition:background .34s ease,border-color .28s ease}
.fan-candidate-grid .portrait>img{transition:transform .56s cubic-bezier(.22,1,.36,1),opacity .28s ease}
.vote-heart,.share-button{transition:transform .24s cubic-bezier(.22,1,.36,1),background .24s ease,color .24s ease,border-color .24s ease,box-shadow .28s ease!important}

@media(max-width:650px){
  .fan-category-tabs .fan-tab-indicator{height:40px;border-radius:12px}
  .fan-card-skeleton b{bottom:114px}.fan-card-skeleton em{bottom:80px}.fan-card-skeleton small{bottom:38px}
}
@media(prefers-reduced-motion:reduce){
  .fan-category-tabs .fan-tab-indicator,.fan-card-skeleton,.fan-candidate-grid .candidate-card.fan-scroll-reveal,.fan-candidate-grid .portrait>img{transition:none!important;animation:none!important}
  .fan-card-skeleton::after{animation:none!important}
}

/* v41 — safer admin resets + Live Stage score shimmer ------------------------ */
.reset-panel label{display:grid;gap:8px;margin-top:4px;font-size:13px;font-weight:700;color:#564b50}
.reset-panel select{width:100%;min-height:48px;border:1px solid rgba(97,77,83,.16);border-radius:14px;background:#fff;padding:0 14px;color:#282329;font:inherit;box-shadow:0 5px 18px rgba(50,34,40,.035);transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}
.reset-panel select:focus{outline:0;border-color:rgba(157,98,40,.42);box-shadow:0 0 0 4px rgba(190,132,68,.09)}
.reset-scope-note{margin:0;padding:12px 14px;border-radius:13px;background:rgba(125,107,100,.055);color:#796d68;font-size:12px;line-height:1.55}
.reset-dialog{max-width:430px!important}
.reset-dialog .tools-dialog-body{text-align:center}
.reset-confirm-mark{width:48px;height:48px;margin:0 auto 2px;border-radius:50%;display:grid;place-items:center;background:rgba(139,35,40,.09);color:#8c252a;font-size:23px;font-weight:800}
.reset-dialog #reset-confirm-copy{margin:0 auto;color:#5f5558;line-height:1.6;max-width:340px}
.reset-confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:4px}
.reset-confirm-actions button{min-height:46px}

/* A newly submitted judge score sends one quiet light pass around the active
   candidate frame. It is compositor-friendly and does not rebuild Live Stage. */
.live-portrait-frame{position:relative;isolation:isolate}
.live-portrait-frame.score-shimmer::before{content:"";position:absolute;z-index:8;pointer-events:none;inset:-2px;border-radius:inherit;background:linear-gradient(118deg,transparent 18%,rgba(255,221,132,0) 31%,rgba(255,230,154,.85) 43%,rgba(255,255,255,.98) 49%,rgba(221,174,255,.48) 56%,rgba(255,221,132,0) 68%,transparent 82%);transform:translate3d(-115%,0,0) skewX(-12deg);mix-blend-mode:screen;opacity:0;animation:v41-score-frame-shimmer .92s cubic-bezier(.2,.72,.25,1) both;will-change:transform,opacity}
@keyframes v41-score-frame-shimmer{0%{transform:translate3d(-115%,0,0) skewX(-12deg);opacity:0}12%{opacity:.92}74%{opacity:.64}100%{transform:translate3d(115%,0,0) skewX(-12deg);opacity:0}}
@media(prefers-reduced-motion:reduce){.live-portrait-frame.score-shimmer::before{animation:none!important;display:none!important}}
@media(max-width:540px){.reset-confirm-actions{grid-template-columns:1fr}.reset-dialog{max-width:calc(100vw - 22px)!important}}

/* v43 — square Fan Voting portraits + presentation-friendly Standby media ---- */
/* Fan Voting is intentionally square now. The card image always fills its
   1:1 frame so every category keeps a consistent visual rhythm. */
.fan-candidate-grid .portrait{
  aspect-ratio:1 / 1!important;
}
.fan-candidate-grid .portrait>img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  object-position:center center!important;
}
.fan-candidate-grid .fan-card-skeleton i{
  aspect-ratio:1 / 1!important;
}
.fan-candidate-grid .candidate-card{
  contain-intrinsic-size:auto 510px;
}

/* Standby artwork is designed for the Live Stage / large displays. Landscape
   uploads use the full available stage width, remain centered, and preserve
   their natural aspect ratio. Animated GIFs are served as-is by the backend. */
.live-stage.is-standby .live-standby-shell{
  width:100%!important;
  max-width:none!important;
  margin-inline:auto!important;
  padding:clamp(20px,3vw,44px)!important;
  align-items:center!important;
  justify-content:center!important;
  text-align:center!important;
}
.live-stage.is-standby .live-standby-image{
  width:100%!important;
  max-width:none!important;
  max-height:none!important;
  margin-inline:auto!important;
  display:grid!important;
  place-items:center!important;
}
.live-stage.is-standby .live-standby-image img{
  display:block!important;
  width:100%!important;
  height:auto!important;
  max-width:100%!important;
  max-height:min(72vh,860px)!important;
  margin-inline:auto!important;
  object-fit:contain!important;
  object-position:center center!important;
  border-radius:clamp(18px,2.2vw,30px)!important;
  overflow:hidden;
}
.live-stage.is-standby .live-standby-shell h2{
  width:min(100%,1000px);
  margin-inline:auto!important;
  text-align:center!important;
}
.standby-image-preview img{
  width:100%!important;
  height:auto!important;
  aspect-ratio:16 / 9;
  object-fit:contain!important;
  object-position:center center!important;
  border-radius:12px;
}
@media(max-width:650px){
  .fan-candidate-grid .candidate-card{contain-intrinsic-size:auto 450px}
  .live-stage.is-standby .live-standby-shell{padding:18px 12px!important}
  .live-stage.is-standby .live-standby-image img{max-height:58vh!important;border-radius:18px!important}
}


/* v44 — full-width Standby fix + 3:4 candidate portraits ------------------- */
/* When Standby switches the Live Stage back to display:grid, an old two-column
   grid definition can become active again. Explicitly collapse it to one
   column so landscape artwork owns the complete stage width. */
.live-stage.is-standby{
  grid-template-columns:minmax(0,1fr)!important;
  grid-template-rows:auto!important;
  place-items:center stretch!important;
  width:100%!important;
}
.live-stage.is-standby .live-standby-shell{
  grid-column:1 / -1!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  box-sizing:border-box!important;
}
.live-stage.is-standby .live-standby-image{
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
}
.live-stage.is-standby .live-standby-image img{
  width:100%!important;
  max-width:none!important;
  height:auto!important;
  max-height:none!important;
  object-fit:cover!important;
  object-position:center!important;
  border-radius:clamp(18px,2vw,28px)!important;
}
/* The decorative pause mark was removed from the Standby markup. Keep this as
   a defensive fallback for cached HTML while deploying. */
.live-stage.is-standby .live-standby-mark{display:none!important}

/* Restore the pageant portrait proportion everywhere candidates are browsed. */
.fan-candidate-grid .portrait{
  aspect-ratio:3 / 4!important;
}
.fan-candidate-grid .portrait>img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  object-position:center center!important;
}
.fan-candidate-grid .fan-card-skeleton i{aspect-ratio:3 / 4!important}
.fan-candidate-grid .candidate-card{contain-intrinsic-size:auto 640px}
.moderator-card .portrait,.moderator-card .moderator-portrait,.candidate-admin-thumb{aspect-ratio:3 / 4!important}
.moderator-card .portrait img,.moderator-card .moderator-portrait img,.candidate-admin-thumb img{width:100%;height:100%;object-fit:cover!important;object-position:center!important}
@media(max-width:650px){
  .fan-candidate-grid .candidate-card{contain-intrinsic-size:auto 570px}
  .live-stage.is-standby .live-standby-image img{border-radius:18px!important}
}

/* v45 — Standby video + viewport-fit presentation -------------------------- */
/* Standby media fills the current Live Stage viewport.
   The full-width stage remains and image/video media uses cover. */
.live-stage.is-standby{
  min-height:calc(100dvh - 132px)!important;
  max-height:calc(100dvh - 132px)!important;
  overflow:hidden!important;
}
.live-stage.is-standby .live-standby-shell{
  height:100%!important;
  max-height:calc(100dvh - 132px)!important;
  min-height:0!important;
  padding:clamp(14px,2vw,28px)!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
  gap:clamp(10px,1.6vw,20px)!important;
}
.live-stage.is-standby .live-standby-image{
  flex:1 1 auto!important;
  width:100%!important;
  min-height:0!important;
  max-height:100%!important;
  overflow:hidden!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}
.live-stage.is-standby .live-standby-image img,
.live-stage.is-standby .live-standby-image video{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:100%!important;
  max-height:100%!important;
  object-fit:cover!important;
  object-position:center center!important;
  border-radius:clamp(16px,1.8vw,26px)!important;
  background:#0b0b0c!important;
  box-shadow:0 18px 50px rgba(27,20,17,.12)!important;
}
.live-stage.is-standby .standby-mode-image .live-standby-image{
  height:calc(100dvh - 188px)!important;
}
.live-stage.is-standby .standby-mode-both .live-standby-image{
  max-height:calc(100dvh - 285px)!important;
}
.live-stage.is-standby .standby-mode-both h2{
  flex:0 0 auto;
  font-size:clamp(24px,3.8vw,54px)!important;
}
.live-stage.is-standby .standby-loader{flex:0 0 auto}

/* Moderator preview supports both still/animated images and video. */
.standby-image-preview img,
.standby-image-preview video{
  display:block!important;
  width:100%!important;
  aspect-ratio:16 / 9!important;
  height:auto!important;
  max-height:280px!important;
  object-fit:contain!important;
  object-position:center center!important;
  border-radius:12px!important;
  background:#151515!important;
}

@media(max-width:650px){
  .live-stage.is-standby{
    min-height:calc(100dvh - 106px)!important;
    max-height:calc(100dvh - 106px)!important;
  }
  .live-stage.is-standby .live-standby-shell{
    max-height:calc(100dvh - 106px)!important;
    padding:12px 9px!important;
  }
  .live-stage.is-standby .standby-mode-image .live-standby-image{
    height:calc(100dvh - 154px)!important;
  }
  .live-stage.is-standby .standby-mode-both .live-standby-image{
    max-height:calc(100dvh - 230px)!important;
  }
  .live-stage.is-standby .live-standby-image img,
  .live-stage.is-standby .live-standby-image video{
    border-radius:16px!important;
  }
}

/* v46 — Philippines voting guard + requested interaction polish -------------- */
.fan-network-popup{isolation:isolate;overflow:visible;box-shadow:0 20px 62px rgba(44,30,35,.20),0 8px 24px rgba(167,92,54,.10)}
.fan-network-popup::after{
  content:'';position:absolute;z-index:-1;left:8%;right:8%;bottom:-34px;height:58px;
  border-radius:50%;pointer-events:none;opacity:0;
  background:radial-gradient(ellipse at center,rgba(226,135,69,.30) 0%,rgba(187,77,74,.17) 42%,rgba(118,70,112,.07) 62%,transparent 78%);
  filter:blur(15px);transform:translateY(7px) scale(.92);
  transition:opacity .3s ease,transform .42s cubic-bezier(.22,1,.36,1);
}
.fan-network-popup.is-visible::after{opacity:.92;transform:translateY(0) scale(1)}

.link-menu .dialog-top,.link-menu .menu-link{
  opacity:0;transform:translateX(16px);
  transition:opacity .28s ease,transform .42s cubic-bezier(.22,1,.36,1);
}
.link-menu.is-visible .dialog-top,.link-menu.is-visible .menu-link{opacity:1;transform:none}
.link-menu.is-visible .dialog-top{transition-delay:.045s}
.link-menu.is-visible .menu-link:nth-child(1){transition-delay:.085s}
.link-menu.is-visible .menu-link:nth-child(2){transition-delay:.12s}
.link-menu.is-visible .menu-link:nth-child(3){transition-delay:.155s}
.link-menu.is-visible .menu-link:nth-child(4){transition-delay:.19s}
.link-menu.is-visible .menu-link:nth-child(5){transition-delay:.225s}
.link-menu.is-visible .menu-link:nth-child(6){transition-delay:.26s}
.link-menu.is-visible .menu-link:nth-child(7){transition-delay:.295s}
.link-menu.is-closing .dialog-top,.link-menu.is-closing .menu-link{opacity:0;transform:translateX(12px)}
.link-menu.is-closing .menu-link:nth-child(1){transition-delay:.15s}
.link-menu.is-closing .menu-link:nth-child(2){transition-delay:.125s}
.link-menu.is-closing .menu-link:nth-child(3){transition-delay:.10s}
.link-menu.is-closing .menu-link:nth-child(4){transition-delay:.075s}
.link-menu.is-closing .menu-link:nth-child(5){transition-delay:.05s}
.link-menu.is-closing .menu-link:nth-child(6){transition-delay:.025s}
.link-menu.is-closing .menu-link:nth-child(7),.link-menu.is-closing .dialog-top{transition-delay:0s}

@media(max-width:650px){
  .fan-category-tabs{gap:clamp(10px,3vw,16px)!important;padding-inline:8px!important}
}
@media(prefers-reduced-motion:reduce){
  .fan-network-popup::after,.link-menu .dialog-top,.link-menu .menu-link{transition:none!important;animation:none!important}
  .link-menu .dialog-top,.link-menu .menu-link{opacity:1!important;transform:none!important}
}


/* v47 — premium full-viewport Live Stage + full-screen Standby media ---------- */
/* Live presentation now owns the viewport. The existing floating header remains
   available above the show while the stage itself uses the complete canvas. */
body[data-page=live]{min-height:100dvh;background:#f4f5f6!important}
body[data-page=live]>.spectrum{position:fixed;z-index:96;top:0;left:0;right:0;width:100%}
body[data-page=live] main{min-height:100dvh!important;padding:0!important}
body[data-page=live] .live-workspace{
  width:100%!important;max-width:none!important;min-height:100dvh!important;
  padding:0!important;margin:0!important
}
body[data-page=live] .live-stage{
  width:100%!important;min-height:100dvh!important;margin:0!important;
  padding:clamp(92px,9vh,116px) clamp(22px,4vw,72px) clamp(26px,4vh,54px)!important;
  border:0!important;border-radius:0!important;box-shadow:none!important;
  background:
    radial-gradient(circle at 18% 16%,rgba(255,255,255,.98),transparent 31%),
    radial-gradient(circle at 88% 18%,rgba(225,228,232,.74),transparent 30%),
    radial-gradient(circle at 54% 110%,rgba(210,214,220,.62),transparent 42%),
    linear-gradient(135deg,#f4f5f6 0%,#fff 46%,#eceef1 100%)!important;
  overflow:hidden!important
}
body[data-page=live] .live-stage:before{
  opacity:.9!important;z-index:0!important;inset:-16%!important;
  background:
    radial-gradient(ellipse at 18% 26%,rgba(255,255,255,.92) 0 13%,transparent 41%),
    radial-gradient(ellipse at 76% 22%,rgba(191,196,202,.32) 0 9%,transparent 36%),
    radial-gradient(ellipse at 50% 92%,rgba(255,255,255,.86) 0 15%,transparent 46%)!important
}
body[data-page=live] .live-stage:after{
  z-index:7!important;border-radius:0!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.82),inset 0 -1px 0 rgba(35,39,44,.05)!important
}
.live-stage-scene{
  position:relative!important;z-index:4!important;width:min(1540px,100%)!important;
  min-height:calc(100dvh - 146px);margin:auto!important;display:flex;align-items:center;
  transition:height .58s cubic-bezier(.22,1,.36,1)
}
.live-stage-scene>.live-stage-grid{width:100%!important}
.live-stage-grid{
  grid-template-columns:minmax(320px,.86fr) minmax(460px,1.14fr)!important;
  gap:clamp(30px,5vw,78px)!important;align-items:center!important
}
.live-candidate-column{display:flex!important;align-items:center;justify-content:center!important}
.live-portrait-frame{
  width:min(100%,520px)!important;padding:10px!important;border-radius:32px!important;
  background:linear-gradient(145deg,rgba(255,255,255,.76),rgba(238,240,243,.5))!important;
  border:1px solid rgba(255,255,255,.92)!important;
  box-shadow:0 30px 78px rgba(35,39,44,.14),0 7px 20px rgba(35,39,44,.06),inset 0 1px 0 rgba(255,255,255,.98)!important;
  backdrop-filter:blur(18px) saturate(110%)!important;-webkit-backdrop-filter:blur(18px) saturate(110%)!important
}
.live-candidate-column .live-portrait-frame .live-portrait{
  width:100%!important;height:auto!important;aspect-ratio:3/4!important;border-radius:23px!important;
  background:linear-gradient(160deg,#fafafa,#e8eaed)!important;
  box-shadow:0 20px 54px rgba(31,35,40,.12),inset 0 0 0 1px rgba(255,255,255,.78)!important
}
.live-candidate-column .live-portrait-frame .live-portrait>img{object-fit:cover!important;object-position:center!important}
.live-metrics-column{gap:20px!important;justify-content:center}
.live-average-plain,.live-judge-block{
  border:1px solid rgba(255,255,255,.86)!important;
  background:linear-gradient(145deg,rgba(255,255,255,.79),rgba(245,246,248,.62))!important;
  box-shadow:0 22px 62px rgba(38,42,48,.09),inset 0 1px 0 rgba(255,255,255,.98)!important;
  backdrop-filter:blur(22px) saturate(112%)!important;-webkit-backdrop-filter:blur(22px) saturate(112%)!important
}
.live-average-plain{min-height:330px!important;border-radius:30px!important;padding:clamp(28px,3.2vw,46px)!important}
.live-judge-block{position:relative;isolation:isolate;overflow:hidden;border-radius:25px!important;padding:19px 21px 21px!important}
.live-judge-block:before{
  content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;opacity:.46;
  background-image:
    linear-gradient(rgba(68,78,91,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(68,78,91,.045) 1px,transparent 1px),
    radial-gradient(circle at 78% 18%,rgba(220,172,69,.11),transparent 28%);
  background-size:22px 22px,22px 22px,auto;
  -webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,.75),transparent 96%);mask-image:linear-gradient(to bottom,rgba(0,0,0,.75),transparent 96%)
}
.live-judge-label{position:relative;z-index:2;color:#6f747b!important;letter-spacing:.14em!important}
.live-judge-scores{position:relative;z-index:2;gap:10px!important}
.live-judge-scores .anonymous-score{
  position:relative;isolation:isolate;overflow:hidden;min-height:78px!important;border-radius:17px!important;
  border:1px solid rgba(87,94,105,.12)!important;
  background:
    linear-gradient(rgba(82,91,103,.035) 1px,transparent 1px),
    linear-gradient(90deg,rgba(82,91,103,.035) 1px,transparent 1px),
    linear-gradient(145deg,rgba(255,255,255,.94),rgba(244,246,248,.86))!important;
  background-size:14px 14px,14px 14px,auto!important;
  box-shadow:0 9px 24px rgba(38,43,49,.06),inset 0 1px 0 rgba(255,255,255,.95)!important
}
.live-judge-scores .anonymous-score strong{
  position:relative;z-index:2;font-family:Montserrat,Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;
  font-weight:800!important;letter-spacing:-.045em!important;color:#171a1f!important;
  text-shadow:0 1px 0 rgba(255,255,255,.9)
}
.live-judge-scores .anonymous-score:before{
  content:"";position:absolute;z-index:1;left:-8%;right:-8%;top:-28%;height:24%;pointer-events:none;
  background:linear-gradient(to bottom,transparent,rgba(225,180,72,.08) 24%,rgba(255,235,169,.78) 50%,rgba(188,197,211,.26) 72%,transparent);
  box-shadow:0 0 16px rgba(225,180,72,.22);opacity:0;transform:translate3d(0,-360%,0)
}
.live-judge-scores .anonymous-score.score-arrived{
  border-color:rgba(192,147,47,.24)!important;
  box-shadow:0 12px 32px rgba(81,63,31,.09),inset 0 0 0 1px rgba(255,231,157,.16)!important;
  animation:live-tech-card-arrive .7s cubic-bezier(.22,1,.36,1) both!important
}
.live-judge-scores .anonymous-score.score-arrived:before{opacity:1;animation:live-score-scan 1.08s cubic-bezier(.18,.75,.25,1) both}
.live-judge-scores .anonymous-score.pending:before{opacity:.18;animation:live-score-idle-scan 4.6s ease-in-out infinite}
@keyframes live-score-scan{
  0%{transform:translate3d(0,-360%,0);opacity:0}
  12%{opacity:1}
  72%{opacity:.78}
  100%{transform:translate3d(0,520%,0);opacity:0}
}
@keyframes live-score-idle-scan{
  0%,62%,100%{transform:translate3d(0,-380%,0);opacity:0}
  68%{opacity:.15}
  86%{transform:translate3d(0,520%,0);opacity:.08}
}
@keyframes live-tech-card-arrive{
  0%{transform:translateY(6px) scale(.975);filter:brightness(.97)}
  52%{transform:translateY(0) scale(1.012);filter:brightness(1.035)}
  100%{transform:none;filter:none}
}
.live-average-value strong.score-refresh{
  animation:live-average-tech-refresh .82s cubic-bezier(.22,1,.36,1) both!important
}
@keyframes live-average-tech-refresh{
  0%{opacity:.56;transform:translateY(6px) scale(.985);text-shadow:0 0 0 rgba(210,164,60,0)}
  48%{opacity:1;transform:translateY(0) scale(1.018);text-shadow:0 0 26px rgba(210,164,60,.20)}
  100%{transform:none;text-shadow:none}
}

/* Candidate name: black base, long-form gold reveal, restrained shimmer, then
   a smooth return to black. The duplicate text is decorative only. */
.live-candidate-name{
  position:relative!important;display:inline-block;max-width:100%;color:#17191d!important;
  text-shadow:0 2px 0 rgba(255,255,255,.76),0 7px 22px rgba(30,33,38,.08)!important
}
.live-candidate-name:after{
  content:attr(data-name);position:absolute;z-index:2;inset:0;width:100%;height:100%;pointer-events:none;
  font:inherit;line-height:inherit;letter-spacing:inherit;text-align:inherit;
  color:transparent;-webkit-text-fill-color:transparent;
  background:linear-gradient(105deg,#6f4b0a 0%,#c28a20 20%,#fff0a7 39%,#b6780f 54%,#f6df83 70%,#7e5410 100%);
  background-size:240% 100%;background-position:100% 50%;background-clip:text;-webkit-background-clip:text;
  filter:drop-shadow(0 5px 12px rgba(125,84,18,.20));opacity:0;
  animation:live-name-gold-cycle 12.8s cubic-bezier(.22,1,.36,1) .55s 1 both
}
@keyframes live-name-gold-cycle{
  0%,4%{opacity:0;background-position:100% 50%;filter:drop-shadow(0 2px 4px rgba(125,84,18,0))}
  11%{opacity:1;background-position:92% 50%;filter:drop-shadow(0 6px 15px rgba(125,84,18,.18))}
  34%{opacity:1;background-position:28% 50%;filter:drop-shadow(0 7px 17px rgba(125,84,18,.22))}
  56%{opacity:1;background-position:72% 50%;filter:drop-shadow(0 7px 17px rgba(125,84,18,.18))}
  73%{opacity:.94;background-position:8% 50%;filter:drop-shadow(0 5px 12px rgba(125,84,18,.14))}
  88%{opacity:.44;background-position:42% 50%;filter:drop-shadow(0 2px 6px rgba(125,84,18,.07))}
  100%{opacity:0;background-position:0 50%;filter:drop-shadow(0 0 0 rgba(125,84,18,0))}
}

/* MMIICT-inspired presentation atmosphere: outline typography and slow silver
   fabric-like ribbons remain behind all candidate content. */
.live-stage-ambient-host{
  display:block!important;position:absolute!important;z-index:1!important;inset:0!important;
  border-radius:0!important;overflow:hidden!important;pointer-events:none!important;background:transparent!important;
  opacity:1;transform:translate3d(0,0,0);transition:transform .9s cubic-bezier(.22,1,.36,1),filter .9s ease
}
.live-stage-ambient-host.ambient-shift-left{transform:translate3d(-.45%,0,0);filter:brightness(1.015)}
.live-stage-ambient-host.ambient-shift-right{transform:translate3d(.45%,0,0);filter:brightness(1.015)}
.live-stage-wire-word{
  position:absolute;z-index:0;left:50%;top:clamp(54px,7vh,86px);transform:translateX(-50%) scaleX(.88);
  width:120%;text-align:center;white-space:nowrap;overflow:hidden;
  font-family:Montserrat,Inter,sans-serif;font-size:clamp(104px,15vw,270px);font-weight:700;line-height:.78;
  letter-spacing:-.075em;color:transparent;-webkit-text-fill-color:transparent;
  -webkit-text-stroke:1px rgba(35,39,44,.095);text-shadow:0 1px 0 rgba(255,255,255,.8);
  opacity:.9;animation:live-wire-breathe 11s ease-in-out infinite
}
.live-stage-flow{
  position:absolute;z-index:1;display:block;pointer-events:none;border-radius:48% 52% 58% 42% / 54% 43% 57% 46%;
  background:
    linear-gradient(122deg,rgba(255,255,255,.14) 4%,rgba(255,255,255,.94) 27%,rgba(173,179,188,.50) 42%,rgba(250,251,252,.96) 57%,rgba(147,154,164,.34) 73%,rgba(255,255,255,.18) 92%);
  border:1px solid rgba(255,255,255,.7);
  box-shadow:inset 0 0 48px rgba(255,255,255,.68),0 30px 80px rgba(56,62,71,.11);
  filter:blur(.25px) saturate(.64);opacity:.54;will-change:transform
}
.live-stage-flow:after{
  content:"";position:absolute;inset:9% 8%;border-radius:inherit;
  background:linear-gradient(118deg,transparent 7%,rgba(255,255,255,.62) 34%,transparent 52%,rgba(126,134,145,.14) 70%,transparent 88%);
  filter:blur(7px)
}
.live-stage-flow-a{width:58vw;height:22vh;left:-18vw;bottom:6vh;transform:rotate(12deg) skewX(-10deg);animation:live-flow-a 18s ease-in-out infinite alternate}
.live-stage-flow-b{width:56vw;height:21vh;right:-17vw;bottom:7vh;transform:rotate(-13deg) skewX(9deg);animation:live-flow-b 21s ease-in-out infinite alternate}
.live-stage-flow-c{width:42vw;height:12vh;left:30%;bottom:-3vh;opacity:.34;transform:rotate(-2deg);animation:live-flow-c 16s ease-in-out infinite alternate}
.live-stage-grid-glow{
  position:absolute;z-index:0;inset:0;opacity:.14;
  background-image:linear-gradient(rgba(70,77,87,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(70,77,87,.09) 1px,transparent 1px);
  background-size:54px 54px;
  -webkit-mask-image:radial-gradient(ellipse at center,black 0%,transparent 72%);mask-image:radial-gradient(ellipse at center,black 0%,transparent 72%);
  animation:live-grid-drift 24s linear infinite
}
@keyframes live-flow-a{from{transform:translate3d(-2%,3%,0) rotate(9deg) skewX(-10deg) scale(1)}to{transform:translate3d(8%,-4%,0) rotate(15deg) skewX(-6deg) scale(1.05)}}
@keyframes live-flow-b{from{transform:translate3d(2%,0,0) rotate(-16deg) skewX(9deg) scale(1.03)}to{transform:translate3d(-9%,-5%,0) rotate(-9deg) skewX(6deg) scale(.98)}}
@keyframes live-flow-c{from{transform:translate3d(-5%,3%,0) rotate(-4deg) scale(.98)}to{transform:translate3d(7%,-3%,0) rotate(3deg) scale(1.06)}}
@keyframes live-wire-breathe{0%,100%{opacity:.52;transform:translateX(-50%) scaleX(.88) translateY(0)}50%{opacity:.88;transform:translateX(-50%) scaleX(.895) translateY(3px)}}
@keyframes live-grid-drift{to{background-position:54px 54px,54px 54px}}

/* Full-screen Standby image/video. Media is intentionally allowed to cover the
   complete display; image-only mode has no extra UI over the artwork. */
body.live-standby-media-active{overflow:hidden!important}
body.live-standby-media-active .header,body.live-standby-media-active>.spectrum{visibility:hidden!important}
body[data-page=live] #live-stage.standby-has-media{
  position:fixed!important;z-index:300!important;inset:0!important;
  width:100vw!important;height:100dvh!important;min-height:100dvh!important;max-height:none!important;
  margin:0!important;padding:0!important;border:0!important;border-radius:0!important;
  background:#050608!important;box-shadow:none!important;overflow:hidden!important;display:block!important
}
#live-stage.standby-has-media:before,#live-stage.standby-has-media:after{display:none!important}
#live-stage.standby-has-media .live-standby-shell{
  position:absolute!important;inset:0!important;width:100%!important;height:100%!important;
  min-height:100%!important;max-height:none!important;margin:0!important;padding:0!important;
  border:0!important;border-radius:0!important;display:block!important;overflow:hidden!important;background:#050608!important
}
#live-stage.standby-has-media .standby-halo,#live-stage.standby-has-media .standby-loader{display:none!important}
#live-stage.standby-has-media .live-standby-image,
#live-stage.standby-has-media .standby-mode-image .live-standby-image,
#live-stage.standby-has-media .standby-mode-both .live-standby-image{
  position:absolute!important;z-index:1!important;inset:0!important;width:100%!important;height:100%!important;
  min-width:100%!important;min-height:100%!important;max-width:none!important;max-height:none!important;
  margin:0!important;padding:0!important;display:block!important;overflow:hidden!important;animation:none!important
}
#live-stage.standby-has-media .live-standby-image img,
#live-stage.standby-has-media .live-standby-image video{
  position:absolute!important;inset:0!important;display:block!important;width:100%!important;height:100%!important;
  min-width:100%!important;min-height:100%!important;max-width:none!important;max-height:none!important;
  margin:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;filter:none!important;
  object-fit:cover!important;object-position:center center!important;background:#050608!important
}
#live-stage.standby-with-copy .live-standby-shell:after{
  content:"";position:absolute;z-index:2;left:0;right:0;bottom:0;height:46%;pointer-events:none;
  background:linear-gradient(to top,rgba(3,4,6,.62),rgba(3,4,6,.18) 48%,transparent)
}
#live-stage.standby-with-copy .live-standby-shell h2{
  position:absolute!important;z-index:3!important;left:50%!important;bottom:clamp(34px,6vh,78px)!important;
  transform:translateX(-50%);width:min(1200px,88vw)!important;max-width:none!important;margin:0!important;
  color:#fff!important;text-align:center!important;font-size:clamp(34px,5vw,74px)!important;
  line-height:1!important;letter-spacing:-.05em!important;text-shadow:0 4px 30px rgba(0,0,0,.42)!important
}

@media(max-width:900px){
  body[data-page=live] .live-stage{padding:clamp(86px,9vh,104px) 20px 24px!important}
  .live-stage-scene{min-height:calc(100dvh - 122px)}
  .live-stage-grid{grid-template-columns:minmax(245px,.8fr) minmax(0,1.2fr)!important;gap:22px!important}
  .live-portrait-frame{width:min(100%,430px)!important}
}
@media(max-width:680px){
  body[data-page=live] .live-stage{padding:78px 12px 16px!important}
  .live-stage-scene{min-height:calc(100dvh - 94px);align-items:flex-start}
  .live-stage-grid{
    grid-template-columns:112px minmax(0,1fr)!important;grid-template-areas:"portrait average" "judges judges"!important;
    gap:12px!important;align-items:start!important
  }
  .live-candidate-column{grid-area:portrait!important;align-items:flex-start!important}
  .live-portrait-frame{width:112px!important;padding:5px!important;border-radius:20px!important}
  .live-candidate-column .live-portrait-frame .live-portrait{border-radius:15px!important}
  .live-metrics-column{display:contents!important}
  .live-average-plain{grid-area:average!important;min-height:0!important;padding:16px!important;border-radius:18px!important}
  .live-judge-block{grid-area:judges!important;padding:13px!important;border-radius:18px!important}
  .live-judge-scores{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}
  .live-judge-scores .anonymous-score{min-height:60px!important;border-radius:12px!important}
  .live-stage-wire-word{top:58px;font-size:clamp(72px,24vw,150px);opacity:.5}
  .live-stage-flow-a,.live-stage-flow-b{width:90vw;height:17vh;bottom:2vh;opacity:.34}
  .live-stage-flow-a{left:-46vw}.live-stage-flow-b{right:-47vw}.live-stage-flow-c{display:none}
  #live-stage.standby-with-copy .live-standby-shell h2{bottom:28px!important;width:90vw!important;font-size:clamp(30px,9vw,52px)!important}
}
@media(max-width:390px){
  .live-stage-grid{grid-template-columns:96px minmax(0,1fr)!important;gap:9px!important}
  .live-portrait-frame{width:96px!important}
}
@media(prefers-reduced-motion:reduce){
  .live-stage-ambient-host,.live-stage-wire-word,.live-stage-flow,.live-stage-grid-glow,
  .live-candidate-name:after,.live-judge-scores .anonymous-score:before,
  .live-judge-scores .anonymous-score.score-arrived,.live-average-value strong.score-refresh{
    animation:none!important;transition:none!important
  }
  .live-stage-ambient-host{transform:none!important;filter:none!important}
  .live-candidate-name:after{display:none!important}
  .live-judge-scores .anonymous-score:before{display:none!important}
}

/* v48 — silky Live Stage handoff + restrained gold-wave atmosphere ---------- */
/* Candidate changes use compositor-friendly opacity + transform only. Removing
   blur/filter interpolation and stage-height measurement prevents the visible
   hitch that could occur while two full presentation grids overlap. */
body[data-page=live] .live-stage-scene{transition:none!important;contain:layout paint!important}
body[data-page=live] .live-stage-grid.live-stage-incoming,
body[data-page=live] .live-stage-grid.live-stage-outgoing{
  will-change:transform,opacity!important;filter:none!important;
  transition:opacity .34s cubic-bezier(.2,.72,.22,1),transform .42s cubic-bezier(.16,1,.3,1)!important;
  backface-visibility:hidden!important;-webkit-backface-visibility:hidden!important;
  transform-origin:50% 48%!important
}
body[data-page=live] .live-stage-grid.live-stage-incoming{opacity:0!important;filter:none!important}
body[data-page=live] .live-stage-grid.live-stage-incoming.from-next{transform:translate3d(22px,0,0) scale(.998)!important}
body[data-page=live] .live-stage-grid.live-stage-incoming.from-prev{transform:translate3d(-22px,0,0) scale(.998)!important}
body[data-page=live] .live-stage-grid.live-stage-incoming.transition-ready{opacity:1!important;transform:translate3d(0,0,0) scale(1)!important}
body[data-page=live] .live-stage-grid.live-stage-outgoing{opacity:1!important;filter:none!important;transform:translate3d(0,0,0) scale(1)!important}
body[data-page=live] .live-stage-grid.live-stage-outgoing.to-prev.transition-ready{opacity:0!important;transform:translate3d(-16px,0,0) scale(.999)!important}
body[data-page=live] .live-stage-grid.live-stage-outgoing.to-next.transition-ready{opacity:0!important;transform:translate3d(16px,0,0) scale(.999)!important}

/* Static glass remains visually polished without live backdrop-filter passes,
   which are expensive while the outgoing and incoming candidates overlap. */
body[data-page=live] .live-portrait-frame,
body[data-page=live] .live-average-plain,
body[data-page=live] .live-judge-block{
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important
}

/* No wordmark behind the candidate. Only low-opacity gold waves drift through
   the neutral stage and softly disappear/re-form in a continuous loop. */
body[data-page=live] .live-stage-wire-word,
body[data-page=live] .live-stage-grid-glow{display:none!important}
body[data-page=live] .live-stage-ambient-host{
  transform:none!important;filter:none!important;transition:none!important;opacity:1!important;
  contain:strict!important
}
body[data-page=live] .live-stage-ambient-host.ambient-shift-left,
body[data-page=live] .live-stage-ambient-host.ambient-shift-right{transform:none!important;filter:none!important}
body[data-page=live] .live-stage-flow{
  z-index:1!important;border:0!important;box-shadow:none!important;filter:none!important;
  opacity:.18!important;will-change:transform,opacity!important;transform:translateZ(0);
  background:
    radial-gradient(ellipse at 48% 50%,rgba(255,236,176,.46) 0 15%,rgba(218,171,64,.20) 38%,rgba(177,124,28,.08) 58%,transparent 76%),
    linear-gradient(112deg,transparent 4%,rgba(255,244,205,.34) 27%,rgba(211,158,48,.18) 47%,rgba(255,239,184,.28) 64%,transparent 91%)!important
}
body[data-page=live] .live-stage-flow:after{
  inset:12% 7%!important;filter:none!important;
  background:linear-gradient(118deg,transparent 8%,rgba(255,248,219,.22) 34%,rgba(211,158,48,.08) 52%,transparent 82%)!important
}
body[data-page=live] .live-stage-flow-a{
  width:64vw;height:24vh;left:-26vw;bottom:4vh;opacity:.17!important;
  animation:live-gold-wave-a 14s cubic-bezier(.45,0,.55,1) infinite!important
}
body[data-page=live] .live-stage-flow-b{
  width:62vw;height:23vh;right:-27vw;bottom:7vh;opacity:.15!important;
  animation:live-gold-wave-b 16s cubic-bezier(.45,0,.55,1) infinite!important
}
body[data-page=live] .live-stage-flow-c{
  width:46vw;height:14vh;left:27%;bottom:-4vh;opacity:.10!important;
  animation:live-gold-wave-c 18s cubic-bezier(.45,0,.55,1) infinite!important
}
@keyframes live-gold-wave-a{
  0%,100%{transform:translate3d(-9%,5%,0) rotate(8deg) skewX(-8deg) scale(.98);opacity:.05}
  20%{opacity:.16}50%{transform:translate3d(8%,-5%,0) rotate(14deg) skewX(-5deg) scale(1.04);opacity:.20}80%{opacity:.11}
}
@keyframes live-gold-wave-b{
  0%,100%{transform:translate3d(10%,3%,0) rotate(-14deg) skewX(8deg) scale(1.03);opacity:.04}
  24%{opacity:.13}54%{transform:translate3d(-8%,-5%,0) rotate(-8deg) skewX(5deg) scale(.99);opacity:.18}82%{opacity:.09}
}
@keyframes live-gold-wave-c{
  0%,100%{transform:translate3d(-6%,5%,0) rotate(-3deg) scale(.98);opacity:.025}
  30%{opacity:.09}58%{transform:translate3d(7%,-3%,0) rotate(2deg) scale(1.05);opacity:.12}86%{opacity:.05}
}

/* One elegant light pass occurs only after the new portrait has settled. */
.live-candidate-reveal{
  position:absolute;z-index:7;pointer-events:none;top:10px;right:10px;bottom:10px;left:10px;
  overflow:hidden;border-radius:23px;opacity:0
}
.live-candidate-reveal:before{
  content:"";position:absolute;inset:-18% -55%;
  background:linear-gradient(112deg,transparent 34%,rgba(255,225,143,.04) 42%,rgba(255,246,210,.56) 49%,rgba(215,165,55,.18) 54%,transparent 63%);
  transform:translate3d(-56%,0,0) skewX(-10deg);opacity:0;will-change:transform,opacity
}
.live-stage-grid.candidate-is-revealed .live-candidate-reveal{opacity:1}
.live-stage-grid.candidate-is-revealed .live-candidate-reveal:before{animation:live-candidate-premium-shimmer 1.12s cubic-bezier(.2,.7,.25,1) both}
@keyframes live-candidate-premium-shimmer{
  0%{transform:translate3d(-58%,0,0) skewX(-10deg);opacity:0}
  18%{opacity:.7}64%{opacity:.46}100%{transform:translate3d(58%,0,0) skewX(-10deg);opacity:0}
}

@media(max-width:680px){
  body[data-page=live] .live-stage-flow-a,body[data-page=live] .live-stage-flow-b{width:92vw;height:16vh;bottom:2vh;opacity:.11!important}
  body[data-page=live] .live-stage-flow-a{left:-48vw}body[data-page=live] .live-stage-flow-b{right:-49vw}
  .live-candidate-reveal{top:5px;right:5px;bottom:5px;left:5px;border-radius:15px}
}
@media(prefers-reduced-motion:reduce){
  body[data-page=live] .live-stage-flow,.live-candidate-reveal:before{animation:none!important}
  .live-candidate-reveal{display:none!important}
  body[data-page=live] .live-stage-grid.live-stage-incoming,
  body[data-page=live] .live-stage-grid.live-stage-outgoing{transition:none!important;transform:none!important;opacity:1!important}
}
