:root{--navy: #0b1a33;--ink: #fdf8ef;--muted: rgba(253, 248, 239, .68);--red: #d7263d;--red-dark: #a8142a;--gold: #f2c14e;--glass: rgba(10, 22, 44, .55);--line: rgba(255, 255, 255, .14);--radius: 18px;--font: "Montserrat", system-ui, -apple-system, sans-serif;--serif: "Playfair Display", Georgia, serif}
*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none}body{position:fixed;inset:0;background:var(--navy);color:var(--ink);font-family:var(--font);overflow:hidden;-webkit-font-smoothing:antialiased}[hidden]{display:none!important}button,input,textarea{font:inherit;
color:inherit}#scene{position:fixed;inset:0}#scene canvas{display:block;width:100%;height:100%;touch-action:none}.loading{position:fixed;inset:0;z-index:50;display:grid;place-content:center;justify-items:center;gap:16px;background:var(--navy);transition:opacity .6s ease,visibility .6s}.loading.done{
opacity:0;visibility:hidden}.spinner{width:44px;height:44px;border-radius:50%;border:3px solid rgba(255,255,255,.15);border-top-color:var(--gold);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
min-height:48px;padding:0 22px;border-radius:999px;border:1px solid transparent;font-weight:700;font-size:15px;text-decoration:none;cursor:pointer;transition:transform .15s ease,background .2s ease,box-shadow .2s ease;white-space:nowrap}.btn:active{transform:scale(.97)}.btn:focus-visible,.chip:focus-visible,
.tpl:focus-visible,.swatch:focus-visible,.segmented button:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.btn-primary{background:linear-gradient(180deg,#e8344b,var(--red-dark));color:#fff;box-shadow:0 8px 24px #d7263d73,inset 0 1px #ffffff40}.btn-primary:hover{box-shadow:0 10px 30px
#d7263d99,inset 0 1px #ffffff40}.btn-light{background:#fdf8ef;color:#1a1a1a}.btn-light:hover{background:#fff}.btn-ghost{background:#ffffff14;border-color:var(--line);color:var(--ink)}.btn-ghost:hover{background:#ffffff29}.btn-sm{min-height:40px;padding:0 16px;font-size:14px}.badge{display:inline-grid;
place-items:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--red);color:#fff;font-size:12px}.topbar{position:fixed;top:0;left:0;right:0;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:max(14px,env(safe-area-inset-top)) 20px 14px;pointer-events:none}
.topbar>*{pointer-events:auto}.topbar-actions{display:flex;gap:8px}.btn-icon{width:40px;padding:0;font-size:17px}body[data-view=designer] .topbar{display:none}#accountBtn.signed-in{color:var(--gold);border-color:#f2c14e80}.scene-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.scene-card{display:grid;gap:8px;padding:8px;border-radius:16px;cursor:pointer;text-align:center;border:2px solid transparent;background:#ffffff0f;font-weight:600;font-size:14px}.scene-card.active{border-color:var(--gold);background:#f2c14e1f}.scene-thumb{display:block;aspect-ratio:3 / 2;border-radius:10px;
background:center / cover no-repeat}.brand{display:flex;align-items:baseline;gap:8px;color:var(--ink);text-decoration:none}.brand-mark{font-weight:800;letter-spacing:.16em;font-size:18px}.brand-sub{font-family:Great Vibes,cursive;font-size:28px;color:var(--gold)}.overlay{position:fixed;inset:0;z-index:5;
pointer-events:none}.overlay .hero,.overlay .dock,.overlay .gift-intro{pointer-events:auto}.hero{position:absolute;top:84px;left:50%;transform:translate(-50%);width:min(560px,calc(100% - 32px));text-align:center}.eyebrow{margin:0 0 6px;font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;
color:var(--gold)}.tree-title{width:100%;margin:0;padding:4px 8px;background:transparent;border:1px dashed transparent;border-radius:12px;font-family:var(--serif);font-weight:700;font-size:clamp(30px,5.4vw,48px);line-height:1.15;text-align:center;color:#f7d98c;letter-spacing:.01em;text-shadow:0 1px 0
#e2b45a,0 2px 0 #cf9c43,0 3px 0 #b8832f,0 4px 0 #9b6a22,0 5px 0 #7e5419,0 6px 1px rgba(0,0,0,.35),0 8px 10px rgba(0,0,0,.45),0 14px 28px rgba(0,0,0,.5)}input.tree-title:hover{border-color:#ffffff40}input.tree-title:focus{outline:none;border-color:var(--gold);background:#0003}.hint{margin:8px 0 0;font-size:14px;
color:var(--muted);text-shadow:0 1px 8px rgba(0,0,0,.6)}.hint.center{text-align:center;margin:0 0 12px}.hint b{color:var(--gold)}.dock{position:absolute;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translate(-50%);display:flex;align-items:center;gap:8px;max-width:calc(100% - 24px);
padding:6px;border-radius:999px;background:#140c0873;border:1px solid var(--line);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}.dock .btn{min-height:44px}.btn-order{min-height:50px!important;padding:0 24px;font-size:16px;gap:8px;animation:order-glow 2.4s ease-in-out infinite}.btn-order
.badge{background:#fff;color:var(--red-dark)}@keyframes order-glow{0%,to{box-shadow:0 8px 24px #d7263d73,inset 0 1px #ffffff40}50%{box-shadow:0 8px 34px #ff465ad9,0 0 0 4px #f2c14e40,inset 0 1px #ffffff40}}.dock-icon{flex:none;display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;
border-radius:50%;background:#ffffff14;color:var(--ink);font-size:18px;cursor:pointer;transition:background .2s ease,transform .15s ease}.dock-icon:hover{background:#ffffff2e}.dock-icon:active{transform:scale(.94)}.dock-icon:focus-visible{outline:3px solid var(--gold);outline-offset:2px}.dock-icon svg,
#accountBtn svg{display:block}.designer{position:fixed;inset:0;z-index:20;overflow-y:auto;background:radial-gradient(1200px 700px at 20% -10%,#1f3d6b 0%,transparent 60%),linear-gradient(180deg,#0f2140,#0a1528)}.designer-top{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:16px;padding:max(14px,env(safe-area-inset-top))
24px 14px;background:#0a1528d9;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.designer-heading .eyebrow{margin:0}.designer-heading h1{margin:0;font-family:var(--serif);font-size:22px}.designer-body{display:grid;grid-template-columns:minmax(0,1.05fr)
minmax(0,1fr);gap:32px;max-width:1180px;margin:0 auto;padding:24px}.preview-pane{position:sticky;top:96px;align-self:start}.product-shot{display:block;width:100%;height:auto;border-radius:var(--radius);box-shadow:0 30px 60px #00000073}.product-meta{display:flex;justify-content:space-between;align-items:baseline;
gap:12px;margin-top:12px;font-size:14px}.product-name{font-weight:700}.muted{color:var(--muted);font-weight:500}.step{margin-bottom:28px}.step h3{display:flex;align-items:center;gap:10px;margin:0 0 12px;font-size:16px}.step h3 b{display:inline-grid;place-items:center;width:26px;height:26px;border-radius:50%;
background:var(--gold);color:#1a1a1a;font-size:13px}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.chip{flex:none;padding:8px 16px;border-radius:999px;cursor:pointer;border:1px solid var(--line);background:#ffffff0f;font-weight:600;font-size:14px}.chip.active{background:var(--ink);
color:#1a1a1a;border-color:var(--ink)}.tpl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:12px}.tpl{display:grid;gap:8px;justify-items:center;padding:12px 8px;cursor:pointer;border-radius:16px;border:2px solid transparent;background:#ffffff0d;font-size:13px;font-weight:600;
text-align:center}.tpl canvas{width:100%;max-width:104px;aspect-ratio:1;border-radius:50%;box-shadow:0 0 0 3px #ffffff59,0 8px 18px #0006}.tpl:hover{background:#ffffff1a}.tpl.active{border-color:var(--gold);background:#f2c14e1f}.fields{display:grid;gap:14px}.field-group{margin:10px 0 -4px;font-size:12px;
letter-spacing:.14em;text-transform:uppercase;color:var(--gold)}.field{display:grid;gap:6px}.field label,.field .label{font-size:13px;font-weight:600;color:var(--muted)}.field input,.controls-pane textarea,.sheet input,.sheet textarea{width:100%;padding:12px 14px;border-radius:12px;border:1px solid var(--line);
background:#ffffff0f;font-size:16px}.field input:focus,.controls-pane textarea:focus,.sheet input:focus,.sheet textarea:focus{outline:none;border-color:var(--gold);background:#ffffff1a}.controls-pane textarea,.sheet textarea{resize:vertical}.swatches{display:flex;flex-wrap:wrap;gap:10px}.swatch{width:34px;
height:34px;border-radius:50%;cursor:pointer;padding:0;background:var(--c);border:2px solid rgba(255,255,255,.25)}.swatch[aria-checked=true]{box-shadow:0 0 0 3px var(--navy),0 0 0 5px var(--gold)}.segmented{display:inline-flex;padding:4px;border-radius:999px;background:#ffffff0f;border:1px solid var(--line);
width:max-content}.segmented button{padding:8px 18px;border-radius:999px;border:0;background:none;cursor:pointer;font-weight:600;font-size:14px}.segmented button[aria-checked=true]{background:var(--ink);color:#1a1a1a}.product-shot{cursor:pointer}.product-shot.has-photo{cursor:grab;touch-action:none}
.product-shot.has-photo:active{cursor:grabbing}.photo-picker{display:flex;align-items:center;gap:14px}.photo-thumb{flex:none;width:76px;height:76px;border-radius:14px;object-fit:cover;border:1px solid var(--line);background:#ffffff0f}.photo-thumb.empty{display:grid;place-items:center;font-size:28px}
.photo-actions{display:grid;gap:6px}.small{margin:0;font-size:12px}.field input[type=range]{padding:0;border:0;background:none;accent-color:var(--gold)}.designer-actions{display:flex;flex-wrap:wrap;gap:10px;padding-bottom:40px}.designer-actions .btn-primary{flex:1;min-width:220px}.gift-intro{position:absolute;
inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center;background:radial-gradient(600px 500px at 50% 45%,#28141e59,#050a19e0);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:opacity .5s ease}.gift-intro.leaving{
opacity:0}.gift-to{margin:0;font-family:Great Vibes,cursive;font-weight:400;font-size:clamp(48px,9vw,72px);line-height:1.1;color:#fff}.gift-from{margin:0 0 8px;font-size:16px;color:var(--muted)}.giftbox{position:relative;width:200px;height:210px;margin:26px 0 10px;cursor:pointer;animation:wiggle 2.4s
ease-in-out infinite}.gb-body{position:absolute;left:10px;right:10px;bottom:0;height:150px;border-radius:8px;background:linear-gradient(90deg,transparent 43%,var(--gold) 43%,var(--gold) 57%,transparent 57%),linear-gradient(180deg,#e0344a,#9c1024);box-shadow:0 24px 50px #00000080}.gb-lid{position:absolute;
left:0;right:0;top:30px;height:46px;border-radius:8px;z-index:1;background:linear-gradient(90deg,transparent 43%,#ffd66e 43%,#ffd66e 57%,transparent 57%),linear-gradient(180deg,#f0465b,#b8162c);box-shadow:0 6px 12px #0000004d;transition:transform .7s cubic-bezier(.3,1.4,.5,1),opacity .6s ease .2s}.gb-bow{
position:absolute;left:50%;top:-30px;width:0;height:0}.gb-bow i{position:absolute;top:0;width:56px;height:36px;border-radius:50%/60% 60% 40% 40%;border:10px solid var(--gold);background:transparent}.gb-bow i:first-child{right:2px;transform:rotate(-20deg)}.gb-bow i:last-child{left:2px;transform:rotate(20deg)}
.giftbox.open{animation:none}.giftbox.open .gb-lid{transform:translateY(-170px) rotate(-28deg);opacity:0}.giftbox.open .gb-body{transition:transform .6s ease .3s,opacity .5s ease .35s;transform:scale(.6) translateY(40px);opacity:0}@keyframes wiggle{0%,70%,to{transform:rotate(0)}75%{transform:rotate(-4deg)}80%{
transform:rotate(4deg)}85%{transform:rotate(-3deg)}90%{transform:rotate(2deg)}}.gift-note{margin:12px auto 0;max-width:460px;padding:12px 16px;border-radius:14px;background:var(--glass);border:1px solid var(--line);font-size:15px;line-height:1.5;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.confetti{position:fixed;left:50%;top:55%;z-index:30;pointer-events:none}.confetti i{position:absolute;width:9px;height:14px;border-radius:2px;background:var(--c);animation:confetti var(--d) cubic-bezier(.2,.7,.4,1) var(--delay) forwards}@keyframes confetti{0%{transform:translate(0) rotate(0);opacity:1}to{
transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}.sheet{width:min(480px,calc(100% - 24px));max-height:calc(100% - 24px);padding:0;border:1px solid var(--line);border-radius:24px;background:#13264a;color:var(--ink);box-shadow:0 40px 80px #00000080}.sheet::backdrop{background:#03081499;
backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.sheet-body{display:grid;gap:14px;padding:24px}.sheet h2{margin:0;font-family:var(--serif);font-size:24px}.sheet p{margin:0}.sheet label{display:grid;gap:6px;font-size:13px;font-weight:600;color:var(--muted)}.row{display:flex;flex-wrap:wrap;
gap:10px}.row.center{justify-content:center}.row .btn-primary{flex:1}.linkbox{display:grid;gap:10px;padding-top:6px;border-top:1px solid var(--line)}.linkbox input{font-size:13px;color:var(--muted)}.sheet-orn{width:min(420px,calc(100% - 24px))}.sheet-orn canvas{width:100%;height:auto;border-radius:16px}
.orn-message{font-family:Great Vibes,cursive;font-size:30px;line-height:1.3;text-align:center;color:#fff}.toast{position:fixed;left:50%;top:20px;z-index:60;transform:translate(-50%,-140%);padding:12px 20px;border-radius:999px;background:#fdf8ef;color:#1a1a1a;font-weight:600;font-size:14px;box-shadow:0
10px 30px #00000059;transition:transform .35s cubic-bezier(.3,1.3,.5,1)}.toast.show{transform:translate(-50%)}@media (max-width: 820px){.designer-body{grid-template-columns:minmax(0,1fr);gap:20px;padding:16px}.preview-pane{position:static;max-width:340px;width:100%;margin:0 auto}.designer-top{padding-left:16px;
padding-right:16px}.designer-heading h1{font-size:18px}.designer-actions{position:sticky;bottom:0;margin:0 -16px;padding:12px 16px max(12px,env(safe-area-inset-bottom));background:#0a1528eb;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line)}}@media (max-width:
560px){.hero{top:70px}.hint{font-size:13px}.tree-title{font-size:26px}.dock{width:calc(100% - 24px)}.dock .btn{flex:1;padding:0 12px;font-size:14px}.dock .btn-order{flex:2;font-size:15px}.dock{gap:6px}.dock-icon{width:42px;height:42px}}@media (prefers-reduced-motion: reduce){.giftbox,.btn-order{animation:none}
.confetti{display:none}}@media (max-width: 400px){.order-word{display:none}}.progress-pill{padding:0 10px 0 12px;font-size:14px;font-weight:700;color:var(--ink);white-space:nowrap}
