:root{--ink:#13327b;--blue:#1248c8;--navy:#13294b;--yellow:#ffcf13;--paper:#fffdf6;--muted:#576478;--line:#dbdeda;--ui:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif}
*{box-sizing:border-box}html{min-width:300px;-webkit-text-size-adjust:100%}body{margin:0;min-height:100svh;min-height:100dvh;background:var(--paper);color:var(--navy);font:16px/1.5 var(--ui);display:flex;flex-direction:column;transition:background .35s,color .35s}button,textarea,input{font:inherit}button{cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid #d59d00;outline-offset:4px}button[disabled]{cursor:wait}button:active:not(:disabled){translate:0 1px}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.12;text-wrap:balance}button{touch-action:manipulation}.mast,main,footer{width:min(100% - 96px,1120px);margin-inline:auto}.mast{display:flex;align-items:center;min-height:84px;justify-content:space-between;border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top)}.brand{display:flex;align-items:center;gap:17px;font-size:14px;font-weight:540;letter-spacing:-.015em}.wordmark{width:48px;height:auto;display:block}.divider{height:21px;width:1px;background:var(--line)}.brand b{font-weight:700}.textbtn,.link{border:0;background:none;font-weight:550;min-height:44px;padding:7px 0}.textbtn{font-size:14px}.back span{margin-right:5px}main{flex:1;display:flex;align-items:center}.screen{padding-block:clamp(48px,7.2vh,84px);width:100%;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"copy art" "act art";align-items:center;column-gap:clamp(24px,7vw,120px);row-gap:24px;position:relative}.screen.active{animation:pageIn .38s ease-out both}.introcopy{grid-area:copy;align-self:end}.actions{grid-area:act;align-self:start;display:flex;flex-wrap:wrap;align-items:center;gap:8px 22px}.salute,.event-eyebrow{font-size:15px;font-weight:650;color:var(--blue);margin-bottom:20px}.big,h1{font-size:clamp(50px,5.8vw,82px);color:var(--blue);font-weight:700;letter-spacing:-.065em;line-height:1.03}.big{font-size:clamp(80px,9.1vw,130px);line-height:.90;letter-spacing:-.06em;word-spacing:.04em}.period{display:inline-block;margin-left:.055em;width:.16em;height:.16em;border-radius:50%;background:var(--yellow)}.theme{color:var(--blue);margin-top:16px;font-size:clamp(21px,2.2vw,34px);letter-spacing:-.045em}.lead,.welcome{max-width:35ch;font-size:clamp(16px,1.4vw,20px);color:var(--muted);margin-top:22px}.welcome{max-width:32ch}.primary{border:0;background:var(--blue);color:white;border-radius:16px;min-height:52px;padding:14px 23px;font-weight:640;font-size:16px;line-height:1.4;letter-spacing:-.02em;display:inline-flex;align-items:center;justify-content:center;gap:30px;transition:background .2s,transform .2s}.primary:hover{background:#093cae}.primary span{font-size:20px;line-height:1}.link{font-size:14px;color:var(--blue);text-decoration:underline;text-underline-offset:4px}.envelope-scene,.reveal-art,.thanks-art{grid-area:art;border:0;background:transparent;width:100%;aspect-ratio:1.06;position:relative;isolation:isolate;padding:0}.envelope-scene{display:block;perspective:1000px}.sun{position:absolute;inset:7% 5%;border-radius:50%;background:#fff0ad}.orbit{display:block;position:absolute;left:-2%;top:28%;width:109%;height:53%;border:1.5px solid #eac330;border-radius:50%;transform:rotate(-22deg);pointer-events:none}.orbit i{width:11px;height:11px;background:var(--yellow);border-radius:100%;position:absolute;left:8%;top:15%}.envelope{position:absolute;top:36%;left:13%;width:75%;height:48%;transform:rotate(-7deg);transform-style:preserve-3d;filter:drop-shadow(0 16px 15px #153b7817);transition:transform .6s}.env-back,.env-pocket,.flap{position:absolute;inset:0;border-radius:7px}.env-back{background:#1d43a4}.env-pocket{z-index:3;background:linear-gradient(145deg,transparent 49.5%,#0c43b9 50% 50.4%,transparent 50.9%) left/50% 100% no-repeat,linear-gradient(215deg,transparent 49.5%,#0c43b9 50% 50.4%,transparent 50.9%) right/50% 100% no-repeat,#1856d7;clip-path:polygon(0 0,50% 57%,100% 0,100% 100%,0 100%)}.flap{z-index:4;transform-origin:center top;background:#477aec;clip-path:polygon(0 0,100% 0,52% 57%,50% 58%,48% 57%);backface-visibility:visible;transition:transform .65s ease-in-out,background .65s}.seal{z-index:5;position:absolute;left:42.5%;top:39%;width:15%;aspect-ratio:1;border-radius:50%;background:#ffd22d;border:2px solid #f3b800;display:grid;place-items:center;transition:opacity .2s}.seal img{width:58%;display:block}.env-label{position:absolute;z-index:5;bottom:11%;right:9%;color:white;letter-spacing:.025em;font-size:clamp(12px,1.2vw,17px);font-style:italic}.peek{z-index:2;position:absolute;width:50%;left:26%;bottom:7%;clip-path:inset(0);transition:transform .85s cubic-bezier(.23,.8,.3,1),clip-path .6s}.envelope-scene:hover .envelope{transform:translateY(-3px) rotate(-5deg)}.envelope-scene.opening .envelope{transform:rotate(0) scale(1.03)}.opening .flap{transform:rotateX(170deg);background:#88aafa;z-index:1}.opening .seal{opacity:0}.opening .peek{clip-path:inset(0);transform:translateY(-40%);transition-delay:.27s}.opening .sun{animation:shine 1.2s ease both}.reveal-art{display:grid;place-items:center;overflow:hidden;border-radius:48% 48% 15px 15px}.reveal-art .halo{position:absolute;width:80%;aspect-ratio:1;border-radius:50%;background:#ffda3a;top:10%;left:10%}.reveal-art .orbit{border-color:#fff3a5;top:33%}.mascot{position:absolute;bottom:-6%;max-width:83%;height:93%;object-fit:contain;transform-origin:center bottom}.reveal.active .mascot{animation:emerge .95s cubic-bezier(.2,.78,.18,1.05) both}.art-edge{position:absolute;background:var(--yellow);height:4px;width:80%;bottom:0;border-radius:4px}.reveal .salute,.reveal h1{color:white}body[data-view=reveal]{background:#1447bb;color:white}body[data-view=reveal] .mast,body[data-view=reveal] footer{border-color:#ffffff45}body[data-view=reveal] .mast .wordmark{filter:brightness(0) invert(85%) sepia(98%) saturate(1620%) hue-rotate(349deg) brightness(103%)}.reveal .lead{color:#fff9df}.reveal .primary{background:var(--yellow);color:#153879}.reveal .link{color:white}body[data-view=reveal] footer{color:#f0f5ff}.event-panel,.form-panel,.choices,.ticket{grid-area:art}.event-panel{border-left:3px solid var(--yellow);padding:10px 0 10px clamp(22px,4vw,60px)}.event-eyebrow{margin-bottom:15px;text-transform:uppercase;letter-spacing:.1em;font-size:12px}.dateblock{display:flex;gap:16px;align-items:center;color:var(--blue)}.dateblock b{font-size:clamp(76px,6.8vw,100px);letter-spacing:-.065em;line-height:.94;font-weight:650}.dateblock span{font-size:18px;line-height:1.4}.event-time{font-weight:600;font-size:20px;margin-top:12px}hr{border:none;border-top:1px solid var(--line);margin:23px 0}.event-panel h2,.ticket h3{font-size:22px;letter-spacing:-.035em}address{font-style:normal;font-size:16px;line-height:1.6;margin-top:8px;color:var(--muted)}.writing h1,.decision h1,.result h1{font-size:clamp(47px,5.4vw,76px)}.form-panel label,.choices legend{font-size:15px;font-weight:650;margin-bottom:12px;display:block}.journal{border:1.5px solid #b9c6db;border-radius:16px;background:#fff;overflow:hidden;padding:18px 19px 12px}.journal:focus-within{border-color:var(--blue);box-shadow:0 0 0 3px #1248c817}textarea{display:block;resize:vertical;min-height:145px;max-height:400px;width:100%;border:0;outline:none!important;color:var(--navy);font-size:17px;background:transparent;line-height:1.5}.journal span{display:block;text-align:right;color:var(--muted);font-size:12px}.error{font-size:14px;color:#a32b1f;margin-top:8px}.choices{margin:0;min-width:0;padding:0;border:0}.choices label{display:flex;gap:14px;align-items:center;cursor:pointer;border:1px solid #d0d7dc;border-radius:13px;padding:19px 17px;background:white;font-weight:520;margin-bottom:10px}.choices label:has(input:checked){border-color:var(--blue);background:#fff5c9}.choices input{width:21px;height:21px;accent-color:var(--blue);margin:0;flex:none}.saved{color:#2d6745;font-size:14px;margin-bottom:19px}.ticket{position:relative;background:#fff5c8;border:1px solid #e9d591;padding:27px 30px 14px;border-radius:8px;color:var(--navy)}.ticket-head,.ticket-name{display:flex;align-items:center;justify-content:space-between;gap:16px}.ticket-head .wordmark{width:32px}.ticket-head span{font-size:13px;font-weight:600}.ticket-name{margin-top:20px;align-items:end;overflow:hidden}.ticket-name h2{font-size:42px;letter-spacing:-.06em;color:var(--blue)}.ticket-name small{font-size:12px}.ticket-mascot{height:96px;width:auto}.ticket hr{margin:7px 0 16px}.ticket h3{margin-top:15px}.ticket address{font-size:15px}.ticket-foot{border-top:1px dashed #c9b76f;margin-top:20px;padding-top:10px;font-style:italic;color:var(--blue);text-align:center;font-weight:620}.thanks-art{display:grid;align-items:end;justify-items:center;overflow:hidden}.thanks-art:before{content:"";position:absolute;background:#fff0ad;border-radius:50%;inset:12%}.thanks-art img{position:relative;height:90%;max-width:100%;object-fit:contain}.no .saved{margin-top:16px}footer{border-top:1px solid var(--line);min-height:65px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);padding-bottom:env(safe-area-inset-bottom)}.journey{font-size:12px;display:flex;align-items:center;gap:13px}.journey i{width:43px;height:1.5px;background:#d7a912;position:relative}.journey i:after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;border-radius:50%;background:#e6b410}.restart{font-size:12px}.toast{position:fixed;z-index:8;left:50%;bottom:25px;transform:translateX(-50%);max-width:90vw;width:max-content;border-radius:10px;background:#142447;color:white;padding:10px 16px;font-size:14px;pointer-events:none}.toast:empty{display:none}
@keyframes pageIn{from{opacity:0;transform:translateY(7px)}to{opacity:1;transform:translateY(0)}}@keyframes emerge{0%{transform:translateY(90%) scale(.84);opacity:0}65%{transform:translateY(-3%) scale(1.025) rotate(2deg);opacity:1}100%{transform:none;opacity:1}}@keyframes shine{50%{transform:scale(1.08)}}
@media(min-width:741px){.writing .actions,.decision .actions{grid-column:2;grid-row:2}.writing .introcopy,.decision .introcopy{grid-row:1/3;align-self:center}.writing .form-panel,.decision .choices{grid-row:1}.writing .screen,.decision .screen{row-gap:20px}}
@media(max-width:740px){.mast,main,footer{width:calc(100% - 44px)}.mast{min-height:64px}.brand{font-size:12px;gap:12px}.wordmark{width:40px}.divider{height:18px}.back{font-size:12px}.screen{padding-block:27px 29px;display:flex;flex-direction:column;align-items:stretch;gap:22px;max-width:480px;margin:auto}.introcopy,.actions{align-self:stretch}.screen h1{font-size:clamp(43px,11.8vw,60px);line-height:1.04}.invite .big{font-size:clamp(62px,15vw,86px);line-height:.92}.invite .big br{display:none}.big br:after{content:" "}.salute{font-size:14px;margin-bottom:12px}.theme{margin-top:10px;font-size:23px}.lead,.welcome{font-size:16px;margin-top:12px}.welcome{max-width:none}.envelope-scene{width:min(100%,360px);aspect-ratio:1.43;margin:-3px auto -1px}.sun{inset:0 14%;border-radius:50%}.envelope{top:35%;left:17%;width:67%;height:48%}.orbit{width:98%;left:0;top:26%}.actions{gap:5px 18px;justify-content:center}.primary{width:100%;max-width:450px;min-height:51px;justify-content:space-between;font-size:16px}.reveal-art,.thanks-art{aspect-ratio:1.35;width:min(100%,350px);margin-inline:auto}.reveal-art .halo{width:64%;top:13%;left:18%}.reveal-art .mascot{height:101%;bottom:-6%}.reveal h1 br,.decision h1 br,.result h1 br{display:none}.reveal h1 br:after,.decision h1 br:after,.result h1 br:after{content:" "}.event-panel{padding:4px 0 5px 20px}.event-eyebrow{margin-bottom:10px;font-size:11px}.dateblock b{font-size:62px}.dateblock span{font-size:15px}.event-time{font-size:17px;margin-top:7px}.event-panel hr{margin:15px 0}.event-panel h2{font-size:20px}address{font-size:15px}.detail h1 br{display:none}.writing h1{font-size:clamp(38px,10vw,50px)}.writing h1 br{display:none}.journal textarea{min-height:134px}.choices label{padding:15px}.saved{margin-bottom:12px}.ticket{padding:19px 21px 12px}.ticket-name{margin-top:10px}.ticket-mascot{height:72px}.ticket-name h2{font-size:36px}.ticket-foot{margin-top:14px}.thanks-art{height:210px}.no .saved{margin:12px 0 0}.journey{font-size:11px;gap:8px}.journey i{width:24px}footer{min-height:48px}.restart{font-size:11px}.textbtn{min-height:44px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}

/* The printed number follows the guest through the invitation and its keepsake. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.env-label{left:7%;right:7%;bottom:9%;display:flex;align-items:baseline;justify-content:space-between;gap:7px;font-size:clamp(10px,1.1vw,14px);font-style:normal;letter-spacing:0;color:#fff}
.env-label b,.lucky-tag b,.ticket-number b{font-variant-numeric:tabular-nums;letter-spacing:.045em}
.lucky-tag{display:inline-flex;align-items:baseline;gap:6px;padding:5px 12px;border:1px solid #edd67c;border-radius:7px;background:#fff3bb;color:#153a86;font-size:14px;line-height:1.5;font-weight:500;margin:0 0 20px}
.lucky-tag b,.ticket-number b{font-weight:750;font-size:1.13em}.ticket-foot{display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap}.ticket-number{font-size:15px;font-style:normal;font-weight:500}.decline-number{margin:18px 0 0}
@media(max-width:740px){.env-label{font-size:clamp(10px,2.7vw,13px)}.lucky-tag{margin-bottom:14px}.decline-number{margin-top:13px}}

.checkin-stub {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding-block-start: 18px;
  margin-block-start: 18px;
  border-top: 1px dashed #c9b76f;
}
.checkin-stub > div { flex: 1; }
.checkin-stub h2 { color: var(--ink); font-size: 18px; letter-spacing: -.03em; }
.checkin-stub p { max-width: 18ch; margin-top: 7px; color: #47546b; font-size: 14px; }
.checkin-code {
  flex: none;
  display: block;
  width: 180px;
  max-width: 58%;
  aspect-ratio: 1;
  background: white;
  image-rendering: pixelated;
}
.decline-keepsake {
  grid-area: art;
  padding: 0 clamp(16px, 3vw, 30px) 20px;
  border: 1px solid #e9d591;
  border-radius: 8px;
  background: #fff9e2;
}
.decline-keepsake .thanks-art { height: clamp(135px, 23vh, 235px); aspect-ratio: auto; }
.decline-keepsake .thanks-art::before { inset: 12% auto 0; width: min(68%, 180px); }
.decline-keepsake .thanks-art img { height: 100%; }
.decline-keepsake .checkin-stub { margin-top: 0; }
.scan.screen {
  max-width: 470px;
  margin: auto;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.scan-card {
  width: 100%;
  border: 1px solid #e9d591;
  border-radius: 8px;
  background: #fff5c8;
  padding: clamp(20px, 4vw, 34px);
}
.scan-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  border-bottom: 1px dashed #c9b76f;
  color: var(--blue);
  font-size: 16px;
  font-weight: 650;
}
.scan-head img { height: 74px; width: 80px; object-fit: contain; object-position: bottom; }
.scan-label { margin: 22px 0 6px; color: var(--muted); font-size: 14px; }
.scan-card h1 { font-size: clamp(32px, 8vw, 46px); letter-spacing: -.045em; overflow-wrap: anywhere; }
.scan-card .lucky-tag { margin: 16px 0 20px; }
.scan-event { border-top: 1px solid #e5d790; padding-top: 18px; }
.scan-event h2 { font-size: 20px; margin-top: 10px; }
.scan-event address { font-size: 15px; }
@media (max-width: 400px) {
  .checkin-stub { gap: 12px; }
  .checkin-stub h2 { font-size: 17px; }
  .checkin-stub p { font-size: 13px; }
}
