:root {
  --bg: #07090d;
  --panel: rgba(17, 20, 27, .88);
  --panel-2: rgba(24, 28, 37, .92);
  --text: #f7f8f4;
  --muted: #989da8;
  --line: rgba(255,255,255,.11);
  --accent: #eaff00;
  --accent-2: #62ff8b;
  --danger: #ff4655;
  --warn: #ffb800;
  --ok: #49e789;
  --radius: 20px;
  --shadow: 0 22px 70px rgba(0,0,0,.38);
  --display: "Archivo Black", sans-serif;
  --body: "DM Sans", sans-serif;
}

body[data-theme="moda"] { --accent: #ff67c8; --accent-2: #b88cff; --bg: #0d0710; }
body[data-theme="musica"] { --accent: #6c7cff; --accent-2: #26e7ff; --bg: #050710; }
* { box-sizing: border-box; }
html { min-height: 100%; background: var(--bg); }
body { margin: 0; min-height: 100vh; color: var(--text); font-family: var(--body); background: var(--bg); overflow-x: hidden; }
body[data-view="schermo"] { height:100vh;overflow:hidden; }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
button:focus-visible, input:focus-visible, select:focus-visible { outline: 3px solid color-mix(in srgb, var(--accent) 55%, transparent); outline-offset: 2px; }

#ambient { position: fixed; inset: 0; overflow: hidden; pointer-events: none; z-index: 0; }
#ambient::before { content:""; position:absolute; inset:0; opacity:.22; background-image: linear-gradient(var(--line) 1px, transparent 1px), linear-gradient(90deg,var(--line) 1px,transparent 1px); background-size: 62px 62px; mask-image: linear-gradient(to bottom,black,transparent 82%); }
#ambient span { position:absolute; width:34rem; aspect-ratio:1; border-radius:50%; filter:blur(110px); opacity:.12; background:var(--accent); animation: drift 14s ease-in-out infinite alternate; }
#ambient span:nth-child(1){top:-16rem;right:-7rem}.theme-orb{}
#ambient span:nth-child(2){bottom:-22rem;left:-15rem;background:var(--accent-2);animation-delay:-5s}
#ambient span:nth-child(3){top:40%;left:45%;width:17rem;opacity:.05;animation-delay:-9s}
@keyframes drift { to { transform: translate3d(4rem,3rem,0) scale(1.15); } }
@keyframes enter { from{opacity:0;transform:translateY(14px)} to{opacity:1;transform:none} }
@keyframes pulse { 50%{opacity:.42;transform:scale(.82)} }
@keyframes sweep { from{transform:translateX(-110%)} to{transform:translateX(110%)} }
@keyframes votingLivePulse {
  0%,100% { transform:scale(1);box-shadow:0 0 0 0 color-mix(in srgb,var(--accent) 48%,transparent),0 0 24px color-mix(in srgb,var(--accent) 30%,transparent);filter:brightness(1); }
  50% { transform:scale(1.055);box-shadow:0 0 0 10px transparent,0 0 48px color-mix(in srgb,var(--accent) 68%,transparent);filter:brightness(1.22); }
}
@keyframes contestantStageOut {
  0% { opacity:1;transform:translate3d(0,0,0) scale(1);clip-path:inset(0 0 0 0 round 28px); }
  100% { opacity:0;transform:translate3d(-10vw,0,0) scale(.93);clip-path:inset(0 100% 0 0 round 28px); }
}
@keyframes stagePhotoIn {
  0% { opacity:0;transform:translate3d(18vw,0,0) rotate(4deg) scale(.88); }
  72% { opacity:1;transform:translate3d(-1.2vw,0,0) rotate(-.7deg) scale(1.025); }
  100% { opacity:1;transform:none; }
}
@keyframes stageIndexIn {
  0% { opacity:0;transform:translate3d(0,-38px,0) scale(1.22);letter-spacing:.42em;filter:blur(7px); }
  100% { opacity:1;transform:none;letter-spacing:normal;filter:blur(0); }
}
@keyframes stageLetterIn {
  0% { opacity:0;transform:translate3d(0,1.05em,0) rotateX(-85deg) scale(.72);filter:blur(7px); }
  70% { opacity:1;transform:translate3d(0,-.08em,0) rotateX(8deg) scale(1.04);filter:blur(0); }
  100% { opacity:1;transform:none;filter:blur(0); }
}
@keyframes stageCategoryIn {
  0% { opacity:0;transform:translate3d(-8vw,0,0);clip-path:inset(0 100% 0 0); }
  100% { opacity:1;transform:none;clip-path:inset(0 0 0 0); }
}
@keyframes stageBioIn {
  0% { opacity:0;transform:translate3d(0,42px,0);filter:blur(8px); }
  100% { opacity:1;transform:none;filter:blur(0); }
}
@keyframes screenBackgroundIn {
  0% { opacity:0;transform:scale(1.035); }
  100% { opacity:1;transform:scale(1); }
}
@keyframes screenBackgroundOut {
  0% { opacity:1;transform:scale(1); }
  100% { opacity:0;transform:scale(1.025); }
}

#app { position:relative; z-index:1; min-height:100vh; }
.page { width:min(1480px,100%); margin:auto; padding:24px; animation:enter .45s ease both; }
.topbar { display:flex; align-items:center; gap:20px; min-height:72px; margin-bottom:24px; }
.brand { display:flex; align-items:center; gap:12px; font-family:var(--display); letter-spacing:-.04em; font-size:1.35rem; }
.brand-mark { width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:var(--accent);color:#080a0c;clip-path:polygon(0 0,100% 0,78% 100%,22% 100%); }
.brand em { font-style:normal;color:var(--accent); }
.topbar-actions { margin-left:auto; display:flex;align-items:center;gap:10px; }
.status-pill { display:inline-flex;align-items:center;gap:8px;padding:9px 13px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.035);font-size:.83rem;color:var(--muted); }
.dot { width:8px;height:8px;border-radius:50%;background:var(--ok);box-shadow:0 0 16px var(--ok); }
.dot.off { background:var(--muted); box-shadow:none; }

.btn { min-height:44px;border:0;border-radius:12px;padding:0 17px;font-weight:700;cursor:pointer;background:rgba(255,255,255,.08);transition:.2s transform,.2s background,.2s border-color;display:inline-flex;align-items:center;justify-content:center;gap:9px;text-decoration:none; }
.btn:hover { transform:translateY(-1px);background:rgba(255,255,255,.13); }
.btn-primary { background:var(--accent);color:#080a0c; }
.btn-primary:hover { background:color-mix(in srgb,var(--accent) 86%,white); }
.btn-danger { background:var(--danger);color:white; }
.btn-outline { border:1px solid var(--line);background:transparent; }
.btn-sm { min-height:36px;padding:0 12px;font-size:.85rem; }
.btn-icon { width:44px;padding:0; }
.icon { width:18px;height:18px;display:block; }

.landing { min-height:100vh;display:grid;place-items:center;padding:24px; }
.landing-shell { width:min(1080px,100%); }
.landing-head { margin-bottom:34px;display:flex;justify-content:space-between;align-items:flex-end;gap:28px; }
.eyebrow { color:var(--accent);font-weight:800;text-transform:uppercase;letter-spacing:.18em;font-size:.75rem; }
.landing h1 { margin:10px 0 0;font-family:var(--display);font-size:clamp(3rem,8vw,6.8rem);line-height:.88;letter-spacing:-.07em;max-width:850px; }
.landing h1 span { -webkit-text-stroke:1px var(--text);color:transparent; }
.landing-note { max-width:290px;color:var(--muted);line-height:1.5; }
.role-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:16px; }
.role-card { min-height:220px;padding:24px;border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.025));box-shadow:var(--shadow);cursor:pointer;position:relative;overflow:hidden;transition:.28s transform,.28s border-color; }
.role-card:hover { transform:translateY(-5px);border-color:color-mix(in srgb,var(--accent) 55%,transparent); }
.role-card::after { content:"↗";position:absolute;right:22px;top:20px;font-size:1.4rem;color:var(--accent); }
.role-number { font-family:var(--display);font-size:3.2rem;color:var(--accent);opacity:.28; }
.role-card h2 { margin:34px 0 8px;font-size:1.3rem; }
.role-card p { margin:0;color:var(--muted);line-height:1.5; }

