@font-face{font-family:"Bebas Neue";src:url(../fonts/bebas-neue-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"DM Sans";src:url(../fonts/dm-sans-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"DM Sans";src:url(../fonts/dm-sans-latin-500-normal.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:"DM Sans";src:url(../fonts/dm-sans-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-500-normal.woff2) format("woff2");font-weight:500}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-600-normal.woff2) format("woff2");font-weight:600}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-700-normal.woff2) format("woff2");font-weight:700}
@font-face{font-family:"Cormorant Garamond";src:url(../fonts/cormorant-garamond-latin-500-italic.woff2) format("woff2");font-weight:500;font-style:italic}
@font-face{font-family:"Great Vibes";src:url(../fonts/great-vibes-latin-400-normal.woff2) format("woff2");font-weight:400}

:root{
  --ink:#12142b; --ink-2:#4a4e6d; --ink-3:#7b7fa0;
  --royal:#1a1da6; --royal-d:#10127a; --night:#070a36;
  --marrow:#f26b21; --marrow-d:#d4540e; --marrow-t:#fff1e8;
  --film:#f5f6fb; --paper:#fff; --line:#dcdfee; --ok:#0f8a5f; --bad:#c0261f; --bad-t:#fdecea;
  --r:12px;
  --display:"Bebas Neue","Arial Narrow",Impact,sans-serif;
  --body:"DM Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:400 16px/1.55 var(--body);color:var(--ink);background:var(--film)}
img{max-width:100%;display:block}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--marrow);outline-offset:2px}
[hidden]{display:none!important}

