:root{--bg:#f4f6fa;--surface:#fff;--surface-2:#f8fafc;--foreground:#0f1624;--muted:#64748b;--border:#e2e8f0;--border-focus:#2563eb;--primary:#2563eb;--primary-hover:color-mix(in srgb, var(--primary) 85%, black 15%);--primary-light:color-mix(in srgb, var(--primary) 10%, white 90%);--success:#16a34a;--success-bg:#f0fdf4;--success-border:#bbf7d0;--danger:#dc2626;--danger-bg:#fef2f2;--danger-border:#fecaca;--warning:#d97706;--warning-bg:#fffbeb;--warning-border:#fde68a;--radius-sm:6px;--radius:10px;--radius-lg:14px;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow:0 4px 12px #00000014, 0 1px 3px #0000000d;--shadow-lg:0 10px 30px #0000001f, 0 4px 8px #0000000f;--font:"DIN", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Inter", Helvetica, Arial, sans-serif;--font-display:"DIN Condensed", "DIN", Impact, "Arial Narrow", sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;height:100%}body{min-height:100%;font-family:var(--font);color:var(--foreground);background:var(--bg);-webkit-font-smoothing:antialiased;flex-direction:column;font-size:15px;line-height:1.6;display:flex;overflow-x:hidden}img,video{max-width:100%;display:block}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}h1{letter-spacing:-.02em;margin-bottom:6px;font-size:clamp(1.4rem,4vw,2rem);font-weight:700;line-height:1.2}h2{letter-spacing:-.01em;margin-bottom:4px;font-size:clamp(1.1rem,3vw,1.4rem);font-weight:700;line-height:1.3}h3{font-size:1.05rem;font-weight:600;line-height:1.3}p{margin-bottom:0}.muted{color:var(--muted);font-size:.875rem}.text-sm{font-size:.85rem}.container{width:100%;max-width:1000px;margin:0 auto;padding:28px 16px}.stack{flex-direction:column;gap:12px;display:flex}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.grid{gap:16px;display:grid}.grid-cols-4{grid-template-columns:repeat(2,1fr)}@media (min-width:560px){.grid-cols-2,.grid-cols-3{grid-template-columns:repeat(2,1fr)}}@media (min-width:720px){.grid-cols-3{grid-template-columns:repeat(3,1fr)}.grid-cols-4{grid-template-columns:repeat(4,1fr)}}.navbar{background:var(--foreground);z-index:100;border-bottom:2px solid var(--primary);justify-content:space-between;align-items:center;gap:16px;height:56px;padding:0 20px;display:flex;position:sticky;top:0;box-shadow:0 2px 8px #00000026}.navbar .brand{color:#fff;letter-spacing:-.01em;white-space:nowrap;font-size:1rem;font-weight:700}.navbar nav{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.navbar nav a{color:#ffffffbf;border-radius:var(--radius-sm);padding:6px 10px;font-size:.875rem;font-weight:500;transition:background .15s,color .15s}.navbar nav a:hover,.navbar nav a.active{background:var(--primary);color:#fff;text-decoration:none}.navbar nav .btn.secondary{color:#ffffffd9;border-color:#ffffff4d}.navbar nav .btn.secondary:hover{color:#fff;background:#ffffff1a}.navbar-toggle{border-radius:var(--radius-sm);color:#fff;cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:36px;height:36px;display:none}.navbar-toggle:hover{background:#ffffff1a}.navbar-toggle svg{width:22px;height:22px}@media (max-width:720px){.navbar{flex-wrap:wrap}.navbar-toggle{display:flex}.navbar nav{background:var(--foreground);flex-direction:column;align-items:stretch;gap:2px;padding:8px 12px 14px;display:none;position:absolute;top:100%;left:0;right:0;box-shadow:0 8px 16px #0000002e}.navbar nav.open{display:flex}.navbar nav a,.navbar nav button{text-align:left;width:100%;padding:11px 12px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:24px}.card+.card{margin-top:0}.btn{border-radius:var(--radius);background:var(--primary);color:#fff;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;border:1.5px solid #0000;justify-content:center;align-items:center;gap:6px;padding:9px 18px;font-size:.9rem;font-weight:600;text-decoration:none;transition:background .15s,box-shadow .15s,transform .1s;display:inline-flex}.btn:hover{background:var(--primary-hover);box-shadow:0 2px 8px color-mix(in srgb, var(--primary) 35%, transparent);text-decoration:none}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed;pointer-events:none}.btn.secondary{color:var(--foreground);border-color:var(--border);background:0 0}.btn.secondary:hover{background:var(--bg);box-shadow:none}.btn.danger{background:var(--danger)}.btn.danger:hover{background:#b91c1c;box-shadow:0 2px 8px #dc26264d}.btn.success{background:var(--success)}.btn.success:hover{background:#15803d}.btn.small{padding:5px 12px;font-size:.8rem}.btn.large{padding:13px 28px;font-size:1rem}.btn.full{width:100%}label{color:var(--foreground);margin-bottom:5px;font-size:.85rem;font-weight:600;display:block}input,textarea,select{border:1.5px solid var(--border);border-radius:var(--radius);width:100%;font-size:.9rem;font-family:var(--font);background:var(--surface);color:var(--foreground);outline:none;padding:9px 12px;transition:border-color .15s,box-shadow .15s}input:focus,textarea:focus,select:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px color-mix(in srgb, var(--border-focus) 16%, transparent)}textarea{resize:vertical;min-height:80px}.field{flex-direction:column;gap:4px;margin-bottom:4px;display:flex}.checkbox-field{margin-bottom:0;font-weight:400}.checkbox-input{flex-shrink:0;width:auto}.badge{letter-spacing:.01em;border:1px solid #0000;border-radius:999px;align-items:center;padding:3px 10px;font-size:.75rem;font-weight:600;display:inline-flex}.badge.success{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}.badge.danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.badge.warning{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-border)}.badge.neutral{background:var(--surface-2);color:var(--muted);border-color:var(--border)}.badge.primary{background:var(--primary-light);color:var(--primary-hover);border-color:color-mix(in srgb, var(--primary) 30%, white)}.alert{border-radius:var(--radius);border:1px solid #0000;padding:12px 16px;font-size:.875rem;font-weight:500}.alert.error{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.alert.success{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}.alert.info{background:var(--primary-light);color:var(--primary-hover);border-color:color-mix(in srgb, var(--primary) 30%, white)}.alert.warning{background:var(--warning-bg);color:var(--warning);border-color:var(--warning-border)}.table-wrapper{border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow-sm);overflow-x:auto}table{border-collapse:collapse;background:var(--surface);width:100%;font-size:.875rem}thead{background:var(--surface-2)}th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px;font-size:.75rem;font-weight:700}td{border-bottom:1px solid var(--border);vertical-align:middle;padding:12px 14px}tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--surface-2)}.pagination{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;margin-top:20px;display:flex}.btn-disabled{opacity:.5;cursor:default;pointer-events:none}.legal-footer{text-align:center;color:var(--muted);border-top:1px solid var(--border);flex-direction:column;align-items:center;gap:4px;margin-top:auto;padding:20px 16px;font-size:.8rem;display:flex}.legal-footer a{color:inherit;text-decoration:underline}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:20px}.stat-card .stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px;font-size:.8rem;font-weight:600}.stat-card .stat-value{color:var(--foreground);font-size:2rem;font-weight:700;line-height:1}.scanner-page{width:100%;max-width:720px;margin:0 auto;padding:20px 16px 32px}.scanner-page-header{margin-bottom:16px}.scanner-back{color:var(--muted);margin-bottom:8px;font-size:.85rem;font-weight:600;display:inline-block}.scanner-back:hover{color:var(--foreground);text-decoration:none}.scanner-wrapper{width:100%;max-width:500px;margin:0 auto}.scanner-viewport{border-radius:var(--radius-lg);aspect-ratio:4/3;box-shadow:var(--shadow-lg);background:#000;position:relative;overflow:hidden}.scanner-video{object-fit:cover;width:100%;height:100%;display:block}.scanner-canvas{display:none}.scanner-frame{pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.scanner-frame-box{aspect-ratio:1;border:3px solid #ffffffd9;border-radius:16px;width:min(220px,55%);box-shadow:0 0 0 9999px #00000061}.scanner-overlay{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:24px;display:flex;position:absolute;inset:0}.scanner-overlay.loading{background:#000000a6}.scanner-overlay.valid{background:#16a34aed}.scanner-overlay.used{background:#ca8a04ed}.scanner-overlay.error{background:#dc2626ed}.scanner-overlay.no-cam{background:#111}.scanner-overlay-icon{font-size:3.5rem;line-height:1}.scanner-overlay-title{color:#fff;font-size:1.25rem;font-weight:700}.scanner-overlay-sub{color:#ffffffe0;font-size:.95rem;font-weight:500}.scanner-overlay-meta{color:#ffffffb8;font-size:.78rem}.scanner-spinner{border:4px solid #ffffff40;border-top-color:#fff;border-radius:50%;width:44px;height:44px;animation:.7s linear infinite spin}@keyframes spin{to{rotate:1turn}}.scanner-manual{gap:8px;margin-top:14px;display:flex}.scanner-manual input{flex:1;height:46px;padding:0 14px;font-size:1rem}.scanner-manual .btn{height:46px;padding:0 22px;font-size:.95rem}@media (max-width:700px){.scanner-page{flex-direction:column;max-width:100%;height:100dvh;padding:0;display:flex}.scanner-page-header{flex:none;margin:0;padding:14px 16px 10px}.scanner-wrapper{flex-direction:column;flex:1;max-width:100%;min-height:0;display:flex}.scanner-viewport{aspect-ratio:auto;border-radius:0;flex:1;min-height:0}.scanner-manual{padding:12px 14px;padding-bottom:max(12px, env(safe-area-inset-bottom));flex:none;margin:0}.scanner-overlay-title{font-size:1.5rem}.scanner-overlay-icon{font-size:4rem}}.day-heading{text-transform:capitalize}.slot-card{background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);width:100%;color:var(--foreground);font:inherit;text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:8px;padding:14px 16px;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .1s;display:flex}.slot-card:hover{border-color:var(--primary);box-shadow:var(--shadow-sm);text-decoration:none}.slot-card:active{transform:translateY(1px)}.slot-card.full,.slot-card:disabled{opacity:.6;cursor:not-allowed;pointer-events:none}.slot-time{font-size:.95rem;font-weight:600}.organizer-sessions-list{flex-direction:column;gap:12px;margin-top:16px;display:flex}.session-card-org{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;display:flex}.session-card-org-info h3{margin-bottom:4px}@media (max-width:560px){.session-card-org{flex-direction:column;align-items:stretch}.session-card-org .row{width:100%}.session-card-org .row .btn{flex:1}}.mt-4{margin-top:4px}.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mt-20{margin-top:20px}.mt-24{margin-top:24px}.mt-28{margin-top:28px}.mt-32{margin-top:32px}.gap-8{gap:8px}.mw-180{max-width:180px}.mw-260{max-width:260px}.mw-420{max-width:420px}.mw-480{max-width:480px}.mw-540{max-width:540px}.mw-600{max-width:600px}.mw-640{max-width:640px}.mx-auto{margin-left:auto;margin-right:auto}.align-end{align-items:end}.align-center{align-items:center}.text-center{text-align:center}.qr-img-wrap{border:1px solid var(--border);background:#fff;border-radius:8px;padding:8px;display:inline-flex}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.stat-sub{color:var(--muted);font-size:1rem;font-weight:400}@media (max-width:640px){.container{padding:16px 12px}.card{padding:16px}.hide-mobile{display:none!important}h1{font-size:1.4rem}.page-header{margin-bottom:16px}.navbar{height:52px;padding:0 12px}td,th{padding:10px}}@media (min-width:641px){.hide-desktop{display:none!important}}@font-face{font-family:DIN;src:url(/fonts/DIN-Regular.ttf)format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:DIN;src:url(/fonts/DIN-Bold.ttf)format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:DIN Condensed;src:url(/fonts/DINCondensed-Bold.ttf)format("truetype");font-weight:700;font-style:normal;font-display:swap}h1,h2{font-family:var(--font-display)}h1{text-transform:uppercase;letter-spacing:.02em}.hero{background:#000;width:100%;margin-bottom:-40px;position:relative}.hero-img{object-fit:cover;width:100%;height:auto;max-height:72vh;display:block}.hero:after{content:"";background:linear-gradient(to bottom, #0000 0%, #00000059 60%, var(--bg) 100%);pointer-events:none;height:90px;position:absolute;inset:auto 0 0}.event-header{text-align:center;z-index:1;position:relative}.brand-logo{filter:drop-shadow(0 2px 6px #00000040);width:auto;height:40px;margin:0 auto 20px;display:block}.event-intro{max-width:640px}.event-practical{max-width:540px;margin:0 auto}.event-booking{text-align:left;max-width:720px;margin:0 auto}.legal-note{color:var(--muted);font-size:.8rem}.legal-note a{text-decoration:underline}.event-booking .slot-card{border-color:var(--border);box-shadow:var(--shadow-sm)}.event-booking .slot-card:hover{border-color:var(--primary);box-shadow:var(--shadow);transform:translateY(-1px)}body:has(.public-page){background:#ed7b8b}body:has(.public-page)>.legal-footer{color:#ffffffd9;border-top-color:#ffffff47}.public-page{--valentino-pink:#ed7b8b;--valentino-card:#f49aa8;--valentino-card-border:#ffffff47;background:var(--valentino-pink);color:#fff;min-height:100svh;font-family:var(--font-display)}.public-form-page,.public-intro-split{grid-template-columns:minmax(220px,38vw) minmax(0,1fr);height:100svh;display:grid;overflow:hidden}.public-hero-media{background:#111;height:100%;overflow:hidden}.public-hero-media picture,.public-hero-media img{width:100%;height:100%}.public-hero-media img{object-fit:cover}.public-copy-panel,.public-form-panel{text-align:center;flex-direction:column;align-items:center;padding:22px 48px 34px;display:flex}.public-form-panel{height:100%;overflow-y:auto}.public-copy-panel{gap:24px;height:100%;overflow-y:auto}.public-brand-header{flex:none;justify-items:center;gap:10px;width:100%;display:grid}.public-brand-header.compact{gap:8px}.summer-fair-logo{width:min(200px,54%);height:auto}.public-copy{color:#fff;width:min(860px,100%);font-family:var(--font-display);letter-spacing:.015em;gap:18px;margin:auto 0;font-size:18px;font-weight:700;line-height:1.2;display:grid}.public-copy p{margin:0}.public-lead{text-transform:uppercase;font-size:22px;line-height:1.2}.copy-label{text-transform:none}.program-line{text-transform:uppercase;font-size:22px;line-height:1.2}.public-cta{color:#fff;font-family:var(--font-display);letter-spacing:.02em;text-transform:uppercase;cursor:pointer;background:#050505;border:0;border-radius:999px;justify-content:center;justify-self:center;align-items:center;margin-top:4px;padding:16px 40px;font-size:18px;font-weight:700;text-decoration:none;transition:transform .12s,box-shadow .12s;display:inline-flex}.public-cta:hover{text-decoration:none;transform:translateY(-1px);box-shadow:0 8px 20px #00000059}.valentino-wordmark{width:min(112px,31%);height:auto;margin:32px 0 0}.public-slots{color:#050505;text-align:left}.public-back{color:#05050599;font-family:var(--font);cursor:pointer;background:0 0;border:0;margin:0 0 14px;padding:6px 4px;font-size:13px;font-weight:600;display:block}.public-back:hover{color:#050505}.public-slots{width:min(632px,100%);margin:26px auto 0}.public-empty{color:#050505;text-align:center}.public-slots>.alert{margin-bottom:16px}.public-day+.public-day{margin-top:22px}.public-day h2{color:#050505;font-family:var(--font-display);letter-spacing:0;text-transform:none;margin:0 0 8px;font-size:16px;line-height:1.15}.public-slot-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 12px;display:grid}.public-slot-card{border:1px solid var(--valentino-card-border);background:var(--valentino-card);color:#050505;min-height:60px;font-family:var(--font-display);text-align:left;cursor:pointer;border-radius:6px;flex-direction:column;justify-content:center;align-items:flex-start;gap:6px;padding:10px 15px;font-weight:700;transition:filter .14s,transform .1s;display:flex}.public-slot-card:hover{filter:brightness(1.04);transform:translateY(-1px)}.public-slot-card:disabled{cursor:not-allowed;opacity:.55;transform:none}.public-slot-card span{font-size:14px;line-height:1}.public-slot-card small{color:#14a857;background:#eefcee;border-radius:999px;padding:4px 10px;font-size:11px;line-height:1;display:inline-flex}.public-slot-card.full small{color:#c81e1e;background:#fde8e8}@media (min-width:900px){.public-slots{width:100%;margin-top:18px}.public-day+.public-day{margin-top:26px}.public-day h2{margin-bottom:12px;font-size:19px}.public-slot-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px 14px}.public-slot-card{min-height:72px;padding:14px 18px}.public-slot-card span{font-size:16px}.public-slot-card small{padding:5px 11px;font-size:12px}}.public-form-panel{justify-content:flex-start;gap:28px;padding-top:22px}.public-form-panel .valentino-wordmark{margin-top:auto}.public-form-card{color:#111;text-align:left;width:min(292px,100%);font-family:var(--font);background:#fff;border-radius:8px;margin:0;padding:16px;box-shadow:0 10px 28px #00000014}.public-form-card h1{color:#111;font-family:var(--font);letter-spacing:0;text-transform:none;margin:0 0 4px;font-size:13px;line-height:1.2}.selected-slot{color:#7a8190;font-size:9px;line-height:1.35}.public-error{margin-top:8px;padding:8px 10px;font-size:11px}.public-form{gap:8px;margin-top:10px;display:grid}.public-form .field{gap:2px;margin:0}.public-form label{color:#111;margin:0;font-size:10px;line-height:1.1}.public-form input{height:29px;box-shadow:none;border:1px solid #e9edf2;border-radius:4px;padding:5px 7px;font-size:12px}.public-form input:focus{border-color:#111;box-shadow:0 0 0 2px #00000014}.public-submit,.public-secondary{width:100%;height:26px;font-family:var(--font);cursor:pointer;border:0;border-radius:5px;font-size:10px;font-weight:700}.public-submit{color:#fff;background:#050505}.public-secondary{color:#111;background:#f4f5f7}.public-submit:disabled,.public-secondary:disabled{opacity:.55;cursor:not-allowed}.public-legal{color:#7a8190;font-size:9px;line-height:1.25}.public-legal a{color:#111;text-decoration:underline}@media (min-width:900px){.public-form-card{border-radius:12px;width:min(420px,100%);padding:28px 30px}.public-form-card h1{margin-bottom:6px;font-size:22px}.selected-slot{font-size:14px;line-height:1.4}.public-error{padding:10px 12px;font-size:13px}.public-form{gap:14px;margin-top:18px}.public-form .field{gap:5px}.public-form label{font-size:13px}.public-form input{border-radius:7px;height:44px;padding:11px 13px;font-size:15px}.public-submit,.public-secondary{border-radius:8px;height:46px;font-size:14px}.public-legal{font-size:12px;line-height:1.4}}@media (max-width:560px){.public-intro-split{height:auto;overflow:visible}.public-form-page{height:auto;min-height:0;overflow:visible}.public-form-panel{height:auto;overflow-y:visible}.public-intro-split,.public-form-page{grid-template-columns:1fr}.public-hero-media{display:none}.public-copy-panel{height:auto;overflow-y:visible}.public-copy-panel,.public-form-panel{min-height:0;padding:22px 20px 28px}.public-copy{gap:20px;font-size:17px}.summer-fair-logo{width:min(260px,75%)}.valentino-wordmark{width:min(135px,39%)}.public-slot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.public-form-card{margin:36px 0 24px}}@media (max-width:480px){.public-copy-panel{padding:18px 14px 26px}.public-slot-grid{grid-template-columns:1fr}.public-slot-card{min-height:54px}}
