:root { color-scheme: dark; --bg:#080d18; --card:#111a28; --text:#f5f1e9; --muted:#aeb8c9; --gold:#efd5a3; --cyan:#b6d5dd; --line:#283345 }
* { box-sizing:border-box }
[hidden] { display:none !important }
html { scroll-behavior:smooth; scroll-padding-top:24px }
body { margin:0; background:radial-gradient(ellipse at 75% 12%,#1a29403d,transparent 48%),var(--bg); color:var(--text); font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; line-height:1.65 }
body::before { content:''; position:fixed; inset:0; pointer-events:none; z-index:-1; opacity:.35; background-image:radial-gradient(1px 1px at 12% 16%,#fff 60%,transparent),radial-gradient(1px 1px at 82% 38%,#fff 60%,transparent),radial-gradient(1px 1px at 40% 76%,#fff 60%,transparent); background-size:310px 350px,490px 430px,580px 610px }
a { color:var(--cyan); text-underline-offset:4px }
a:hover { color:var(--text) }
button,input,select,textarea { font:inherit }
button,a,input,select,textarea,summary { -webkit-tap-highlight-color:transparent }
:focus-visible { outline:3px solid var(--gold); outline-offset:5px }
h1,h2 { font-family:Georgia,'Times New Roman',serif; font-weight:400; line-height:1.08; letter-spacing:-.045em; text-wrap:balance }
h1 { font-size:clamp(2.7rem,6vw,5.5rem) }
h2 { font-size:clamp(2rem,4vw,3rem); margin:0 0 32px }
h3 { font-size:1.3rem; font-weight:500; margin:0 }
p { margin:0 0 20px }
main,footer,.nav { max-width:1200px; margin-inline:auto; padding-inline:32px }
.nav { display:flex; justify-content:space-between; align-items:center; gap:24px; min-height:100px; border-bottom:1px solid var(--line) }
.brand { display:flex; align-items:center; gap:12px; white-space:nowrap; font-size:.82rem; font-weight:600; letter-spacing:.14em; text-transform:uppercase; color:var(--text); text-decoration:none }
.brand-sign { width:52px; height:39px; display:block; filter:drop-shadow(0 4px 10px #efd5a326) }
.nav nav { display:flex; align-items:center; gap:26px }
.nav nav a { font-size:.88rem; text-decoration:none; color:var(--muted) }
.nav nav .btn { color:var(--bg) }
.btn { display:inline-flex; align-items:center; justify-content:center; gap:18px; min-height:46px; padding:12px 22px; border-radius:999px; background:var(--gold); color:var(--bg); border:1px solid transparent; font-weight:600; text-decoration:none; cursor:pointer; transition:background .2s,transform .2s }
.btn:hover { color:var(--bg); background:#ffe7bf; transform:translateY(-2px) }
.btn.big { padding:16px 28px; font-size:1rem }
.eyebrow,.gift-pre { color:var(--gold); font-size:.7rem; font-weight:600; letter-spacing:.19em; text-transform:uppercase; margin:0 0 20px }
section { padding:80px 0 }
.hero { display:grid; grid-template-columns:1fr 1.05fr; gap:50px; align-items:center; min-height:730px; padding:64px 0 76px }
.hero h1 { margin:0 0 26px; max-width:560px }
.hero p:not(.eyebrow) { color:var(--muted); max-width:460px }
.hero-actions { display:flex; flex-wrap:wrap; align-items:center; gap:24px; margin:30px 0 18px }
.text-link { font-size:.88rem; text-decoration:none; border-bottom:1px solid #b6d5dd55; padding-bottom:3px }
.small { color:var(--muted); font-size:.82rem }
.hero .small { margin-bottom:10px }
.badge { display:inline-block; padding:5px 13px; border:1px solid var(--line); border-radius:999px; color:var(--muted); font-size:.78rem; line-height:1.5 }
.badge-row { margin:0 0 16px !important }
.badge.gold { position:absolute; top:-13px; right:22px; background:var(--gold); color:var(--bg); border-color:transparent; font-size:.66rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase }
.hero-moon { position:relative; display:grid; gap:10px; min-width:0; border:1px solid var(--line); border-radius:200px 200px 24px 24px; padding:30px 18px 18px; background:radial-gradient(ellipse at 50% 35%,#29415f55,transparent 65%),#0e162280 }
.hero-moon::before { content:''; position:absolute; width:85%; height:45%; left:7.5%; top:22%; border:1px solid #efd5a32c; border-radius:50%; transform:rotate(-25deg); pointer-events:none }
.moon-label { text-align:center; color:var(--muted); font-size:.65rem; letter-spacing:.15em; text-transform:uppercase }
model-viewer { width:100%; height:420px; border-radius:20px; background:radial-gradient(circle at 50% 50%,#22314a55,transparent 70%); --poster-color:transparent }
.hero model-viewer { background:transparent }
.moon-caption { text-align:center; font-size:.75rem; margin:0 0 14px !important; max-width:none !important }
.live-dot { display:inline-block; width:5px; height:5px; background:var(--gold); border-radius:50%; vertical-align:middle; margin-right:6px }
.ar-desktop { display:flex; gap:14px; align-items:center; border-top:1px solid var(--line); padding:18px 2px 0; font-size:.75rem }
.ar-desktop svg { width:64px; height:64px; flex:none; background:#fff; padding:4px; border-radius:8px }
.ar-desktop p { margin:0; line-height:1.6 }
.steps,.examples-section,.tiers,.faq { border-top:1px solid var(--line) }
.steps ol { list-style:none; padding:0; margin:0; display:grid; grid-template-columns:repeat(3,1fr); gap:24px; counter-reset:step }
.steps li { counter-increment:step; color:var(--muted); padding:24px; border:1px solid var(--line); border-radius:18px; background:#111a2866 }
.steps li::before { content:'0' counter(step); display:block; color:var(--gold); font-family:Georgia,serif; font-size:2rem; margin-bottom:18px }
.steps li strong { color:var(--text) }
.cards,.examples { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr)); gap:24px }
.card { background:linear-gradient(135deg,#172131,#101824); padding:28px; border-radius:22px; border:1px solid var(--line); min-width:0 }
.examples .card { display:flex; flex-direction:column; gap:16px }
.examples .card p { margin:0; color:var(--muted); font-size:.9rem }
.examples .card>a:not(.gift-example) { margin-top:auto; font-size:.8rem }
.preview { display:block; overflow:hidden; border-radius:10px; border:1px solid #354051; max-width:100%; margin-inline:auto }
.preview iframe { border:0; pointer-events:none; transform-origin:0 0 }
.preview-btn { display:block; width:100%; padding:0; border:0; background:none; cursor:zoom-in; border-radius:10px }
.preview-btn:hover .preview { border-color:var(--gold) }
.preview-dialog { border:0; padding:0; border-radius:16px; max-width:92vw; max-height:92vh; overflow:auto; background:var(--card); color:var(--text) }
.preview-dialog::backdrop { background:rgba(0,0,0,.7) }
.preview-dialog .preview { border:0; border-radius:0 }
.preview-dialog { --cert-s:.8; --map-s:.6 }
.preview-dialog[data-kind=cert] .preview { width:calc(210mm * var(--cert-s)); height:calc(297mm * var(--cert-s)) }
.preview-dialog[data-kind=cert] iframe { width:210mm; height:297mm; transform:scale(var(--cert-s)) }
.preview-dialog[data-kind=map] .preview { width:calc(1600px * var(--map-s)); height:calc(800px * var(--map-s)) }
.preview-dialog[data-kind=map] iframe { width:1600px; height:800px; transform:scale(var(--map-s)) }
@media (max-width:900px) { .preview-dialog { --cert-s:.72; --map-s:.42 } }
@media (max-width:680px) { .preview-dialog { --cert-s:.42; --map-s:.21; max-width:96vw; border-radius:12px } .dialog-close { margin:8px; min-height:38px; padding:8px 14px } }
.dialog-close { position:sticky; top:12px; float:right; margin:12px; z-index:1 }
.preview.cert { width:calc(210mm * .34); height:calc(297mm * .34); align-self:center }
.preview.cert iframe { width:210mm; height:297mm; transform:scale(.34) }
.preview.map { width:100%; aspect-ratio:2 / 1 }
.preview.map iframe { width:1600px; height:800px; transform:scale(.19) }
.gift-example { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:18px; min-height:360px; text-decoration:none; color:var(--text); border-radius:12px; background:radial-gradient(ellipse at center,#25355080,transparent 70%); text-align:center }
.gift-example .eyebrow { margin:0 }
.gift-example strong { font-family:Georgia,serif; font-size:1.9rem; font-weight:400 }
.mini-moon,.gift-orb { border-radius:50%; background:radial-gradient(circle at 30% 25%,#fff2,transparent 50%),url('/assets/moon_1k.jpg') 50% 50% / auto 100%; box-shadow:inset -24px -12px 32px #000c,0 0 60px #b6d5dd18 }
.mini-moon { display:block; width:125px; height:125px }
.occasions { text-align:center; padding:56px 24px; margin-bottom:72px; border-radius:22px; background:#17213177; border:1px solid var(--line) }
.occasions h2 { font-size:2rem; margin-bottom:16px }
.occasions p { color:var(--muted); margin:0; word-spacing:.25em }
.tiers .card { position:relative; display:flex; flex-direction:column; align-items:flex-start; transition:transform .2s,border-color .2s }
.tiers .card:hover { transform:translateY(-3px); border-color:var(--gold) }
.tiers .card>.small { margin:8px 0 20px }
.tiers ul+.small { margin-top:-10px }
.tiers ul { padding-left:20px; margin:16px 0 30px; color:var(--muted); flex:1 }
.tiers li { padding:5px 0 }
.tiers .btn { width:100% }
.print-tier { border-color:#efd5a366 }
.badge.soldout { position:absolute; top:-13px; right:22px; background:var(--bg); font-size:.66rem; font-weight:600; letter-spacing:.1em; text-transform:uppercase }
.btn.disabled { opacity:.45; cursor:not-allowed; pointer-events:none; text-align:center }
#shipping { display:grid; gap:12px }
#shipping label { display:grid; padding:0 }
#shipping .small { margin:0 }
.price { font-size:2.8rem; letter-spacing:-.06em; line-height:1.2; color:var(--gold); margin:0 }
.price small { font-size:.7rem; color:var(--muted); letter-spacing:0; font-weight:400 }
.mono { font-family:ui-monospace,monospace; color:var(--cyan); font-size:.8rem; overflow-wrap:anywhere }
details { background:#111a2866; padding:20px 24px; border:1px solid var(--line); border-radius:14px; margin-bottom:12px }
summary { cursor:pointer; font-weight:500; padding-block:2px }
details[open] summary { margin-bottom:14px }
details p,details ul { color:var(--muted) }
.order { display:grid; gap:22px; max-width:700px; margin:48px auto; padding:36px; border:1px solid var(--line); border-radius:24px; background:#111a28b3 }
.order h1 { font-size:3rem; margin:0 0 8px }
.order .eyebrow { margin:0 }
.order label { display:grid; gap:8px; font-size:.9rem }
.order input,.order select,.order textarea,.verify input,.share input { min-width:0; width:100%; padding:13px 14px; border-radius:10px; border:1px solid #3a465b; background:var(--bg); color:var(--text); font:inherit }
.order textarea { min-height:110px; resize:vertical }
.order fieldset { border:1px solid var(--line); border-radius:14px; padding:18px }
.order fieldset label,.order .consent { display:flex; gap:12px; align-items:flex-start }
.order fieldset label { padding:8px 0 }
.order input[type=radio],.order input[type=checkbox] { width:18px; height:18px; margin-top:5px; flex:none; accent-color:var(--gold) }
.order .consent { color:var(--muted); font-size:.8rem }
.order>p.small { margin:0 }
.flag { display:grid; place-items:center; width:min(240px,100%); min-height:100px; padding:12px; background:var(--bg); border:2px solid var(--gold); border-radius:0 10px 10px 0; color:var(--gold); font-weight:600; font-size:1.3rem; text-align:center; overflow-wrap:anywhere }
.region-cards { display:grid; grid-template-columns:repeat(3,1fr); gap:12px }
.region-card { display:grid; gap:8px; justify-items:center; text-align:center; padding:16px 10px; border-radius:14px; border:1px solid var(--line); background:var(--bg); color:var(--text); cursor:pointer; min-width:0; font-size:.8rem }
.region-card.selected { border-color:var(--gold); background:#efd5a30a; box-shadow:0 0 0 1px var(--gold) }
.region-card .thumb { width:56px; height:56px; border-radius:50%; border:1px solid #465366 }
.region-card small { color:var(--muted); font-size:.7rem }
.errors { background:#3a1020; border:1px solid #ff5577; padding:12px; border-radius:12px }
.gift { text-align:center; padding:48px 0 64px; min-height:calc(100svh - 100px) }
.gift #intro { max-width:760px; margin:auto; padding:20px }
.gift-orb { position:relative; width:180px; height:180px; margin:20px auto 55px }
.gift-orb::before { content:''; position:absolute; inset:-26px -55px; border:1px solid #efd5a34d; border-radius:50%; transform:rotate(-25deg) }
.gift-orb::after { content:'✦'; position:absolute; top:-20px; right:-34px; color:var(--gold); font-size:20px }
.gift h1 { font-size:clamp(3rem,7vw,5rem); margin:0 0 20px; overflow-wrap:anywhere }
.gift-note { color:var(--muted); margin-bottom:28px }
.gift #intro>.small { margin-top:20px }
.gift model-viewer { height:56svh; min-height:320px; max-height:650px }
.ar model-viewer { height:65svh }
.ar-btn { position:absolute; bottom:16px; left:50%; transform:translateX(-50%); white-space:nowrap }
.ar-btn:hover { transform:translateX(-50%) translateY(-2px) }
.hint { margin:12px 0 }
.message { opacity:0; transition:opacity 1.2s; max-width:700px; margin:32px auto 0; padding:28px; border-top:1px solid var(--line); overflow-wrap:anywhere }
.message.show { opacity:1 }
.quote { font-family:Georgia,serif; font-style:italic; font-size:clamp(1.4rem,3vw,2rem); line-height:1.5; margin:16px 0 }
.from { color:var(--gold); margin:0 0 16px }
.prev-name { font-family:Georgia,serif; font-size:2rem; margin:4px 0; overflow-wrap:anywhere }
.gift-preview { display:grid; gap:4px; justify-items:center; text-align:center; padding:24px; overflow-wrap:anywhere }
.gift-preview .flag { margin-bottom:20px }
.gift-preview p { margin-bottom:8px }
.gift-preview .quote:empty { display:none }
.share { margin-top:28px; padding:24px; background:var(--card); border:1px solid var(--line); border-radius:18px }
.share h2 { font-size:2rem; margin:0 0 16px }
.share p { display:flex; flex-wrap:wrap; gap:10px; margin:18px 0 0 }
.share p.small { display:block }
.verify form { display:flex; gap:12px; max-width:600px }
.verify dl { max-width:600px; padding:24px; background:var(--card); border-radius:18px }
.verify dd { margin:0 0 16px; color:var(--muted) }
.legal { max-width:760px; margin:48px auto }
.legal h1 { font-size:3rem }
.status { min-height:60vh }
.status h1 { margin-top:0 }
footer { padding-block:32px; margin-top:32px; border-top:1px solid var(--line); color:var(--muted); font-size:.72rem }
footer p { margin-bottom:12px }
@media (max-width:900px) { .nav nav { gap:16px } .hero { gap:28px; min-height:0 } .hero h1 { font-size:4rem } .hero-actions { gap:18px } .examples { grid-template-columns:1fr 1fr } .examples .card:last-child { grid-column:1 / -1 } .gift-example { min-height:300px } }
@media (max-width:680px) { main,footer,.nav { padding-inline:20px } .nav { min-height:104px; flex-wrap:wrap; justify-content:center; gap:12px; padding-block:18px } .nav nav { width:100%; justify-content:space-between; gap:8px } .nav nav a { font-size:.72rem } .nav nav .btn { padding:9px 12px; min-height:40px } section { padding:48px 0 } .hero { grid-template-columns:1fr; padding:44px 0 48px; gap:36px } .hero h1 { font-size:clamp(3.5rem,13vw,5rem) } .hero-actions { gap:18px; margin-top:24px } .hero .small { font-size:.74rem } .hero-moon { padding:26px 14px 16px } model-viewer { height:330px } .hero model-viewer { height:330px } .steps ol { grid-template-columns:1fr; gap:12px } .steps li { padding:20px } .steps li::before { font-size:1.5rem; margin-bottom:8px } .examples { grid-template-columns:1fr } .examples .card:last-child { grid-column:auto } .preview.map iframe { transform:scale(.19) } .occasions { margin-bottom:48px; padding:32px 16px } .occasions p { font-size:.85rem; word-spacing:0 } .card { padding:24px } .order { padding:24px 18px; margin:32px auto } .order h1 { font-size:2.6rem } .region-cards { gap:8px } .region-card { padding:12px 6px; font-size:.73rem } .region-card small { font-size:.65rem } .region-card .thumb { width:45px; height:45px } .gift { padding-top:36px } .gift #intro { padding:12px 0 } .gift-orb { width:145px; height:145px; margin-bottom:50px } .gift-pre { font-size:.65rem; letter-spacing:.12em } .message { padding:20px 0 } .verify form { flex-wrap:wrap } .verify form .btn { width:100% } }
@media (hover:none) and (pointer:coarse) { .ar-desktop { display:none } }
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto } *,*::before,*::after { transition:none !important; animation:none !important } }