/* ---------- layout ---------- */
.stage{display:grid;grid-template-columns:minmax(340px,5fr) 7fr;min-height:100vh}
.lightbox{position:sticky;top:0;height:100vh;overflow-y:auto;background:radial-gradient(120% 90% at 20% 0%,#161a8f 0%,var(--night) 62%);color:#fff;overflow-x:hidden;isolation:isolate}
.lightbox canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-2}
.lightbox::before{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(60% 45% at 70% 55%,rgba(242,107,33,.0),transparent 70%);transition:background 1.2s}
.stage[data-cleared="1"] .lightbox::before{background:radial-gradient(60% 45% at 70% 55%,rgba(242,107,33,.42),transparent 70%)}
.lightbox::after{content:"";position:absolute;left:0;right:0;top:-30%;height:30%;z-index:-1;pointer-events:none;opacity:0;
  background:linear-gradient(to bottom,transparent,rgba(242,107,33,.0) 40%,rgba(255,170,110,.55) 98%,rgba(255,220,190,.9) 100%)}
.stage[data-scanning="1"] .lightbox::after{opacity:1;animation:sweep 1.1s cubic-bezier(.5,0,.3,1) infinite}
@keyframes sweep{to{top:100%}}
.lb-inner{height:100%;padding:clamp(24px,4vw,56px);display:flex;flex-direction:column;gap:22px}
.plate{background:#fff;border-radius:10px;padding:10px 14px}
.logo-plate{align-self:flex-start;width:min(300px,80%)}
.event-title{font:400 clamp(40px,min(5.6vw,8.6vh),84px)/.92 var(--display);letter-spacing:.01em;margin:8px 0 0;max-width:12ch}
.event-title span{color:var(--marrow)}
.event-meta{margin:0;color:#c9ccf5;font-size:15px;line-height:1.6}
.event-meta strong{color:#fff;font-weight:700}
.steps{list-style:none;margin:auto 0 0;padding:0;display:grid;gap:0;position:relative}
.steps li{display:flex;align-items:center;gap:14px;padding:9px 0;color:#9da1d6;font-weight:500;position:relative;transition:color .3s}
.steps li b{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;border:1.5px solid #5a5fc4;font-size:14px;flex:none;background:var(--night);transition:.3s}
.steps li:not(:last-child)::after{content:"";position:absolute;left:15.5px;top:41px;height:calc(100% - 32px);width:1.5px;background:#3a3fa6}
.steps li.on{color:#fff}
.steps li.on b{background:var(--marrow);border-color:var(--marrow);color:#fff;box-shadow:0 0 0 6px rgba(242,107,33,.22)}
.steps li.done{color:#d6d9ff}
.steps li.done b{background:#fff;border-color:#fff;color:var(--royal)}
.steps li.done b::before{content:"✓"}
.steps li.done b{font-size:0}.steps li.done b::before{font-size:15px;font-weight:700}
.sponsor-plate{padding:8px 12px;opacity:.97}

.panel{padding:clamp(24px,5vw,72px) clamp(20px,5vw,72px) 80px;display:flex;flex-direction:column;align-items:center}
.step{width:100%;max-width:680px;margin:auto 0;animation:enter .5s ease both}
@keyframes enter{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
h2{font:400 clamp(38px,4.4vw,56px)/1 var(--display);letter-spacing:.01em;margin:6px 0 12px;color:var(--royal-d)}
.lede{font-size:17px;color:var(--ink-2);margin:0 0 28px;max-width:56ch}
.fine{font-size:14px;color:var(--ink-3);margin:18px 0 0;max-width:60ch}
.muted{color:var(--ink-3)}

/* ---------- inputs ---------- */
.field-label,.q{display:block;font-weight:700;font-size:15px;margin:0 0 7px;color:var(--ink)}
.q{margin-top:22px}.q:first-of-type{margin-top:0}
.opt{font-style:normal;font-weight:400;color:var(--ink-3);font-size:13px;margin-left:6px}
input[type=email],input[type=text],select,textarea{width:100%;padding:13px 14px;border:1.5px solid var(--line);border-radius:var(--r);background:var(--paper);transition:border-color .15s,box-shadow .15s}
textarea{resize:vertical;min-height:84px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--royal);box-shadow:0 0 0 4px rgba(26,29,166,.14)}
.invalid{border-color:var(--bad)!important}
.f{margin-bottom:18px}
.row{display:flex;gap:14px}.row .grow{flex:1}.row-title select{width:110px}
.err{display:block;color:var(--bad);font-size:13.5px;margin-top:6px;min-height:0}
.err:empty{display:none}

.scan-field{position:relative;margin-bottom:14px;border-radius:var(--r);overflow:hidden}
.scan-field input{font-size:18px;padding:16px 16px}
.scanline{position:absolute;left:0;right:0;top:0;height:3px;background:linear-gradient(90deg,transparent,var(--marrow),transparent);opacity:0;pointer-events:none}
.scan-field.busy .scanline{opacity:1;animation:scan 0.9s ease-in-out infinite alternate}
@keyframes scan{from{top:0}to{top:calc(100% - 3px)}}
.scan-field.shake{animation:shake .4s}
@keyframes shake{20%{transform:translateX(-7px)}40%{transform:translateX(6px)}60%{transform:translateX(-4px)}80%{transform:translateX(3px)}}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:var(--r);padding:14px 24px;font-weight:700;cursor:pointer;transition:transform .12s,background .15s,box-shadow .15s}
.btn:active{transform:scale(.98)}
.btn[disabled]{opacity:.55;cursor:not-allowed}
.btn-primary{background:var(--royal);color:#fff;box-shadow:0 8px 20px -8px rgba(26,29,166,.6)}
.btn-primary:hover:not([disabled]){background:var(--royal-d)}
.btn-ghost{background:#fff;color:var(--royal);border:1.5px solid var(--royal)}
.btn-ghost:hover:not([disabled]){background:#eef0ff}
.btn-lg{width:100%;padding:18px 24px;font-size:17px;margin-top:6px}
.link{background:none;border:0;padding:0;color:var(--royal);text-decoration:underline;cursor:pointer;font-size:14px;margin-left:8px}

.alert{background:var(--bad-t);border:1.5px solid #f3b6b1;color:#7d1712;border-radius:var(--r);padding:14px 16px;margin:0 0 16px;font-weight:500;display:flex;gap:10px}
.alert::before{content:"!";flex:none;width:22px;height:22px;border-radius:50%;background:var(--bad);color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px;margin-top:1px}

.verified-chip{display:inline-flex;flex-wrap:wrap;align-items:center;gap:6px;background:#e6f6ef;color:#0a5c3f;border-radius:999px;padding:6px 14px;font-size:14px;margin-bottom:10px}
.verified-chip .tick{width:20px;height:20px;border-radius:50%;background:var(--ok);color:#fff;display:grid;place-items:center;font-size:12px}
.verified-chip b{font-weight:700;word-break:break-all}

/* ---------- form ---------- */
.meter{position:sticky;top:0;z-index:5;height:6px;background:var(--line);border-radius:3px;margin:0 0 26px;overflow:hidden}
.meter i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--royal),var(--marrow));transition:width .35s}
.block{border:0;padding:0;margin:0 0 34px}
.block legend{font:400 28px/1 var(--display);letter-spacing:.02em;color:var(--royal-d);padding:0 0 14px;margin-bottom:6px;border-bottom:2px solid var(--marrow);width:100%}
.block>*:not(legend):first-of-type{margin-top:18px}
.print-preview{margin:-4px 0 20px;padding:12px 16px;background:var(--marrow-t);border-radius:var(--r);display:flex;flex-direction:column;gap:0}
.print-preview span{font-size:13px;color:var(--marrow-d);font-weight:700}
.print-preview em{font:400 34px/1.15 "Great Vibes","Cormorant Garamond",cursive;color:var(--royal-d);font-style:normal;word-break:break-word}

.seg{display:flex;flex-wrap:wrap;gap:8px}
.seg label{cursor:pointer}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg span{display:block;padding:11px 18px;border:1.5px solid var(--line);border-radius:999px;background:#fff;font-weight:500;transition:.15s}
.seg label:hover span{border-color:var(--royal)}
.seg input:checked+span{background:var(--royal);border-color:var(--royal);color:#fff}
.seg input:focus-visible+span{outline:3px solid var(--marrow);outline-offset:2px}

.rate{display:grid;grid-template-columns:1fr auto;gap:4px 14px;align-items:center;padding:12px 0;border-bottom:1px solid var(--line)}
.rate:last-child{border-bottom:0}
.rate-name{font-weight:500}
.rate-name small{display:block;color:var(--ink-3);font-weight:400;font-size:13.5px}
.stars{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:2px}
.stars input{position:absolute;opacity:0;pointer-events:none}
.stars label{cursor:pointer;font-size:34px;line-height:1;color:#cdd0e6;padding:0 2px;transition:color .12s,transform .12s}
.stars label::before{content:"★"}
.stars label:hover,.stars label:hover~label,.stars input:checked~label{color:var(--marrow)}
.stars label:hover{transform:scale(1.15)}
.stars input:focus-visible+label{outline:3px solid var(--royal);border-radius:6px}
.rate-word{grid-column:1/-1;font-size:13px;color:var(--marrow-d);font-weight:700;min-height:18px}
.rate .err{grid-column:1/-1;margin:0}

.nps{display:grid;grid-template-columns:repeat(11,1fr);gap:5px}
.nps label{cursor:pointer}
.nps input{position:absolute;opacity:0;pointer-events:none}
.nps span{display:grid;place-items:center;height:46px;border-radius:9px;border:1.5px solid var(--line);background:#fff;font-weight:700;transition:.15s}
.nps label:hover span{border-color:var(--royal)}
.nps input:checked+span{color:#fff;border-color:transparent}
.nps input:focus-visible+span{outline:3px solid var(--marrow);outline-offset:2px}
.nps-ends{display:flex;justify-content:space-between;font-size:13px;color:var(--ink-3);margin-top:6px}

.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips label{cursor:pointer}
.chips input{position:absolute;opacity:0;pointer-events:none}
.chips span{display:block;padding:9px 14px;border-radius:10px;border:1.5px dashed #b8bce0;background:#fff;font-size:14.5px;transition:.15s}
.chips label:hover span{border-color:var(--royal)}
.chips input:checked+span{border-style:solid;border-color:var(--marrow);background:var(--marrow-t);color:var(--marrow-d);font-weight:700}
.chips input:focus-visible+span{outline:3px solid var(--royal);outline-offset:2px}
.check{display:flex;gap:10px;align-items:flex-start;cursor:pointer;font-size:15px;color:var(--ink-2)}
.check input{width:20px;height:20px;margin-top:2px;accent-color:var(--royal)}

/* ---------- certificate ---------- */
.cert-frame{position:relative;border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 30px 60px -28px rgba(10,12,80,.5),0 0 0 1px var(--line);aspect-ratio:1.4142}
.cert-frame canvas{width:100%;height:100%;display:block}
.cert-loading{position:absolute;inset:0;display:grid;place-items:center;background:#fff;color:var(--ink-3);font-weight:500}
.cert-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}

/* ---------- certificate checker ---------- */
.check-page{display:grid;place-items:center;min-height:100vh;padding:20px;background:radial-gradient(120% 90% at 20% 0%,#161a8f,var(--night) 62%)}
.check-card{background:#fff;max-width:480px;width:100%;border-radius:20px;padding:36px 32px;text-align:center}
.check-logo{width:240px;margin:0 auto 18px}
.check-card h1{font:400 40px/1 var(--display);color:var(--royal-d);margin:10px 0}
.check-name{font:400 40px/1.2 "Great Vibes",cursive;margin:6px 0;color:var(--royal-d)}
.check-badge{width:56px;height:56px;border-radius:50%;display:grid;place-items:center;margin:0 auto;color:#fff;font-size:28px;font-weight:700}
.check-badge.ok{background:var(--ok)}.check-badge.bad{background:var(--bad)}
.check-card form{display:grid;gap:10px;margin-top:14px}
.check-card input{padding:13px;border:1.5px solid var(--line);border-radius:12px;text-align:center}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .stage{grid-template-columns:1fr}
  .lightbox{position:relative;height:auto}
  .lb-inner{padding:22px 20px 24px;gap:14px}
  .event-title{font-size:clamp(40px,11vw,60px);max-width:none}
  .steps{flex-direction:row;display:flex;margin:6px 0 0;gap:6px}
  .steps li{flex:1;flex-direction:column;align-items:flex-start;gap:6px;font-size:12.5px;padding:0}
  .steps li:not(:last-child)::after{left:36px;top:15px;height:1.5px;width:calc(100% - 38px)}
  .sponsor-plate{display:none}
  .panel{padding-top:30px}
}
@media (max-width:520px){
  .row{flex-direction:column;gap:0}.row-title{flex-direction:row;gap:10px}.row-title select{width:92px}
  .nps{grid-template-columns:repeat(6,1fr)}
  .stars label{font-size:38px}
  .rate{grid-template-columns:1fr}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.nps span.d{--c:var(--bad)}.nps span.p{--c:#b7791f}.nps span.g{--c:var(--ok)}
.nps input:checked+span{background:var(--c)}

/* ---------- partners footer: always at the bottom of the panel, on every screen size ---------- */
.partners{width:100%;max-width:760px;margin-top:48px;padding-top:26px;border-top:1px solid var(--line)}
.partners h3{font:700 14px/1.2 var(--body);color:var(--ink-3);text-align:center;margin:0 0 16px}
.partners ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.partners li{background:#fff;border:1px solid var(--line);border-radius:12px;height:78px;padding:10px 14px;overflow:hidden}
.partners img{display:block;width:100%;height:100%;object-fit:contain}
@media (max-width:640px){.partners ul{grid-template-columns:repeat(2,1fr);gap:12px}.partners li{height:104px;padding:10px 12px}}
@media (min-width:1500px){.partners{max-width:860px}.partners li{height:88px}}

/* ---------- exit ---------- */
.exit-box{margin-top:26px;padding:18px 20px;border-radius:var(--r);background:var(--marrow-t);border:1.5px solid #f7c9ae}
.exit-box p{margin:0 0 14px;color:#6b3410;font-size:15px}
.btn-exit{background:var(--marrow);color:#fff;box-shadow:0 8px 20px -8px rgba(212,84,14,.7)}
.btn-exit:hover:not([disabled]){background:var(--marrow-d)}
.bye-mark{width:64px;height:64px;border-radius:50%;background:var(--ok);color:#fff;display:grid;place-items:center;font-size:32px;font-weight:700;margin-bottom:10px}
.alert.info{background:#eef0ff;border-color:#c3c7f5;color:var(--royal-d)}
.alert.info::before{content:"i";background:var(--royal)}

/* laptops with short screens */
@media (min-width:901px) and (max-height:780px){
  .lb-inner{gap:14px;padding-top:24px;padding-bottom:20px}
  .logo-plate{width:min(230px,70%)}
  .steps li{padding:6px 0}
  .event-meta{font-size:14px}
}

/* compact partners + tighter panel on short laptop screens so the logos stay in view */
@media (min-width:901px) and (max-height:800px){
  .panel{padding-top:24px;padding-bottom:20px}
  .partners{margin-top:20px;padding-top:14px}
  .partners h3{margin-bottom:10px;font-size:13px}
  .partners ul{gap:8px}
  .partners li{height:50px;padding:6px 12px;border-radius:10px}
  .lede{margin-bottom:18px}
  h2{margin-bottom:8px}
  .fine{margin-top:12px}
}

.alert.info.notice{margin:0 0 20px;font-weight:500}

.form-badge{margin:18px 0 0}.form-badge span{display:inline-block;padding:6px 14px;border-radius:999px;background:#fff;color:var(--royal);font:600 12.5px/1 var(--body,inherit);letter-spacing:.14em;text-transform:uppercase}
.dp-badge{display:flex;gap:10px;align-items:flex-start;margin:22px 0 0;max-width:34ch;font-size:13.5px;line-height:1.4;color:rgba(255,255,255,.88)}
.dp-badge svg{flex:none;width:22px;height:22px;fill:#7ee0a8}
.dp-note{margin:18px 0 0;max-width:60ch;font-size:14px;color:var(--ink-2);border:1px solid var(--line,#dde);border-radius:12px;padding:10px 14px;background:#fff}
.dp-note summary{cursor:pointer;font-weight:600;color:var(--royal)}
.dp-note p,.dp-note ul{margin:10px 0 0}.dp-note ul{padding-left:18px}.dp-note li{margin:6px 0}
.consent{margin:6px 0 4px}
@media(max-height:800px){.dp-badge{margin-top:14px}.form-badge{margin-top:12px}}
