/* Participant experience */
.gold{color:var(--gold)}
.btn-lg{min-height:56px;padding:0 var(--s6);font-size:17px}

.stage{position:relative;overflow:hidden;isolation:isolate;border-radius:28px;min-height:520px;padding:var(--s7) var(--s5);
  background:radial-gradient(120% 90% at 85% 10%,#0B4A9A 0%,var(--navy) 45%,var(--navy-900) 100%);color:#fff;
  box-shadow:var(--shadow-2);display:flex;align-items:center}
.stage::after{content:"";position:absolute;inset:10px;border:1px solid rgba(201,164,92,.28);border-radius:20px;pointer-events:none;z-index:-1}
.snow{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none}
.corner{position:absolute;width:150px;height:75px;z-index:-1;opacity:.9}
.corner-tl{top:-6px;left:-14px;transform:rotate(-18deg) scaleX(-1)}
.corner-br{bottom:-4px;right:-10px;transform:rotate(-18deg)}

.view{display:none;width:100%}
.view.on{display:flex;animation:viewIn var(--t-slow) var(--ease-out)}
@keyframes viewIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.view-split{flex-direction:column;gap:var(--s5);align-items:center;text-align:center}
.view-center{flex-direction:column;align-items:center;gap:var(--s4);text-align:center;margin:auto}
.copy{max-width:520px;display:flex;flex-direction:column;align-items:center;gap:var(--s4)}
.hero-title{color:#fff;font-size:clamp(32px,8vw,52px)}
.hero-title.small{font-size:clamp(26px,6vw,36px)}
.lede{color:rgba(255,255,255,.82);font-size:17px;max-width:46ch}
.cta-row{display:flex;flex-direction:column;align-items:center;gap:var(--s3);margin-top:var(--s2)}
.cta-note{font-size:14px;color:rgba(255,255,255,.7);font-style:italic}
.art{width:min(260px,70vw)}
.gift{width:100%;height:auto;overflow:visible}
.gift .gift-lid,.gift .gift-bow,.gift .gift-tag,.gift .gift-body{transform-box:fill-box;transition:transform .55s var(--ease-out),opacity .45s}
.gift .gift-lid,.gift .gift-bow{transform-origin:50% 100%}
.gift-slot .gift{animation:sway 4.8s var(--ease-in-out) infinite;transform-origin:50% 95%}
@keyframes sway{0%,100%{transform:rotate(0)}40%{transform:rotate(-1.6deg) translateY(-2px)}70%{transform:rotate(1.2deg)}}
.notice{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);border-radius:var(--r-md);padding:var(--s3) var(--s4);font-size:15px;color:#fff;max-width:46ch}

/* opening sequence */
.gift.opening{animation:none}
.gift.opening .gift-bow{transform:translateY(-6px) scale(1.25,.2);opacity:0;transition-duration:.38s}
.gift.opening .gift-tag{opacity:0;transition-duration:.25s}
.gift.opening .gift-lid{transform:translate(-14px,-70px) rotate(-16deg);opacity:0;transition-delay:.3s}
.gift.opening .gift-body{transform:translateY(16px) scale(.96);opacity:0;transition-delay:.55s}

/* light sheets for functional steps */
.view-sheet{justify-content:center}
.sheet{width:100%;max-width:520px;background:var(--ivory);color:var(--ink);border-radius:var(--r-lg);padding:var(--s5);box-shadow:0 20px 40px rgba(0,20,47,.35)}
.sheet-title{font-size:30px;margin-top:var(--s2)}
.sheet-sub{color:var(--ink-2);margin:6px 0 var(--s4)}
.back{display:inline-flex;align-items:center;gap:4px;background:none;border:0;padding:6px 8px 6px 0;color:var(--ink-2);font-weight:700;font-size:14px;cursor:pointer}
.back svg{width:18px;height:18px}
.back:hover{color:var(--navy)}
.search{position:relative}
.search svg{position:absolute;left:14px;top:50%;width:20px;height:20px;transform:translateY(-50%);color:var(--ink-3)}
.search .input{padding-left:44px}
.names{list-style:none;margin:var(--s3) 0 0;padding:0;max-height:min(46vh,380px);overflow:auto;border-radius:var(--r-md);border:1px solid var(--line);background:var(--paper)}
.names li+li{border-top:1px solid var(--line)}
.name-btn{display:flex;align-items:center;gap:var(--s3);width:100%;min-height:58px;padding:10px 14px;background:none;border:0;text-align:left;cursor:pointer}
.name-btn:hover,.name-btn:focus-visible{background:var(--green-50);box-shadow:none}
.name-btn:focus-visible{outline:2px solid var(--navy);outline-offset:-2px}
.name-btn .nm{font-weight:700;color:var(--ink);overflow-wrap:anywhere}
.name-btn .dp{display:block;font-size:13px;color:var(--ink-3)}
.name-btn .chev{margin-left:auto;width:18px;height:18px;color:var(--ink-3);flex:none}
.name-btn mark{background:var(--gold-200);color:inherit;border-radius:3px;padding:0 1px}
.avatar{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--navy-50);color:var(--navy);font-weight:800;font-size:14px}
.names-empty{padding:var(--s5) var(--s2);text-align:center;color:var(--ink-2)}
.who-chip{display:flex;align-items:center;gap:var(--s3);padding:10px 12px;margin:var(--s2) 0 var(--s2);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-md)}
.who-chip strong{display:block;color:var(--navy);overflow-wrap:anywhere}

