/* Visual identity layer: shared 8/16/24/40 rhythm, distinct physical objects. */
.greet-premium{--object-line:color-mix(in srgb,var(--ink) 16%,transparent);--object-shadow:0 2px 3px #00000005,0 14px 32px #0000000d}
.greet-premium .greet-header{padding:10px 24px;min-height:64px;letter-spacing:.02em}
.greet-premium .greet-header button{border-color:var(--section-line)}
.greet-premium .greet-hero{padding:16px 24px 24px}
.greet-premium .greet-hero:before{display:none}
.greet-premium h2{line-height:1.18;margin-bottom:24px}
.greet-premium .greet-note,.greet-premium .greet-reasons,.greet-premium .greet-memories,.greet-premium .greet-cake,.greet-premium .greet-facts,.greet-premium .greet-surprise{max-width:700px;padding:40px 24px}
.greet-premium .greet-note{margin:0 24px;padding:28px 24px;background:var(--paper);box-shadow:var(--object-shadow)}
.greet-premium .greet-note:before{display:none}
.greet-premium .greet-message{font-size:17px;line-height:1.75}
.greet-premium .greet-signature{margin-top:20px;font-size:34px}
.greet-premium .greet-age{font:16px/1.4 Outfit,sans-serif;letter-spacing:.1em;margin-top:16px}
.greet-premium .greet-age span{font-size:inherit}
.greet-premium .greet-subtitle,.greet-premium .greet-hero-from{font-size:14px}
.greet-premium .greet-art-touch{border-radius:16px;perspective:900px}
.greet-hearts .greet-final h1{font-size:clamp(34px,10vw,44px);letter-spacing:-.045em}
.greet-hearts .greet-name{font-size:1.55em;margin-top:6px}
.greet-hearts .greet-hero-from{font:22px/1.4 Caveat,serif;margin-bottom:12px}
.greet-hearts .greet-age{font-family:GreetingSerif,Georgia,serif;margin-top:12px}
.greet-hearts .greet-art{height:260px;margin:8px 0}
.greet-heart-sculpture{display:block;position:relative;width:100%;height:100%;perspective:900px}
.greet-glass-heart{width:100%;height:100%;object-fit:contain;position:relative;z-index:1;filter:drop-shadow(0 16px 12px #630a2518);transform-origin:50% 65%}
.greet-heart-orbit{position:absolute;left:1%;top:27%;width:98%;height:47%;border:1px solid color-mix(in srgb,var(--heading-color) 38%,transparent);border-radius:50%;transform:rotate(-24deg);pointer-events:none}
.greet-glint{position:absolute;width:18px;height:28px;background:var(--heading-color);clip-path:polygon(50% 0,61% 37%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 37%);opacity:.55;pointer-events:none}
.greet-glint-one{left:7%;bottom:17%}.greet-glint-two{right:8%;top:15%;width:12px;height:22px}
.greet-hearts .greet-note{border:0;box-shadow:none;padding:24px 0 32px}
.greet-hearts .greet-message{font:19px/1.7 GreetingSerif,Georgia,serif}
.greet-cool .greet-final{text-align:center}
.greet-cool .greet-final h1{font-size:clamp(28px,8vw,36px);letter-spacing:.005em}
.greet-cool .greet-name{font-size:1.9em;letter-spacing:-.055em;margin-bottom:12px}
.greet-cool .greet-title{font-size:.65em;letter-spacing:.075em;line-height:1.5}
.greet-cool .greet-art{height:285px;margin:24px 0 12px}
.greet-cool .greet-art:before{display:none}
.greet-cool .greet-art:after{content:'';position:absolute;inset:12% 0 6%;border-bottom:1px solid color-mix(in srgb,var(--heading-color) 45%,transparent);border-radius:50%;transform:rotate(-16deg);pointer-events:none;opacity:0}
.greet-cool[data-phase=complete] .greet-art:after{animation:cool-light 1.5s ease-out .35s both}
@keyframes cool-light{0%{opacity:0;clip-path:inset(0 100% 0 0)}40%{opacity:1}100%{opacity:.28;clip-path:inset(0)}}
.greet-cool .greet-note{border:0;border-top:1px solid var(--section-line);box-shadow:none;padding:28px 0}
.greet-cool .greet-note h2{font:30px/1.3 GreetingSerif,Georgia,serif;color:var(--ink)}
.greet-premium .greet-reason-list{gap:12px}
.greet-premium .greet-reason{border:1px solid var(--section-line);border-radius:12px;box-shadow:none;overflow:clip;background:var(--paper)}
.greet-premium .greet-reason:before,.greet-premium .greet-reason:after{display:none}
.greet-premium .greet-reason summary{grid-template-columns:28px minmax(0,1fr) 24px;min-height:88px;padding:20px;gap:12px;font-size:21px}
.greet-premium .greet-reason-number{font:15px/1.4 Outfit,sans-serif}
.greet-premium .greet-reason-mark{font-size:0;position:relative;width:22px;height:22px;transform:none}
.greet-premium .greet-reason[open] .greet-reason-mark{transform:none}
.greet-reason-mark:before,.greet-reason-mark:after{content:'';position:absolute;top:10px;left:3px;right:3px;height:1px;background:currentColor;transition:transform .3s var(--object-ease)}
.greet-reason-mark:after{transform:rotate(90deg)}
.greet-reason[open] .greet-reason-mark:after,.greet-reason[data-expanded=true] .greet-reason-mark:after{transform:rotate(0deg)}
.greet-reason[data-expanded=false] .greet-reason-mark:after{transform:rotate(90deg)}
.greet-premium .greet-reason-message{padding:0 22px 24px 60px}
.greet-premium .greet-reason-message p{line-height:1.7}
.greet-premium .greet-reason[open] .greet-reason-message{animation:none}
.greet-modern .greet-reason{border:0;border-left:3px solid var(--heading-color);border-radius:0;box-shadow:var(--object-shadow)}
.greet-hearts .greet-reason-list{gap:0;border-top:1px solid var(--section-line)}
.greet-hearts .greet-reason{border:0;border-bottom:1px solid var(--section-line);border-radius:0;box-shadow:none}
.greet-hearts .greet-reason summary{padding:22px 0;font:24px/1.3 GreetingSerif,Georgia,serif;grid-template-columns:30px minmax(0,1fr) 22px}
.greet-hearts .greet-reason-number{font:23px/1.3 GreetingSerif,Georgia,serif}
.greet-hearts .greet-reason-message{padding:0 28px 28px 42px}
.greet-hearts .greet-reason-message p{font:18px/1.7 GreetingSerif,Georgia,serif}
.greet-cool .greet-reason{border-radius:4px;border-width:1px 0;box-shadow:inset 0 1px 0 #ffffff0b}
.greet-premium .greet-photo{box-shadow:var(--object-shadow);border:1px solid var(--object-line);border-radius:8px;background:var(--paper);color:var(--ink)}
.greet-modern .greet-photo{border:0;border-bottom:3px solid var(--heading-color);border-radius:2px}
.greet-hearts .greet-photo{padding:12px 12px 18px;border-radius:2px}
.greet-cool .greet-photo{padding:6px;border-radius:4px;box-shadow:0 12px 25px #0003}
.greet-premium .greet-scratch{border-radius:12px;box-shadow:var(--object-shadow)}
.greet-premium .greet-fact{padding:28px 0}
.greet-premium .greet-fact-number{font-size:clamp(58px,18vw,90px)}
.greet-story-ribbon{opacity:.2;width:44px;left:-30px}.greet-story-ribbon path{stroke-width:6}
.greet-hearts .greet-story-ribbon,.greet-cool .greet-story-ribbon{display:none}
.greet-confetti .greet-note{border-top:0;background:var(--paper);margin:0 22px;padding:28px 20px;border-radius:22px 6px 22px 6px;box-shadow:0 8px 28px #0000000e;position:relative}
.greet-confetti .greet-note:before{content:'';position:absolute;top:0;left:22px;width:48px;height:4px;background:var(--heading-color);border-radius:3px}
.greet-classic .greet-note{margin:0 22px;padding:32px 0;border-image:linear-gradient(90deg,transparent,var(--ink),transparent) 1}
.greet-classic .greet-final h1{font-size:clamp(34px,10vw,48px)}
.greet-identity-particle{position:absolute;left:var(--x);top:var(--y);width:5px;height:5px;background:var(--c);border-radius:50%;animation:identity-burst 1.4s cubic-bezier(.12,.6,.2,1) both}
.greet-identity-particle.hearts{width:8px;height:12px;clip-path:polygon(50% 0,60% 38%,100% 50%,60% 62%,50% 100%,40% 62%,0 50%,40% 38%);border-radius:0}
.greet-identity-particle.modern{width:4px;height:15px;border-radius:0}.greet-identity-particle.cool{height:2px;width:12px;border-radius:0}
.greet-identity-particle.confetti{width:8px;height:10px;border-radius:1px}
.greet-fireworks-canvas{position:absolute;inset:0;width:100%;height:100%;display:block;pointer-events:none}
.greet-scratch canvas:focus-visible{outline:3px solid var(--ink);outline-offset:-6px}
.greet-surprise .greet-scratch,.greet-surprise .greet-scratch-help,.greet-surprise .greet-status{overflow-anchor:none}
.greet-scratch-feedback{display:none;margin-top:16px}
.is-scratch-ready .greet-scratch-feedback{display:grid}
.greet-scratch-feedback>.greet-scratch-help,.greet-scratch-feedback>.greet-status{grid-area:1/1;margin:0;font-size:14px;line-height:1.6}
@keyframes identity-burst{0%{opacity:0;transform:translate(0,0) rotate(0)}15%{opacity:.85}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--spin))}}
@media(min-width:700px){.greet-premium .greet-header{padding:16px 40px}.greet-premium .greet-hero{padding:24px 40px 40px}.greet-premium .greet-note{margin:0 auto}.greet-premium .greet-message{font-size:19px}.greet-hearts .greet-art{height:340px}}
@media(min-width:1000px){.greet-premium .greet-final{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 36px;min-height:430px;align-content:center;text-align:left}.greet-premium .greet-final .greet-art{grid-column:2;grid-row:1/8;height:380px;margin:0}.greet-premium .greet-final h1{font-size:46px}.greet-modern .greet-final>.greet-subtitle,.greet-modern .greet-final>.greet-hero-from,.greet-modern .greet-final>.greet-scroll{grid-column:1}.greet-hearts .greet-hero-from{grid-row:1}.greet-hearts .greet-final h1{grid-row:2}}
@media(prefers-reduced-motion:reduce){.greet-cool .greet-art:after{animation:none;opacity:.28}.greet-identity-particle{display:none}.greet-reason-mark:after{transition:none}}
/* Factual illustrations are selected by topic, never by source publisher. */
.greet-premium .greet-fact{min-height:175px}
.greet-premium .greet-fact-number{font-size:clamp(38px,10.5vw,72px);max-width:calc(100% - 110px);min-height:74px;display:flex;align-items:center}
.greet-fact-art{position:absolute;right:0;top:24px;width:98px;height:105px;pointer-events:none;color:var(--heading-color)}
.greet-fact-art svg{width:100%;height:100%;stroke-width:1.4}
.greet-fact:not(:has(.greet-fact-art)) .greet-fact-number{max-width:100%;min-height:0}
.greet-fact-sphere{position:absolute;width:76px;height:76px;left:10px;top:13px;border-radius:50%;background:radial-gradient(ellipse at 28% 24%,#f5c69b 0,transparent 36%),radial-gradient(ellipse at 65% 50%,#87402b 0,transparent 28%),radial-gradient(circle at 40% 32%,#d98552,#843f2d 65%,#291c1a 100%);box-shadow:inset -12px -6px 18px #0004,0 10px 16px #0000000c}
.greet-fact-art-earth .greet-fact-sphere{background:radial-gradient(ellipse at 35% 35%,#8fba92 0 18%,transparent 19%),radial-gradient(ellipse at 65% 70%,#619d88 0 16%,transparent 17%),radial-gradient(circle at 36% 25%,#9fcae2,#36739a 65%,#162c47)}
.greet-fact-art-sun .greet-fact-sphere{background:radial-gradient(circle at 35% 30%,#ffedb3,#eeb64b 55%,#c56b2d);box-shadow:0 0 28px #e9b35155}
.greet-fact-satellite{position:absolute;width:6px;height:6px;right:0;bottom:4px;border-radius:50%;background:var(--heading-color);opacity:.5}
.greet-lifetime{max-width:700px;margin:auto;padding:40px 24px;border-bottom:1px solid var(--section-line)}
.greet-lifetime-clock{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px 12px;font-variant-numeric:tabular-nums}
.greet-lifetime-unit{min-width:0}.greet-lifetime-unit:first-child{grid-column:1/-1}
.greet-lifetime-unit>span{display:block;font:500 clamp(30px,9vw,44px)/1.1 Outfit,sans-serif;letter-spacing:-.035em;color:var(--heading-color)}
.greet-lifetime-unit:first-child>span{font-size:clamp(68px,20vw,110px)}
.greet-lifetime-unit>small{display:block;font-size:13px;margin-top:8px;color:var(--ink)}
.greet-lifetime-note{font-size:12px;line-height:1.6;margin-top:24px;max-width:42ch}
.greet-hearts .greet-lifetime-unit>span{font-family:GreetingSerif,Georgia,serif;font-weight:400}
/* Image-led premium profiles. The motif never overlaps personal copy. */
.greet-motif-filter{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.greet-modern{--envelope:#e9effd;--envelope-edge:#2449ba;--envelope-ink:#14234d;--envelope-texture:url(assets/paper-blue.webp)}
.greet-modern .greet-final{display:flex;flex-direction:column;align-items:flex-start;min-height:0;padding:8px 0 0;gap:0;text-align:left}
.greet-modern .greet-final h1{font:700 clamp(32px,9.2vw,45px)/1.04 Outfit,sans-serif;letter-spacing:-.05em;margin:0;color:var(--heading-color);width:100%}
.greet-modern .greet-final .greet-title{max-width:13ch}
.greet-modern .greet-final .greet-name{font-size:1.55em;margin:8px 0 0;line-height:1.05}
.greet-modern .greet-final .greet-age{margin:16px 0 0;font:16px/1.4 Outfit,sans-serif;letter-spacing:.12em}
.greet-modern .greet-final .greet-age span{font-size:inherit}
.greet-modern .greet-final .greet-art{width:100%;height:280px;margin:8px 0 0;align-self:center;z-index:0}
.greet-modern .greet-final .greet-motif{width:100%;height:100%;max-width:100%;object-fit:contain;object-position:center;translate:0 0;pointer-events:none}
.greet-modern .greet-hero-from{font:24px/1.2 Caveat,serif;margin:8px 0 0}
.greet-modern .greet-scroll{margin-top:10px;opacity:1}
.greet-modern .greet-note{border:0;border-radius:0;padding:24px 0 16px;margin:0 24px;background:var(--paper);box-shadow:none}
.greet-modern .greet-note:before,.greet-modern .greet-note:after{display:none}
.greet-modern .greet-note h2{font:500 14px/1.5 Outfit,sans-serif;letter-spacing:.12em;text-transform:uppercase;margin-bottom:20px}
.greet-modern .greet-message{font-size:18px;line-height:1.75}
.greet-modern .greet-signature{color:var(--heading-color)}
.greet-modern .greet-story-ribbon{display:none}
.greet-modern .greet-reason{border:0;border-top:1px solid var(--section-line);border-radius:0;box-shadow:none}
.greet-modern .greet-photo{padding:10px 10px 16px;border:0;background:var(--heading-color);color:var(--paper);border-radius:2px;box-shadow:0 10px 20px #14234d18}
.greet-modern .greet-photo figcaption{font:24px/1.3 Caveat,serif;margin:14px 4px 0}
.greet-modern .greet-photo img{border-radius:0}
.greet-modern .greet-cake{border:0;background:color-mix(in srgb,var(--heading-color) 4%,var(--paper));border-radius:0}
.greet-modern .greet-fact{border:0;border-bottom:1px solid var(--section-line);padding:28px 0}
.greet-hearts .greet-final .greet-art{height:255px;margin:4px 0}
.greet-hearts .greet-glass-heart{filter:drop-shadow(0 14px 12px #630a2510)}
.greet-hearts .greet-heart-orbit,.greet-hearts .greet-glint{display:none}
.greet-hearts .greet-note{padding:24px 0;text-align:left}
.greet-hearts .greet-note h2{font-size:28px}
.greet-hearts .greet-photo{border:0;padding:12px 12px 20px;background:var(--paper);box-shadow:0 3px 4px #50203009,0 14px 28px #50203013;rotate:-1deg}
.greet-hearts .greet-photo:nth-child(even){rotate:1.5deg}
.greet-hearts .greet-signature{color:var(--heading-color)}
.greet-hearts .greet-cake{border:0;background:color-mix(in srgb,var(--heading-color) 3%,var(--paper));border-radius:48% 48% 0 0 / 12% 12% 0 0}
.greet-cool{--envelope:#3b352a;--envelope-edge:#1c1d1c;--envelope-ink:#fff4dc;--envelope-texture:url(assets/walnut-texture.webp)}
.greet-cool .greet-hero{padding-inline:24px}
.greet-cool[data-phase=sealed] .greet-hero,.greet-cool[data-phase=opening] .greet-hero{border:0}
.greet-cool .greet-final h1{font:700 clamp(30px,9vw,42px)/1.1 Outfit,sans-serif;letter-spacing:-.035em;text-transform:uppercase}
.greet-cool .greet-final .greet-name{font-size:1.8em;letter-spacing:-.055em;color:var(--heading-color);margin:4px 0 12px}
.greet-cool .greet-final .greet-title{font-size:.7em;line-height:1.4;letter-spacing:.06em;color:var(--ink)}
.greet-cool .greet-final .greet-art{height:270px;margin:22px 0 6px}
.greet-cool .greet-art:after{display:none}
.greet-cool .greet-note{border:0;padding:24px 0 24px 18px;position:relative;background:var(--paper)}
.greet-cool .greet-note:before{display:block;content:'';position:absolute;inset:24px auto 24px 0;width:5px;background:url(assets/walnut-texture.webp) center/cover}
.greet-cool .greet-note h2{font:700 26px/1.2 Outfit,sans-serif;color:var(--heading-color)}
.greet-cool .greet-photo{border:0;padding:10px 10px 16px;border-radius:2px;background:linear-gradient(#0002,#0002),url(assets/walnut-texture.webp) center/cover;color:#fff;box-shadow:0 14px 24px #0004}
.greet-cool .greet-photo figcaption{background:#1c1d1c;color:#fff;padding:10px;margin:0;font-size:15px}
.greet-cool .greet-photo img{border-radius:0}
.greet-cool .greet-envelope-object .greet-letter-paper{background:#eee6d4 url(assets/paper.webp) center/cover;color:#292316;border-color:#c9b287}
.greet-cool .greet-envelope-pocket:before,.greet-cool .greet-envelope-flap>span:after{opacity:.28}
.greet-cool .greet-cake{border:0;background:color-mix(in srgb,var(--heading-color) 4%,var(--paper))}
.greet-cool .greet-reason{border:0;border-bottom:1px solid var(--section-line);border-radius:0}
.greet-cool .greet-art-touch{border-radius:2px;padding:20px}
.greet-workshop-frame{position:absolute;inset:0;background:linear-gradient(#0002,#0002),url(assets/walnut-texture.webp) center/cover;border:1px solid #584532;border-radius:3px;box-shadow:inset 0 1px 1px #ffffff30,0 14px 20px #0003;pointer-events:none}
.greet-workshop-frame i{position:absolute;width:36px;height:36px;left:-1px;top:-1px;border:8px solid #333633;border-width:8px 0 0 8px;border-radius:3px 0 0;filter:drop-shadow(0 2px 2px #0008)}
.greet-workshop-frame i:before{content:'';position:absolute;left:-6px;top:-6px;width:11px;height:11px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#adb0a3,#4b504d 70%);box-shadow:0 1px 1px #000,inset 0 1px 1px #d9d9ce}
.greet-workshop-frame i:after{content:'';position:absolute;left:-3px;top:-1px;width:5px;height:1px;background:#202421;rotate:-30deg}
.greet-workshop-frame i:nth-child(2){left:auto;right:-1px;rotate:90deg}
.greet-workshop-frame i:nth-child(3){top:auto;bottom:-1px;rotate:-90deg}
.greet-workshop-frame i:nth-child(4){top:auto;left:auto;right:-1px;bottom:-1px;rotate:180deg}
.greet-cool .greet-envelope-pocket{border-radius:3px}
.greet-cool .greet-envelope-back{border-radius:3px;box-shadow:0 1px 0 #b6a98b66 inset,0 10px 18px #0004}
.greet-cool .greet-open-hint,.greet-cool .greet-signature{font-family:Outfit,sans-serif}
.greet-cool .greet-signature{font-size:21px;font-weight:700;letter-spacing:.02em}
.greet-cool .greet-photo:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(#333633,#333633) 0 0/24px 6px no-repeat,linear-gradient(#333633,#333633) 0 0/6px 24px no-repeat,linear-gradient(#333633,#333633) 100% 100%/24px 6px no-repeat,linear-gradient(#333633,#333633) 100% 100%/6px 24px no-repeat}
.greet-cool .greet-scratch{border-radius:2px;border:5px solid #4a3d2d;background:var(--paper);border-image:url(assets/walnut-texture.webp) 30 stretch}
.greet-material-scene{width:100%;max-width:700px;margin:12px auto 0;overflow:hidden;aspect-ratio:2/1;pointer-events:none;position:relative}
.greet-material-scene img{display:block;width:100%;height:100%;object-fit:cover}
.greet-material-scene:after{content:'';position:absolute;inset:0;box-shadow:inset 0 14px 18px -14px var(--paper),inset 0 -14px 18px -14px var(--paper);pointer-events:none}
@media(min-width:700px){.greet-modern .greet-note{margin-inline:auto;padding:32px 24px}.greet-modern .greet-final .greet-art{height:330px}.greet-cool .greet-hero{padding-inline:30px}.greet-material-scene{margin-top:24px}.greet-hearts .greet-final .greet-art{height:330px}}
@media(min-width:1000px){.greet-modern .greet-final{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:center;align-items:center;min-height:430px;column-gap:32px}.greet-modern .greet-final .greet-art{grid-column:2;grid-row:1/8;height:390px}.greet-modern .greet-final h1{font-size:46px}.greet-modern .greet-final .greet-name{font-size:1.55em}.greet-cool .greet-final .greet-art{height:360px;margin:0}.greet-cool .greet-final .greet-name{font-size:1.8em}}
@media(min-width:700px){.greet-lifetime{padding-block:56px}.greet-fact-art{width:120px;height:120px}.greet-premium .greet-fact-number{max-width:calc(100% - 150px);min-height:100px}.greet-fact-sphere{width:96px;height:96px}.greet-lifetime-clock{grid-template-columns:2fr 1fr 1fr 1fr;align-items:end}.greet-lifetime-unit:first-child{grid-column:auto}.greet-lifetime-unit:first-child>span{font-size:80px}}
