:root{--ink:#21171b;--purple:#634c9f;--pink:#ec4f87;--cream:#faf7ff;--line:rgba(33,23,27,.12);--shadow:0 22px 60px rgba(38,24,34,.13)}
/* Keep hidden overlays and optional controls out of the preview. */
[hidden]{display:none!important}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:radial-gradient(circle at 85% 12%,rgba(99,76,159,.1),transparent 26%),linear-gradient(180deg,#faf7ff,#f7f8fd);color:var(--ink);font-family:"Plus Jakarta Sans",sans-serif}a{color:inherit}.container{width:min(1180px,calc(100% - 32px));margin:auto}.skip{position:fixed;left:12px;top:-80px;z-index:99;background:#fff;padding:10px 14px}.skip:focus{top:12px}.postcardPage{padding:36px 0 70px}.postcardCrumbs{display:flex;gap:9px;font-size:.83rem;color:#715f68;margin-bottom:22px}.postcardHero{display:flex;justify-content:space-between;align-items:end;gap:28px;margin-bottom:28px}.postcardHero h1,.formCard h2{font-family:"Fraunces",serif;margin:.1em 0}.postcardHero h1{font-size:clamp(2.3rem,5vw,4.5rem);line-height:.98}.eyebrow{text-transform:uppercase;letter-spacing:.18em;font-size:.73rem;font-weight:800;color:#745f69}.muted{color:#766b70}.postcardPrice{min-width:190px;padding:16px 18px;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.78);box-shadow:0 12px 28px rgba(38,24,34,.08)}.postcardPrice span,.postcardPrice small{display:block}.postcardPrice del{display:block;color:#857980;font-size:.9rem}.postcardPrice strong{display:block;font:700 1.55rem "Fraunces",serif;margin:3px 0}.postcardLayout{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr);gap:24px;align-items:start}.postcardStudio{position:sticky;top:20px;padding:20px;border:1px solid var(--line);border-radius:28px;background:rgba(255,255,255,.78);box-shadow:var(--shadow)}.sideSwitch{display:flex;width:max-content;margin:0 auto 18px;padding:5px;border-radius:999px;background:#eeeaf6}.sideSwitch button{border:0;border-radius:999px;padding:10px 18px;background:transparent;font:700 .86rem inherit;cursor:pointer}.sideSwitch button.is-active{background:#fff;color:var(--purple);box-shadow:0 5px 18px rgba(42,25,58,.13)}.postcardStage{display:grid;place-items:center;min-height:530px;perspective:1800px;overflow:hidden;border-radius:22px;background:radial-gradient(circle at 50% 18%,#fff,rgba(243,235,229,.72));}.postcardObject{position:relative;width:min(92%,760px);aspect-ratio:1.925/1;transform-style:preserve-3d;transition:transform .8s cubic-bezier(.2,.75,.25,1),width .45s ease,aspect-ratio .45s ease;filter:drop-shadow(0 25px 24px rgba(39,24,31,.22))}.postcardObject.is-portrait{width:min(56%,380px);aspect-ratio:1/1.925}.postcardStage[data-side="back"] .postcardObject{width:min(92%,760px);aspect-ratio:1.925;transform:rotateY(180deg)}.postcardFace{position:absolute;inset:0;overflow:hidden;border-radius:5px;background:#fff;backface-visibility:hidden;border:1px solid rgba(0,0,0,.12)}.postcardFace--front img{width:100%;height:100%;display:block;object-fit:contain;background:#fff}.postcardFace--front img[data-photo-overlay]{position:absolute;inset:0;object-fit:cover}.postcardFace--back{display:grid;grid-template-columns:1.08fr .92fr;padding:7%;transform:rotateY(180deg);background:linear-gradient(135deg,rgba(255,255,255,.96),rgba(248,244,239,.96)),url("../assets/postcards/POSTCARD_BACK-VISUAl.webp") center/cover}.postcardMessage{padding-right:8%;border-right:1px solid #bbb;display:flex;flex-direction:column}.postcardMessage p{white-space:pre-wrap;overflow-wrap:anywhere;font-family:"Fraunces",serif;font-size:clamp(.75rem,1.35vw,1.05rem);line-height:1.45}.postcardScript{font:600 clamp(.7rem,1vw,.88rem) "Fraunces",serif;color:var(--purple)}.postcardMessage strong{margin-top:auto}.postcardAddress{position:relative;padding:14% 0 0 10%;font-size:clamp(.6rem,1.15vw,.9rem)}.postcardAddress strong,.postcardAddress p{display:block;border-bottom:1px solid #aaa;padding:4px 0;margin:0}.stampBox{position:absolute;right:0;top:0;width:23%;aspect-ratio:1;border:1px dashed #999;display:grid;place-items:center;font-size:.55rem;color:#888}.postcodeBoxes{display:flex;gap:4px;margin-top:10px}.postcodeBoxes i{display:block;width:18px;aspect-ratio:1;border:1px solid #999}.postcardAddress small{position:absolute;right:0;bottom:0}.previewHint{text-align:center;margin:14px 0 0;color:#776b72;font-size:.83rem}.postcardForm{display:grid;gap:16px}.formCard{padding:22px;border:1px solid var(--line);border-radius:24px;background:rgba(255,255,255,.84);box-shadow:0 14px 34px rgba(38,24,34,.08)}.formCard h2{font-size:1.65rem}.formCard label{display:grid;gap:7px;margin-top:15px;font-size:.85rem;font-weight:800}.formCard input,.formCard textarea{width:100%;border:1px solid var(--line);border-radius:14px;padding:12px 13px;background:#fff;font:500 .92rem inherit;color:var(--ink);outline:none}.formCard input:focus,.formCard textarea:focus{border-color:var(--purple);box-shadow:0 0 0 4px rgba(99,76,159,.12)}.formCard textarea{min-height:110px;resize:vertical}.formCard label small{text-align:right;color:#8b7d84;font-weight:500}.orientationBadge{display:inline-flex;align-items:center;gap:6px;padding:8px 11px;border-radius:999px;background:#f0ecf8;color:#4d387e;font-size:.78rem;font-weight:800}.photoUpload{padding:16px;border:1px dashed var(--purple);border-radius:16px;background:#faf8ff}.btnPrimary{width:100%;border:0;border-radius:15px;padding:14px 18px;background:linear-gradient(135deg,var(--purple),#8168c2);color:#fff;font:800 .95rem inherit;cursor:pointer;box-shadow:0 13px 28px rgba(99,76,159,.25)}.btnPrimary:disabled{opacity:.62;cursor:wait}.formStatus{min-height:1.3em;margin:10px 0 0;color:#ad255c;font-size:.84rem}.formCard--review{background:linear-gradient(145deg,#fff,#fff4f8)}
.postcardObject.is-portrait .postcardFace--front img[data-front-image]{position:static;width:100%;height:100%;transform:none;object-fit:cover}
.postcardStage .postcardObject,.postcardStage[data-side="back"] .postcardObject{transform:none;transform-style:flat;transition:none}
.postcardFace{border-radius:0;backface-visibility:visible}
.postcardFace--back{transform:none;background:#fffcf7;display:none}
.postcardStage[data-side="back"] .postcardFace--front{display:none}
.postcardStage[data-side="back"] .postcardFace--back{display:grid}
.postcardMessage p{font-size:clamp(.55rem,1.05vw,.85rem);line-height:1.35;margin:8px 0;white-space:pre-wrap}
.postcardMessage strong,.postcardAddress{font-size:clamp(.55rem,1vw,.8rem);overflow-wrap:anywhere;white-space:pre-wrap}
.postcardAddress p{white-space:pre-wrap}
.lookChoices{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.lookChoices button,[data-camera] button{padding:10px;border:1px solid var(--line);background:#f4effa;border-radius:10px;cursor:pointer}
[data-save-voice]{padding:12px 16px;background:var(--purple);color:white;border:0;border-radius:12px;cursor:pointer}
[data-camera] video{width:100%;margin-top:12px}
[data-photo-overlay]{touch-action:none;cursor:grab}

/* Postcards are 120 × 170 mm portrait or 170 × 120 mm landscape. */
.postcardObject{width:min(92%,720px);aspect-ratio:17 / 12}
.postcardObject.is-portrait{width:min(68%,340px);aspect-ratio:12 / 17}
.postcardStage[data-side="back"] .postcardObject{width:min(92%,720px);aspect-ratio:17 / 12}
.postcardStage[data-side="back"] .postcardObject.is-portrait{width:min(68%,340px);aspect-ratio:12 / 17}
.postcardObject.is-portrait .postcardFace--back{grid-template-columns:1fr;grid-template-rows:1fr 1fr;padding:5% 7%!important}
.postcardObject.is-portrait .postcardMessage{padding:0 0 5%;border-right:0;border-bottom:1px solid #bbb}
.postcardObject.is-portrait .postcardAddress{padding:10% 2% 0 0}
@media(max-width:600px){.postcardObject.is-portrait,.postcardStage[data-side="back"] .postcardObject.is-portrait{width:min(72%,320px)}.postcardObject.is-portrait .postcardFace--back{padding:4% 6%!important}.postcardObject.is-portrait .postcardAddress{padding-top:8%}}
[data-photo-overlay]:active{cursor:grabbing}
.photoTools{margin:16px 0 0;border:1px solid var(--line);border-radius:14px;padding:14px}
.photoTools legend{font-weight:800;color:var(--purple)}
.photoTools p,[data-camera-status]{font-size:.82rem;line-height:1.5}
.photoTools input[type="range"]{padding:4px 0;accent-color:var(--purple)}
.formCard input[type="checkbox"]{width:auto;justify-self:start}
[data-voice-preview]{width:100%;margin-top:12px}
[data-voice-qr] img{width:64px;height:64px;display:block}
.postcardStage{min-height:530px}
.postcardFace--back{padding:0!important;grid-template-columns:1fr}
.postcardFace--back>div{display:none!important}
.postcardFace--back canvas{width:100%;height:100%;display:block}
/* Postcard artwork fills the fixed 120×170 / 170×120 print face. */
.postcardFace--front img[data-front-image]{object-fit:cover;background:transparent}
@media(max-width:900px){.postcardLayout{grid-template-columns:1fr}.postcardStudio{position:relative;top:auto}.postcardStage{min-height:430px}.postcardHero{align-items:start}.postcardPrice{min-width:160px}}
@media(max-width:600px){.postcardHero{display:grid}.postcardPrice{width:100%}.postcardStage{min-height:340px}.postcardStudio{padding:12px}.postcardObject.is-portrait{width:62%}.postcardFace--back{padding:5%}.postcardAddress{padding-top:16%}.postcardAddress p{max-height:70px;overflow:hidden}.sideSwitch{width:100%}.sideSwitch button{flex:1}}

.lookChoiceGroup{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;margin-top:14px}.lookChoice{min-width:0;min-height:86px;padding:11px 8px;border:1px solid transparent;border-radius:16px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;font:inherit;cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}.lookChoice>span{font-size:1.1rem;line-height:1}.lookChoice strong{font-size:.76rem;line-height:1.2}.lookChoice small{font-size:.65rem;line-height:1.2;font-weight:500}.lookChoice--design{background:#f3eefb;color:#503b7f;border-color:#ded3ef}.lookChoice--photo{background:#fff0f5;color:#a72f61;border-color:#f6c8d9}.lookChoice--selfie{background:#634c9f;color:#fff;border-color:#634c9f}.lookChoice[aria-pressed="true"]{box-shadow:0 0 0 3px rgba(99,76,159,.2),0 8px 18px rgba(52,35,78,.12);transform:translateY(-1px)}.lookChoice--photo[aria-pressed="true"]{box-shadow:0 0 0 3px rgba(236,79,135,.2),0 8px 18px rgba(52,35,78,.12)}.lookChoice:focus-visible,.postcardHelpWrite:focus-visible{outline:3px solid rgba(99,76,159,.42);outline-offset:2px}.postcardMessageField{margin-top:15px}.postcardFieldHead{display:flex;align-items:center;justify-content:space-between;gap:10px}.formCard .postcardFieldHead label{margin:0}.postcardHelpWrite{border:0;border-radius:999px;padding:8px 12px;background:#f3eefb;color:#503b7f;font:700 .76rem inherit;cursor:pointer}.postcardHelpWrite:disabled{opacity:.65;cursor:wait}.formCard .postcardMessageField>textarea{margin-top:8px}.postcardMessageMeta{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.postcardMessageMeta p{margin:4px 0 0;color:#766b70;font-size:.75rem;line-height:1.4}.postalAddressGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px;margin-top:15px}.postalAddressGrid label{margin-top:12px}.postalAddressGrid .postalField--wide{grid-column:1/-1}.postcardDeliveryAddress .postalAddressGrid .postalFieldTitle{color:var(--ink)}.postcardDeliveryAddress .postalAddressGrid .postalRequired{color:#d53e77}.legacyPostalAddress[hidden]{display:none!important}.legacyPostalAddress textarea{min-height:90px}@media(max-width:480px){.lookChoiceGroup{gap:6px}.lookChoice{min-height:78px;padding:9px 5px}.lookChoice strong{font-size:.69rem}.lookChoice small{font-size:.6rem}.postalAddressGrid{grid-template-columns:1fr}.postalAddressGrid .postalField--wide{grid-column:auto}}
.postcardTypographyDisclosure{margin-top:9px;border:1px solid rgba(99,76,159,.16);border-radius:14px;background:#fbf9ff;overflow:hidden}.postcardTypographyDisclosure>summary{display:flex;align-items:center;gap:9px;min-height:46px;padding:10px 12px;list-style:none;cursor:pointer;color:#503b7f}.postcardTypographyDisclosure>summary::-webkit-details-marker{display:none}.postcardTypographyIcon{display:grid;place-items:center;width:28px;height:28px;border-radius:9px;background:#eee8f8;font-weight:800}.postcardTypographyDisclosure>summary strong{font-size:.8rem}.postcardTypographySummary{margin-left:auto;color:#786d82;font-size:.73rem}.postcardTypographyChevron{transition:transform .18s ease}.postcardTypographyDisclosure[open] .postcardTypographyChevron{transform:rotate(180deg)}.postcardTypographyBody{display:grid;gap:8px;padding:4px 12px 12px;border-top:1px solid rgba(99,76,159,.1)}.postcardTypographyBody label{margin:7px 0 0;font-size:.78rem}.formCard .postcardTypographyBody select{width:100%;border:1px solid var(--line);border-radius:11px;padding:10px 12px;background:#fff;color:var(--ink);font:500 .86rem "Plus Jakarta Sans",sans-serif}.postcardMessageSizeLabel{display:flex;justify-content:space-between;align-items:center;gap:8px}.postcardMessageSizeLabel output{color:var(--purple);font-variant-numeric:tabular-nums}.formCard .postcardTypographyBody input[type="range"]{padding:3px 0;accent-color:var(--purple)}.postcardTypographyHint{margin:0;color:#766b70;font-size:.72rem;line-height:1.4}
.postcardFontPicker{position:relative;z-index:8}.postcardFontPickerTrigger{width:100%;min-height:42px;display:flex;align-items:center;gap:10px;padding:8px 11px;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--ink);text-align:left;cursor:pointer}.postcardFontPickerTrigger>span:nth-child(2){flex:1;font:500 .86rem "Plus Jakarta Sans",sans-serif}.postcardFontPickerTrigger>span:last-child{color:var(--purple)}.postcardFontSample{font-size:1.1rem;line-height:1.1}.postcardFontPickerMenu{position:absolute;top:calc(100% + 5px);left:0;right:0;max-height:270px;overflow:auto;padding:6px;border:1px solid var(--line);border-radius:12px;background:#fff;box-shadow:0 14px 32px rgba(38,24,34,.18)}.postcardFontGroup{padding:8px 8px 4px;color:#786d82;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.postcardFontOption{width:100%;display:flex;align-items:center;gap:12px;padding:8px;border:0;border-radius:8px;background:#fff;color:var(--ink);text-align:left;cursor:pointer}.postcardFontOption:hover,.postcardFontOption:focus-visible{outline:none;background:#f3eefb}.postcardFontOption[aria-selected="true"]{background:#eee8f8;color:#503b7f}.postcardFontOption .postcardFontSample{min-width:86px;font-size:1.15rem}.postcardFontPickerTrigger:focus-visible{outline:3px solid rgba(99,76,159,.3);outline-offset:2px}.postcardFontPickerMenu[hidden]{display:none}
[data-message-count]{font-size:.75rem;line-height:1.4;color:#766b70}

/* Postcard delivery address follows the greeting-card delivery panel theme. */
.postcardDeliveryAddress{margin-top:20px;padding:16px 18px 14px;border:1px solid rgba(99,76,159,.14);border-radius:20px;background:linear-gradient(145deg,rgba(250,248,255,.98),rgba(244,241,250,.96));box-shadow:0 8px 24px rgba(38,24,34,.045)}
.postcardDeliveryHead{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;padding-bottom:12px;border-bottom:1px solid rgba(99,76,159,.14)}
.postcardDeliveryHead .eyebrow{margin:0 0 3px;color:var(--purple)}
.postcardDeliveryHead h3{margin:0;font:700 1.45rem/1.1 "Fraunces",serif;color:var(--ink)}
.postcardDeliveryHead>p{margin:0;color:#766b79;font-size:.75rem;text-align:right}
.postcardDeliveryAddress .postalAddressGrid{margin-top:3px}
.postcardAddressActions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid rgba(99,76,159,.14)}
.postcardMapLookup{display:inline-flex;align-items:center;gap:7px;padding:8px 0;border:0;background:transparent;color:#56378e;font:800 .86rem "Plus Jakarta Sans",sans-serif;text-decoration:underline;cursor:pointer}
.postcardClearAddress{margin-left:auto;min-height:40px;padding:8px 13px;border:1px solid #d8cedf;border-radius:11px;background:#fff;color:#5d3c98;font:700 .82rem "Plus Jakarta Sans",sans-serif;cursor:pointer}
.postcardClearAddress:hover{background:#f6f1fb}
.postcardMapModal[hidden]{display:none!important}
.postcardMapModal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:18px}
.postcardMapBackdrop{position:absolute;inset:0;background:rgba(24,16,34,.42);backdrop-filter:blur(6px)}
.postcardMapDialog{position:relative;display:grid;gap:12px;width:min(94vw,900px);max-height:90vh;overflow:auto;padding:20px;border:1px solid rgba(99,76,159,.18);border-radius:22px;background:#fff;box-shadow:0 24px 70px rgba(24,16,34,.24)}
.postcardMapHead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.postcardMapHead .eyebrow{margin:0 0 3px;color:var(--purple)}
.postcardMapHead h2{margin:0;font:700 1.5rem "Fraunces",serif}
.postcardMapClose{width:38px;height:38px;border:1px solid var(--line);border-radius:11px;background:#fff;font-size:1.3rem;cursor:pointer}
.postcardMapHelp{margin:0;color:#766b70;font-size:.84rem;line-height:1.5}
.postcardMapCanvas{height:min(54vh,480px);min-height:280px;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#f7f4fa}
.postcardMapFoot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.postcardMapStatus{flex:1 1 240px;margin:0;color:#5f5366;font-size:.8rem;line-height:1.45}
.postcardMapActions{display:flex;gap:8px;flex-wrap:wrap}
.postcardMapActions button{min-height:40px;padding:8px 12px;border:1px solid #d8cedf;border-radius:10px;background:#fff;color:#503b7f;font:700 .8rem "Plus Jakarta Sans",sans-serif;cursor:pointer}
.postcardMapActions button:last-child{border-color:var(--purple);background:var(--purple);color:#fff}
.postcardDeliveryAddress input:focus{box-shadow:inset 0 0 0 2px rgba(99,76,159,.24)}
.postcardDeliveryAddress .postalAddressGrid input{box-sizing:border-box;height:42px;min-height:42px;padding:10px 12px;line-height:1.2}
@media(max-width:480px){.postcardDeliveryAddress{padding:14px}.postcardDeliveryHead{align-items:flex-start}.postcardDeliveryHead h3{font-size:1.25rem}.postcardDeliveryHead>p{max-width:100px}.postcardAddressActions{align-items:flex-start}.postcardMapLookup{font-size:.8rem}.postcardMapDialog{padding:15px}.postcardMapCanvas{height:54vh;min-height:250px}}
