:root{--forest:#3f6247;--forest-2:#66806a;--sage:#91a58f;--paper:#f8f1df;--paper-2:#fffaf0;--ink:#27372b;--muted:#7b8178;--clay:#a95f40;--gold:#b69b55;--line:rgba(63,98,71,.22);--shadow:0 10px 30px rgba(43,64,46,.11)}
*{box-sizing:border-box}html{background:var(--paper)}body{margin:0;min-height:100vh;color:var(--ink);background-color:var(--paper);background-image:linear-gradient(rgba(248,241,223,.83),rgba(248,241,223,.83)),url("assets/forest-watercolor-bg.png");background-size:cover;background-position:center;background-attachment:fixed;font-family:Georgia,"Times New Roman",serif}button,input,textarea{font:inherit}button{color:inherit}.event-logo{width:clamp(72px,7vw,120px);height:72px;object-fit:contain;object-position:left center}.connection-pill{display:flex;align-items:center;gap:7px;color:var(--forest);font:700 10px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.1em}.connection-pill i{width:7px;height:7px;border-radius:50%;background:#78a16f;box-shadow:0 0 0 4px rgba(120,161,111,.14)}
.display-shell{width:min(1920px,100%);min-height:100vh;margin:auto;padding:clamp(15px,2vh,28px) clamp(24px,3vw,58px) 18px;display:flex;flex-direction:column}.display-header{height:80px;display:grid;grid-template-columns:1fr auto 1fr auto;align-items:center;gap:25px;border-bottom:1px solid var(--line)}.race-summary{display:flex;align-items:center;gap:8px}.race-summary strong{font-size:36px;font-weight:400;line-height:.8}.race-summary span{font:700 8px/1.15 Arial,sans-serif;text-transform:uppercase;letter-spacing:.13em}.display-header .connection-pill{justify-self:end}.fullscreen-button{width:42px;height:42px;border:1px solid var(--forest);background:rgba(255,250,240,.8);font-size:23px;cursor:pointer}.fullscreen-button:hover{color:white;background:var(--forest)}.timer-hero{position:relative;display:grid;grid-template-columns:minmax(170px,.75fr) minmax(500px,2fr) minmax(160px,.75fr);align-items:center;gap:20px;margin:14px 0 10px;padding:16px 22px 19px;border:1px solid var(--line);background:rgba(255,250,240,.88);box-shadow:var(--shadow)}.timer-hero::after{content:"❧";position:absolute;right:15px;bottom:-18px;color:rgba(63,98,71,.11);font-size:90px}.timer-heading>span{display:block;color:var(--forest);font-size:clamp(24px,2.1vw,40px);line-height:.9;text-transform:uppercase}.timer-heading small{display:flex;align-items:center;gap:8px;margin-top:12px;color:var(--muted);font:700 9px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.12em}.timer-heading i{width:7px;height:7px;border-radius:50%;background:#aaa}.race-running .timer-heading i{background:#6e9b65;box-shadow:0 0 0 4px rgba(110,155,101,.15)}.main-timer{justify-self:center;color:#214529;font:700 clamp(88px,8vw,152px)/.82 "Arial Narrow",Arial,sans-serif;letter-spacing:-.065em;font-variant-numeric:tabular-nums;white-space:nowrap}.last-piece{justify-self:end;position:relative;padding-left:35px;color:var(--clay);font-size:11px}.last-piece::before{content:"➶";position:absolute;left:-14px;top:2px;font-size:43px;transform:rotate(-12deg)}.last-piece strong{display:block;color:var(--ink);font-size:22px;line-height:.9}.progress-track{grid-column:1/-1;height:7px;margin-top:3px;background:#d8d8ca;overflow:hidden}.progress-track div{height:100%;width:0;background:linear-gradient(90deg,var(--sage),var(--forest));transition:width .3s linear}.progress-labels{grid-column:1/-1;display:flex;justify-content:space-between;margin-top:-15px;transform:translateY(18px);color:#96978d;font:700 8px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.1em}.scoreboard{flex:1;min-height:0}.scoreboard-heading{display:flex;align-items:end;justify-content:space-between;margin:9px 0 8px}.scoreboard-heading small,.control-title small,.arrivals-heading small,dialog header small{color:var(--clay);font:700 8px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.14em}.scoreboard-heading h1{margin:2px 0 0;color:var(--forest);font-size:clamp(25px,2vw,37px);font-weight:400;line-height:.95;text-transform:uppercase}.scoreboard-heading p{margin:0;color:var(--muted);font:700 8px/1.4 Arial,sans-serif;text-align:right;text-transform:uppercase;letter-spacing:.1em}.team-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:7px}.display-team-card{position:relative;min-width:0;min-height:clamp(104px,11.4vh,127px);padding:12px 13px;border:1px solid var(--line);background:rgba(255,250,240,.91);box-shadow:0 3px 12px rgba(43,64,46,.05);overflow:hidden}.display-team-card::after{content:"❧";position:absolute;right:-5px;bottom:-19px;color:rgba(63,98,71,.065);font-size:65px}.display-team-card>div{display:flex;justify-content:space-between}.display-team-card small,.rank-label{color:var(--forest-2);font:700 7px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.1em}.display-team-card h2{position:relative;z-index:1;margin:5px 0 15px;font:700 clamp(11px,.85vw,15px)/1 Arial,sans-serif;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.display-team-card time{position:relative;z-index:1;font:700 clamp(21px,1.8vw,31px)/1 "Arial Narrow",Arial,sans-serif;letter-spacing:-.04em;font-variant-numeric:tabular-nums}.display-team-card.finished{color:white;background:var(--forest-2);border-color:var(--forest-2)}.display-team-card.finished small,.display-team-card.finished .rank-label{color:white}.display-team-card.podium{background:var(--forest)}.display-team-card.position-1{box-shadow:inset 0 4px 0 #d5b85e}.display-team-card.position-2{background:#5c7561}.display-team-card.position-3{background:#758a76}.display-footer{display:flex;align-items:center;gap:16px;margin-top:10px;padding-top:9px;border-top:1px solid var(--line);color:var(--muted);font:700 8px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.12em}.display-footer div{margin-left:auto;color:var(--forest);font-size:10px}.display-footer strong{font:400 28px/1 Georgia,serif}
.control-page{background-image:linear-gradient(rgba(248,241,223,.73),rgba(248,241,223,.73)),url("assets/forest-watercolor-bg.png")}.control-shell{width:min(720px,100%);min-height:100vh;margin:auto;padding:max(18px,env(safe-area-inset-top)) 18px max(24px,env(safe-area-inset-bottom));background:rgba(255,250,240,.9);box-shadow:0 0 50px rgba(43,64,46,.16)}.control-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;border-bottom:1px solid var(--line)}.control-header .event-logo{width:80px;height:66px}.control-title{margin:18px 0 12px}.control-title h1{margin:3px 0 0;color:var(--forest);font-size:32px;font-weight:400}.control-clock{padding:15px;border:1px solid var(--line);background:rgba(248,241,223,.75);text-align:center}.control-clock small{display:block;color:var(--muted);font:700 8px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.13em}.control-clock time{display:block;margin:3px 0;color:var(--forest);font:700 clamp(48px,13vw,78px)/1 "Arial Narrow",Arial,sans-serif;letter-spacing:-.06em;font-variant-numeric:tabular-nums}.control-clock span{color:var(--muted);font:700 8px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.1em}.control-actions{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:7px;margin:9px 0 21px}.button{height:47px;padding:0 12px;border:1px solid var(--forest);background:rgba(255,250,240,.9);color:var(--forest);font:700 11px/1 Arial,sans-serif;text-transform:uppercase;cursor:pointer}.button.primary{color:white;background:var(--forest)}.button:active{transform:scale(.98)}.arrivals-heading{display:flex;align-items:end;justify-content:space-between}.arrivals-heading h2{margin:3px 0 0;color:var(--forest);font-size:25px;font-weight:400}.arrivals-heading strong{color:var(--forest);font:400 16px/1 Georgia,serif}.operator-hint{margin:7px 0 10px;color:var(--muted);font-size:11px}.control-team-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.control-team-card{min-width:0;min-height:62px;padding:9px 10px;border:1px solid var(--line);background:rgba(255,255,255,.8);display:flex;align-items:center;justify-content:space-between;gap:7px;text-align:left;cursor:pointer}.control-team-card span{min-width:0}.control-team-card small{display:block;color:var(--muted);font:700 7px/1 Arial,sans-serif;text-transform:uppercase}.control-team-card strong{display:block;margin-top:4px;font:700 11px/1 Arial,sans-serif;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.control-team-card>b{color:var(--clay);font:700 9px/1 Arial,sans-serif}.control-team-card.finished{background:var(--forest);color:white}.control-team-card.finished small,.control-team-card.finished>b{color:white}.undo-button{width:100%;min-height:43px;margin-top:10px;border:1px solid #d9bcae;background:#fff6ee;color:var(--clay);font:700 10px/1.2 Arial,sans-serif;text-transform:uppercase;cursor:pointer}.undo-button:disabled{opacity:.45;cursor:not-allowed}dialog{width:min(540px,calc(100% - 28px));max-height:90vh;padding:0;border:2px solid var(--forest);background:var(--paper-2);color:var(--ink);box-shadow:16px 16px 0 rgba(63,98,71,.18)}dialog::backdrop{background:rgba(30,48,34,.62);backdrop-filter:blur(5px)}dialog form{padding:25px;overflow:auto}dialog header{display:flex;justify-content:space-between;align-items:start}dialog h2{margin:3px 0 0;color:var(--forest);font-size:28px;font-weight:400}dialog header button{width:38px;height:38px;border:1px solid var(--forest);background:white;font-size:25px}label{display:block;margin-top:17px;color:var(--muted);font:700 9px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.1em}label small{float:right;font-weight:400;text-transform:none;letter-spacing:0}input,textarea{width:100%;margin-top:7px;padding:11px;border:1px solid var(--line);background:white;color:var(--ink);outline:none}input:focus,textarea:focus{border-color:var(--forest);box-shadow:0 0 0 2px rgba(63,98,71,.13)}textarea{resize:vertical;line-height:1.45}.duration-inputs{display:grid;grid-template-columns:1fr auto 1fr auto;gap:8px;align-items:center}.duration-inputs span{padding-top:8px;text-transform:lowercase}.save-button{width:100%;margin-top:20px}
@media(max-width:1250px){.team-grid{grid-template-columns:repeat(5,1fr)}.timer-hero{grid-template-columns:150px 1fr 135px}}
@media(max-width:900px){.display-shell{padding:14px}.display-header{grid-template-columns:1fr auto auto}.race-summary{display:none}.timer-hero{grid-template-columns:1fr;text-align:center}.timer-heading small{justify-content:center}.last-piece{display:none}.progress-track,.progress-labels{grid-column:1}.team-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:520px){.control-shell{padding-inline:12px}.control-team-grid{grid-template-columns:1fr}.control-actions{grid-template-columns:1.3fr 1fr 1fr}.button{font-size:9px;padding:0 8px}.control-team-card{min-height:58px}}

/* Direzione morbida e organica */
.connection-pill{padding:9px 13px;border:1px solid rgba(63,98,71,.13);border-radius:999px;background:rgba(255,250,240,.72)}
.connection-pill.offline{color:#8b4e36;border-color:rgba(139,78,54,.28)}
.connection-pill.offline i{background:#b76445;box-shadow:0 0 0 4px rgba(183,100,69,.12)}
.fullscreen-button{border-radius:50%}
.timer-hero{border-radius:30px;overflow:hidden;box-shadow:0 14px 38px rgba(43,64,46,.1)}
.progress-track{height:9px;border-radius:999px}
.progress-track div{border-radius:999px}
.team-grid{gap:9px}
.display-team-card{border-radius:16px;box-shadow:0 5px 16px rgba(43,64,46,.055)}
.control-shell{width:min(720px,calc(100% - 20px));min-height:calc(100vh - 20px);margin:10px auto;border:1px solid rgba(63,98,71,.13);border-radius:30px;box-shadow:0 16px 50px rgba(43,64,46,.15);overflow:hidden}
.control-clock{border-radius:22px}
.button,.undo-button{border-radius:999px}
.control-team-card{padding-inline:12px;border-radius:16px;box-shadow:0 3px 10px rgba(43,64,46,.04)}
dialog{border-radius:30px;box-shadow:0 24px 70px rgba(30,48,34,.28);overflow:hidden}
dialog header button{border-radius:50%}
input,textarea{border-radius:11px}

/* Leggibilità dei cronometri e ordinamento visivo */
.main-timer{letter-spacing:.015em}
.display-team-card h2{margin-bottom:13px;font-size:clamp(18px,1.25vw,24px);letter-spacing:-.025em}
.display-team-card time{font-size:clamp(28px,1.9vw,34px);letter-spacing:.035em}
.control-team-card strong{font-size:13px}
@media(max-width:1250px){.display-team-card h2{font-size:18px}.display-team-card time{font-size:32px}}
@media(max-width:700px){.display-team-card h2{font-size:16px}.display-team-card time{font-size:27px}}

/* Nomi squadra: tono editoriale in contrasto con i timer tecnici */
.display-team-card h2{color:var(--forest);font-family:Georgia,"Times New Roman",serif;font-weight:600;line-height:.95;letter-spacing:-.035em;text-transform:none}
.display-team-card.finished h2{color:white}
.podium-badge{position:absolute;z-index:3;top:8px;right:9px;display:grid;place-items:center;width:42px;height:42px;border:1px solid rgba(255,255,255,.7);border-radius:50%;background:rgba(255,250,240,.96);box-shadow:0 4px 12px rgba(22,45,28,.28)}
.podium-badge svg{width:24px;height:24px;fill:currentColor;filter:drop-shadow(0 1px 0 rgba(255,255,255,.55))}
.podium-badge b{position:absolute;right:-3px;bottom:-3px;display:grid;place-items:center;width:17px;height:17px;border:2px solid rgba(255,250,240,.96);border-radius:50%;color:#fff;background:var(--forest);font:700 8px/1 Arial,sans-serif;letter-spacing:0}
.podium-badge.trophy-1{color:#c99d29;background:linear-gradient(145deg,#fff9d9,#f4df8e)}
.podium-badge.trophy-2{color:#85919a;background:linear-gradient(145deg,#fff,#dce2e5)}
.podium-badge.trophy-3{color:#a76538;background:linear-gradient(145deg,#f8e1ce,#d8a27d)}
.display-team-card.podium h2{padding-right:40px}
@media(max-width:700px){.podium-badge{width:36px;height:36px}.podium-badge svg{width:21px;height:21px}}

/* Fallback per browser Smart TV datati che non supportano CSS Grid. */
.team-grid{display:flex;flex-wrap:wrap}
.display-team-card{flex:0 0 calc(16.666% - 7px);margin:0}
@supports (display:grid){.team-grid{display:grid}.display-team-card{flex:none}}

.results-page{min-height:100vh}
.results-shell{width:min(1500px,100%);min-height:100vh;margin:auto;padding:24px clamp(24px,4vw,70px);display:flex;flex-direction:column}
.results-header{display:grid;grid-template-columns:1fr auto 1fr auto;align-items:center;gap:24px;padding-bottom:15px;border-bottom:1px solid var(--line)}
.results-header>div:nth-child(2){text-align:center}.results-header small,.final-ranking-heading small{color:var(--clay);font:700 9px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.16em}
.results-header h1{margin:4px 0 0;color:var(--forest);font-size:clamp(34px,4vw,62px);font-weight:400;line-height:.9;text-transform:uppercase}
.results-header .connection-pill{justify-self:end}.results-kicker{margin:18px 0 11px;color:var(--clay);font:700 10px/1 Arial,sans-serif;text-align:center;text-transform:uppercase;letter-spacing:.18em}
.podium-grid{display:flex;justify-content:center;align-items:flex-end;gap:14px;min-height:190px}
.final-podium-card{position:relative;width:min(30%,330px);min-height:165px;padding:70px 18px 20px;border:1px solid var(--line);border-radius:22px;background:rgba(255,250,240,.94);box-shadow:0 12px 30px rgba(43,64,46,.13);text-align:center}
.final-podium-card.final-position-1{order:2;min-height:190px;border-color:#c9a23c;transform:translateY(-8px)}.final-podium-card.final-position-2{order:1}.final-podium-card.final-position-3{order:3}
.final-podium-card small{color:var(--clay);font:700 9px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.14em}.final-podium-card h2{margin:8px 0 12px;color:var(--forest);font-size:clamp(20px,2vw,31px);line-height:1}.final-podium-card time{color:var(--ink);font:700 clamp(25px,2.5vw,39px)/1 "Arial Narrow",Arial,sans-serif;letter-spacing:.04em}
.final-trophy{position:absolute;top:12px;left:50%;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;transform:translateX(-50%);background:#fff}.final-trophy svg{width:34px;height:34px;fill:currentColor}.final-trophy-1{color:#c99d29;background:#fff5c4}.final-trophy-2{color:#87939c;background:#eef2f4}.final-trophy-3{color:#a76538;background:#f3d8c3}
.final-ranking{margin-top:18px;padding:18px 22px;border:1px solid var(--line);border-radius:22px;background:rgba(255,250,240,.86);box-shadow:var(--shadow)}.final-ranking-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:10px}.final-ranking-heading h2{margin:3px 0 0;color:var(--forest);font-size:28px;font-weight:400;text-transform:uppercase}.final-ranking-heading p{margin:0;color:var(--forest);font:700 10px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.1em}.final-ranking-heading p strong{font:400 25px/1 Georgia,serif}
.ranking-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 14px}.ranking-row{display:grid;grid-template-columns:42px 1fr auto;align-items:center;gap:10px;min-height:42px;padding:7px 12px;border-radius:12px;background:rgba(255,255,255,.65)}.ranking-row strong{color:var(--clay);font-size:18px}.ranking-row span{overflow:hidden;color:var(--forest);font-weight:700;text-overflow:ellipsis;white-space:nowrap}.ranking-row time{font:700 18px/1 "Arial Narrow",Arial,sans-serif;letter-spacing:.04em}.ranking-row.unfinished{opacity:.62}.ranking-row em{font:700 8px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.1em}.results-empty{margin:auto;color:var(--forest);font-size:24px}.results-footer{display:flex;justify-content:space-between;margin-top:auto;padding-top:14px;color:var(--muted);font:700 8px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.14em}
.results-toggle{width:100%;margin:11px 0 2px;padding:13px 18px;border:0;border-radius:999px;color:white;background:var(--clay);font:700 11px/1 Arial,sans-serif;text-transform:uppercase;letter-spacing:.08em;cursor:pointer;box-shadow:0 6px 16px rgba(157,82,51,.18)}
@media(max-width:700px){.results-header{grid-template-columns:1fr auto}.results-header>div:nth-child(2){text-align:left}.results-header .connection-pill{display:none}.podium-grid{align-items:stretch;flex-direction:column}.final-podium-card,.final-podium-card.final-position-1{order:initial;width:100%;min-height:130px;transform:none}.ranking-list{grid-template-columns:1fr}}
.auth-dialog{width:min(420px,calc(100% - 28px))}.auth-dialog form>p{margin:0 0 16px;color:var(--muted);font-size:14px;line-height:1.4}.auth-dialog #controlPin{font:700 24px/1 Arial,sans-serif;letter-spacing:.18em;text-align:center}.auth-dialog .auth-error{margin:-5px 0 13px;color:#a84631;font:700 12px/1.3 Arial,sans-serif}
.control-team-card strong{font-family:Georgia,"Times New Roman",serif;font-weight:600;letter-spacing:-.02em;text-transform:none}
.final-podium-card.is-revealed{animation:podium-reveal .8s cubic-bezier(.2,.8,.25,1) both}
.ranking-row{animation:ranking-reveal .45s ease both}
@keyframes podium-reveal{0%{opacity:0;transform:translateY(45px) scale(.82)}65%{transform:translateY(-7px) scale(1.025)}100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes ranking-reveal{from{opacity:0;transform:translateX(-12px)}to{opacity:1;transform:translateX(0)}}
@media(prefers-reduced-motion:reduce){.final-podium-card.is-revealed,.ranking-row{animation:none}}
