:root {
  --rose-50: #fffafa; --rose-100: #f9eeeb; --rose-200: #ecd8d2; --rose-300: #dfbfb5;
  --rose-500: #b87970; --rose-700: #7f4f4b; --beige-50: #fcfaf6; --beige-100: #f5efe7;
  --beige-200: #e9ded0; --ink: #3f3632; --muted: #746965; --white: #ffffff;
  --shadow: 0 24px 70px rgba(89, 66, 58, .11); --radius: 4px; --serif: Georgia, 'Times New Roman', serif;
  --sans: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: var(--sans); color: var(--ink); background: var(--beige-50); line-height: 1.6; -webkit-font-smoothing: antialiased; }
body.modal-open { overflow: hidden; }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; border-radius:4px; }
input[type=text], input[type=email], input[type=tel], input[type=search], textarea { -webkit-appearance: none; appearance: none; }
button { color: inherit; }
img, video { display: block; max-width: 100%; }
.container { width: min(1160px, calc(100% - 40px)); margin: 0 auto; }
.narrow { max-width: 820px; }
.center { text-align: center; }
.section { padding: 110px 0; }
.soft-section { background: var(--rose-100); }
.eyebrow { display: inline-flex; align-items: center; gap: 10px; text-transform: uppercase; letter-spacing: .19em; font-size: 11px; font-weight: 800; color: var(--rose-700); }
.eyebrow::before { content: ''; width: 28px; height: 1px; background: var(--rose-500); }
h1, h2, h3, p { margin-top: 0; }
h1, h2 { font-family: var(--serif); font-weight: 400; line-height: 1.05; letter-spacing: -.035em; }
h1 { font-size: clamp(52px, 7.3vw, 102px); }
h2 { font-size: clamp(38px, 4.8vw, 64px); }
h1 em, h2 em { color: var(--rose-500); font-weight: 400; }
.button { appearance: none; border: 0; border-radius:4px; min-height: 52px; padding: 0 26px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-weight: 750; cursor: pointer; transition: .2s ease; }
.button:hover { transform: translateY(-2px); }
.button-primary { background: var(--rose-700); color: white; box-shadow: 0 12px 30px rgba(127, 79, 75, .2); }
.button-primary:hover { background: #704541; }
.button-ghost { background: transparent; border: 1px solid var(--rose-300); color: var(--rose-700); }
.button-light { background: white; color: var(--rose-700); }
.button-large { min-height: 60px; padding: 0 34px; }
.button-full { width: 100%; }
.button:disabled { opacity: .6; cursor: wait; transform: none; }
.text-link { color: var(--rose-700); font-weight: 800; }
.site-header { position: sticky; top: 0; z-index: 50; background: rgba(252, 250, 246, .86); border-bottom: 1px solid rgba(127, 79, 75, .08); backdrop-filter: blur(16px); }
.header-inner { min-height: 82px; display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.brand { display: inline-flex; align-items: center; gap: 12px; }
.brand-logo { display: block; width: auto; height: 74px; }
.footer-brand .brand-logo { height: 128px; padding: 6px; background: #fdf9f7; border-radius: 100%; box-shadow: 0 10px 30px rgba(0,0,0,.18); }
.brand-mark { width: 43px; height: 43px; border: 1px solid var(--rose-300); background: var(--rose-100); border-radius:4px; display: grid; place-items: center; font: italic 26px var(--serif); color: var(--rose-700); }
.brand strong, .brand small { display: block; line-height: 1.15; }
.brand strong { font: 22px var(--serif); }
.brand small { margin-top: 3px; font-size: 8px; letter-spacing: .22em; text-transform: uppercase; color: var(--muted); }
.main-nav { display: flex; align-items: center; gap: 30px; }
.nav-link { position: relative; font-size: 14px; font-weight: 700; color: #665b57; }
.nav-link::after { content: ''; position: absolute; height: 1px; left: 50%; right: 50%; bottom: -8px; background: var(--rose-700); transition: .2s; }
.nav-link:hover::after, .nav-link.is-active::after { left: 0; right: 0; }
.main-nav { margin-left: auto; }
.header-login { min-height: 42px; padding: 0 18px; font-size: 14px; background: #875059; color: #fff; box-shadow: 0 8px 20px rgba(135,80,89,.18); }
.header-login:hover { background: #77454e; }
.header-login.is-active { background: #77454e; }
.mobile-menu-button { display: none; border: 0; background: transparent; font-size: 24px; }
.site-footer { padding: 72px 0 24px; background: #403631; color: #f9f1eb; }
.footer-grid { display: grid; grid-template-columns: 1.7fr 1fr 1fr; gap: 60px; }
.footer-grid > div { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; }
.footer-grid p { max-width: 360px; color: #cdbfba; }
.footer-grid strong { margin-bottom: 8px; }
.footer-grid a { color: #dbcfc9; font-size: 14px; }
.footer-brand .brand-mark { color: #f7e6df; border-color: #705b53; background: #4f423c; }
.footer-brand small { color: #baa9a1; }
.footer-bottom { border-top: 1px solid #594944; margin-top: 50px; padding-top: 24px; font-size: 12px; color: #aa9992; }
.home-hero { position: relative; overflow: hidden; padding: 96px 0 100px; background: #fdf9f7; }
.home-hero-grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); align-items: center; gap: 56px; }
.hero-copy { position: relative; z-index: 2; }
.hero-eyebrow { display: block; text-transform: uppercase; letter-spacing: .22em; font-size: 12px; font-weight: 800; color: #a0666e; }
.hero-copy h1 { margin: 26px 0 34px; font-size: clamp(50px, 6.6vw, 104px); line-height: 1.02; letter-spacing: -.04em; color: #3d3533; }
.hero-copy h1 em { color: inherit; font-style: italic; }
.hero-copy > p { max-width: 630px; margin-bottom: 0; color: #7a6d69; font-size: 18px; line-height: 1.75; }
.hero-actions { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 36px; }
.home-hero .button-primary { min-height: 58px; padding: 0 22px; background: #875059; box-shadow: 0 14px 30px rgba(135, 80, 89, .22); }
.home-hero .button-primary:hover { background: #77454e; }
.button-outline { min-height: 58px; padding: 0 22px; background: #fff; border: 1px solid #eadfdb; color: var(--ink); }
.button-outline:hover { border-color: var(--rose-300); }
.hero-features { list-style: none; padding: 0; margin: 44px 0 0; display: flex; flex-wrap: wrap; gap: 14px 22px; }
.hero-features li { display: flex; flex-direction: column; gap: 4px; }
.hero-features strong { font-size: 14px; font-weight: 750; color: var(--ink); line-height: 1.3; }
.hero-features span { font-size: 13px; color: #8a7d79; line-height: 1.3; }
.hero-art { position: relative; width: 100%; max-width: 620px; aspect-ratio: 620 / 640; margin-left: auto; }
.polaroid { position: absolute; background: #fff; padding: 2.1% 2.1% 11%; border-radius:4px; box-shadow: 0 30px 60px rgba(89, 62, 58, .13), 0 4px 12px rgba(89, 62, 58, .05); }
.polaroid-photo { position: relative; width: 100%; height: 100%; overflow: hidden; border-radius:4px; background: linear-gradient(165deg, #ead8da 0%, #e9dcd6 55%, #e6dacb 100%); }
.polaroid-photo::before { content: ''; position: absolute; left: 22%; top: 20%; width: 72%; height: 64%; border-radius:4px; background: radial-gradient(ellipse at 45% 38%, rgba(250,242,242,.85), rgba(240,226,228,.55) 58%, rgba(236,220,222,0) 71%); filter: blur(3px); }
.polaroid-heart { position: absolute; right: 12%; bottom: 20%; width: 17%; max-width: 48px; color: #a8787f; }
.polaroid-left { left: 2%; top: 14%; width: 40%; height: 70%; transform: rotate(-7deg); z-index: 1; }
.polaroid-right { left: 38%; top: 0; width: 55%; height: 78%; transform: rotate(5deg); z-index: 2; }
.polaroid-front { left: 34%; top: 43%; width: 43%; height: 55%; transform: rotate(1deg); z-index: 3; }
.polaroid-right .polaroid-heart { right: 9%; bottom: 14%; }
.hero-rings { position: absolute; right: -4%; top: 64%; width: 26%; aspect-ratio: 1; border-radius:4px; border: 1px solid rgba(184, 121, 112, .18); z-index: 4; pointer-events: none; }
.hero-rings::before, .hero-rings::after { content: ''; position: absolute; border-radius:4px; border: 1px solid rgba(184, 121, 112, .16); }
.hero-rings::before { inset: 17%; }
.hero-rings::after { inset: 34%; }
.section-heading { margin-bottom: 52px; }
.section-heading.center { max-width: 760px; margin-left: auto; margin-right: auto; }
.section-heading h2 { margin: 15px 0 0; }
.steps-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.step-card { padding: 34px; background: white; border: 1px solid #efe3da; border-radius:4px; min-height: 285px; }
.step-card > span { font: italic 38px var(--serif); color: var(--rose-300); }
.step-card h3 { font: 27px var(--serif); margin: 34px 0 12px; }
.step-card p { color: var(--muted); margin: 0; }
.split-feature { display: grid; grid-template-columns: .9fr 1.1fr; align-items: center; gap: 90px; }
.feature-visual { min-height: 600px; display: grid; place-items: center; background: linear-gradient(145deg, #ead5cc, #f9efea); border-radius:4px; }
.phone-mock { position: relative; width: 265px; min-height: 540px; padding: 14px 18px 28px; border: 10px solid #403631; border-radius: 46px; background: #fffaf7; box-shadow: 0 0 0 2px #2f2723, 0 32px 60px rgba(82,55,48,.24); text-align: center; }
.phone-mock::before, .phone-mock::after { content: ''; position: absolute; width: 4px; background: #2f2723; border-radius: 2px; }
.phone-mock::before { right: -16px; top: 120px; height: 64px; }
.phone-mock::after { left: -16px; top: 100px; height: 40px; box-shadow: 0 58px 0 #2f2723; }
.phone-top { width: 84px; height: 24px; background: #2f2723; border-radius: 999px; margin: 0 auto 22px; }
.mock-flower { color: var(--rose-500); font-size: 25px; }.phone-mock strong { display:block; font: 28px var(--serif); }.phone-mock small { color: var(--muted); }
.mock-photo { height: 240px; margin: 22px 0 14px; border-radius:4px; background: linear-gradient(160deg, #d9b0a7, #f5e9df 45%, #b98b7e); position: relative; overflow:hidden; }
.mock-photo::before { content:'♡'; position:absolute; inset:0; display:grid; place-items:center; font-size:58px; color:white; }
.phone-mock p { font: italic 16px var(--serif); }
.feature-copy h2 { margin: 15px 0 24px; }.feature-copy > p { color: var(--muted); font-size: 17px; }
.check-list { list-style: none; padding: 0; margin: 28px 0; display: grid; gap: 12px; }.check-list li::before { content:'✓'; display:inline-grid; place-items:center; width:24px; height:24px; background:white; color:var(--rose-700); border-radius:4px; margin-right:10px; font-weight:900; }
.cta-section { padding-top: 70px; }
.cta-card { background: #7c504a; color: #fff; padding: 64px 56px; border-radius:4px; display: flex; align-items: center; justify-content: space-between; gap: 36px; position: relative; overflow: hidden; box-shadow: 0 30px 70px rgba(89, 62, 58, .16); }
.cta-copy { min-width: 0; }
.cta-eyebrow { display: block; text-transform: uppercase; letter-spacing: .2em; font-size: 12px; font-weight: 800; color: #f6dcd5; }
.cta-card h2 { margin: 10px 0 16px; font-weight: 700; font-size: clamp(32px, 3.6vw, 54px); line-height: 1.08; letter-spacing: -.04em; text-wrap: balance; }
.cta-card p { margin: 0; font-size: 17px; color: rgba(255, 255, 255, .86); }
.cta-card .button-light { flex-shrink: 0; min-height: 60px; padding: 0 24px; color: #7c504a; box-shadow: 0 10px 24px rgba(40, 24, 22, .14); }
.page-hero { background: linear-gradient(155deg, var(--rose-100), var(--beige-100)); }.page-hero.compact { padding: 120px 0; }.page-hero h1 { font-size: clamp(48px, 6vw, 82px); margin:18px 0 24px; }.page-hero p { color:var(--muted); font-size:18px; max-width:700px; }
.story-grid { display:grid; grid-template-columns: .9fr 1.1fr; gap:80px; }.story-grid h2 { font-size: clamp(40px, 4.5vw, 60px); margin-top:16px; }.prose p { color:var(--muted); font-size:18px; margin-bottom:22px; }
.values-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:20px; }.value-card { background:#fff; border-radius:4px; padding:38px; }.value-card > span { font-size:34px; color:var(--rose-500); }.value-card h3 { font:28px var(--serif); margin:20px 0 10px; }.value-card p { color:var(--muted); }
.contact-grid { display:grid; grid-template-columns:.9fr 1.1fr; gap:70px; align-items:start; }.contact-card h2 { margin:16px 0 22px; }.contact-card > p { color:var(--muted); }.contact-list { margin-top:34px; display:grid; gap:12px; }.contact-list a { display:flex; gap:14px; align-items:center; padding:18px; border:1px solid var(--beige-200); background:white; border-radius:4px; }.contact-list a > span { width:42px; height:42px; display:grid; place-items:center; background:var(--rose-100); border-radius:4px; }.contact-list small,.contact-list strong { display:block; }.contact-list small { color:var(--muted); }
.form-card { background:white; padding:38px; border:1px solid var(--beige-200); border-radius:4px; box-shadow:var(--shadow); }.form-card label,.memory-form label { display:block; font-size:13px; font-weight:800; margin-bottom:20px; }.form-card input,.form-card textarea,.memory-form input[type=text],.memory-form textarea { width:100%; margin-top:8px; border:1px solid #dfd4cb; border-radius:4px; background:#fffdfa; padding:14px 15px; outline:0; color:var(--ink); }.form-card input:focus,.form-card textarea:focus,.memory-form input:focus,.memory-form textarea:focus { border-color:var(--rose-500); box-shadow:0 0 0 4px rgba(184,121,112,.1); }
.alert { padding:12px 14px; margin-bottom:18px; border-radius:4px; font-size:13px; }.alert.success { background:#edf7ef; color:#2c6a39; }.alert.error { background:#fff0ee; color:#913e36; }
.couple-hero { min-height: 760px; padding: 90px 0 80px; display:grid; place-items:center; text-align:center; position:relative; overflow:hidden; background: radial-gradient(circle at 50% 20%, #fff 0 6%, transparent 34%), linear-gradient(180deg,#f8ebe7 0%,#fbf7f1 100%); }
.couple-hero::after { content:''; position:absolute; width:560px; height:560px; border:1px solid rgba(184,121,112,.18); border-radius:100%; top:80px; left:50%; transform:translateX(-50%); }.couple-hero-inner { position:relative; z-index:2; max-width:850px; }.script-word { font: italic 28px var(--serif); color:#b8897f; margin:24px 0 -3px; }.couple-hero h1 { font-size:clamp(58px,8.2vw,112px); margin:0 0 20px; }.couple-hero h1 span { color:var(--rose-500); font-style:italic; font-size:.7em; }.couple-meta { display:flex; justify-content:center; gap:18px; align-items:center; text-transform:uppercase; letter-spacing:.18em; font-size:11px; color:var(--muted); }.couple-meta i { color:var(--rose-300); }.couple-intro { max-width:640px; margin:28px auto 30px; color:var(--muted); font-size:17px; }.scroll-cue { display:flex; flex-direction:column; gap:4px; align-items:center; width:max-content; margin:30px auto 0; font-size:11px; text-transform:uppercase; letter-spacing:.14em; color:var(--muted); }.scroll-cue span { font-size:20px; }
.couple-story { padding:75px 0; }.story-band { max-width:900px; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:35px; text-align:center; }.story-band p { margin:13px auto 0; max-width:700px; font:italic 23px/1.65 var(--serif); color:#685a55; }.story-ornament { font-size:38px; color:var(--rose-300); }.story-ornament.mirror { transform:scaleX(-1); }
.memories-section { background:#fdf9f7; padding-top:90px; }
.memories-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:24px; margin-bottom:34px; }
.memories-eyebrow { display:block; text-transform:uppercase; letter-spacing:.2em; font-size:12px; font-weight:800; color:#a0666e; }
.memories-heading h2 { margin:8px 0 0; font-weight:700; font-size:clamp(32px, 3.6vw, 44px); letter-spacing:-.03em; line-height:1.1; color:#3d3533; }
.memories-heading .button-primary { flex-shrink:0; min-height:52px; padding:0 20px; background:#875059; box-shadow:0 14px 30px rgba(135, 80, 89, .22); }
.memories-heading .button-primary:hover { background:#77454e; }
.memory-filters { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:18px; }
.memory-filter { appearance:none; min-height:42px; padding:0 15px; border:1px solid #e8dcd8; border-radius:4px; background:#fff; color:#6b5f5b; font-size:14px; cursor:pointer; transition:.2s ease; }
.memory-filter:hover { border-color:var(--rose-300); }
.memory-filter.is-active { background:#f1e3e4; border-color:#f1e3e4; color:#875059; }
.memory-grid { columns:3; column-gap:30px; padding:8px 6px 0; }
.memory-card { position:relative; break-inside:avoid; -webkit-column-break-inside:avoid; display:block; width:100%; margin:0 0 34px; padding:12px 12px 0; background:#fffefc; border:1px solid #f0e7e3; border-radius:4px; box-shadow:0 1px 2px rgba(89,66,58,.06), 0 14px 30px rgba(89,66,58,.11); rotate:-1.2deg; }
.memory-card:nth-child(3n+2) { rotate:1deg; }
.memory-card:nth-child(3n) { rotate:-.4deg; }
.memory-card:nth-child(4n) { rotate:1.5deg; }
.memory-card.is-hidden { display:none; }
.memory-media { position:relative; aspect-ratio:var(--media-ratio, 4 / 3); background:linear-gradient(135deg, #dfc8c6, #f3e9e6 50%, #c9b0aa); overflow:hidden; border-radius:2px; box-shadow:inset 0 0 0 1px rgba(61,53,51,.06); }
.memory-slide { position:absolute; inset:0; opacity:0; pointer-events:none; transition:opacity .3s ease; }
.memory-slide.is-active { opacity:1; pointer-events:auto; }
.memory-slide img, .memory-slide video { width:100%; height:100%; object-fit:cover; }
.memory-slide video { background:#2e2927; }
.memory-zoom { display:block; width:100%; height:100%; padding:0; border:0; background:none; cursor:zoom-in; }
.slider-arrow { position:absolute; z-index:3; top:50%; transform:translateY(-50%); width:36px; height:36px; display:grid; place-items:center; padding:0 0 3px; border:0; border-radius:4px; background:rgba(255,255,255,.92); color:var(--ink); box-shadow:0 4px 14px rgba(0,0,0,.12); font-size:24px; line-height:1; cursor:pointer; opacity:0; transition:opacity .2s ease; }
.slider-arrow.prev { left:10px; } .slider-arrow.next { right:10px; }
.memory-media:hover .slider-arrow, .slider-arrow:focus-visible { opacity:1; }
@media (hover:none) { .slider-arrow { opacity:1; width:32px; height:32px; font-size:21px; } }
.slider-dots { position:absolute; z-index:3; left:50%; bottom:10px; transform:translateX(-50%); display:flex; gap:5px; padding:5px 7px; background:rgba(50,40,36,.28); border-radius:4px; }
.slider-dot { width:6px; height:6px; padding:0; border:0; border-radius:4px; background:rgba(255,255,255,.55); cursor:pointer; }
.slider-dot.is-active { background:#fff; }
.media-count { position:absolute; z-index:3; top:10px; right:10px; padding:4px 9px; border-radius:4px; background:rgba(45,37,34,.55); color:#fff; font-size:11px; font-weight:700; letter-spacing:.04em; }
.memory-body { padding:16px 8px 20px; text-align:center; }
.memory-body p { margin:0; font:italic 17px/1.5 var(--serif); color:#5d4d48; overflow-wrap:anywhere; }
.memory-author { display:block; margin-top:10px; font-size:11.5px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:#a0666e; }
.memory-author::before { content:'— '; }
.memory-grid.is-messages .memory-media { display:none; }
.memory-grid.is-messages .memory-card { padding:0; }
.memory-grid.is-messages .memory-body { padding:30px 22px 26px; }
.memory-grid.is-messages .memory-body p { font-size:20px; }
.memory-filter-empty { padding:50px 0; text-align:center; color:var(--muted); }
.lightbox { position:fixed; inset:0; z-index:120; display:grid; place-items:center; opacity:0; visibility:hidden; transition:.2s ease; }
.lightbox.is-open { opacity:1; visibility:visible; }
.lightbox-backdrop { position:absolute; inset:0; background:rgba(30,24,22,.88); backdrop-filter:blur(6px); }
.lightbox-dialog { position:relative; z-index:2; width:100%; height:100%; display:flex; align-items:center; justify-content:center; gap:16px; padding:60px 24px 24px; pointer-events:none; }
.lightbox-dialog > * { pointer-events:auto; }
.lightbox-figure { margin:0; max-width:min(1100px, 100%); display:flex; flex-direction:column; align-items:center; gap:14px; }
.lightbox-stage img, .lightbox-stage video { max-width:100%; max-height:calc(100vh - 190px); max-height:calc(100dvh - 190px); border-radius:4px; object-fit:contain; box-shadow:0 30px 80px rgba(0,0,0,.4); background:#1f1a18; }
.lightbox-caption { max-width:640px; text-align:center; color:#f4ebe7; display:flex; flex-direction:column; gap:4px; }
.lightbox-caption strong { font-size:15px; }
.lightbox-caption span { font-size:14px; color:#d6c7c1; }
.lightbox-caption small { font-size:11px; letter-spacing:.12em; color:#a8958e; }
.lightbox-close { position:absolute; top:14px; right:16px; width:42px; height:42px; border:0; border-radius:4px; background:rgba(255,255,255,.12); color:#fff; font-size:28px; line-height:1; cursor:pointer; }
.lightbox-arrow { flex-shrink:0; width:48px; height:48px; display:grid; place-items:center; padding:0 0 4px; border:0; border-radius:4px; background:rgba(255,255,255,.12); color:#fff; font-size:32px; line-height:1; cursor:pointer; }
.lightbox-close:hover, .lightbox-arrow:hover { background:rgba(255,255,255,.22); }
.lightbox-arrow[hidden] { display:none; }
.empty-state { grid-column:1/-1; padding:80px 24px; text-align:center; border:1px dashed var(--rose-300); background:rgba(255,255,255,.55); border-radius:4px; }.empty-state > span { font-size:46px; color:var(--rose-500); }.empty-state h3 { font:36px var(--serif); margin:12px 0 8px; }.empty-state p { max-width:540px; margin:0 auto 24px; color:var(--muted); }
.modal { position:fixed; inset:0; z-index:100; display:grid; place-items:center; padding:20px; opacity:0; visibility:hidden; transition:.2s; }
.modal.is-open { opacity:1; visibility:visible; }
.modal-backdrop { position:absolute; inset:0; background:rgba(49,39,35,.5); backdrop-filter:blur(6px); }
.modal-dialog { position:relative; z-index:2; width:min(620px,100%); max-height:calc(100vh - 40px); max-height:calc(100dvh - 40px); overflow-y:auto; overscroll-behavior:contain; background:#fdf9f7; border-radius:4px; padding:28px 28px 24px; box-shadow:0 35px 100px rgba(40,28,24,.3); transform:translateY(15px) scale(.98); transition:.2s; scrollbar-width:thin; scrollbar-color:#dcc3c5 transparent; }
.modal-dialog::-webkit-scrollbar { width:10px; }
.modal-dialog::-webkit-scrollbar-track { background:transparent; margin:22px 0; }
.modal-dialog::-webkit-scrollbar-thumb { background:#e3cfd1; border-radius:4px; border:3px solid #fdf9f7; }
.modal-dialog::-webkit-scrollbar-thumb:hover { background:#c9a9ad; }
.modal.is-open .modal-dialog { transform:none; }
.modal-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:20px; }
.modal-eyebrow { display:block; text-transform:uppercase; letter-spacing:.18em; font-size:10.5px; font-weight:800; color:#a0666e; }
.modal-head h2 { margin:6px 0 0; font-size:28px; font-weight:700; letter-spacing:-.02em; line-height:1.1; color:#3d3533; }
.modal-close { flex-shrink:0; width:38px; height:38px; margin-top:2px; display:grid; place-items:center; padding:0; border:0; border-radius:4px; background:#f0e2e3; color:#875059; font-size:20px; line-height:1; cursor:pointer; transition:background .2s; }
.modal-close:hover { background:#ead4d6; }
.memory-form .upload-field { position:relative; display:block; margin:0 0 14px; }
.upload-field input { position:absolute; width:1px; height:1px; opacity:0; pointer-events:none; }
.upload-drop { min-height:96px; display:flex; flex-direction:column; justify-content:center; align-items:center; gap:3px; padding:16px; border:1px dashed #dcc5c3; border-radius:4px; background:#fff; text-align:center; cursor:pointer; transition:border-color .2s, background .2s; }
.upload-drop strong { font-size:14.5px; font-weight:700; color:#6f5f5b; }
.upload-drop > span { font-size:14px; font-weight:400; color:#7a6d69; }
.upload-drop small { font-size:11px; font-weight:400; color:#a0948f; }
.upload-field:hover .upload-drop, .upload-field.is-dragover .upload-drop { border-color:#b4878d; background:#fff7f7; }
.upload-field input:focus-visible + .upload-drop { border-color:#875059; box-shadow:0 0 0 4px rgba(135,80,89,.12); }
.file-preview { display:grid; grid-template-columns:repeat(5, 50px); gap:8px; margin:-2px 0 14px; }
.file-preview:empty { display:none; }
.preview-item { position:relative; aspect-ratio:1; border-radius:4px; overflow:hidden; background:#eee; }
.preview-item img, .preview-item video { width:100%; height:100%; object-fit:cover; }
.preview-item span { position:absolute; left:3px; bottom:3px; font-size:8px; padding:1px 4px; border-radius:4px; color:#fff; background:rgba(0,0,0,.5); }
.memory-form label.field { display:block; position:relative; margin:0 0 14px; font-size:13px; font-weight:750; color:var(--ink); }
.memory-form .field input, .memory-form .field textarea { display:block; width:100%; margin-top:7px; border:1px solid #eadcd9; border-radius:4px; background:#fffdfc; padding:12px 14px; font-size:15px; font-weight:400; color:var(--ink); outline:0; transition:border-color .2s, box-shadow .2s; }
.memory-form .field textarea { min-height:112px; resize:vertical; line-height:1.5; }
.memory-form .field input::placeholder, .memory-form .field textarea::placeholder { color:#8f8380; }
.memory-form .field input:focus, .memory-form .field textarea:focus { border-color:#b4878d; box-shadow:0 0 0 4px rgba(135,80,89,.1); }
.char-count { position:absolute; right:12px; bottom:8px; font-size:10.5px; font-weight:500; color:#a0948f; pointer-events:none; }
.client-error { min-height:0; margin:-4px 0 12px; color:#a14339; font-size:12.5px; text-align:right; }
.client-error:empty { display:none; }
.modal-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:6px; }
.modal-actions .button { min-height:48px; padding:0 20px; font-size:15px; }
.modal-actions .button-primary { background:#875059; box-shadow:0 10px 24px rgba(135,80,89,.22); }
.modal-actions .button-primary:hover { background:#77454e; }
@media (min-width:601px) and (max-height:760px) {
  .modal-dialog { padding:22px 24px 20px; }
  .modal-head { margin-bottom:14px; }
  .modal-head h2 { font-size:24px; }
  .upload-drop { min-height:76px; padding:12px; }
  .upload-drop small { display:none; }
  .memory-form .field textarea { min-height:84px; }
  .memory-form label.field { margin-bottom:10px; }
}
@media (min-width:601px) and (max-height:620px) {
  .modal { padding:12px; }
  .modal-dialog { max-height:calc(100dvh - 24px); padding:18px 22px 16px; }
  .memory-form .field textarea { min-height:70px; }
  .memory-form .field input, .memory-form .field textarea { padding:10px 13px; }
  .modal-actions .button { min-height:44px; }
}
.toast { position:fixed; z-index:150; left:50%; top:100px; transform:translate(-50%,-20px); background:#3e6d48; color:white; padding:13px 20px; border-radius:4px; box-shadow:var(--shadow); opacity:0; pointer-events:none; transition:.25s; }.toast.error { background:#9a4940; }.toast.is-visible { opacity:1; transform:translate(-50%,0); }
.auth-section { position:relative; min-height:calc(100vh - 82px); min-height:calc(100dvh - 82px); display:grid; place-items:center; padding:64px 0 80px; background:#fdf9f7; overflow:hidden; }
.auth-card { width:100%; display:grid; grid-template-columns:1fr 1fr; background:#fff; border:1px solid #efe4e1; border-radius:4px; box-shadow:0 30px 70px rgba(89,62,58,.1); overflow:hidden; }
.auth-aside { position:relative; display:flex; flex-direction:column; justify-content:space-between; gap:40px; padding:44px 40px; background:#7c504a; color:#fff; overflow:hidden; }
.auth-aside::after { content:''; position:absolute; right:-90px; bottom:-90px; width:260px; height:260px; border:1px solid rgba(255,255,255,.14); border-radius:100%; box-shadow:0 0 0 36px rgba(255,255,255,.04), 0 0 0 72px rgba(255,255,255,.03); }
.auth-eyebrow { display:block; text-transform:uppercase; letter-spacing:.2em; font-size:11px; font-weight:800; color:#f6dcd5; }
.auth-aside h2 { position:relative; z-index:1; margin:14px 0 14px; font-size:clamp(30px, 3.2vw, 40px); font-weight:700; letter-spacing:-.03em; line-height:1.1; }
.auth-aside p { position:relative; z-index:1; margin:0; max-width:340px; font-size:15px; color:rgba(255,255,255,.82); }
.auth-aside small { position:relative; z-index:1; font-size:12px; color:rgba(255,255,255,.6); }
.auth-form-wrap { padding:48px 44px; }
.auth-form-wrap .auth-eyebrow { color:#a0666e; }
.auth-form-wrap h1 { margin:10px 0 8px; font-size:34px; font-weight:700; letter-spacing:-.025em; line-height:1.1; color:#3d3533; }
.auth-lead { margin:0 0 28px; font-size:14.5px; color:#7a6d69; }
.auth-form label { display:block; margin:0 0 16px; font-size:13px; font-weight:750; color:var(--ink); }
.auth-form input { display:block; width:100%; margin-top:7px; padding:13px 14px; border:1px solid #eadcd9; border-radius:4px; background:#fffdfc; font-size:15px; font-weight:400; color:var(--ink); outline:0; transition:border-color .2s, box-shadow .2s; }
.auth-form input::placeholder { color:#9b8f8b; }
.auth-form input:focus { border-color:#b4878d; box-shadow:0 0 0 4px rgba(135,80,89,.1); }
.password-field { position:relative; }
.password-field input { padding-right:78px; }
.password-toggle { position:absolute; right:6px; bottom:6px; min-height:34px; padding:0 10px; border:0; border-radius:4px; background:transparent; color:#875059; font-size:12.5px; font-weight:750; cursor:pointer; }
.password-toggle:hover { background:#f6ecec; }
.auth-form .button-primary { width:100%; min-height:50px; margin-top:8px; font-size:15px; background:#875059; box-shadow:0 10px 24px rgba(135,80,89,.22); }
.auth-form .button-primary:hover { background:#77454e; }
.auth-error { margin:0 0 14px; padding:11px 13px; border-radius:4px; background:#fff0ee; color:#913e36; font-size:13px; }
.auth-error:empty { display:none; }
.products-hero { background:#fdf9f7; border-bottom:1px solid #f1e7e4; }
.products-hero.compact { padding:96px 0 72px; }
.products-hero h1 { max-width:760px; margin:16px 0 18px; font-weight:700; font-size:clamp(38px, 5vw, 64px); letter-spacing:-.035em; color:#3d3533; }
.products-hero p { max-width:640px; margin:0; color:#7a6d69; font-size:17px; }
.products-section { background:#fdf9f7; padding-top:64px; }
.product-grid { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:20px; }
.product-grid.is-two { grid-template-columns:repeat(2, minmax(0, 1fr)); }
.product-card { display:flex; flex-direction:column; background:#fff; border:1px solid #efe4e1; border-radius:4px; overflow:hidden; transition:box-shadow .25s ease, transform .25s ease; }
.product-card:hover { box-shadow:0 22px 50px rgba(89,66,58,.1); }
.product-card-media { display:block; padding:10px 10px 0; }
.product-card-body { flex:1; display:flex; flex-direction:column; padding:22px 22px 24px; }
.product-card h3 { margin:0 0 16px; font:700 21px/1.3 var(--serif); letter-spacing:-.01em; color:#3d3533; }
.product-card h3 a:hover { color:#875059; }
.product-features { list-style:none; margin:0 0 22px; padding:0; display:grid; gap:10px; }
.product-features li { display:flex; gap:10px; align-items:flex-start; font-size:14.5px; line-height:1.5; color:#5f5451; }
.product-features svg { flex-shrink:0; width:20px; height:20px; margin-top:1px; padding:2px; border-radius:4px; background:#f3e6e7; color:#875059; }
.product-card-foot { margin-top:auto; display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; padding-top:18px; border-top:1px solid #f1e7e4; }
.product-price { margin:0; font:700 26px/1 var(--serif); color:#3d3533; letter-spacing:-.02em; }
.product-price span, .product-detail-price span { font:600 13px var(--sans); color:#8a7d79; letter-spacing:0; }
.product-card-foot .button-primary, .order-button { background:#875059; box-shadow:0 10px 24px rgba(135,80,89,.2); }
.product-card-foot .button-primary { min-height:46px; padding:0 18px; font-size:14px; }
.product-card-foot .button-primary:hover, .order-button:hover { background:#77454e; }
.product-visual { position:relative; aspect-ratio:16 / 10; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; border-radius:4px; overflow:hidden; color:#6e4b45; background:linear-gradient(160deg, #f3e3e2, #eadcd3); }
.product-visual[data-tier="20"] { background:linear-gradient(160deg, #eed7d8, #e3cfc6); }
.product-visual[data-tier="50"] { background:linear-gradient(160deg, #d9b3b3, #c9a39c); color:#fff; }
.product-visual::before, .product-visual::after { content:''; position:absolute; border-radius:100%; border:1px solid currentColor; opacity:.14; }
.product-visual::before { width:62%; aspect-ratio:1; right:-18%; bottom:-34%; }
.product-visual::after { width:40%; aspect-ratio:1; left:-12%; top:-18%; }
.product-visual-size { position:relative; font:700 clamp(56px, 6vw, 78px)/1 var(--serif); letter-spacing:-.04em; }
.product-visual-size small { margin-left:4px; font-size:.36em; letter-spacing:.02em; }
.product-visual-note { position:relative; font-size:11px; font-weight:800; letter-spacing:.18em; text-transform:uppercase; opacity:.75; }
.product-visual-chip { position:absolute; top:12px; left:12px; padding:5px 10px; border-radius:4px; background:rgba(255,255,255,.85); color:#875059; font-size:11.5px; font-weight:800; }
.product-visual.is-large { aspect-ratio:1 / 1; }
.product-visual.is-large .product-visual-size { font-size:clamp(84px, 11vw, 150px); }
.product-visual.is-large .product-visual-note { font-size:13px; }
.product-visual.is-large .product-visual-chip { top:18px; left:18px; font-size:13px; padding:7px 12px; }
.product-extras { display:grid; grid-template-columns:1.1fr 1fr 1fr; gap:20px; margin-top:44px; padding:30px; background:#fff; border:1px solid #efe4e1; border-radius:4px; }
.product-extras-head h2 { margin:8px 0 8px; font-weight:700; font-size:30px; letter-spacing:-.025em; color:#3d3533; }
.product-extras-head p { margin:0; font-size:14px; color:#7a6d69; }
.product-extra h3 { margin:4px 0 12px; font-size:13px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:#875059; }
.product-extra ul { list-style:none; margin:0; padding:0; }
.product-extra li { display:flex; justify-content:space-between; gap:12px; padding:10px 0; border-bottom:1px solid #f3ebe8; font-size:14px; color:#5f5451; }
.product-extra li:last-child { border-bottom:0; }
.product-extra strong { flex-shrink:0; font-weight:750; color:#3d3533; }
.product-tax-note { margin:18px 0 0; font-size:13px; color:#8a7d79; }
.product-detail { background:#fdf9f7; padding-top:34px; }
.breadcrumb { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:26px; font-size:13px; color:#8a7d79; }
.breadcrumb a:hover { color:#875059; }
.breadcrumb [aria-current] { color:#3d3533; font-weight:700; }
.product-detail-grid { display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1fr); gap:48px; align-items:start; }
.product-gallery { position:sticky; top:106px; }
.product-highlights { list-style:none; margin:12px 0 0; padding:0; display:grid; grid-template-columns:repeat(3, 1fr); gap:12px; }
.product-highlights li { padding:14px 12px; background:#fff; border:1px solid #efe4e1; border-radius:4px; text-align:center; }
.product-highlights strong { display:block; font-size:15px; color:#3d3533; }
.product-highlights span { font-size:12px; color:#8a7d79; }
.product-buy h1 { margin:12px 0 14px; font-weight:700; font-size:clamp(28px, 3vw, 38px); line-height:1.15; letter-spacing:-.03em; color:#3d3533; }
.product-detail-price { margin:0 0 14px; font:700 34px/1 var(--serif); letter-spacing:-.02em; color:#875059; }
.product-detail-summary { margin:0 0 20px; color:#7a6d69; font-size:15.5px; }
.product-buy .product-features { padding-bottom:24px; margin-bottom:24px; border-bottom:1px solid #efe4e1; }
.option-group { margin:0 0 22px; padding:0; border:0; min-width:0; }
.option-group legend { padding:0; margin-bottom:10px; font-size:14px; font-weight:800; color:#3d3533; }
.option-list { display:grid; gap:8px; }
.option-card { position:relative; display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:12px; padding:14px 16px; background:#fff; border:1px solid #eadcd9; border-radius:4px; cursor:pointer; transition:border-color .2s, background .2s, box-shadow .2s; }
.option-card:hover { border-color:#d3b7ba; }
.option-card input { position:absolute; opacity:0; pointer-events:none; }
.option-radio { width:18px; height:18px; border:1.5px solid #cdb3b6; border-radius:100%; transition:.2s; }
.option-label { font-size:14.5px; color:#3d3533; }
.option-price { font-size:13.5px; font-weight:750; color:#875059; white-space:nowrap; }
.option-card:has(input:checked) { border-color:#875059; background:#fdf6f6; box-shadow:0 0 0 1px #875059 inset; }
.option-card input:checked ~ .option-radio { border-color:#875059; border-width:5px; }
.option-card input:focus-visible ~ .option-radio { box-shadow:0 0 0 4px rgba(135,80,89,.18); }
.legend-note { margin-left:6px; padding:2px 7px; border-radius:4px; background:#f3e6e7; color:#875059; font-size:11px; font-weight:800; vertical-align:1px; }
.design-list { display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:10px; }
.design-option { position:relative; min-width:0; }
.design-card { display:flex; flex-direction:column; gap:7px; padding:6px 6px 9px; background:#fff; border:1px solid #eadcd9; border-radius:4px; cursor:pointer; transition:border-color .2s, box-shadow .2s, background .2s; }
.design-card:hover { border-color:#d3b7ba; }
.design-card input { position:absolute; opacity:0; pointer-events:none; }
.design-thumb { display:block; aspect-ratio:5 / 7; overflow:hidden; border-radius:4px; background:#f6efec; }
.design-thumb img { width:100%; height:100%; object-fit:cover; }
.design-name { font-size:12.5px; font-weight:700; line-height:1.25; text-align:center; color:#5f5451; }
.design-check { position:absolute; left:11px; top:11px; width:20px; height:20px; border-radius:100%; background:#fff; border:1.5px solid #cdb3b6; box-shadow:0 2px 6px rgba(0,0,0,.12); transition:.2s; }
.design-card:has(input:checked) { border-color:#875059; background:#fdf6f6; box-shadow:0 0 0 1px #875059 inset; }
.design-card:has(input:checked) .design-name { color:#875059; }
.design-card input:checked ~ .design-check { border:0; background:#875059 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5.5 10.5l3 3 6-6.5' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center / 14px no-repeat; }
.design-card input:focus-visible ~ .design-thumb { outline:2px solid #875059; outline-offset:2px; }
.design-zoom { position:absolute; right:11px; top:11px; width:28px; height:28px; display:grid; place-items:center; padding:0; border:0; border-radius:4px; background:rgba(255,255,255,.92); color:#6e4b45; box-shadow:0 2px 8px rgba(0,0,0,.14); cursor:zoom-in; opacity:.9; transition:opacity .2s, background .2s; }
.design-zoom svg { width:16px; height:16px; }
.design-zoom:hover { opacity:1; background:#fff; color:#875059; }
.design-zoom:focus-visible { outline:2px solid #875059; outline-offset:2px; }
.order-summary { margin:26px 0 16px; padding:18px 20px; background:#fff; border:1px solid #efe4e1; border-radius:4px; }
.order-row { display:flex; justify-content:space-between; gap:16px; padding:6px 0; font-size:14px; color:#5f5451; }
.order-total { display:flex; justify-content:space-between; align-items:baseline; gap:16px; margin-top:10px; padding-top:14px; border-top:1px solid #efe4e1; font-weight:750; color:#3d3533; }
.order-total small { font-weight:500; color:#8a7d79; }
.order-total strong { font:700 28px/1 var(--serif); letter-spacing:-.02em; color:#875059; }
.order-button { width:100%; min-height:54px; font-size:16px; }
.order-note { margin:12px 0 0; font-size:12.5px; line-height:1.6; color:#8a7d79; }
.related-products .section-heading h2 { font-weight:700; font-size:clamp(30px, 3.4vw, 40px); margin-top:8px; }
.alert.order-alert { background:#fdf1f1; color:#77454e; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
.auth-notice { margin:0 0 14px; padding:11px 13px; border-radius:4px; background:#f1f6f1; color:#2f6a3b; font-size:13px; }
.dash-hero { position:relative; padding:56px 0 44px; background:linear-gradient(180deg, #f8ebe7 0%, #fbf5f1 100%); border-bottom:1px solid #f0e4e0; overflow:hidden; }
.dash-hero::after { content:''; position:absolute; width:420px; aspect-ratio:1; right:-120px; top:-190px; border:1px solid rgba(184,121,112,.2); border-radius:100%; box-shadow:0 0 0 46px rgba(184,121,112,.04); pointer-events:none; }
.dash-hero-inner { position:relative; z-index:1; display:flex; align-items:flex-end; justify-content:space-between; gap:32px; flex-wrap:wrap; }
.dash-hero h1 { margin:12px 0 10px; font-size:clamp(40px, 5vw, 64px); line-height:1.02; letter-spacing:-.035em; color:#3d3533; }
.dash-hero h1 em { color:#b87970; font-style:italic; font-size:.8em; }
.dash-meta { display:flex; gap:12px; align-items:center; margin:0; text-transform:uppercase; letter-spacing:.16em; font-size:12px; font-weight:700; color:#8a7d79; }
.dash-meta i { color:#dcc3c0; font-style:normal; }
.dash-actions { display:flex; flex-direction:column; align-items:flex-end; gap:14px; }
.dash-link { padding:16px 18px; background:rgba(255,255,255,.8); border:1px solid #efe1dd; border-radius:4px; box-shadow:0 14px 34px rgba(89,62,58,.07); backdrop-filter:blur(6px); }
.dash-link-label { display:block; font-size:11px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; color:#a0666e; }
.dash-link-url { display:block; margin:4px 0 12px; font-size:15px; font-weight:700; color:#3d3533; word-break:break-all; }
.dash-link-url:hover { color:#875059; }
.dash-link-buttons { display:flex; gap:8px; flex-wrap:wrap; }
.dash-link-buttons .button { min-height:42px; padding:0 14px; font-size:13.5px; gap:7px; }
.dash-link-buttons .button svg, .dash-logout svg { width:16px; height:16px; }
.dash-link-buttons .button-primary { background:#875059; box-shadow:0 8px 20px rgba(135,80,89,.18); }
.dash-link-buttons .button-primary.is-done { background:#3e6d48; }
.dash-logout { display:flex; align-items:center; gap:12px; font-size:13px; color:#8a7d79; }
.dash-logout button { display:inline-flex; align-items:center; gap:6px; padding:6px 10px; border:0; border-radius:4px; background:transparent; color:#875059; font-weight:750; cursor:pointer; }
.dash-logout button:hover { background:#f3e6e7; }
.dash-section { padding-top:36px; background:#fdf9f7; }
.dash-stats { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:14px; }
.dash-stat { padding:20px 20px 18px; background:#fff; border:1px solid #efe4e1; border-radius:4px; }
.dash-stat strong { display:block; font:700 40px/1 var(--serif); letter-spacing:-.03em; color:#3d3533; font-variant-numeric:tabular-nums; }
.dash-stat span { display:block; margin-top:8px; font-size:13px; font-weight:700; color:#6f625e; }
.dash-stat small { display:block; margin-top:4px; font-size:12px; color:#8a7d79; }
.dash-stat small b { color:#3d3533; }
.dash-stat[data-stat="hidden"] { background:#fdf6f6; border-color:#eed9da; }
.dash-note { display:flex; gap:14px; align-items:flex-start; margin:16px 0 28px; padding:16px 18px; background:#fff; border:1px solid #efe4e1; border-left:3px solid #875059; border-radius:4px; }
.dash-note-icon { flex-shrink:0; width:34px; height:34px; display:grid; place-items:center; border-radius:4px; background:#f3e6e7; color:#875059; }
.dash-note-icon svg { width:18px; height:18px; }
.dash-note p { margin:0; font-size:14px; line-height:1.6; color:#6f625e; }
.dash-note strong { color:#3d3533; }
.dash-toolbar { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-bottom:22px; }
.dash-toolbar .memory-filters { margin:0; }
.memory-filter span { margin-left:4px; font-size:12px; font-weight:750; opacity:.7; font-variant-numeric:tabular-nums; }
.dash-search { position:relative; display:flex; align-items:center; width:min(320px, 100%); }
.dash-search svg { position:absolute; left:13px; width:17px; height:17px; color:#9b8f8b; pointer-events:none; }
.dash-search input { width:100%; min-height:42px; padding:0 14px 0 38px; border:1px solid #e8dcd8; border-radius:4px; background:#fff; font-size:14px; color:var(--ink); outline:0; transition:border-color .2s, box-shadow .2s; }
.dash-search input:focus { border-color:#b4878d; box-shadow:0 0 0 4px rgba(135,80,89,.1); }
.dash-empty { column-span:all; }
.concealed-badge { display:none; position:absolute; z-index:4; top:22px; left:22px; align-items:center; gap:6px; padding:5px 9px; border-radius:4px; background:rgba(61,53,51,.86); color:#fff; font-size:11.5px; font-weight:800; letter-spacing:.02em; box-shadow:0 4px 12px rgba(0,0,0,.18); }
.concealed-badge svg { width:14px; height:14px; }
.memory-card.is-concealed .concealed-badge { display:inline-flex; }
.memory-grid.is-messages .concealed-badge { top:10px; left:10px; }
.memory-card.is-concealed { background:#f7f3f1; }
.memory-card.is-concealed .memory-media img, .memory-card.is-concealed .memory-media video { filter:grayscale(.75) brightness(.92); opacity:.55; }
.memory-card.is-concealed .memory-body { opacity:.6; }
.memory-owner-bar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:0 -12px; padding:10px 12px; border-top:1px dashed #eadfdb; }
.memory-owner-bar time { font-size:12px; color:#9b8f8b; }
.visibility-toggle { display:inline-flex; align-items:center; min-height:34px; padding:0 12px; border:1px solid #e3d3d1; border-radius:4px; background:#fff; color:#6e4b45; font-size:13px; font-weight:750; cursor:pointer; transition:background .2s, border-color .2s, color .2s; }
.visibility-toggle > span { display:inline-flex; align-items:center; gap:6px; }
.visibility-toggle svg { width:16px; height:16px; }
.visibility-toggle:hover { border-color:#875059; color:#875059; }
.visibility-toggle .when-hidden, .memory-card.is-concealed .visibility-toggle .when-visible { display:none; }
.memory-card.is-concealed .visibility-toggle .when-hidden { display:inline-flex; }
.memory-card.is-concealed .visibility-toggle { background:#875059; border-color:#875059; color:#fff; }
.memory-card.is-concealed .visibility-toggle:hover { background:#77454e; }
.visibility-toggle[disabled] { opacity:.6; cursor:wait; }
/* Hatıra Panom: silme */
.memory-owner-actions { display:flex; align-items:center; gap:6px; position:relative; }
.memory-owner-actions form { margin:0; }
.memory-delete { position:static; }
.memory-delete > summary { list-style:none; }
.memory-delete > summary::-webkit-details-marker { display:none; }
.delete-toggle { display:inline-flex; align-items:center; gap:6px; min-height:34px; padding:0 11px; border:1px solid #ecd6d3; border-radius:4px; background:#fff; color:#9a4940; font-size:13px; font-weight:750; cursor:pointer; transition:background .2s, border-color .2s; user-select:none; }
.delete-toggle svg { width:16px; height:16px; }
.delete-toggle:hover, .memory-delete[open] > .delete-toggle { border-color:#9a4940; background:#fbf1ef; }
.memory-delete-panel { position:absolute; z-index:6; right:0; bottom:calc(100% + 8px); width:min(290px, calc(100vw - 48px)); padding:14px; background:#fff; border:1px solid #ecd6d3; border-radius:4px; box-shadow:0 16px 40px rgba(89,66,58,.2); text-align:left; }
.memory-delete-panel p { margin:0 0 12px; font-size:13px; line-height:1.5; color:#6f625e; }
.memory-delete-panel p strong { display:block; margin-bottom:4px; color:#3d3533; font-size:14px; }
.memory-delete-buttons { display:flex; gap:8px; }
.button-danger, .button-cancel { flex:1; min-height:38px; padding:0 12px; border-radius:4px; font-size:13px; font-weight:800; cursor:pointer; }
.button-danger { border:1px solid #9a4940; background:#9a4940; color:#fff; }
.button-danger:hover { background:#833c34; }
.button-danger[disabled] { opacity:.6; cursor:wait; }
.button-cancel { border:1px solid #e3d3d1; background:#fff; color:#6e4b45; }
.slide-delete { position:absolute; z-index:4; top:10px; left:10px; margin:0; }
.memory-card.is-concealed .slide-delete { top:44px; }
.slide-delete button { width:34px; height:34px; display:grid; place-items:center; padding:0; border:0; border-radius:4px; background:rgba(255,255,255,.94); color:#9a4940; box-shadow:0 4px 14px rgba(0,0,0,.16); cursor:pointer; }
.slide-delete button:hover { background:#9a4940; color:#fff; }
.slide-delete button[disabled] { opacity:.6; cursor:wait; }
.slide-delete svg { width:17px; height:17px; }
.memory-card.is-removing { opacity:0; transform:scale(.96); transition:opacity .25s ease, transform .25s ease; }
.dash-note-danger { border-left-color:#9a4940; }
.dash-note-danger .dash-note-icon { background:#fbecea; color:#9a4940; }

/* Hatıra Panom: kim gönderdi? */
.dash-senders { margin:0 0 28px; padding:20px; background:#fff; border:1px solid #efe4e1; border-radius:4px; }
.dash-senders-head { display:flex; align-items:baseline; justify-content:space-between; gap:6px 18px; flex-wrap:wrap; margin-bottom:14px; }
.dash-senders-head h2 { margin:0; font-size:26px; color:#3d3533; }
.dash-senders-head p { margin:0; font-size:13.5px; color:#8a7d79; }
.sender-chips { display:flex; flex-wrap:wrap; gap:8px; }
.sender-chip { appearance:none; display:inline-flex; align-items:center; gap:10px; min-height:48px; padding:6px 14px 6px 6px; border:1px solid #e8dcd8; border-radius:4px; background:#fffdfc; color:var(--ink); text-align:left; cursor:pointer; transition:border-color .2s, background .2s; }
.sender-chip:hover { border-color:var(--rose-300); }
.sender-chip.is-active { border-color:#875059; background:#875059; color:#fff; }
.sender-avatar { width:34px; height:34px; flex-shrink:0; display:grid; place-items:center; border-radius:4px; background:#f3e6e7; color:#875059; font:700 16px var(--serif); }
.sender-chip.is-active .sender-avatar { background:rgba(255,255,255,.18); color:#fff; }
.sender-text { display:flex; flex-direction:column; line-height:1.25; min-width:0; }
.sender-text strong { font-size:14px; font-weight:750; max-width:200px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sender-text small { font-size:12px; color:#8a7d79; }
.sender-chip.is-active .sender-text small { color:rgba(255,255,255,.8); }
.sender-active { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:14px 0 0; font-size:13.5px; color:#6f625e; }
.sender-active[hidden] { display:none; }
.sender-active button { padding:0; border:0; background:none; color:#875059; font-weight:800; text-decoration:underline; cursor:pointer; }
.toast.is-success { background:#3e6d48; }
.reveal { opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s ease; }.reveal.delay-1 { transition-delay:.12s; }.reveal.delay-2 { transition-delay:.24s; }.reveal.is-visible { opacity:1; transform:none; }
@media (max-width: 900px) {
  .main-nav { position:absolute; left:20px; right:20px; top:74px; display:none; flex-direction:column; align-items:stretch; gap:0; padding:10px; background:white; border:1px solid var(--beige-200); border-radius:4px; box-shadow:var(--shadow); }.main-nav.is-open { display:flex; }.dash-hero-inner { align-items:flex-start; }.dash-actions { align-items:stretch; width:100%; }.dash-logout { justify-content:space-between; }.dash-stats { grid-template-columns:repeat(2, minmax(0, 1fr)); }.product-grid { grid-template-columns:1fr 1fr; }.product-extras { grid-template-columns:1fr 1fr; }.product-extras-head { grid-column:1 / -1; }.product-detail-grid { grid-template-columns:1fr; gap:30px; }.product-gallery { position:static; }.product-visual.is-large { aspect-ratio:16 / 9; }.main-nav { margin-left:0; }.header-inner { gap:12px; }.header-login { margin-left:auto; min-height:38px; padding:0 14px; font-size:13px; }.auth-card { grid-template-columns:1fr; }.auth-aside { padding:30px 28px; gap:0; }.auth-aside small { display:none; }.auth-aside::after { width:180px; height:180px; right:-70px; bottom:-70px; }.nav-link { padding:13px 15px; }.nav-link::after { display:none; }.mobile-menu-button { display:block; }
  .home-hero-grid,.split-feature,.story-grid,.contact-grid { grid-template-columns:1fr; }.home-hero { padding:72px 0 80px; }.home-hero-grid { gap:56px; }.hero-copy { text-align:center; }.hero-copy h1 { font-size:clamp(50px, 10vw, 84px); }.hero-copy > p { margin-left:auto; margin-right:auto; }.hero-actions,.hero-features { justify-content:center; }.hero-features li { align-items:center; }.hero-art { max-width:520px; margin:0 auto; width:calc(100% - 16px); }.steps-grid,.values-grid { grid-template-columns:1fr; }.cta-card { flex-direction:column; align-items:flex-start; padding:56px 44px; gap:32px; }.cta-card h2 { font-size:clamp(34px, 6.4vw, 52px); }.split-feature { gap:50px; }.feature-visual { min-height:560px; }.story-grid,.contact-grid { gap:40px; }.memory-grid { columns:2; column-gap:22px; }.memory-card { margin-bottom:26px; }
}
@media (max-width: 600px) {
  .container { width:min(100% - 28px,1160px); }.section { padding:78px 0; }.header-inner { min-height:72px; }.header-login { padding:0 12px; }.dash-section { padding-top:22px; }.dash-hero { padding:34px 0 28px; }.dash-hero h1 { font-size:40px; }.dash-meta { font-size:10.5px; gap:8px; letter-spacing:.12em; }.dash-link { padding:14px; }.dash-link-buttons .button { flex:1 1 auto; }.dash-stats { gap:10px; }.dash-stat { padding:16px 14px 14px; }.dash-stat strong { font-size:32px; }.dash-note { padding:14px; gap:12px; margin-bottom:22px; }.dash-note p { font-size:13.5px; }.dash-toolbar .memory-filters { width:100%; }.dash-search { width:100%; }.dash-search input { font-size:16px; }.concealed-badge { top:18px; left:18px; }.memory-owner-bar { margin:0 -10px; padding:10px; }.products-hero.compact { padding:56px 0 44px; }.products-hero p { font-size:15.5px; }.products-section { padding-top:36px; }.product-grid,.product-grid.is-two { grid-template-columns:1fr; gap:16px; }.product-extras { grid-template-columns:1fr; padding:22px 18px; gap:14px; margin-top:32px; }.product-detail { padding-top:22px; }.breadcrumb { margin-bottom:18px; }.product-highlights { gap:8px; }.product-highlights li { padding:10px 6px; }.product-highlights strong { font-size:13.5px; }.product-highlights span { font-size:11px; }.product-detail-price { font-size:30px; }.option-card { padding:13px 14px; gap:10px; }.option-label { font-size:14px; }.option-price { font-size:12.5px; }.design-list { grid-template-columns:repeat(3, minmax(0, 1fr)); gap:8px; }.design-zoom { width:30px; height:30px; }.auth-section { padding:28px 0 56px; place-items:start center; min-height:0; }.auth-aside { padding:24px 22px; }.auth-aside h2 { font-size:26px; margin:10px 0 8px; }.auth-aside p { font-size:14px; }.auth-form-wrap { padding:28px 22px 26px; }.auth-form-wrap h1 { font-size:28px; }.auth-lead { margin-bottom:22px; }.auth-form input { font-size:16px; }.brand-logo { height:62px; }.footer-brand .brand-logo { height:108px; }.home-hero { padding:52px 0 64px; }.hero-eyebrow { font-size:10.5px; letter-spacing:.16em; }.hero-copy h1 { font-size:clamp(42px, 13vw, 56px); margin:18px 0 22px; }.hero-copy > p { font-size:16px; line-height:1.7; }.hero-actions { margin-top:28px; }.hero-actions .button { width:100%; }.hero-features { margin-top:30px; gap:14px 28px; }.home-hero-grid { gap:44px; }.polaroid { padding:2.4% 2.4% 12%; }.hero-rings { right:-2%; }.steps-grid { gap:14px; }.step-card { min-height:0; padding:28px; }.feature-visual { min-height:500px; border-radius:4px; }.phone-mock { transform:scale(.88); }.cta-card { padding:44px 24px; border-radius:4px; gap:28px; }.cta-card p { font-size:15px; }.cta-card .button-light { width:100%; }.page-hero.compact { padding:82px 0; }.footer-grid { grid-template-columns:1fr; gap:36px; }.couple-hero { min-height:680px; padding:70px 0; }.couple-hero::after { width:410px; height:500px; top:70px; }.couple-hero h1 { font-size:58px; }.couple-meta { gap:9px; font-size:9px; }.couple-intro { font-size:15px; }.story-band { grid-template-columns:1fr; gap:12px; }.story-ornament { display:none; }.story-band p { font-size:20px; }.memories-heading { align-items:flex-start; flex-direction:column; gap:18px; margin-bottom:24px; }.memories-heading .button-primary { width:100%; }.memory-filters { flex-wrap:nowrap; overflow-x:auto; margin:0 -14px 16px; padding:0 14px; scrollbar-width:none; }.memory-filters::-webkit-scrollbar { display:none; }.memory-filter { flex-shrink:0; }.memory-grid { columns:1; padding:4px 4px 0; }.memory-card { padding:10px 10px 0; margin-bottom:24px; rotate:-.8deg; }.memory-card:nth-child(3n+2),.memory-card:nth-child(4n) { rotate:.8deg; }.memory-card:nth-child(3n) { rotate:-.3deg; }.memory-body p { font-size:16px; }.lightbox-dialog { padding:64px 8px 16px; gap:0; }.lightbox-arrow { position:absolute; top:50%; transform:translateY(-50%); width:40px; height:40px; font-size:26px; background:rgba(0,0,0,.35); }.lightbox-arrow.prev { left:8px; }.lightbox-arrow.next { right:8px; }.modal { padding:10px; align-items:end; }.modal-dialog { max-height:calc(100dvh - 20px); padding:22px 18px 18px; border-radius:4px; }.modal-dialog::-webkit-scrollbar { width:6px; }.modal-dialog::-webkit-scrollbar-thumb { border-width:1px; }.modal-head { margin-bottom:16px; }.modal-head h2 { font-size:24px; }.modal-close { width:36px; height:36px; font-size:19px; }.upload-drop { min-height:88px; }.memory-form .field input,.memory-form .field textarea { font-size:16px; }.memory-form .field textarea { min-height:100px; }.file-preview { grid-template-columns:repeat(5, 1fr); gap:6px; }.modal-actions { flex-direction:column-reverse; gap:8px; }.modal-actions .button { width:100%; min-height:48px; }.toast { top:84px; width:calc(100% - 28px); text-align:center; }.form-card { padding:26px; }
}

@media (max-width: 600px) {
  .dash-senders { padding:16px 14px; margin-bottom:22px; }
  .dash-senders-head h2 { font-size:22px; }
  .sender-chips { flex-wrap:nowrap; overflow-x:auto; margin:0 -14px; padding:0 14px 4px; scrollbar-width:none; }
  .sender-chips::-webkit-scrollbar { display:none; }
  .sender-chip { flex-shrink:0; }
}

/* Misafir sayfası: uzun etkinlik adı, süresi dolmuş etkinlik */
.couple-hero h1.is-long { font-size:clamp(40px, 6vw, 76px); }
.couple-closed { max-width:560px; margin:-10px auto 26px; padding:10px 14px; border-radius:4px; background:rgba(255,255,255,.7); color:#7f4f4b; font-size:14px; }

/* Hatıra Panom: QR kod ve paket bilgisi */
.dash-qr { display:grid; grid-template-columns:auto 1fr; gap:32px; align-items:center; margin:0 0 28px; padding:24px; background:#fff; border:1px solid #efe4e1; border-radius:4px; }
.dash-qr-code { margin:0; display:flex; flex-direction:column; align-items:center; gap:12px; text-align:center; }
.dash-qr-code img { width:220px; height:220px; image-rendering:pixelated; border:1px solid #efe4e1; border-radius:4px; background:#fff; }
.dash-qr-code figcaption { max-width:220px; font-size:12.5px; color:#8a7d79; }
.dash-qr-code .button { min-height:42px; padding:0 16px; gap:8px; font-size:14px; }
.dash-qr-code .button svg, .dash-qr-info svg { width:17px; height:17px; }
.dash-qr-missing { width:220px; height:220px; display:grid; place-items:center; border:1px dashed #e3d3d1; border-radius:4px; color:#9b8f8b; font-size:13px; }
.dash-qr-info h2 { margin:0 0 14px; font-size:28px; color:#3d3533; }
.dash-qr-info dl { margin:0; display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:14px 24px; }
.dash-qr-info dt { font-size:11.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:#a0666e; }
.dash-qr-info dd { margin:3px 0 0; font-size:15px; color:#3d3533; }
.dash-badge { display:inline-block; margin-left:6px; padding:2px 8px; border-radius:4px; background:#fbecea; color:#9a4940; font-size:12px; font-weight:800; }
.dash-storage { margin-top:18px; }
.dash-storage-head { display:flex; justify-content:space-between; gap:12px; font-size:13px; color:#6f625e; margin-bottom:6px; }
.dash-storage-head strong { color:#3d3533; font-variant-numeric:tabular-nums; }
.dash-storage-bar { height:8px; border-radius:4px; background:#f3e9e6; overflow:hidden; }
.dash-storage-bar span { display:block; height:100%; min-width:2px; background:#875059; border-radius:4px; }
.dash-qr-link { margin:16px 0 0; font-size:13.5px; color:#6f625e; overflow-wrap:anywhere; }
.dash-qr-link a { color:#875059; font-weight:700; }

/* Yönetim paneli */
.admin-page { background:#f8f4f1; }
.admin-bar { position:sticky; top:0; z-index:20; background:#fff; border-bottom:1px solid #efe4e1; }
.admin-bar-inner { min-height:64px; display:flex; align-items:center; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.admin-brand { display:flex; align-items:center; gap:10px; font-weight:800; color:#3d3533; }
.admin-brand img { width:40px; height:40px; object-fit:contain; }
.admin-nav { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.admin-nav > a:not(.button) { padding:8px 10px; font-size:14px; font-weight:700; color:#6e4b45; }
.admin-nav .button { min-height:40px; padding:0 16px; font-size:14px; }
.admin-nav form { margin:0; }
.admin-nav form button { min-height:40px; padding:0 14px; border:1px solid #e3d3d1; border-radius:4px; background:#fff; color:#6e4b45; font-weight:700; cursor:pointer; }
.admin-main { min-height:calc(100vh - 65px); }
.admin-auth { min-height:calc(100vh - 65px); }
.admin-login-card { max-width:460px; margin:0 auto; grid-template-columns:1fr; }
.admin-section { padding:36px 0 64px; }
.admin-narrow { max-width:920px; }
.admin-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-bottom:22px; }
.admin-head h1 { margin:0; font-size:36px; color:#3d3533; }
.admin-head p { margin:6px 0 0; color:#7a6d69; font-size:14.5px; max-width:620px; }
.admin-table-wrap { overflow-x:auto; background:#fff; border:1px solid #efe4e1; border-radius:4px; }
.admin-table { width:100%; border-collapse:collapse; font-size:14px; }
.admin-table th { text-align:left; padding:12px 14px; font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; color:#a0666e; border-bottom:1px solid #efe4e1; white-space:nowrap; }
.admin-table td { padding:12px 14px; border-bottom:1px solid #f5ece9; vertical-align:top; color:#3d3533; }
.admin-table tr:last-child td { border-bottom:0; }
.admin-table small { display:block; color:#8a7d79; font-size:12.5px; }
.admin-table .num { text-align:right; font-variant-numeric:tabular-nums; }
.admin-link { color:#875059; font-weight:800; white-space:nowrap; }
.admin-empty { padding:48px 20px; text-align:center; background:#fff; border:1px dashed #e3d3d1; border-radius:4px; }
.admin-form fieldset { margin:0 0 18px; padding:20px; border:1px solid #efe4e1; border-radius:4px; background:#fff; }
.admin-form legend { padding:0 6px; font-size:12px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:#a0666e; }
.admin-form legend span { text-transform:none; letter-spacing:0; font-weight:600; color:#9b8f8b; }
.admin-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:14px 18px; }
.admin-field { display:block; font-size:13px; font-weight:750; color:var(--ink); }
.admin-field input, .admin-field select { display:block; width:100%; margin-top:6px; min-height:46px; padding:0 12px; border:1px solid #e3d6d2; border-radius:4px; background:#fffdfc; font-size:15px; font-weight:400; color:var(--ink); outline:0; }
.admin-field input:focus, .admin-field select:focus { border-color:#b4878d; box-shadow:0 0 0 4px rgba(135,80,89,.1); }
.admin-field.has-error input, .admin-field.has-error select { border-color:#c46a60; }
.admin-field-error { display:block; margin-top:5px; color:#9a4940; font-weight:600; }
.admin-field-hint { display:block; margin-top:5px; color:#9b8f8b; font-weight:500; }
.admin-password { display:flex; gap:8px; }
.admin-password input { flex:1; }
.admin-password button { margin-top:6px; padding:0 14px; border:1px solid #e3d3d1; border-radius:4px; background:#fff; color:#6e4b45; font-weight:800; cursor:pointer; }
.admin-actions { display:flex; justify-content:flex-end; gap:10px; }
.admin-actions .button { min-height:50px; padding:0 26px; }
.admin-customer { display:grid; grid-template-columns:auto 1fr; gap:30px; align-items:start; padding:24px; background:#fff; border:1px solid #efe4e1; border-radius:4px; }
.admin-qr { margin:0; display:flex; flex-direction:column; align-items:center; gap:10px; text-align:center; }
.admin-qr img { width:260px; height:260px; image-rendering:pixelated; border:1px solid #efe4e1; border-radius:4px; }
.admin-qr figcaption { font-size:13px; overflow-wrap:anywhere; max-width:260px; }
.admin-qr figcaption a { color:#875059; font-weight:700; }
.admin-details { margin:0; display:grid; gap:14px; }
.admin-details dt { font-size:11.5px; font-weight:800; letter-spacing:.08em; text-transform:uppercase; color:#a0666e; }
.admin-details dd { margin:3px 0 0; font-size:15px; color:#3d3533; }
.admin-credentials { padding:14px 16px; border-radius:4px; background:#fbf6f3; border:1px solid #efe4e1; display:grid; grid-template-columns:auto 1fr; gap:6px 14px; align-items:baseline; }
.admin-credentials dd { margin:0; font-family:ui-monospace, Menlo, monospace; font-size:16px; font-weight:700; }
.admin-credentials p { grid-column:1 / -1; margin:4px 0 0; font-size:12.5px; color:#8a7d79; }
.admin-section .alert { font-size:14px; }

@media (max-width: 760px) {
  .dash-qr { grid-template-columns:1fr; gap:22px; padding:18px; }
  .dash-qr-info dl { grid-template-columns:1fr; }
  .admin-grid { grid-template-columns:1fr; }
  .admin-customer { grid-template-columns:1fr; justify-items:center; }
  .admin-details { width:100%; }
  .admin-head h1 { font-size:30px; }
  .admin-actions { flex-direction:column-reverse; }
  .admin-actions .button { width:100%; }
}

/* Örnek anı sayfası bilgisi */
.demo-banner { display:flex; flex-direction:column; align-items:center; gap:6px; max-width:560px; margin:0 auto 8px; padding:16px 20px; border:1px dashed #dfbfb5; border-radius:4px; background:rgba(255,255,255,.75); color:#6f625e; font-size:14.5px; }
.demo-banner strong { color:#7f4f4b; font-size:15px; }
.demo-banner .button { margin-top:8px; }