.control-layout { display:grid;grid-template-columns:240px minmax(0,1fr);gap:22px; }
.sidebar,.panel { border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow);border-radius:var(--radius);backdrop-filter:blur(18px); }
.sidebar { padding:14px;align-self:start;position:sticky;top:20px; }
.nav-label { color:var(--muted);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;margin:11px 12px 8px; }
.nav-btn { width:100%;min-height:46px;border:0;border-radius:11px;background:transparent;color:var(--muted);display:flex;align-items:center;gap:12px;padding:0 13px;cursor:pointer;text-align:left;font-weight:650; }
.nav-btn:hover,.nav-btn.active { color:var(--text);background:rgba(255,255,255,.075); }
.nav-btn.active::before { content:"";width:3px;height:18px;border-radius:3px;background:var(--accent);box-shadow:0 0 15px var(--accent); }
.main-stack { min-width:0;display:grid;gap:18px; }
.hero-control { display:grid;grid-template-columns:minmax(0,1.25fr) minmax(270px,.75fr);gap:18px; }
.panel { padding:22px; }
.panel-head { display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:20px; }
.panel h2,.panel h3 { margin:0; }
.panel-sub { color:var(--muted);font-size:.9rem;margin:5px 0 0; }
.live-card { min-height:330px;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;background:linear-gradient(125deg,color-mix(in srgb,var(--accent) 14%,#10131a),#10131a 62%); }
.live-card::before { content:"";position:absolute;inset:0;background:radial-gradient(circle at 86% 24%,color-mix(in srgb,var(--accent) 42%,transparent),transparent 27%); }
.live-content { position:relative;z-index:1; }
.live-kicker { display:inline-flex;align-items:center;gap:8px;font-size:.78rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--accent); }
.live-title { font-family:var(--display);font-size:clamp(2.5rem,5vw,5.5rem);line-height:.9;letter-spacing:-.055em;margin:15px 0 10px;text-transform:uppercase; }
.live-meta { color:var(--muted); }
.live-actions { display:flex;flex-wrap:wrap;gap:10px;margin-top:22px; }
.preference-global-voting { display:flex;align-items:center;gap:14px;margin-top:22px;padding:12px;border:1px solid color-mix(in srgb,var(--accent) 42%,var(--line));border-radius:15px;background:rgba(0,0,0,.22); }
.preference-global-voting .btn { min-width:min(100%,260px);font-family:var(--display);letter-spacing:.04em; }
.preference-global-voting span { color:var(--muted);font-size:.76rem;line-height:1.3; }
.ranking-controls-grid { display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:22px; }
.ranking-controls-grid > div { display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px;border:1px solid var(--line);border-radius:14px;background:rgba(0,0,0,.17); }
.ranking-controls-grid > div > span { grid-column:1/-1;color:var(--muted);font-size:.7rem;font-weight:900;letter-spacing:.16em; }
.ranking-controls-grid .btn { min-height:40px;padding:6px 10px;font-size:.78rem;line-height:1.15;white-space:normal; }
.ranking-controls-grid .ranking-close { grid-column:1/-1; }
.control-card { display:flex;flex-direction:column; }
.control-reset-actions { display:grid;gap:9px;margin-top:auto;padding-top:16px; }
.control-reset-actions .btn { width:100%; }
.big-state { padding:20px;border:1px solid var(--line);border-radius:16px;background:rgba(0,0,0,.18);margin-bottom:14px; }
.big-state strong { display:block;font-family:var(--display);font-size:2rem;margin-top:5px; }
.switch-row { display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 0;border-bottom:1px solid var(--line); }
.switch-row:last-child { border-bottom:0; }
.switch { width:48px;height:27px;border:0;border-radius:999px;background:#383c46;padding:3px;cursor:pointer; }
.switch::after { content:"";display:block;width:21px;height:21px;border-radius:50%;background:white;transition:.2s transform; }
.switch.on { background:var(--accent); }
.switch.on::after { transform:translateX(21px); }

.stats { display:grid;grid-template-columns:repeat(4,1fr);gap:12px; }
.stat { padding:18px;border:1px solid var(--line);border-radius:15px;background:rgba(255,255,255,.035); }
.stat-value { font-family:var(--display);font-size:2rem;letter-spacing:-.04em; }
.stat-label { color:var(--muted);font-size:.82rem;margin-top:4px; }
.accent { color:var(--accent); }
.grid-2 { display:grid;grid-template-columns:1fr 1fr;gap:18px; }
.result-rankings { min-width:0;display:grid;gap:14px;align-content:start; }
.results-heading { display:flex;align-items:flex-start;justify-content:space-between;padding:2px 2px 0; }
.results-heading h2 { margin:0;font-family:var(--display);font-size:1.5rem;letter-spacing:-.03em; }
.result-role-panel { padding:18px; }
.result-role-panel .panel-head { margin-bottom:14px; }
.result-role-panel h3 { font-family:var(--display);font-size:1.35rem;letter-spacing:.02em; }
.result-list { gap:7px; }
.result-list-item { grid-template-columns:36px minmax(0,1fr) auto;padding:10px 12px; }
.result-position { color:var(--accent);font-family:var(--display);font-size:1rem; }
.result-total { color:var(--accent);font-family:var(--display);font-size:1.5rem; }
.list { display:grid;gap:10px; }
.list-item { display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px;padding:12px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.025); }
.contestant-control-item { display:grid;gap:12px;padding:14px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.025); }
.contestant-control-head { display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px; }
.contestant-actions { display:grid;grid-template-columns:repeat(3,1fr);gap:8px; }
.contestant-actions.score-actions { grid-template-columns:repeat(4,1fr); }
.contestant-actions .btn { min-height:40px;white-space:normal;line-height:1.15;padding:7px 9px; }
.contestant-actions .btn:disabled { cursor:not-allowed;opacity:.34;transform:none;background:rgba(255,255,255,.025); }
.avatar { width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 75%,#151820),#222631);font-weight:900;color:#090b0e;overflow:hidden; }
.avatar img { width:100%;height:100%;object-fit:cover;transition:transform .2s ease;transform-origin:center; }
.jury-password { margin:4px 0;color:var(--accent);font-size:.82rem; }
.jury-password strong { color:var(--text);font-family:ui-monospace,SFMono-Regular,Consolas,monospace; }
.jury-list-item .item-actions { flex-wrap:wrap;justify-content:flex-end; }
.item-title { font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.item-meta { color:var(--muted);font-size:.8rem;margin-top:3px; }
.item-actions { display:flex;gap:7px; }
.tag { display:inline-flex;padding:5px 9px;border-radius:999px;background:rgba(255,255,255,.075);font-size:.73rem;font-weight:700;color:var(--muted); }
.tag.live { color:#07110b;background:var(--ok); }
.control-voting-status,.screen-voting-status { display:inline-flex;align-items:center;justify-content:center;gap:10px;border:1px solid;border-radius:999px;font-weight:950;letter-spacing:.09em;text-align:center;white-space:nowrap; }
.control-voting-status { min-height:42px;padding:8px 14px;font-size:.72rem; }
.screen-voting-status { min-height:60px;padding:12px 24px;font-size:clamp(.9rem,1.35vw,1.25rem); }
.control-voting-status.is-open,.screen-voting-status.is-open { color:#07090d;background:var(--accent);border-color:var(--accent);animation:votingLivePulse .9s ease-in-out infinite; }
.control-voting-status.is-open .dot,.screen-voting-status.is-open .dot { width:11px;height:11px;background:#07090d;box-shadow:0 0 0 4px rgba(7,9,13,.16); }
.control-voting-status.is-closed,.screen-voting-status.is-closed { color:#ff9ca5;background:rgba(255,70,85,.15);border-color:rgba(255,70,85,.55);box-shadow:inset 0 0 20px rgba(255,70,85,.06); }
.control-voting-status.is-closed .dot,.screen-voting-status.is-closed .dot { background:#ff6572;box-shadow:0 0 14px rgba(255,70,85,.65); }
.screen-voting-status.is-closed { display:none; }

.field { display:grid;gap:7px;margin-bottom:14px; }
.field label { font-size:.83rem;color:var(--muted);font-weight:650; }
.input, select.input, textarea.input { width:100%;min-height:46px;border:1px solid var(--line);border-radius:12px;background:rgba(0,0,0,.22);color:var(--text);padding:0 13px; }
textarea.input { padding:12px;min-height:90px;resize:vertical; }
select.input option { background:#171a20; }
.form-row { display:grid;grid-template-columns:1fr 1fr;gap:12px; }
.segmented { display:grid;grid-template-columns:1fr 1fr;padding:4px;border:1px solid var(--line);border-radius:13px;background:rgba(0,0,0,.2); }
.segment { min-height:42px;border:0;border-radius:9px;background:transparent;color:var(--muted);font-weight:700;cursor:pointer; }
.segment.active { background:var(--accent);color:#080a0c; }

.modal-wrap { position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:rgba(2,3,5,.76);backdrop-filter:blur(12px);animation:enter .2s ease; }
.modal { width:min(540px,100%);max-height:90vh;overflow:auto;border:1px solid var(--line);border-radius:22px;background:#11141b;box-shadow:var(--shadow);padding:24px; }
.modal h2 { margin:0 0 5px;font-family:var(--display);letter-spacing:-.03em; }
.modal-actions { display:flex;justify-content:flex-end;gap:9px;margin-top:20px; }
.photo-editor { display:grid;gap:12px;margin-top:6px;padding:14px;border:1px solid var(--line);border-radius:16px;background:rgba(0,0,0,.18); }
.photo-editor-viewport { width:min(300px,100%);aspect-ratio:4/5;margin:auto;border-radius:14px;overflow:hidden;position:relative;background:#07090d;cursor:grab;touch-action:none;user-select:none; }
.photo-editor-viewport.dragging { cursor:grabbing; }
.photo-editor-viewport img { width:100%;height:100%;object-fit:cover;pointer-events:none;will-change:transform;transform-origin:center; }
.photo-editor-toolbar { display:flex;align-items:center;justify-content:space-between;gap:14px;color:var(--muted);font-size:.82rem; }
.photo-zoom-controls { display:flex;align-items:center;gap:9px;color:var(--text); }
.photo-zoom-controls .btn { width:38px;padding:0;font-size:1.35rem; }
.photo-zoom-controls strong { min-width:52px;text-align:center; }

.screen-page { position:relative;height:100vh;overflow:hidden;display:flex;flex-direction:column;padding:30px clamp(24px,4vw,70px);background:#000; }
.screen-page > :not(.screen-background-layer) { position:relative;z-index:1; }
.screen-background-layer { position:absolute;z-index:0;inset:0;background-position:center;background-size:cover;background-repeat:no-repeat;pointer-events:none;will-change:opacity,transform; }
.screen-background-layer.is-entering { animation:screenBackgroundIn 1.15s cubic-bezier(.22,1,.36,1) both; }
.screen-background-layer.is-exiting { animation:screenBackgroundOut .75s cubic-bezier(.64,0,.78,0) both; }
.screen-background-layer::after { content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,0,0,.42),rgba(0,0,0,.18) 50%,rgba(0,0,0,.38)); }
.screen-logo-only { min-height:100vh;display:grid;place-items:center;background:#000; }
.screen-logo-only .brand { transform:scale(3);transform-origin:center; }
.screen-logo-only .brand-mark { box-shadow:0 0 55px color-mix(in srgb,var(--accent) 35%,transparent); }
.screen-logo-only.has-custom-screen-image { position:relative;overflow:hidden; }
.custom-screen-image { width:100%;height:100%;object-fit:contain;transform-origin:center;will-change:transform; }
.screen-logo-only .custom-screen-image { position:absolute;inset:0; }
.screen-image-settings { grid-column:1/-1; }
.screen-background-settings { grid-column:1/-1; }
.theme-background-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:14px; }
.theme-background-card { min-width:0;padding:12px;border:1px solid var(--line);border-radius:16px;background:rgba(0,0,0,.18); }
.theme-background-preview { position:relative;aspect-ratio:16/9;display:grid;place-items:center;overflow:hidden;border-radius:12px;background:#000 center/cover no-repeat;border:1px solid var(--line); }
.theme-background-preview::after { content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.72),transparent 58%); }
.theme-background-preview span { position:relative;z-index:1;color:var(--muted);font-size:.7rem;font-weight:800;letter-spacing:.1em; }
.theme-background-preview strong { position:absolute;z-index:2;left:12px;bottom:9px;color:white;font-family:var(--display);font-size:.9rem;letter-spacing:.08em; }
.theme-background-actions { display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px; }
.theme-background-actions .btn { min-height:38px;padding:6px 10px;font-size:.78rem;text-align:center; }
.screen-image-layout { display:grid;grid-template-columns:minmax(0,1.55fr) minmax(240px,.45fr);gap:24px;align-items:start; }
.screen-image-preview { aspect-ratio:16/9;overflow:hidden;position:relative;display:grid;place-items:center;border:1px solid var(--line);border-radius:16px;background:radial-gradient(circle at 68% 24%,color-mix(in srgb,var(--accent) 17%,transparent),transparent 34%),#07090d;cursor:grab;touch-action:none;user-select:none; }
.screen-image-preview::after { content:"MAXISCHERMO 16:9";position:absolute;z-index:5;left:13px;bottom:10px;color:rgba(255,255,255,.35);font-size:.65rem;font-weight:800;letter-spacing:.14em;pointer-events:none; }
.screen-image-preview.dragging { cursor:grabbing; }
.screen-image-preview .brand { transform:scale(1.4);transform-origin:center; }
.screen-image-preview .custom-screen-image { position:absolute;inset:0;pointer-events:none; }
.screen-image-controls { display:grid;gap:13px; }
.screen-zoom-controls { justify-content:center;padding:10px;border:1px solid var(--line);border-radius:13px;background:rgba(0,0,0,.18); }
.screen-top { display:flex;align-items:center;justify-content:space-between; }
.screen-stage { flex:1;display:grid;place-items:center;padding:3vh 0; }
.screen-empty { text-align:center;color:var(--muted); }
.screen-empty strong { display:block;color:var(--text);font-family:var(--display);font-size:clamp(3rem,8vw,8rem);line-height:.92;letter-spacing:-.06em;margin-bottom:18px; }
.contestant-stage { width:100%;display:grid;grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);gap:5vw;align-items:center; }
.contestant-stage.stage-entering .stage-portrait { animation:stagePhotoIn .9s cubic-bezier(.16,1,.3,1) .05s both;will-change:transform,opacity; }
.contestant-stage.stage-entering .stage-index { animation:stageIndexIn .58s cubic-bezier(.16,1,.3,1) .48s both;will-change:transform,opacity,filter; }
.contestant-stage.stage-entering .stage-letter { animation:stageLetterIn .52s cubic-bezier(.16,1,.3,1) calc(.68s + var(--letter-delay)) both;will-change:transform,opacity,filter; }
.contestant-stage.stage-entering .stage-category { animation:stageCategoryIn .72s cubic-bezier(.16,1,.3,1) calc(.9s + var(--name-delay)) both;will-change:transform,opacity,clip-path; }
.contestant-stage.stage-entering .stage-bio { animation:stageBioIn .72s cubic-bezier(.16,1,.3,1) calc(1.15s + var(--name-delay)) both;will-change:transform,opacity,filter; }
.contestant-stage.stage-exiting { animation:contestantStageOut .62s cubic-bezier(.7,0,.84,0) both;pointer-events:none;will-change:transform,opacity,clip-path; }
.stage-portrait { aspect-ratio:4/5;border-radius:28px;position:relative;overflow:hidden;background:linear-gradient(140deg,color-mix(in srgb,var(--accent) 78%,#242834),#12151c);box-shadow:0 30px 100px rgba(0,0,0,.45);display:grid;place-items:center;font-family:var(--display);font-size:clamp(5rem,12vw,12rem);color:#080a0c; }
.stage-portrait img { width:100%;height:100%;object-fit:cover; }
.stage-portrait::after { content:"";position:absolute;inset:0;border:1px solid rgba(255,255,255,.16);border-radius:inherit; }
.stage-copy { position:relative;min-width:0;padding:clamp(24px,3vw,48px);border:1px solid rgba(255,255,255,.16);border-radius:clamp(20px,2vw,32px);background:rgba(0,0,0,.78);box-shadow:0 28px 80px rgba(0,0,0,.42); }
.stage-index { font-family:var(--display);color:var(--accent);font-size:clamp(1rem,2vw,1.6rem); }
.stage-name { font-family:var(--display);font-size:clamp(3rem,6vw,7rem);line-height:.86;letter-spacing:-.055em;text-transform:uppercase;margin:18px 0;overflow-wrap:normal; }
.stage-letters { display:block;perspective:800px; }
.stage-word { display:inline-block;white-space:nowrap; }
.stage-name-space { display:inline-block;width:.24em; }
.stage-letter { display:inline-block;transform-origin:50% 100%; }
.stage-category { font-size:clamp(1.2rem,2.5vw,2.2rem);color:var(--accent);font-weight:700; }
.stage-bio { max-width:720px;font-size:clamp(1rem,1.5vw,1.35rem);line-height:1.55;color:#c8cad0;margin-top:28px; }
.screen-footer { display:flex;align-items:center;gap:18px;border-top:1px solid var(--line);padding-top:18px; }
.screen-footer .progress-track { flex:1; }
.progress-track { height:8px;border-radius:99px;background:rgba(255,255,255,.08);overflow:hidden; }
.progress-bar { height:100%;background:var(--accent);box-shadow:0 0 18px var(--accent);transition:.4s width; }
.countdown { font-family:var(--display);font-size:2rem;min-width:70px;text-align:right; }
.result-bars { width:min(1000px,100%);display:grid;gap:16px; }
.result-row { display:grid;grid-template-columns:220px minmax(0,1fr) 100px;align-items:center;gap:18px; }
.result-name { font-weight:800;font-size:1.1rem;text-align:right; }
.result-track { height:38px;background:rgba(255,255,255,.08);border-radius:8px;overflow:hidden; }
.result-fill { height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:1s width;position:relative; }
.result-fill::after { content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.35),transparent);animation:sweep 2.5s linear infinite; }
.result-value { font-family:var(--display);font-size:1.7rem;color:var(--accent); }
.single-result { width:min(1100px,100%);text-align:center;display:grid;justify-items:center;padding:clamp(28px,4vw,58px);border:1px solid rgba(255,255,255,.16);border-radius:clamp(22px,2.4vw,38px);background:rgba(0,0,0,.8);box-shadow:0 30px 90px rgba(0,0,0,.48); }
.single-result-name { margin-top:18px;font-family:var(--display);font-size:clamp(3rem,7vw,7rem);line-height:.9;letter-spacing:-.06em;text-transform:uppercase; }
.single-result-value { font-family:var(--display);font-size:clamp(9rem,25vw,24rem);line-height:.8;color:var(--accent);text-shadow:0 0 70px color-mix(in srgb,var(--accent) 28%,transparent);margin:5vh 0 2vh; }
.single-result-label { font-weight:800;letter-spacing:.18em;color:var(--muted); }
.ranking-screen { position:relative;width:100vw;height:100vh;overflow:hidden;background:#000; }
.ranking-brand { position:absolute;z-index:10;top:20px;left:34px;right:34px;min-height:58px;padding:10px 18px;display:flex;align-items:center;justify-content:space-between;border:1px solid rgba(255,255,255,.16);border-radius:18px;background:rgba(0,0,0,.8);box-shadow:0 16px 46px rgba(0,0,0,.4);color:var(--accent);font-weight:800;letter-spacing:.16em;font-size:.82rem; }
.ranking-sequence { position:absolute;inset:0; }
.ranking-card { position:absolute;inset:0;display:grid;grid-template-columns:minmax(250px,36vw) minmax(0,1fr) minmax(210px,26vw);align-items:center;gap:clamp(24px,4vw,75px);padding:clamp(90px,10vh,130px) clamp(35px,6vw,100px) clamp(35px,5vh,70px);opacity:0;transform:scale(.92);animation:rankingReveal 3.2s cubic-bezier(.2,.8,.2,1) var(--ranking-delay) both; }
.ranking-card-last { animation-name:rankingRevealLast; }
.ranking-position { position:absolute;top:10vh;right:5vw;font-family:var(--display);font-size:clamp(5rem,12vw,12rem);line-height:.8;color:rgba(255,255,255,.07); }
.ranking-position sup { font-size:.25em;vertical-align:top; }
.ranking-photo { width:100%;max-height:68vh;aspect-ratio:4/5;border-radius:clamp(18px,2vw,34px);overflow:hidden;display:grid;place-items:center;background:linear-gradient(140deg,var(--accent),#171b24);font-family:var(--display);font-size:clamp(6rem,13vw,14rem);color:#080a0c;box-shadow:0 35px 100px rgba(0,0,0,.5); }
.ranking-photo img { width:100%;height:100%;object-fit:cover;transform-origin:center; }
.ranking-copy h1 { margin:18px 0 13px;font-family:var(--display);font-size:clamp(4rem,8vw,9rem);line-height:.82;letter-spacing:-.065em;text-transform:uppercase; }
.ranking-category { color:var(--muted);font-size:clamp(1.1rem,2vw,2rem); }
.ranking-score { align-self:end;text-align:right;padding-bottom:4vh; }
.ranking-score strong { display:block;font-family:var(--display);font-size:clamp(8rem,20vw,22rem);line-height:.72;color:var(--accent);text-shadow:0 0 80px color-mix(in srgb,var(--accent) 30%,transparent); }
.ranking-score span { display:block;margin-top:24px;font-weight:900;letter-spacing:.2em;color:var(--muted); }
@keyframes rankingReveal { 0%{opacity:0;transform:scale(.92)} 12%{opacity:1;transform:scale(1)} 82%{opacity:1;transform:scale(1)} 100%{opacity:0;transform:scale(1.05)} }
@keyframes rankingRevealLast { 0%{opacity:0;transform:scale(.92)} 12%,100%{opacity:1;transform:scale(1)} }
.ranking-stack { position:absolute;z-index:1;inset:90px clamp(28px,5vw,80px) 28px;display:flex;flex-direction:column;gap:12px;overflow:hidden; }
.ranking-row-live { flex:0 0 clamp(122px,13.5vh,146px);display:grid;grid-template-columns:clamp(55px,7vw,110px) clamp(74px,9vh,112px) minmax(0,1fr) clamp(120px,17vw,260px);align-items:center;gap:clamp(12px,2.2vw,34px);padding:12px clamp(16px,2.5vw,38px);border:1px solid rgba(255,255,255,.16);border-radius:clamp(12px,1.5vw,22px);background:rgba(0,0,0,.8);box-shadow:0 15px 45px rgba(0,0,0,.4);overflow:hidden; }
.ranking-row-entering { animation:rankingRowDrop .72s cubic-bezier(.16,1,.3,1) both; }
.ranking-row-stable { opacity:1;transform:none; }
.ranking-row-position { font-family:var(--display);font-size:clamp(2.5rem,6vh,6rem);line-height:1;color:var(--accent);text-align:center; }
.ranking-row-position sup { font-size:.3em;vertical-align:top; }
.ranking-row-photo { height:min(100%,100px);aspect-ratio:1;border-radius:16px;overflow:hidden;display:grid;place-items:center;background:linear-gradient(140deg,var(--accent),#171b24);font-family:var(--display);font-size:clamp(1.8rem,4vh,4rem);color:#080a0c; }
.ranking-row-photo img { width:100%;height:100%;object-fit:cover;transform-origin:center; }
.ranking-row-copy { min-width:0; }
.ranking-row-copy h1 { margin:5px 0 0;font-family:var(--display);font-size:clamp(1.7rem,4.8vh,5rem);line-height:.9;letter-spacing:-.05em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis; }
.ranking-row-score { display:flex;align-items:baseline;justify-content:flex-end;gap:12px;text-align:right; }
.ranking-row-score strong { font-family:var(--display);font-size:clamp(3rem,8vh,8rem);line-height:.8;color:var(--accent); }
.ranking-row-score span { font-weight:900;letter-spacing:.14em;color:var(--muted);font-size:clamp(.65rem,1.2vw,.95rem); }
@keyframes rankingRowDrop { from{opacity:0;transform:translateY(-110%) scale(.98)} to{opacity:1;transform:translateY(0) scale(1)} }
.ranking-empty { min-height:240px;display:grid;place-items:center;padding:32px;border:1px solid rgba(255,255,255,.16);border-radius:24px;background:rgba(0,0,0,.8);box-shadow:0 20px 60px rgba(0,0,0,.4);color:var(--muted);font-family:var(--display);font-size:clamp(2rem,5vw,5rem); }

.vote-page { min-height:100vh;width:min(720px,100%);margin:auto;padding:20px 18px 40px; }
.vote-head { display:flex;align-items:center;justify-content:space-between;margin-bottom:32px; }
.vote-hero { margin-bottom:24px; }
.vote-hero h1 { font-family:var(--display);font-size:clamp(2.6rem,11vw,5.6rem);letter-spacing:-.06em;line-height:.88;margin:10px 0 13px;text-transform:uppercase; }
.vote-hero p { color:var(--muted);line-height:1.55;margin:0; }
.audience-tabs { display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:22px 0;background:rgba(255,255,255,.04);border:1px solid var(--line);border-radius:16px;padding:6px; }
.audience-tab { min-height:52px;border:0;border-radius:11px;background:transparent;color:var(--muted);font-weight:800;cursor:pointer; }
.audience-tab.active { background:var(--accent);color:#07090d; }
.voting-status { display:flex;align-items:center;gap:10px;padding:13px 15px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.035);margin-bottom:18px; }
.contestant-vote-list { display:grid;gap:12px; }
.vote-card { display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;width:100%;padding:13px;border:1px solid var(--line);border-radius:17px;background:rgba(255,255,255,.045);text-align:left;cursor:pointer;transition:.2s transform,.2s border-color,.2s background; }
.vote-card:hover { transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 45%,transparent); }
.vote-card.selected { border-color:var(--accent);background:color-mix(in srgb,var(--accent) 11%,transparent); }
.vote-card .avatar { width:62px;height:62px;border-radius:15px; }
.vote-check { width:27px;height:27px;border:2px solid var(--line);border-radius:50%;display:grid;place-items:center; }
.selected .vote-check { border-color:var(--accent);background:var(--accent);color:#060807; }
.score-grid { display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:22px 0; }
.score-btn { aspect-ratio:1;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.04);font-family:var(--display);font-size:1.45rem;cursor:pointer; }
.score-btn:hover,.score-btn.active { background:var(--accent);color:#07090d;border-color:var(--accent);transform:translateY(-2px); }
.submit-vote { width:100%;min-height:58px;font-size:1rem;margin-top:18px; }
.success-card { text-align:center;padding:42px 24px;border:1px solid var(--line);border-radius:22px;background:var(--panel); }
.success-icon { width:84px;height:84px;margin:0 auto 22px;border-radius:50%;background:var(--accent);color:#07090d;display:grid;place-items:center;font-size:2rem;font-weight:900;box-shadow:0 0 50px color-mix(in srgb,var(--accent) 34%,transparent); }
.success-card h2 { font-family:var(--display);font-size:2rem;margin:0 0 8px; }
.locked-note { color:var(--muted);line-height:1.5; }
.jury-login { padding:22px;border:1px solid var(--line);border-radius:20px;background:var(--panel); }
.jury-login h2 { font-family:var(--display);margin:0 0 7px; }

.login-page { min-height:100vh;display:grid;place-items:center;padding:20px; }
.login-card { width:min(440px,100%);padding:30px;border:1px solid var(--line);border-radius:24px;background:var(--panel);box-shadow:var(--shadow); }
.login-card .brand { margin-bottom:42px; }
.login-card h1 { font-family:var(--display);font-size:2.5rem;letter-spacing:-.05em;margin:0 0 9px; }
.login-card > p { color:var(--muted);line-height:1.5;margin-bottom:28px; }
.error { color:#ff7c88;font-size:.85rem;margin:8px 0 0; }
.toast-region { position:fixed;z-index:100;right:20px;bottom:20px;display:grid;gap:10px; }
.toast { padding:13px 16px;border:1px solid var(--line);border-radius:13px;background:#1b1f27;box-shadow:var(--shadow);animation:enter .25s ease; }
.hidden { display:none !important; }

@media(max-width:980px){
  .control-layout{grid-template-columns:1fr}.sidebar{position:static;display:flex;overflow:auto;gap:5px}.nav-label{display:none}.nav-btn{width:auto;min-width:max-content}.hero-control,.grid-2,.screen-image-layout{grid-template-columns:1fr}.theme-background-grid{grid-template-columns:1fr}.stats{grid-template-columns:1fr 1fr}.contestant-actions.score-actions{grid-template-columns:1fr 1fr}.contestant-stage{grid-template-columns:1fr 1.1fr}.stage-name{font-size:clamp(3rem,8vw,7rem)}
}
@media(max-width:720px){
  .page{padding:14px}.topbar{margin-bottom:14px}.topbar .status-pill{display:none}.role-grid{grid-template-columns:1fr}.landing-head{display:block}.landing-note{margin-top:20px}.role-card{min-height:170px}.role-card h2{margin-top:17px}.stats{grid-template-columns:1fr 1fr}.panel{padding:17px}.live-card{min-height:300px}.preference-global-voting{align-items:stretch;flex-direction:column}.ranking-controls-grid{grid-template-columns:1fr}.form-row{grid-template-columns:1fr}.contestant-actions,.contestant-actions.score-actions{grid-template-columns:1fr}.contestant-stage{grid-template-columns:1fr;text-align:center}.stage-portrait{width:min(64vw,320px);margin:auto}.stage-copy{padding:22px}.stage-bio{display:none}.screen-page{padding:20px}.screen-footer{padding-top:12px}.result-row{grid-template-columns:95px minmax(0,1fr) 55px;gap:10px}.result-name{font-size:.8rem}.score-grid{gap:7px}.topbar-actions .btn span{display:none}
}
@media(prefers-reduced-motion:reduce){body:not([data-view="schermo"]) *,body:not([data-view="schermo"]) *::before,body:not([data-view="schermo"]) *::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