/* PIN: a single real input under six decorative cells (robust paste, backspace, autofill, screen readers) */
.otp{position:relative;margin:8px 0 6px;height:60px}
.otp-input{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:16px;border:0;caret-color:transparent;z-index:1;letter-spacing:2em}
.otp-cells{display:grid;grid-template-columns:repeat(6,1fr);gap:8px;height:100%}
.otp-cells span{display:grid;place-items:center;background:var(--paper);border:1.5px solid var(--line-strong);border-radius:var(--r-md);font-size:26px;color:var(--navy);transition:border-color var(--t-fast),box-shadow var(--t-fast)}
.otp-cells span.filled::after{content:"";width:12px;height:12px;border-radius:50%;background:var(--navy)}
.otp.focus .otp-cells span.cur{border-color:var(--navy);box-shadow:0 0 0 3px rgba(0,52,120,.15)}
.otp.bad .otp-cells span{border-color:var(--red);animation:nudge .35s}
@keyframes nudge{25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}
#pinForm .alert{margin:var(--s3) 0 0}
#pinForm .btn{margin-top:var(--s4)}

/* reveal */
.view-reveal{flex-direction:column;align-items:center;text-align:center;gap:var(--s3)}
.reveal-head{font-size:clamp(24px,5.5vw,34px);color:#fff;max-width:24ch}
.tag-card{position:relative;width:min(420px,100%);margin-top:var(--s6);padding:var(--s7) var(--s5) var(--s5);background:var(--ivory);color:var(--ink);
  clip-path:polygon(18% 0,82% 0,100% 9%,100% 100%,0 100%,0 9%);border-radius:0 0 var(--r-lg) var(--r-lg);text-align:center;filter:drop-shadow(0 18px 30px rgba(0,10,30,.4))}
.tag-hole{position:absolute;top:18px;left:50%;width:16px;height:16px;margin-left:-8px;border-radius:50%;background:var(--navy);box-shadow:inset 0 0 0 3px var(--gold)}
.tag-string{position:absolute;top:-46px;left:50%;width:60px;height:60px;margin-left:-30px;overflow:visible}
.tag-kicker{color:var(--green-800);margin-top:var(--s3)}
.tag-name{font-size:clamp(34px,9vw,50px);color:var(--navy);margin:var(--s2) 0 2px;overflow-wrap:anywhere;line-height:1.08}
.tag-dept{color:var(--ink-3);font-size:14px;min-height:1em}
.tag-sprig{width:84px;height:42px;margin:var(--s3) auto var(--s2)}
.tag-msg{color:var(--ink-2);max-width:32ch;margin:0 auto}
.tag-line{font-family:var(--font-display);font-style:italic;color:var(--navy);margin-top:var(--s3);font-size:17px}
.tag-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:6px 14px;margin-top:var(--s4);font-size:13px;color:var(--ink-2);font-weight:700}
.tag-meta span{display:inline-flex;align-items:center;gap:5px}
.tag-meta svg{width:15px;height:15px;color:var(--green-800)}
.tag-logo{width:56px;height:auto;margin:var(--s4) auto 0}
.reveal-actions{margin-top:var(--s4)}
.tag-card.rise{animation:tagRise .8s var(--ease-out) both}
@keyframes tagRise{from{opacity:0;transform:translateY(40px) rotate(-3deg) scale(.94)}to{opacity:1;transform:none}}
.confetti{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:50}

/* loader */
.loader svg{width:44px;height:44px;color:var(--gold);animation:spin 2.4s linear infinite}

/* details strip */
.details{display:grid;grid-template-columns:1fr;gap:var(--s3);margin-top:var(--s5)}
.detail{display:flex;align-items:center;gap:var(--s3);padding:var(--s4);background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg)}
.detail .ic{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--green-50);color:var(--green-800);flex:none}
.detail .ic svg{width:22px;height:22px}
.detail .k{font-size:12px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.detail .v{font-weight:800;color:var(--navy);font-size:17px;overflow-wrap:anywhere}
.detail .sub{font-size:13px;color:var(--green-800);font-weight:700}
.instructions{margin-top:var(--s3);padding:var(--s4) var(--s5);border-left:3px solid var(--gold);background:var(--paper);border-radius:0 var(--r-md) var(--r-md) 0;color:var(--ink-2);white-space:pre-line}

@media (min-width:640px){
  .details{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
  .stage{padding:var(--s8) var(--s7)}
}
@media (min-width:900px){
  .view-split{flex-direction:row;justify-content:space-between;text-align:left;gap:var(--s7)}
  .view-split .copy,.view-split .cta-row{align-items:flex-start}
  .art{width:320px;flex:none}
  .stage{min-height:540px}
  .corner{width:200px;height:100px}
}
@media (prefers-reduced-motion:reduce){.snow{display:none}.gift-slot .gift{animation:none}}
.who-dept{display:block}
