@font-face{font-family:Montserrat;src:url('montserrat.ttf') format('truetype');font-weight:100 900;font-display:swap}*{box-sizing:border-box}body{margin:0;font-family:Montserrat,Arial,sans-serif;color:#142e40;background:#f0f4f6;font-size:15px}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button,.button{cursor:pointer;border:1px solid #d5dfe5;background:white;padding:12px 18px;border-radius:6px;color:#142e40;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;min-height:44px}button:hover,.button:hover{background:#eaf0f4}button:disabled{opacity:.45;cursor:wait}.primary{background:#143c55;color:#fff;border-color:#143c55}.primary:hover{background:#205676}.muted,small{color:#5a6c78}header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 4vw}.brand{font-weight:700;letter-spacing:.1em;font-size:14px}.brand span{font-weight:400;letter-spacing:0;margin-left:14px;color:#5a6c78}.shell{max-width:1260px;margin:0 auto 40px;background:#fff;border:1px solid #e0e7eb;border-radius:16px;padding:32px;min-height:70vh}h1{font-size:28px;margin:0 0 10px;letter-spacing:-.035em}h2{font-size:19px;margin:0 0 18px}p{line-height:1.6}.titlebar,.row,.actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.actions{justify-content:flex-start;flex-wrap:wrap}.titlebar{margin-bottom:28px}label{display:block;font-size:13px;font-weight:600;margin:0 0 7px}input,select,textarea{width:100%;padding:12px;border:1px solid #c7d3dc;border-radius:5px;color:#142e40;background:white;min-width:0}input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:3px solid #77aeca;outline-offset:2px}.grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.field{margin-bottom:20px}.full{grid-column:1/-1}.panel{border:1px solid #e0e7eb;padding:22px;border-radius:8px;margin-bottom:18px}.counter-fields{display:grid;grid-template-columns:1fr 150px;gap:16px}.counter-fields .wide{grid-column:1/-1}.list-item{border-top:1px solid #e1e7eb;padding:24px 0;display:grid;grid-template-columns:1fr auto;align-items:center;gap:20px}.list-item h2{margin:0 0 8px}.empty{padding:60px 20px;background:#f7f9fa;text-align:center}.login{max-width:420px;margin:10vh auto;padding:36px;background:#fff;border:1px solid #dce5eb;border-radius:12px}.login h1{margin:30px 0 10px}.error{color:#9d2828;line-height:1.5;min-height:22px}.inline-check{display:flex;gap:10px;align-items:center}.inline-check input{width:20px;height:20px}.regia-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px}.remaining{font-size:70px;line-height:1.15;font-weight:600;letter-spacing:-.06em;font-variant-numeric:tabular-nums;margin:20px 0}.minus{width:100%;font-size:23px;min-height:88px}.log{font-size:13px;color:#5a6c78;line-height:1.8}.links{padding:20px;background:#f1f5f7;overflow-wrap:anywhere;margin:24px 0}.links a{color:#205a7b}.preview{width:100%;height:400px;border:1px solid #dce5eb;margin-top:24px;border-radius:8px}.public{background:#fff;min-height:100vh;display:flex;flex-direction:column}.public header{padding:30px 5vw}.public .stage{flex:1;display:flex;align-items:center;justify-content:center;gap:5vw;padding:3vh 6vw 6vh}.public .counters{display:flex;flex:1;justify-content:center;gap:4vw;flex-wrap:wrap}.public .slot{text-align:center;flex:1;min-width:220px}.public .number{font-size:clamp(100px,19vw,340px);font-weight:600;line-height:1;letter-spacing:-.075em;font-variant-numeric:tabular-nums;color:#123b55}.public.multi .number{font-size:clamp(90px,13vw,210px)}.public .label{font-size:clamp(21px,2.2vw,40px);font-weight:500;max-width:660px;margin:20px auto;line-height:1.3}.public .track{height:5px;background:#e8eff3;max-width:360px;margin:30px auto 0}.public .track span{display:block;background:#28698c;height:100%;transition:width .35s}.qrbox{width:clamp(220px,23vw,360px);text-align:center;flex-shrink:0}.qrbox img{width:100%;display:block}.qrbox h2{font-size:clamp(18px,1.6vw,27px);line-height:1.4}.qrbox a{color:#174660;font-weight:600}.public footer{padding:18px 5vw;display:flex;justify-content:space-between;color:#5a6c78;font-size:12px;gap:20px}.date{font-size:14px;color:#5a6c78}.demo{background:#f1ece1;color:#68501c;padding:8px 14px;text-align:center;font-size:13px}.popup-overlay{position:fixed;inset:0;background:#102f4559;display:flex;align-items:center;justify-content:center;z-index:10;padding:24px}.popup{background:#fff;padding:clamp(30px,5vw,80px);text-align:center;max-width:850px;width:100%;border-radius:14px;animation:enter .25s ease-out}.popup strong{font-size:clamp(80px,12vw,170px);color:#123b55;letter-spacing:-.07em}.popup p{font-size:clamp(23px,3vw,42px);line-height:1.35;margin-bottom:0}.offline{color:#9d2828!important}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:#17374b;color:white;padding:14px 20px;max-width:90vw;border-radius:7px;display:none;z-index:30}.end{font-size:16px!important;color:#5a6c78}.config-preview{font-size:13px;color:#5a6c78}dialog{border:1px solid #d8e2e8;border-radius:10px;max-width:500px;padding:25px}a{color:#205a7b}@keyframes enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(max-width:700px){header{padding:18px}.brand span{display:none}.shell{margin:0 10px 20px;padding:22px 16px;min-height:80vh}.grid,.counter-fields{grid-template-columns:1fr}.counter-fields .wide{grid-column:auto}.titlebar{align-items:flex-start;flex-wrap:wrap}h1{font-size:24px}.list-item{grid-template-columns:1fr}.public .stage{flex-direction:column;gap:35px;padding:30px 20px}.public header{align-items:flex-start}.public .number{font-size:42vw}.public.multi .number{font-size:30vw}.public .slot{min-width:140px}.public .label{font-size:22px}.qrbox{width:210px}.public .counters{width:100%;gap:25px}.public footer{flex-direction:column;gap:8px}.preview{height:330px}.regia-grid{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

.public #app{display:flex;flex:1;flex-direction:column;min-height:100vh}

/* Pannello semplificato: logo centrale, due azioni, card per evento. */
.admin-layout{background:#f4f6f8}
.app-header{background:#102f45;min-height:116px;display:flex;justify-content:center;align-items:center;padding:20px}
.app-header img{display:block;width:54px;height:70px;object-fit:contain}
.app-toolbar{max-width:1260px;margin:0 auto;padding:28px 0;display:flex;justify-content:flex-end;gap:12px}
.app-toolbar .primary{background:#174b6c;border-color:#174b6c}
.app-toolbar button{font-size:13px;min-height:46px;padding:13px 22px;border-radius:5px}
.logout-button,.edit-counter{background:#fff;border-color:#174b6c;color:#174b6c}
.admin-layout .shell{border:0;border-radius:0;padding:0;min-height:0;background:transparent}
.admin-layout .shell:has(#editor),.admin-layout .shell:has(.regia-grid){background:#fff;padding:30px;border-radius:10px}
.counter-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.event-card{background:#fff;border:1px solid #dce4ea;border-radius:10px;padding:26px;display:flex;flex-direction:column;min-width:0}
.event-info{flex:1}.event-info h1{font-size:22px;line-height:1.35;margin:0;overflow-wrap:anywhere}
.event-info>.muted{font-size:13px;margin:10px 0 24px}
.event-availability p{display:flex;align-items:center;gap:14px;margin:12px 0;font-size:13px}
.event-availability strong{font-size:30px;font-weight:600;line-height:1;color:#174b6c;font-variant-numeric:tabular-nums}
.event-availability span{line-height:1.4}.event-availability small{white-space:nowrap}
.card-actions{display:grid;grid-template-columns:1fr;gap:10px;margin-top:24px}
.card-actions button,.card-actions a{font-size:12px;padding:13px 12px;min-height:46px;border-radius:5px}
.admin-layout .login{margin:70px auto 30px;border-radius:10px}
.admin-layout .login h1{margin:0 0 28px;font-size:24px}
@media(max-width:1320px){.app-toolbar,.admin-layout .shell{margin-left:30px;margin-right:30px}}
@media(max-width:1050px){.counter-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){.app-header{min-height:100px;padding:16px}.app-header img{width:48px;height:62px}.app-toolbar{margin:0;padding:20px 16px;gap:10px}.app-toolbar button{font-size:11px;padding:12px 14px}.admin-layout .shell{margin:0 16px 24px}.counter-cards{grid-template-columns:1fr;gap:18px}.event-card{padding:24px}.admin-layout .shell:has(#editor),.admin-layout .shell:has(.regia-grid){padding:20px 16px}.admin-layout .login{margin:40px 20px;padding:28px}}

.card-actions .delete-counter{border-color:transparent;background:transparent;color:#9d2828;min-height:40px}.card-actions .delete-counter:hover{background:#fff3f3}

.back-nav{margin:0 0 24px}.back-to-counters{border-color:#174b6c;color:#174b6c;font-size:13px;min-height:46px;background:#fff}.back-nav+.titlebar{margin-top:0}@media(max-width:700px){.back-nav{margin-bottom:20px}.back-to-counters{font-size:12px}}

/* Scena pubblica: bianco in movimento, header brand e conferme compatte. */
.public{background:#fbfcfd;isolation:isolate}.public #app{position:relative;z-index:1}
.floating-background{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1;background:#fbfcfd}
.floating-background span{position:absolute;width:62vw;height:62vw;border-radius:50%;background:#fff;border:1px solid #f0f4f6;box-shadow:0 30px 100px #153c5506;animation:float-white 23s ease-in-out infinite alternate;will-change:transform}
.floating-background span:nth-child(1){left:-28vw;top:10vh}.floating-background span:nth-child(2){right:-27vw;bottom:-35vw;width:78vw;height:78vw;animation-duration:29s;animation-delay:-11s}.floating-background span:nth-child(3){left:37vw;top:-34vw;width:50vw;height:50vw;animation-duration:31s;animation-delay:-7s}
.public header.public-header{background:#102f45;padding:18px;min-height:102px;justify-content:center;gap:0}
.public-header img{display:block;width:50px;height:66px;object-fit:contain}
.public .event-name{text-align:center;padding:24px 20px 0;font-size:14px;font-weight:500;letter-spacing:.01em;color:#5a7180}
.public .stage{padding-top:4vh;padding-bottom:7vh;gap:5vw}
.public .number{color:#123b55;text-shadow:0 5px 0 #ffffff;font-weight:600}
.public .label{font-weight:500;color:#26495e}.public .track{height:4px;border-radius:4px;background:#e4edf2}.public .track span{border-radius:4px;background:#3a7894}
.public .qrbox{background:#fff;border:1px solid #e5edf1;border-radius:20px;padding:22px;box-shadow:0 16px 50px #153c5508}
.public .qrbox h2{font-size:clamp(17px,1.5vw,24px);margin-bottom:16px}.public .qrbox img{border-radius:8px}.public .qrbox a{display:inline-block;margin-top:14px;font-size:13px}
.popup-overlay{position:fixed;inset:auto;top:136px;left:50%;transform:translateX(-50%);width:min(480px,calc(100vw - 32px));background:transparent;padding:0;display:block;pointer-events:none;z-index:20}
.popup{position:relative;display:flex;align-items:center;gap:20px;max-width:none;width:100%;background:#fff;border:1px solid #dce8ef;border-radius:18px;padding:22px 26px;text-align:left;box-shadow:0 14px 60px #153c551f,0 3px 9px #153c5508;overflow:hidden;animation:popup-arrive .5s cubic-bezier(.16,1,.3,1)}
.popup-count{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:46px;font-weight:600;line-height:1;letter-spacing:-.06em;color:#174b6c;width:78px;height:78px;background:#f0f6f9;border-radius:13px}
.popup-count span{font-size:11px;letter-spacing:.02em;font-weight:500;margin-top:7px;color:#50778b}
.popup-copy{flex:1;min-width:0}.popup-copy small{display:block;font-size:11px;line-height:1.5;color:#678092;margin-bottom:5px;font-weight:500}.popup .popup-copy p{font-size:17px;line-height:1.5;margin:0;color:#193f55;font-weight:500;overflow-wrap:anywhere}
.popup-lifetime{position:absolute;bottom:0;left:0;height:3px;background:#397c98;width:100%;transform-origin:left;animation:popup-life 4.2s linear forwards}.popup-overlay.is-leaving{opacity:0;transform:translate(-50%,-8px);transition:opacity .2s,transform .2s}
.confetti{position:fixed;inset:0;width:100%;height:100%;z-index:21;pointer-events:none}
@keyframes float-white{from{transform:translate3d(0,0,0) rotate(0)}to{transform:translate3d(5vw,-4vh,0) rotate(8deg)}}
@keyframes popup-arrive{from{opacity:0;transform:translateY(-14px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes popup-life{from{transform:scaleX(1)}to{transform:scaleX(0)}}
@media(max-width:700px){.public header.public-header{min-height:86px;padding:12px}.public-header img{width:44px;height:58px}.public .event-name{font-size:12px;padding-top:18px}.public .stage{padding-top:26px;gap:30px}.public .qrbox{width:230px;padding:18px}.popup-overlay{top:auto;bottom:22px}.popup{gap:15px;padding:18px;border-radius:15px}.popup-count{width:62px;height:64px;font-size:38px;border-radius:11px}.popup .popup-copy p{font-size:14px}.popup-copy small{font-size:10px}.floating-background span{width:110vw;height:110vw}.floating-background span:nth-child(2){width:160vw;height:160vw;right:-80vw;bottom:-50vw}}
@media(prefers-reduced-motion:reduce){.floating-background span,.popup,.popup-lifetime{animation:none!important}.popup-overlay.is-leaving{transition:none}.confetti{display:none}}

.secondary-text{font-size:clamp(13px,1.1vw,18px);line-height:1.65;color:#637d8c;font-weight:400;max-width:520px;margin:12px auto 0;white-space:pre-line;overflow-wrap:anywhere}.public .label:has(+.secondary-text){margin-bottom:10px}@media(max-width:700px){.secondary-text{font-size:13px;line-height:1.6;max-width:310px;padding:0 4px}}
/* Fondo fotografico perla: asset dedicato, movimento lento su livelli separati. */
.public{background:#fbfcfd}.floating-background.silk-background{background:#fcfdfe;z-index:-1}
.silk-art{position:absolute;inset:-5%;background-image:url('counter-pearl-silk-v1.png');background-size:cover;background-position:center;opacity:.93;transform:scale(1.025);animation:silk-drift 36s ease-in-out infinite alternate;will-change:transform}
.silk-light{position:absolute;inset:-20%;background:linear-gradient(115deg,transparent 25%,#ffffff00 38%,#ffffffa3 50%,#ffffff00 62%,transparent 75%);opacity:.38;transform:translateX(-18%);animation:silk-light-pass 25s ease-in-out infinite alternate;pointer-events:none}
.public .number{text-shadow:0 2px 20px #ffffffb3}.public .qrbox{background:#ffffffed;border-color:#e3ebf0;box-shadow:0 12px 45px #244b6310}
@keyframes silk-drift{0%{transform:translate3d(-1.2%,-.8%,0) scale(1.025) rotate(-.3deg)}50%{transform:translate3d(.5%,.6%,0) scale(1.055) rotate(.1deg)}100%{transform:translate3d(1.1%,-.3%,0) scale(1.035) rotate(.3deg)}}
@keyframes silk-light-pass{from{transform:translate3d(-18%,0,0);opacity:.22}to{transform:translate3d(18%,2%,0);opacity:.44}}
@media(max-width:700px){.silk-art{background-position:42% center;opacity:.8;inset:-3%}.silk-light{opacity:.25}.public .qrbox{background:#ffffffed}}
@media(prefers-reduced-motion:reduce){.silk-art,.silk-light{animation:none!important;will-change:auto}.silk-art{transform:none}.silk-light{opacity:.18}}

/* Onde bianche generate in tempo reale: nessuna immagine o texture. */
.public,.floating-background.wave-background{background:#fff}.floating-background.wave-background{inset:0;z-index:-1}.wave-canvas{display:block;width:100%;height:100%;pointer-events:none}.public .number{text-shadow:none}.public .qrbox{background:#fff}

/* Disponibilità: blu iniziale, arancione sotto metà, rosso ultimi posti. */
.public{--availability-accent:#397c98;--availability-pale:#f0f6f9;--availability-border:#dce8ef}
.public.urgency-orange{--availability-accent:#c46416;--availability-pale:#fff5e9;--availability-border:#efd8bc}
.public.urgency-red{--availability-accent:#bf303b;--availability-pale:#fff0f1;--availability-border:#efcdd1}
.public .number,.public .label,.public .track span,.public-header,.qrbox{transition:color .5s,background-color .5s,border-color .5s,box-shadow .5s}
.public .slot.urgency-orange .number{color:#c46416}.public .slot.urgency-orange .label{color:#914c16}.public .slot.urgency-orange .track span{background:#d77b29}.public .slot.urgency-orange .track{background:#f5e9dc}
.public .slot.urgency-red .number{color:#bf303b}.public .slot.urgency-red .label{color:#9c2932}.public .slot.urgency-red .track span{background:#ce4852}.public .slot.urgency-red .track{background:#f5e0e3}
.public header.public-header{border-bottom:3px solid transparent}.public.urgency-orange header.public-header,.public.urgency-red header.public-header{border-bottom-color:var(--availability-accent)}
.public.urgency-orange .qrbox,.public.urgency-red .qrbox{border-color:var(--availability-border)}
.public .popup{border-color:var(--availability-border)}.public .popup-count{background:var(--availability-pale);color:var(--availability-accent)}.public .popup-lifetime{background:var(--availability-accent)}
@media(prefers-reduced-motion:reduce){.public .number,.public .label,.public .track span,.public-header,.qrbox{transition:none}}
/* Moduli: spaziature coerenti e controlli nativi contenuti anche su Safari iOS. */
#editor{min-width:0;max-width:100%}
#editor .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}
#editor .grid>.field{min-width:0;margin-bottom:0}
#editor>.grid{margin-bottom:28px}
#editor .field>label{margin-bottom:10px;line-height:1.5;font-size:14px}
#editor :is(input,select,textarea){display:block;box-sizing:border-box;width:100%;max-width:100%;min-width:0;min-inline-size:0;font-size:15px;line-height:1.45;font-weight:400}
#editor :is(input,select){min-height:48px}
#editor textarea{resize:vertical;min-height:96px}
#editor .counter-fields{grid-template-columns:minmax(0,1fr) 160px;gap:22px 24px}
#editor .counter-fields>div{min-width:0}
#editor .counter-fields label{display:flex;flex-direction:column;gap:10px;margin:0;font-size:14px;line-height:1.5;min-width:0}
#editor .counter-fields label>:is(input,select,textarea){margin:0}
#editor .counter-input>.row{align-items:center;margin-bottom:24px;gap:16px}
#editor .counter-input>.row h2{margin:0;font-size:19px}
#editor .panel{padding:26px;min-width:0;max-width:100%}
#editor .panel>h2{margin-bottom:24px}
#editor .panel .grid{margin-bottom:22px}
#editor .panel small{display:block;margin-top:10px;line-height:1.65;overflow-wrap:anywhere}
#editor .config-preview{line-height:1.6;overflow-wrap:anywhere;margin:9px 0 0}
#editor input[type=date]{appearance:none;-webkit-appearance:none;width:100%;max-width:100%;min-width:0;min-inline-size:0;min-height:48px;overflow:hidden;text-align:left}
#editor input[type=date]::-webkit-date-and-time-value{min-width:0;text-align:left}
#editor input[type=date]::-webkit-datetime-edit{display:inline-flex;min-width:0;padding:0}
#editor input[type=date]::-webkit-calendar-picker-indicator{margin-left:auto;flex-shrink:0}
#editor .inline-check{display:flex;align-items:flex-start;gap:12px;margin:0;font-size:14px;line-height:1.6}
#editor .inline-check input{flex:0 0 20px;width:20px;height:20px;min-height:20px;margin:2px 0 0;padding:0;appearance:auto;-webkit-appearance:checkbox}
#editor>.actions{gap:12px;margin-top:16px;padding-bottom:4px}
.admin-layout .login h1{line-height:1.35}
@media(max-width:700px){
 #editor .grid,#editor .counter-fields{grid-template-columns:minmax(0,1fr);gap:22px}
 #editor .counter-fields .wide{grid-column:1}
 #editor .panel{padding:20px 16px;margin-bottom:20px}
 #editor .counter-input>.row{margin-bottom:22px}
 #editor .field>label,#editor .counter-fields label{font-size:14px}
 #editor :is(input,select,textarea){font-size:16px;padding:12px;max-width:100%;min-width:0}
 #editor .inline-check input{padding:0}
 #editor>.actions{display:grid;grid-template-columns:1fr 1fr}
 #editor>.actions button{padding:12px 8px;min-width:0}
 .admin-layout .shell:has(#editor){padding:22px 16px}
}
@media(max-width:360px){.app-toolbar button{font-size:10px;padding:12px}.app-toolbar{gap:8px}.admin-layout .shell:has(#editor){margin-left:10px;margin-right:10px;padding:20px 12px}}
