:root{--rose:#c98a8a;--rose-deep:#b06a6e;--blush:#f3dcdc;--cream:#f6f1ee;--pearl:#fffdfc;--ink:#3d2f2d;--gold:#b9874d;--shadow:hsla(0,16%,51%,.18)}*{box-sizing:border-box;margin:0;padding:0}body,html{-webkit-font-smoothing:antialiased}body{font-family:Quicksand,sans-serif;color:var(--ink);font-size:19px;line-height:1.5;background:radial-gradient(1200px 600px at 50% -10%,#fff 0,var(--cream) 55%,#efe7e3 100%);min-height:100vh}.script{font-family:Parisienne,cursive}.serif{font-family:Cormorant Garamond,serif}header{display:flex;align-items:center;justify-content:space-between;padding:18px 28px;position:-webkit-sticky;position:sticky;top:0;z-index:50;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:hsla(23,31%,95%,.82);border-bottom:1px solid rgba(176,106,110,.28)}.brand{font-family:Parisienne,cursive;font-size:38px;color:var(--rose-deep);line-height:1}.brand small{font-family:Cormorant Garamond,serif;font-size:14px;letter-spacing:3px;color:var(--gold);display:block;text-transform:uppercase;font-weight:600}.eastvale{font-size:16px;font-weight:700;color:var(--rose-deep);background:var(--pearl);border:2px solid rgba(176,106,110,.4);padding:10px 18px;border-radius:999px;display:flex;gap:7px;align-items:center}.hero{text-align:center;padding:56px 20px 20px}.hero h1{font-family:Parisienne,cursive;font-size:76px;color:var(--rose-deep);line-height:.95}.hero .of{font-family:Cormorant Garamond,serif;font-style:italic;font-size:26px;color:var(--gold);letter-spacing:4px}.hero p.tag{margin-top:16px;font-size:21px;opacity:.92}.hero p.by{margin-top:6px;font-family:Cormorant Garamond,serif;font-style:italic;font-size:21px;color:var(--rose-deep)}.hero.compact{padding:22px 20px 4px}.hero.compact .tag{margin-top:0;font-size:17px;font-weight:600}.hero.compact .motto{margin-top:6px;font-family:Cormorant Garamond,serif;font-style:italic;font-size:15px;color:var(--rose-deep);opacity:.85}main{max-width:1080px;margin:0 auto;padding:24px}.builder{background:var(--pearl);border:1px solid hsla(0,37%,66%,.2);border-radius:28px;padding:24px;box-shadow:0 14px 40px var(--shadow);display:grid;grid-template-columns:1fr 1fr;grid-gap:26px;gap:26px;margin-top:10px}@media (max-width:780px){.builder{grid-template-columns:1fr}}.step h3{font-family:Cormorant Garamond,serif;font-size:25px;font-weight:600;color:var(--rose-deep);margin:16px 0 8px}.step h3:first-child{margin-top:0}.step .note{font-size:16px;opacity:.75;margin-bottom:12px}.swatches{display:flex;flex-wrap:wrap;gap:12px}.sw{width:50px;height:50px;border-radius:50%;cursor:pointer;border:3px solid #fff;position:relative;box-shadow:inset -2px -3px 5px rgba(0,0,0,.18),0 2px 6px var(--shadow);transition:.15s}.sw:hover{transform:scale(1.1)}.sw.active{outline:4px solid var(--rose-deep);outline-offset:2px}.sw .order{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:800;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.7)}.chips{display:flex;flex-wrap:wrap;gap:10px}.chip{padding:12px 20px;border-radius:999px;cursor:pointer;font-weight:700;font-size:17px;background:var(--cream);border:2px solid rgba(176,106,110,.3);color:var(--ink);transition:.15s}.chip:hover{background:var(--blush)}.chip.active{background:var(--rose-deep);color:#fff;border-color:var(--rose-deep)}.toggle{display:flex;align-items:center;gap:12px;font-weight:700;font-size:18px;cursor:pointer}.toggle input{width:22px;height:22px;accent-color:var(--rose-deep)}.preview{display:flex;flex-direction:column}.canvaswrap{background:linear-gradient(135deg,#fbf6f3,#f0e7e2);border-radius:22px;border:1px solid hsla(0,37%,66%,.18);aspect-ratio:1/1;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative}.canvaswrap img{width:100%;height:100%;object-fit:cover}.recipe-strip{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px}.recipe-strip .row{display:flex;gap:5px}.recipe-strip .bd{width:30px;height:18px;border-radius:5px;box-shadow:inset -1px -1px 2px rgba(0,0,0,.2)}.placeholder-txt{position:absolute;bottom:18px;left:0;right:0;text-align:center;font-size:16px;font-weight:600;opacity:.7}.spinner{width:56px;height:56px;border:5px solid var(--blush);border-top-color:var(--rose-deep);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.loadwrap{display:flex;flex-direction:column;align-items:center;gap:16px;color:var(--rose-deep);font-size:19px;font-weight:600}.btn{width:100%;margin-top:16px;border:none;cursor:pointer;padding:18px;border-radius:999px;font-family:Quicksand;font-weight:800;font-size:20px;transition:.2s;background:linear-gradient(120deg,var(--rose),var(--rose-deep));color:#fff;box-shadow:0 10px 24px var(--shadow)}.btn:hover{transform:translateY(-2px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.ghost{background:transparent;color:var(--rose-deep);border:2px solid rgba(176,106,110,.5);box-shadow:none}.err{background:#fde8e8;color:#a01a13;border-radius:14px;padding:13px 16px;font-size:16px;font-weight:600;margin-top:12px}.field{margin-top:16px}.field label{display:block;font-size:17px;font-weight:700;margin-bottom:6px}.field input,.field textarea{width:100%;padding:14px 16px;border-radius:14px;border:2px solid rgba(176,106,110,.35);font-family:Quicksand;font-size:18px;background:var(--pearl);color:var(--ink)}.field input:focus,.field textarea:focus{outline:2px solid var(--rose);border-color:var(--rose)}.modal-bg{position:fixed;inset:0;background:rgba(90,74,72,.45);display:flex;align-items:center;justify-content:center;padding:20px;z-index:100}.modal{background:var(--pearl);border-radius:26px;padding:30px;max-width:500px;width:100%;box-shadow:0 24px 60px var(--shadow);max-height:90vh;overflow:auto}.modal h2{font-family:Parisienne,cursive;font-size:42px;color:var(--rose-deep);text-align:center}.modal .x{float:right;cursor:pointer;font-size:30px;line-height:1;color:var(--ink);opacity:.6;background:none;border:none}.success{text-align:center;padding:12px}.success .big{font-size:60px}footer{text-align:center;padding:48px 20px 64px;opacity:.75;font-size:16px}footer .script{font-size:30px;color:var(--rose-deep);display:block;opacity:.95;margin-bottom:4px}.intro{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:20px;text-align:center}.ring-stage{position:relative;width:380px;height:380px;max-width:88vw;max-height:88vw}.ring-rotate{position:absolute;inset:0;animation:ringspin 30s linear infinite}.ibead{position:absolute;width:28px;height:28px;border-radius:50%;border:2px solid #fff;transform:translate(-50%,-50%) scale(0);box-shadow:inset -2px -3px 5px rgba(0,0,0,.18),0 2px 6px var(--shadow);animation:beadpop .55s cubic-bezier(.2,1.5,.4,1) forwards}@keyframes beadpop{to{transform:translate(-50%,-50%) scale(1)}}@keyframes ringspin{to{transform:rotate(1turn)}}.ring-name{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.ring-name .script-name{font-family:Parisienne,cursive;font-size:64px;line-height:.78;color:var(--rose-deep);opacity:0;animation:fadeup .8s ease forwards}.ring-name .name1{animation-delay:1.6s}.ring-name .name2{animation-delay:2.2s}.ring-name .of-name{font-family:Cormorant Garamond,serif;font-style:italic;letter-spacing:4px;color:var(--gold);font-size:20px;margin:2px 0;opacity:0;animation:fadeup .8s ease forwards;animation-delay:1.9s}@keyframes fadeup{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.intro-btn{width:auto;padding:17px 32px;margin-top:34px;opacity:0;animation:fadeup .7s ease forwards;animation-delay:2.6s}.intro-sub{font-family:Cormorant Garamond,serif;font-style:italic;color:var(--rose-deep);font-size:18px;opacity:0;animation:fadeup .7s ease forwards;animation-delay:2.9s}@media (max-width:600px){.ibead{width:20px;height:20px}.ring-name .script-name{font-size:44px}.ring-name .of-name{font-size:15px}.intro-btn{margin-top:24px;padding:14px 26px;font-size:16px}.intro-sub,body{font-size:15px}body{line-height:1.35}.hero{padding:14px 16px 6px}.hero h1{font-size:40px}.hero .of{font-size:15px}.hero p.tag{margin-top:6px;font-size:14px}.hero p.by{margin-top:2px;font-size:14px}.hero.compact{padding:12px 16px 2px}.hero.compact .tag{font-size:13px}.hero.compact .motto{font-size:12px}main{padding:10px}.builder{padding:16px;gap:14px;border-radius:20px;margin-top:8px}.step h3{font-size:17px;margin:12px 0 6px}.step .note{font-size:12px;margin-bottom:6px}.swatches{gap:7px}.sw{width:32px;height:32px;border-width:2px}.sw.active{outline-width:3px;outline-offset:1px}.sw .order{font-size:12px}.chips{gap:6px}.chip{padding:7px 13px;border-width:1px}.chip,.toggle{font-size:14px}.toggle{gap:8px}.toggle input{width:18px;height:18px}.canvaswrap{border-radius:16px}.recipe-strip{padding:12px;gap:3px}.recipe-strip .bd{width:22px;height:13px}.placeholder-txt{font-size:13px;bottom:10px}.btn{padding:13px;font-size:16px;margin-top:10px}footer{padding:24px 16px 32px;font-size:13px}footer .script{font-size:22px}}