@font-face {
  font-family:Playfair;
  src:url('/fonts/PlayfairDisplay-Regular.ttf') format('truetype');
  font-display:swap}
@font-face {
  font-family:Dancing;
  src:url('/fonts/DancingScript-Regular.ttf') format('truetype');
  font-display:swap}

:root {
  --paper:#fcf9f5;
  --ink:#203142;
  --muted:#68717d;
  --line:#ded9e0;
  --accent:#605785;
  --white:#fffcfa;
  --serif:Playfair,Georgia,serif}
* {
  box-sizing:border-box}
html {
  scroll-behavior:smooth;
  scroll-padding-top:35px}
body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font:16px/1.65 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  -webkit-font-smoothing:antialiased}
a {
  color:inherit;
  text-underline-offset:4px}
button,input,textarea {
  font:inherit}
button,a {
  -webkit-tap-highlight-color:transparent}
button {
  cursor:pointer}
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible {
  outline:3px solid #8775b5;
  outline-offset:5px}
::selection {
  background:#d2c5dc}
.shell {
  width:min(1240px,calc(100% - 112px));
  margin-inline:auto}
.skip {
  position:fixed;
  top:-100px;
  left:20px;
  z-index:20;
  padding:12px;
  background:var(--white)}
.skip:focus {
  top:10px}
.site-header {
  display:flex;
  align-items:center;
  justify-content:space-between;
  height:112px;
  border-bottom:1px solid var(--line)}
.brand {
  display:flex;
  align-items:center;
  gap:12px;
  text-decoration:none;
  font-family:var(--serif);
  font-size:27px;
  letter-spacing:-1px}
.brand-mark {
  display:flex;
  align-items:center;
  justify-content:center;
  width:36px;
  height:42px;
  border:1px solid var(--ink);
  border-radius:3px 12px 3px 3px;
  font-size:25px;
  letter-spacing:-7px;
  padding-right:7px;
  transform:rotate(-7deg)}
.brand-mark span {
  font-size:20px;
  transform:translateY(3px)}
.brand-dot {
  align-self:flex-start;
  font:14px/1.8 Georgia;
  margin-left:-8px;
  color:var(--accent)}
.site-header nav {
  display:flex;
  gap:34px;
  font-size:13px}
.site-header nav a {
  text-decoration:none}
.site-header nav a:hover,.site-header nav a[aria-current] {
  text-decoration:underline;
  text-underline-offset:7px}
.eyebrow {
  font-size:10px;
  letter-spacing:2px;
  font-weight:650;
  line-height:1.6;
  text-transform:uppercase;
  margin:0 0 23px}
.hero {
  display:grid;
  grid-template-columns:1.05fr 1fr;
  align-items:center;
  min-height:680px;
  padding-block:70px 85px;
  gap:25px}
.little-line {
  width:23px;
  height:1px;
  background:var(--accent);
  display:inline-block;
  vertical-align:middle;
  margin-right:10px}
h1,h2,h3,p {
  margin-top:0}
h1,h2 {
  font-family:var(--serif);
  font-weight:400;
  letter-spacing:-2.6px;
  line-height:1.12}
h1 {
  font-size:clamp(58px,5.65vw,82px);
  margin-bottom:28px}
h1 em,h2 em {
  font-weight:400;
  color:var(--accent)}
h2 {
  font-size:clamp(38px,3.6vw,52px);
  margin-bottom:24px;
  letter-spacing:-1.5px}
h3 {
  font-weight:500}
.intro {
  font-size:17px;
  color:var(--muted);
  line-height:1.8;
  margin-bottom:30px}
.button {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:30px;
  min-height:54px;
  padding:15px 24px;
  border:1px solid var(--ink);
  background:var(--ink);
  color:var(--white);
  font-size:13px;
  line-height:1.5;
  text-decoration:none;
  border-radius:3px;
  transition:background .2s,transform .2s}
.button:hover {
  background:#182b3c;
  transform:translateY(-2px)}
.button span {
  font-size:19px}
.button:disabled {
  opacity:.65;
  cursor:wait;
  transform:none}
.micro {
  font-size:11px;
  color:var(--muted);
  margin:18px 0 0}
.micro span {
  margin:0 9px}
.hero-gallery {
  position:relative;
  height:460px;
  isolation:isolate}
.art {
  position:relative;
  aspect-ratio:5/7;
  overflow:hidden;
  background:#203447;
  border-radius:6px}
.art img,.art video {
  display:block;
  width:100%;
  height:100%;
  object-fit:cover}
.card-words {
  position:absolute;
  inset:0 0 auto;
  padding:5% 5% 8%;
  text-align:center;
  color:#fff7e6;
  background:linear-gradient(#0006,transparent);
  pointer-events:none}
.card-words>span {
  display:block;
  text-transform:uppercase;
  font-size:9px;
  letter-spacing:2px;
  line-height:1.4}
.card-words>p {
  font:37px/1.15 Dancing,cursive;
  margin:5px 0 0}
.light-art .card-words {
  color:#493b27;
  background:linear-gradient(#f9f5e755,transparent)}
.hero-gallery .art {
  position:absolute;
  box-shadow:0 25px 45px -20px #232a3160;
  border:5px solid var(--white);
  width:54%;
  top:50%;
  left:50%;
  transform:translate(-50%,-50%)}
.hero-gallery .hero-left {
  width:43%;
  transform:translate(-110%,-48%) rotate(-13deg);
  z-index:0}
.hero-gallery .hero-right {
  width:43%;
  transform:translate(7%,-44%) rotate(13deg);
  z-index:0}
.hero-gallery .hero-center {
  transform:translate(-50%,-54%) rotate(-3deg);
  z-index:1}
.hero-center .card-words>p {
  font-size:39px;
  color:#805317}
.hero-left .card-words>p,.hero-right .card-words>p {
  font-size:27px}
.hero-left .card-words>span,.hero-right .card-words>span {
  font-size:7px}
.hand-note {
  position:absolute;
  bottom:-22px;
  left:15%;
  width:80%;
  font:24px Dancing,cursive;
  color:var(--accent);
  text-align:center;
  transform:rotate(-5deg)}
.promise-strip {
  border-block:1px solid var(--line);
  background:#f6f2f5}
.promise-strip .shell {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  padding-block:22px;
  font-size:12px;
  color:var(--muted)}
.promise-strip span:first-child {
  font-size:9px;
  letter-spacing:1.8px;
  color:var(--ink)}
.promise-strip span:last-child {
  font-family:var(--serif);
  font-style:italic;
  font-size:17px}
.section {
  padding-block:100px}
.section-heading {
  display:flex;
  justify-content:space-between;
  align-items:flex-end;
  gap:40px;
  margin-bottom:44px}
.section-heading h2 {
  margin:0}
.section-heading>p {
  font-size:14px;
  color:var(--muted);
  margin:0 0 3px}
.collection-grid {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:44px 32px}
.collection-card .art {
  box-shadow:0 13px 25px -20px #273c3a80;
  transition:transform .35s}
.collection-card:hover .art {
  transform:translateY(-5px)}
.collection-card .card-words>p {
  font-size:clamp(26px,3.1vw,44px)}
.collection-card .card-words>span {
  font-size:10px}
.card-caption {
  padding-top:19px}
.card-caption h3 {
  font:23px/1.3 var(--serif);
  margin:0 0 4px;
  letter-spacing:-.4px}
.card-caption p {
  font-size:12px;
  color:var(--muted);
  margin:0}
.gallery-bottom {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  margin-top:34px}
.gallery-bottom>p {
  font-size:11px;
  color:var(--muted);
  margin:0}
.text-button {
  color:var(--ink);
  border:0;
  background:transparent;
  font-size:12px;
  text-decoration:underline;
  text-underline-offset:4px;
  padding:8px 0;
  white-space:nowrap}
.text-button span {
  margin-left:15px}
.how-section {
  background:#f6efeb;
  padding:88px 0}
.how-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:100px}
.text-link {
  font-size:12px}
.steps {
  padding:0;
  margin:0;
  list-style:none}
.steps li {
  display:flex;
  gap:25px;
  padding:24px 0;
  border-bottom:1px solid #ded9e0}
.steps li:first-child {
  padding-top:0}
.steps li>span {
  font:14px var(--serif);
  padding-top:6px;
  color:var(--accent)}
.steps h3 {
  font:26px var(--serif);
  margin:0 0 10px}
.steps p {
  font-size:14px;
  line-height:1.75;
  color:#68717d;
  margin:0}
.personal-section {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:110px;
  align-items:center;
  padding-block:120px}
.letter-card {
  width:85%;
  max-width:380px;
  margin:auto;
  padding:40px;
  background:repeating-linear-gradient(0deg,#f1e5d9,#f1e5d9 3px,#f0e4d8 4px);
  border:1px solid #ded9e0;
  box-shadow:15px 20px 0 #f2ecef;
  transform:rotate(-5deg);
  text-align:center}
.letter-card .eyebrow {
  font-size:8px;
  letter-spacing:2.3px}
.letter-card>p {
  font:36px/1.2 Dancing,cursive;
  margin-block:25px;
  color:#605785}
.letter-signature {
  font:20px Dancing,cursive;
  color:#605785}
.fine {
  font-size:11px;
  color:var(--muted)}
.closing {
  padding:88px 0;
  text-align:center;
  background:#203447;
  color:#fcf9f5}
.closing .eyebrow {
  color:#d2c5dc}
.closing h2 {
  font-size:clamp(45px,4.9vw,68px)}
.closing h2 em {
  color:#eba08d}
.closing p {
  font-size:14px;
  color:#eee8eb}
.light-button {
  background:#fffcfa;
  color:var(--ink);
  border-color:#fffcfa;
  margin-top:10px}
.light-button:hover {
  background:white}
.privacy-promise {
  font-size:11px;
  color:#ded9e0;
  margin-top:30px;
  line-height:2}
.site-footer {
  display:flex;
  align-items:center;
  gap:28px;
  min-height:130px;
  padding-block:30px}
.site-footer .brand {
  font-size:23px}
.site-footer p {
  font:italic 14px var(--serif);
  color:var(--muted);
  margin:0}
.site-footer nav {
  display:flex;
  gap:22px;
  font-size:11px;
  margin-left:auto}
.site-footer small {
  font-size:10px;
  color:var(--muted)}
.page-intro {
  padding:70px 0 50px}
.page-intro h1 {
  font-size:clamp(48px,5vw,70px)}
.page-intro .intro {
  margin-bottom:15px}
.support-layout {
  display:grid;
  grid-template-columns:1fr 2fr;
  gap:80px;
  padding-bottom:70px}
.support-layout aside {
  padding-top:25px}
.support-layout aside p {
  font:23px/1.7 var(--serif)}
.faq-list {
  border-top:1px solid var(--line)}
details {
  border-bottom:1px solid var(--line)}
summary {
  list-style:none;
  display:flex;
  justify-content:space-between;
  gap:15px;
  cursor:pointer;
  padding:24px 0;
  font:21px/1.4 var(--serif)}
summary::-webkit-details-marker {
  display:none}
summary span {
  font:23px Georgia;
  color:var(--accent)}
details[open] summary span {
  transform:rotate(45deg)}
details>p {
  color:var(--muted);
  font-size:15px;
  padding-right:30px;
  margin:0 0 28px}
.contact-band {
  border-top:1px solid var(--line);
  padding:40px 0 70px;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:25px}
.contact-band h2 {
  font-size:36px;
  margin:0}
.feedback-layout {
  display:grid;
  grid-template-columns:1fr 1.3fr;
  gap:100px;
  padding-bottom:100px}
.feedback-layout aside {
  padding-top:10px}
.feedback-layout aside h2 {
  font-size:35px;
  line-height:1.3}
.feedback-layout aside p {
  max-width:330px;
  font-size:14px;
  color:var(--muted)}
.note-icon {
  display:flex;
  align-items:center;
  justify-content:center;
  width:66px;
  height:66px;
  background:#f0eaf7;
  border-radius:50%;
  font:35px Georgia;
  margin-bottom:30px}
form {
  background:var(--white);
  padding:36px;
  border:1px solid var(--line);
  border-radius:5px}
label {
  display:block;
  font-size:13px;
  margin:0 0 10px;
  font-weight:600}
label span {
  font-weight:400;
  color:var(--muted)}
textarea,input {
  width:100%;
  border:1px solid #ded9e0;
  border-radius:3px;
  background:#fffcfa;
  color:var(--ink);
  padding:13px;
  font-size:16px}
textarea {
  min-height:175px;
  resize:vertical}
.field-hint {
  font-size:11px;
  color:var(--muted);
  margin:7px 0 24px}
.form-privacy {
  font-size:11px;
  color:var(--muted);
  margin-block:23px}
.hp {
  position:absolute;
  left:-9999px;
  width:1px;
  height:1px;
  overflow:hidden}
#form-status:empty {
  margin:0}
#form-status {
  font-size:14px;
  margin:20px 0 0}
.error {
  color:#a43b28}
.success {
  color:#47745e}
.privacy-summary {
  display:grid;
  grid-template-columns:repeat(3,1fr);
  gap:30px;
  padding:28px 0;
  border-block:1px solid var(--line);
  margin:0 0 60px}
.privacy-summary p {
  margin:0}
.privacy-summary strong {
  display:block;
  font:20px var(--serif);
  margin-bottom:8px}
.privacy-summary span {
  font-size:12px;
  color:var(--muted)}
.policy-layout {
  display:grid;
  grid-template-columns:1fr 2.3fr;
  gap:65px;
  padding-bottom:80px}
.policy-layout nav {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:16px;
  align-self:start;
  position:sticky;
  top:30px;
  font-size:12px}
.policy-layout nav a {
  text-decoration:none}
.policy-layout nav a:hover {
  text-decoration:underline}
.policy section {
  padding-bottom:28px;
  margin-bottom:28px;
  border-bottom:1px solid var(--line)}
.policy h2 {
  font-size:29px;
  line-height:1.4;
  letter-spacing:-.6px}
.policy p {
  font-size:15px;
  color:#68717d;
  line-height:1.85}
.policy p:last-child {
  margin:0}

@media(min-width:1500px) {
  .hero-gallery {
  height:520px}
}

@media(max-width:1050px) {
  .shell {
  width:calc(100% - 64px)}
.hero {
  min-height:620px;
  gap:10px}
.hero-gallery {
  height:370px}
.hero h1 {
  font-size:60px}
.hero .intro {
  font-size:15px}
.hero-gallery .card-words>p {
  font-size:28px}
.hero-gallery .card-words>span {
  font-size:6px}
.hand-note {
  font-size:21px;
  bottom:0}
.how-grid {
  gap:50px}
.personal-section {
  gap:60px}
.site-footer {
  flex-wrap:wrap;
  gap:20px}
.site-footer small {
  width:100%}
.feedback-layout {
  gap:45px}
.support-layout {
  gap:45px}
.collection-card .card-words>span {
  font-size:8px}
}

@media(max-width:720px) {
  .shell {
  width:calc(100% - 40px)}
.site-header {
  height:87px}
.brand {
  font-size:23px;
  gap:9px}
.brand-mark {
  width:29px;
  height:35px;
  font-size:22px}
.brand-dot {
  font-size:11px}
.site-header nav {
  gap:15px;
  font-size:11px}
.site-header nav a:first-child {
  display:none}
.hero {
  grid-template-columns:1fr;
  padding:48px 0 50px;
  gap:15px;
  min-height:0}
.hero-copy {
  text-align:center}
.hero .eyebrow {
  font-size:8px;
  letter-spacing:1.5px;
  margin-bottom:21px}
.hero h1 {
  font-size:clamp(48px,11vw,72px);
  letter-spacing:-2px;
  line-height:1.08}
.hero .intro {
  font-size:15px;
  max-width:340px;
  margin-inline:auto}
.hero-gallery {
  width:90%;
  max-width:420px;
  height:auto;
  aspect-ratio:1.1;
  margin:30px auto 0}
.hero-gallery .art {
  width:52%}
.hero-gallery .hero-left,.hero-gallery .hero-right {
  width:42%}
.hero-gallery .card-words>p {
  font-size:27px}
.hero-gallery .hero-left .card-words>p,.hero-gallery .hero-right .card-words>p {
  font-size:21px}
.hand-note {
  bottom:-7px;
  font-size:22px}
.promise-strip .shell {
  flex-wrap:wrap;
  justify-content:center;
  gap:8px 25px;
  padding-block:18px;
  font-size:11px}
.promise-strip span:first-child {
  width:100%;
  text-align:center;
  font-size:8px}
.promise-strip span:last-child {
  display:none}
.section {
  padding-block:65px}
.section-heading {
  display:block;
  margin-bottom:28px}
.section-heading h2 {
  font-size:37px;
  letter-spacing:-1.3px}
.section-heading>p {
  font-size:13px;
  margin-top:23px}
.section-heading>p br {
  display:none}
.collection-grid {
  grid-template-columns:repeat(2,1fr);
  gap:27px 16px}
.collection-card .card-words>p {
  font-size:24px}
.collection-card .card-words>span {
  font-size:6px;
  letter-spacing:1px}
.card-caption {
  padding-top:13px}
.card-caption h3 {
  font-size:19px}
.card-caption p {
  font-size:10px;
  line-height:1.5}
.gallery-bottom {
  align-items:flex-start}
.gallery-bottom p {
  max-width:220px;
  font-size:10px}
.text-button {
  font-size:10px;
  padding-top:0}
.text-button span {
  margin-left:4px}
.how-section {
  padding:58px 0}
.how-grid {
  grid-template-columns:1fr;
  gap:35px}
.how-grid h2 {
  font-size:40px}
.steps li {
  gap:20px}
.personal-section {
  grid-template-columns:1fr;
  gap:60px;
  padding-block:70px}
.letter-card {
  max-width:310px;
  padding:30px}
.letter-card>p {
  font-size:33px}
.personal-copy {
  text-align:center}
.personal-copy h2 {
  font-size:37px}
.personal-copy .intro {
  font-size:15px;
  max-width:350px;
  margin-inline:auto}
.closing {
  padding:60px 0}
.closing h2 {
  font-size:44px}
.closing p {
  font-size:13px}
.site-footer {
  justify-content:center;
  text-align:center;
  padding-block:30px;
  gap:16px}
.site-footer p {
  display:none}
.site-footer nav {
  margin-left:auto;
  gap:17px}
.site-footer small {
  margin-top:7px}
.page-intro {
  padding:50px 0 30px}
.page-intro h1 {
  font-size:46px;
  letter-spacing:-1.8px}
.page-intro .intro {
  font-size:15px}
.support-layout,.feedback-layout,.policy-layout {
  grid-template-columns:1fr;
  gap:28px;
  padding-bottom:45px}
.support-layout aside {
  display:none}
summary {
  font-size:19px;
  padding-block:22px}
details>p {
  font-size:14px;
  padding-right:0}
.contact-band {
  align-items:flex-start;
  flex-direction:column;
  padding-bottom:45px}
.contact-band h2 {
  font-size:32px}
.feedback-layout aside {
  padding:0}
.note-icon {
  display:none}
.feedback-layout aside h2 {
  font-size:29px}
.feedback-layout aside p {
  max-width:100%}
form {
  padding:23px}
.privacy-summary {
  grid-template-columns:1fr;
  gap:21px;
  margin-bottom:30px}
.privacy-summary strong {
  font-size:20px}
.policy-layout nav {
  position:static;
  flex-direction:row;
  flex-wrap:wrap;
  gap:10px 20px;
  padding-bottom:20px;
  border-bottom:1px solid var(--line)}
.policy h2 {
  font-size:26px}
.policy p {
  font-size:14px}
}

@media(prefers-reduced-motion:reduce) {
  html {
  scroll-behavior:auto}
*,*::before,*::after {
  transition:none!important;
  animation:none!important}
}

.hero-gallery #motion-toggle {
  position:absolute;
  right:0;
  top:-24px;
  z-index:3;
  color:var(--muted)}

.closing .launch-status {
  font-size:11px;
  letter-spacing:1px;
  margin:25px 0 10px;
  color:#d2c5dc}


/* Shared app branding: static Card, cycling Motion. */
.brand { font-family:Georgia,serif; color:#203142; letter-spacing:0; gap:10px }
.brand-icon { width:48px; height:48px; object-fit:contain; flex:none; border-radius:10px }
.brand-word { display:inline-flex; align-items:baseline; white-space:nowrap }
.brand-motion { position:relative; display:inline-block }
.motion-text { display:inline-block }
.motion-letters { position:absolute; inset:0; display:none; white-space:nowrap }
.motion-letters > span { display:inline-block }
.motion-sheen { display:none; position:absolute; inset:-4px 0; overflow:hidden; pointer-events:none }
.motion-sheen::after { content:""; position:absolute; top:0; bottom:0; width:25px; background:rgba(217,174,208,.4); transform:translateX(-40px) skewX(-18deg) }
.brand-motion[data-effect="reveal"] .motion-text { animation:brand-reveal 1.8s linear both }
.brand-motion[data-effect="dealt"] .motion-text { visibility:hidden }
.brand-motion[data-effect="dealt"] .motion-letters { display:block }
.brand-motion[data-effect="dealt"] .motion-letters > span { animation:brand-dealt .52s ease both; animation-delay:calc(.09s + var(--i) * .095s) }
.brand-motion[data-effect="shimmer"] .motion-sheen { display:block }
.brand-motion[data-effect="shimmer"] .motion-sheen::after { animation:brand-shimmer 1.8s linear both }
@keyframes brand-reveal { 0%,5% { clip-path:inset(0 100% 0 0) } 33%,100% { clip-path:inset(0) } }
@keyframes brand-dealt { 0% { opacity:0; transform:translateY(-30px) rotate(-7deg) } 50% { opacity:1; transform:translateY(3px) rotate(1.8deg) } 77% { transform:translateY(-1.5px) rotate(-.8deg) } 100% { opacity:1; transform:none } }
@keyframes brand-shimmer { 0%,8% { left:100%; opacity:0 } 11% { opacity:1 } 36% { opacity:1 } 42%,100% { left:0; opacity:0 } }
@media(max-width:720px) { .brand-icon { width:38px; height:38px } .brand { gap:7px } }
@media(prefers-reduced-motion:reduce) { .brand-motion * { animation:none!important } .brand-motion .motion-text { visibility:visible!important; clip-path:none!important } .brand-motion .motion-letters,.brand-motion .motion-sheen { display:none!important } }

/* App palette: coral/lavender creation action, navy secondary surfaces. */
.hero .button, .closing .light-button {
  background:linear-gradient(110deg,#efa18d,#8270b5);
  color:#203142;
  border-color:transparent;
  border-radius:28px;
}
.hero .button:hover, .closing .light-button:hover {
  background:linear-gradient(110deg,#eba08d,#8775b5);
}
