:root {
  --pink: #D95DA6;
  --pink-dark: #A52D70;
  --magenta: #C60064;
  --green: #9AC428;
  --green-dark: #6D8F1C;
  --cream: #FFF9F5;
  --paper: #FFFEFC;
  --ink: #2d2528;
  --muted: #756b70;
  --line: rgba(45, 37, 40, 0.14);
  --shadow: 0 28px 80px rgba(69, 34, 49, 0.14);
  --radius: 24px;
  --header-h: 82px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: "DM Sans", system-ui, sans-serif;
  color: var(--ink);
  background: var(--cream);
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
}
body.modal-open { overflow: hidden; }
button, input, textarea, select { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
a { color: inherit; text-decoration: none; }
button { color: inherit; }
img { display: block; max-width: 100%; }
::selection { background: var(--green); color: var(--ink); }

.page-loader {
  position: fixed; inset: 0; z-index: 9999; background: var(--cream);
  display: grid; place-items: center; transition: opacity .7s ease, visibility .7s ease;
}
.page-loader.is-hidden { opacity: 0; visibility: hidden; }
.page-loader img { width: min(360px, 68vw); }
.loader-line { width: min(240px, 55vw); height: 2px; overflow: hidden; background: rgba(217,93,166,.15); margin-top: -28vh; }
.loader-line span { display:block; width: 100%; height:100%; background:var(--pink); transform:translateX(-100%); animation: loadLine 1s cubic-bezier(.65,0,.35,1) forwards; }
@keyframes loadLine { to { transform:translateX(0); } }

.cursor-orbit { position:fixed; width:32px; height:32px; border:1px solid rgba(217,93,166,.45); border-radius:50%; pointer-events:none; z-index:200; transform:translate(-50%,-50%); transition:width .18s ease,height .18s ease,background .18s ease; mix-blend-mode:multiply; }
.cursor-orbit.is-hovering { width:54px; height:54px; background:rgba(154,196,40,.12); }

.site-header {
  position: fixed; z-index: 100; top: 14px; left: 50%; transform: translateX(-50%);
  width: min(1360px, calc(100% - 32px)); height: var(--header-h);
  display: grid; grid-template-columns: 220px 1fr auto; align-items:center; gap: 24px;
  padding: 0 18px 0 22px; border-radius: 22px;
  background: rgba(255, 248, 241, .82); border: 1px solid rgba(255,255,255,.72);
  backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px);
  box-shadow: 0 10px 40px rgba(64,36,48,.08); transition: transform .35s ease, background .35s ease;
}
.site-header.is-hidden { transform: translate(-50%, -125%); }
.brand { width: 190px; height: 60px; display:flex; align-items:center; overflow:hidden; }
.brand img { width: 185px; }
.nav { display:flex; align-items:center; justify-content:center; gap:28px; }
.nav a { font-size:14px; font-weight:600; position:relative; padding:30px 0; }
.nav a::after { content:""; position:absolute; left:0; right:100%; bottom:19px; height:2px; background:var(--pink); transition:right .3s ease; }
.nav a:hover::after { right:0; }
.header-actions { display:flex; gap:8px; }
.icon-btn,.cart-button,.menu-toggle { border:0; background:transparent; cursor:pointer; }
.icon-btn { display:flex; gap:7px; align-items:center; padding:11px 12px; }
.icon-btn .icon { width:24px;height:24px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font-size:13px; }
.action-label { font-size:13px; font-weight:700; }
.cart-button { background:var(--pink); color:white; border-radius:14px; padding:13px 14px 13px 17px; display:flex; align-items:center; gap:12px; font-weight:700; }
.cart-button b { width:26px;height:26px;border-radius:9px;background:white;color:var(--pink);display:grid;place-items:center;font-size:12px; }
.menu-toggle { display:none; width:44px; height:44px; }
.menu-toggle span { display:block;width:20px;height:2px;background:var(--ink);margin:5px auto; }

.hero { min-height: 100svh; position:relative; background:#402c35; overflow:hidden; }
.hero-slides { position:absolute; inset:0; }
.hero-slide { position:absolute; inset:0; opacity:0; visibility:hidden; transition:opacity .9s ease, visibility .9s ease; display:flex; align-items:flex-end; padding:150px max(7vw,40px) 11vh; background:linear-gradient(90deg,rgba(30,15,23,.73) 0%,rgba(30,15,23,.35) 54%,rgba(30,15,23,.12) 100%), var(--hero-image) center/cover; }
.hero-slide--mesas { --hero-image:url("./assets/photos/hero-desserts.webp"); }
.hero-slide--queques { --hero-image:url("./assets/photos/cake-illustration.svg"); }
.hero-slide--negocios { --hero-image:url("./assets/photos/rollos-manzana.webp"); }
.hero-slide::after { content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(0,0,0,.12), transparent 30%, rgba(0,0,0,.22)); }
.hero-slide.is-active { opacity:1; visibility:visible; }
.hero-content { position:relative; z-index:2; max-width:830px; color:#fff; }
.eyebrow { display:inline-block; text-transform:uppercase; letter-spacing:.22em; font-size:11px; font-weight:800; color:var(--pink); margin-bottom:18px; }
.eyebrow.light { color:#fff; opacity:.9; }
.hero h1,.section-heading h2,.about h2,.contact h2 { font-family:"Nunito Sans",sans-serif; font-weight:900; letter-spacing:-.055em; line-height:.95; margin:0; }
.hero h1 { font-size:clamp(52px,7.1vw,112px); max-width:1000px; }
.hero h1 em { color:var(--green); font-style:normal; }
.hero p { max-width:650px; font-size:clamp(16px,1.4vw,20px); line-height:1.6; color:rgba(255,255,255,.82); margin:28px 0 32px; }
.hero-ctas { display:flex; gap:12px; flex-wrap:wrap; }
.btn { border:0; cursor:pointer; display:inline-flex; align-items:center; justify-content:center; gap:18px; padding:15px 20px; border-radius:14px; font-weight:800; font-size:14px; transition:transform .2s ease, box-shadow .25s ease, background .25s ease; }
.btn:hover { transform:translateY(-2px); }
.btn span:last-child { transition:transform .25s ease; }
.btn:hover span:last-child { transform:translate(3px,-3px); }
.btn-primary { background:var(--pink); color:#fff; box-shadow:0 15px 35px rgba(217,93,166,.25); }
.btn-primary:hover { background:#C60064; }
.btn-glass { background:rgba(255,255,255,.12); color:#fff; border:1px solid rgba(255,255,255,.26); backdrop-filter:blur(8px); }
.btn-dark { background:var(--ink); color:white; }
.btn.full { width:100%; }
.hero-tag { position:absolute; z-index:2; right:max(5vw,32px); bottom:11vh; color:#fff; font-size:12px; font-weight:700; letter-spacing:.15em; text-transform:uppercase; writing-mode:vertical-rl; }
.hero-controls { position:absolute; z-index:4; left:max(7vw,40px); right:max(7vw,40px); bottom:32px; display:grid; grid-template-columns:1fr auto auto; align-items:center; gap:28px; }
.hero-progress { height:2px; background:rgba(255,255,255,.24); overflow:hidden; }
.hero-progress span { display:block;height:100%;width:0;background:#fff; }
.hero-dots { display:flex;gap:7px; }
.hero-dots button { width:8px;height:8px;padding:0;border:0;border-radius:50%;background:rgba(255,255,255,.4);cursor:pointer;transition:transform .2s ease, background .2s ease; }
.hero-dots button.is-active { background:var(--green);transform:scale(1.45); }
.scroll-cue { display:flex;align-items:center;gap:10px;color:#fff;font-size:10px;text-transform:uppercase;letter-spacing:.18em; }
.scroll-cue i { display:block;width:28px;height:1px;background:#fff; }

.intro-band { background:var(--green); overflow:hidden; padding:16px 0; border-top:1px solid rgba(0,0,0,.08); border-bottom:1px solid rgba(0,0,0,.08); }
.marquee-track { width:max-content; display:flex;align-items:center;gap:28px; animation:marquee 28s linear infinite; font-size:12px;font-weight:900;letter-spacing:.16em; }
.marquee-track b { color:var(--pink); }
@keyframes marquee { to { transform:translateX(-50%); } }

.section-heading { max-width:780px; }
.section-heading h2 { font-size:clamp(48px,6vw,92px); }
.section-heading h2 span,.about h2 span { color:var(--pink); }
.section-heading p { max-width:650px; color:var(--muted); line-height:1.75; font-size:17px; }

.catalog { padding:130px max(6vw,24px); background:var(--cream); }
.catalog .section-heading { max-width:900px; }
.catalog-toolbar { margin:55px 0 30px;display:flex;align-items:center;justify-content:space-between;gap:18px; }
.category-tabs { display:flex;gap:6px;flex-wrap:wrap; }
.category-tabs button { border:1px solid var(--line); }
.search-box { min-width:260px; background:#fff;border:1px solid var(--line);border-radius:14px;padding:11px 14px;display:flex;gap:9px;align-items:center; }
.search-box input { width:100%;border:0;outline:0;background:transparent;color:var(--ink); }
.product-grid { display:grid;grid-template-columns:repeat(12,1fr);gap:18px; }
.product-card { grid-column:span 4; position:relative;border-radius:26px;overflow:hidden;background:#fff;border:1px solid rgba(50,30,40,.09);min-height:520px;display:flex;flex-direction:column;transition:transform .35s ease,box-shadow .35s ease; }
.product-card:hover { transform:translateY(-8px);box-shadow:0 24px 55px rgba(70,36,50,.12); }
.product-card:nth-child(5n+1) { grid-column:span 5; }
.product-card:nth-child(5n+2) { grid-column:span 7; }
.product-media { position:relative;height:330px;overflow:hidden;background:#eee; }
.product-media img { width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1); }
.product-card:hover .product-media img { transform:scale(1.045); }
.product-badge { position:absolute;left:16px;top:16px;background:rgba(255,255,255,.9);backdrop-filter:blur(8px);padding:8px 10px;border-radius:10px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.13em; }
.quick-add { position:absolute;right:16px;bottom:16px;border:0;background:var(--pink);color:white;width:48px;height:48px;border-radius:14px;font-size:21px;cursor:pointer;box-shadow:0 10px 30px rgba(217,93,166,.25);transition:transform .2s ease; }
.quick-add:hover { transform:rotate(8deg) scale(1.05); }
.product-info { padding:22px;display:grid;grid-template-columns:1fr auto;gap:12px;align-items:start;flex:1; }
.product-info h3 { margin:0 0 8px;font-family:"Nunito Sans",sans-serif;font-size:26px;letter-spacing:-.03em; }
.product-info p { margin:0;color:var(--muted);line-height:1.55;font-size:14px; }
.product-price { font-size:18px;font-weight:900;color:var(--pink);white-space:nowrap; }
.product-open { grid-column:1/-1;display:flex;justify-content:space-between;align-items:center;border:0;border-top:1px solid var(--line);background:transparent;padding:16px 0 0;margin-top:8px;cursor:pointer;font-size:12px;font-weight:800;color:var(--muted); }
.empty-state { padding:80px;text-align:center;color:var(--muted); }

.process-band { display:grid;grid-template-columns:repeat(4,1fr);background:var(--pink);color:#fff;padding:0 max(5vw,24px); }
.process-band article { padding:55px 30px;border-right:1px solid rgba(255,255,255,.18); }
.process-band article:last-child { border-right:0; }
.process-band span { display:block;color:var(--green);font-size:12px;font-weight:900;letter-spacing:.14em; }
.process-band h3 { margin:26px 0 9px;font-size:26px; }
.process-band p { margin:0;color:rgba(255,255,255,.74);font-size:14px;line-height:1.55; }

.about { padding:130px max(6vw,24px); display:grid;grid-template-columns:.9fr 1.1fr;gap:8vw;background:var(--paper); }
.about-sticky { position:sticky;top:140px;align-self:start; }
.about h2 { font-size:clamp(48px,5.5vw,88px); }
.about-sticky p { color:var(--muted);font-size:17px;line-height:1.75;max-width:620px;margin:30px 0; }
.text-link { color:var(--pink);font-weight:800;border-bottom:1px solid rgba(217,93,166,.3);padding-bottom:4px; }
.text-link span { display:inline-block;transition:transform .2s ease; }
.text-link:hover span { transform:translate(3px,-3px); }
.about-cards { display:flex;flex-direction:column;gap:18px; }
.about-card { min-height:320px;border-radius:32px;padding:30px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:0 20px 60px rgba(58,36,44,.08); }
.about-card.pink { background:var(--pink);color:white;transform:rotate(1deg); }
.about-card.green { background:var(--green);transform:rotate(-1deg); }
.about-card.cream { background:#E7D9CD;transform:rotate(.5deg); }
.big-number { font-family:"Nunito Sans";font-weight:900;font-size:72px;opacity:.3; }
.about-card h3 { font-size:31px;margin:0 0 10px; }
.about-card p { max-width:420px;margin:0;line-height:1.6;opacity:.78; }

.contact { background:var(--pink);color:white;padding:120px max(6vw,24px);display:grid;grid-template-columns:1fr 1fr;gap:8vw;align-items:start; }
.contact h2 { font-size:clamp(54px,6vw,94px); }
.contact-copy > p { max-width:530px;line-height:1.7;color:rgba(255,255,255,.76);font-size:17px; }
.contact-mini-grid { display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:45px;padding-top:25px;border-top:1px solid rgba(255,255,255,.2); }
.contact-mini-grid span { display:block;font-size:10px;text-transform:uppercase;letter-spacing:.15em;opacity:.65;margin-bottom:7px; }
.contact-form { background:var(--cream);color:var(--ink);padding:34px;border-radius:28px;box-shadow:0 30px 80px rgba(80,0,35,.22); }
.field-row { display:grid;grid-template-columns:1fr 1fr;gap:14px; }
.contact-form label,.auth-modal label { display:block;font-size:12px;font-weight:800;margin-bottom:16px; }
.order-note { display:block;font-size:13px;font-weight:900;margin:4px 0 16px;padding:14px;border:1px solid var(--line);border-radius:14px;background:#faf8f3; }
.contact-form input,.contact-form textarea,.contact-form select,.auth-modal input,.order-note textarea { display:block;width:100%;margin-top:8px;border:1px solid var(--line);background:#fff;border-radius:12px;padding:13px 14px;outline:0;transition:border .2s ease,box-shadow .2s ease;resize:vertical;color:var(--ink); }
.contact-form input:focus,.contact-form textarea:focus,.contact-form select:focus,.auth-modal input:focus,.order-note textarea:focus { border-color:var(--pink);box-shadow:0 0 0 3px rgba(217,93,166,.1); }
.form-status,.auth-status { min-height:18px;margin:12px 0 0;font-size:12px;color:var(--muted); }

.footer { background:#251d20;color:#fff;padding:72px max(6vw,24px) 28px; }
.footer-logo-wrap { max-width:440px;filter:brightness(0) invert(1);opacity:.92; }
.footer-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:40px;margin:70px 0;border-top:1px solid rgba(255,255,255,.12);padding-top:38px; }
.footer-grid div { display:flex;flex-direction:column;align-items:flex-start;gap:10px; }
.footer-grid span { color:var(--green);font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.14em;margin-bottom:7px; }
.footer-grid a,.footer-grid button { border:0;background:transparent;color:rgba(255,255,255,.72);padding:0;cursor:pointer;font-size:14px; }
.footer-grid a:hover,.footer-grid button:hover { color:white; }
.footer-bottom { display:flex;justify-content:space-between;color:rgba(255,255,255,.45);font-size:11px; }

.backdrop { position:fixed;inset:0;z-index:500;background:rgba(30,20,25,.48);backdrop-filter:blur(4px);opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease; }
.backdrop.is-visible { opacity:1;visibility:visible; }
.cart-drawer { position:fixed;right:0;top:0;z-index:600;width:min(480px,100%);height:100dvh;background:var(--paper);transform:translateX(102%);transition:transform .45s cubic-bezier(.2,.8,.2,1);display:flex;flex-direction:column;box-shadow:-30px 0 80px rgba(40,20,30,.16); }
.cart-drawer.is-open { transform:translateX(0); }
.drawer-head { padding:28px;display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid var(--line); }
.drawer-head h2 { margin:0;font-family:"Nunito Sans";font-size:38px;letter-spacing:-.04em; }
.close-btn { width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:#fff;font-size:24px;cursor:pointer;display:grid;place-items:center; }
.cart-items { padding:12px 26px;overflow:auto;flex:1; }
.cart-item { display:grid;grid-template-columns:76px 1fr auto;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);align-items:center; }
.cart-item img { width:76px;height:76px;border-radius:14px;object-fit:cover; }
.cart-item h4 { margin:0 0 4px;font-size:14px; }
.cart-item p { margin:0;color:var(--muted);font-size:12px; }
.qty-control { display:flex;align-items:center;gap:8px;margin-top:8px; }
.qty-control button { width:26px;height:26px;border:1px solid var(--line);border-radius:8px;background:white;cursor:pointer; }
.remove-item { border:0;background:transparent;color:var(--pink);cursor:pointer;font-size:11px;font-weight:800;padding:0; }
.cart-empty { flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px;color:var(--muted); }
.cart-empty span { font-size:46px;color:var(--pink); }
.cart-empty h3 { color:var(--ink);margin:12px 0 6px; }
.drawer-foot { padding:20px 26px 26px;border-top:1px solid var(--line);background:#fff; }
.cart-total { display:flex;justify-content:space-between;align-items:center;margin:15px 0; }
.cart-total b { font-size:24px;color:var(--pink); }
.drawer-foot small { display:block;color:var(--muted);font-size:10px;line-height:1.5;margin-top:10px; }

.product-modal,.auth-modal { border:0;padding:0;border-radius:28px;background:var(--paper);box-shadow:0 30px 100px rgba(34,16,24,.28);overflow:hidden; }
.product-modal::backdrop,.auth-modal::backdrop { background:rgba(30,20,25,.52);backdrop-filter:blur(7px); }
.product-modal { width:min(980px,calc(100% - 28px)); }
.modal-close { position:absolute;right:16px;top:16px;z-index:5; }
.product-detail { display:grid;grid-template-columns:1.05fr .95fr;min-height:600px; }
.product-detail-media { min-height:600px; }
.product-detail-media img { width:100%;height:100%;object-fit:cover; }
.product-detail-copy { padding:58px 44px 42px;display:flex;flex-direction:column; }
.product-detail-copy h2 { font-family:"Nunito Sans";font-size:50px;letter-spacing:-.05em;line-height:1;margin:5px 0 18px; }
.product-detail-copy > p { color:var(--muted);line-height:1.7; }
.detail-meta { display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:20px 0; }
.detail-meta div { border:1px solid var(--line);border-radius:14px;padding:14px; }
.detail-meta span { display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.12em;margin-bottom:5px; }
.detail-price { margin-top:auto;display:flex;justify-content:space-between;align-items:end;gap:18px; }
.detail-price b { font-size:27px;color:var(--pink); }
.auth-modal { width:min(470px,calc(100% - 28px));padding:34px; }
.auth-brand img { width:240px;margin:0 auto 20px; }
.auth-tabs { display:grid;grid-template-columns:1fr 1fr;background:#f1e8e4;border-radius:12px;padding:4px;margin:0 0 24px; }
.auth-tabs button { border:0;background:transparent;padding:10px;border-radius:9px;cursor:pointer;font-weight:800;font-size:12px; }
.auth-tabs button.is-active { background:#fff;color:var(--pink);box-shadow:0 4px 12px rgba(60,30,40,.08); }
.demo-note { display:block;color:var(--muted);line-height:1.5;margin-top:15px;font-size:10px; }
.toast { position:fixed;z-index:900;left:50%;bottom:26px;transform:translate(-50%,30px);background:var(--ink);color:white;border-radius:14px;padding:13px 18px;opacity:0;visibility:hidden;transition:.3s ease;font-size:13px;box-shadow:0 14px 40px rgba(30,20,25,.2); }
.toast.is-visible { opacity:1;visibility:visible;transform:translate(-50%,0); }

.reveal { opacity:0;transform:translateY(24px);transition:opacity .75s ease,transform .75s cubic-bezier(.2,.7,.2,1); }
.reveal.is-visible { opacity:1;transform:translateY(0); }

@media (max-width: 980px) {
  :root { --header-h:70px; }
  .cursor-orbit { display:none; }
  .site-header { grid-template-columns:1fr auto auto;top:10px; }
  .brand { width:160px; }
  .brand img { width:155px; }
  .menu-toggle { display:block;order:2; }
  .header-actions { order:3; }
  .account-btn { display:none; }
  .nav { position:fixed;left:16px;right:16px;top:88px;background:var(--paper);border-radius:20px;box-shadow:var(--shadow);padding:20px;display:flex;flex-direction:column;align-items:stretch;gap:0;opacity:0;visibility:hidden;transform:translateY(-12px);transition:.25s ease; }
  .nav.is-open { opacity:1;visibility:visible;transform:translateY(0); }
  .nav a { padding:14px 8px;border-bottom:1px solid var(--line); }
  .nav a:last-child { border-bottom:0; }
  .nav a::after { display:none; }
  .hero-slide { padding:140px 28px 11vh; }
  .hero-tag { display:none; }
  .hero-controls { left:28px;right:28px; }
  .scroll-cue { display:none; }
  .product-card,.product-card:nth-child(5n+1),.product-card:nth-child(5n+2) { grid-column:span 6; }
  .process-band { grid-template-columns:1fr 1fr; }
  .process-band article:nth-child(2) { border-right:0; }
  .process-band article:nth-child(-n+2) { border-bottom:1px solid rgba(255,255,255,.18); }
  .about,.contact { grid-template-columns:1fr; }
  .about-sticky { position:relative;top:auto; }
  .about-cards { margin-top:20px; }
  .contact-form { max-width:680px; }
  .product-detail { grid-template-columns:1fr; }
  .product-detail-media { min-height:390px;height:390px; }
  .table-viewport { height:670px; }
  .table-stage { transform:scale(.75) translate3d(-64%,-58%,0)!important; transform-origin:center; }
}

@media (max-width: 640px) {
  .site-header { width:calc(100% - 18px);padding:0 10px 0 14px;border-radius:18px;grid-template-columns:1fr auto auto;gap:4px; }
  .brand { width:142px; }
  .brand img { width:140px; }
  .cart-button { padding:10px; }
  .cart-button > span { display:none; }
  .hero h1 { font-size:clamp(48px,15vw,74px); }
  .hero p { font-size:15px; }
  .hero-slide { padding-left:20px;padding-right:20px;padding-bottom:14vh; }
  .hero-controls { left:20px;right:20px;bottom:20px;grid-template-columns:1fr auto; }
  .table-experience,.catalog,.about,.contact { padding-left:18px;padding-right:18px; }
  .table-ui { align-items:flex-start;flex-direction:column; }
  .desktop-hint { display:none; }
  .table-tabs { width:100%; }
  .table-tabs button { flex:1;padding:10px 7px; }
  .table-viewport { border-radius:24px;height:560px; }
  .table-stage { transform:scale(.57) translate3d(-88%,-78%,0)!important; }
  .catalog-toolbar { align-items:stretch;flex-direction:column; }
  .search-box { min-width:0;width:100%; }
  .product-grid { display:block; }
  .product-card { min-height:0;margin-bottom:16px; }
  .product-media { height:300px; }
  .process-band { grid-template-columns:1fr; }
  .process-band article { border-right:0;border-bottom:1px solid rgba(255,255,255,.18);padding:38px 24px; }
  .process-band article:last-child { border-bottom:0; }
  .about-card { min-height:260px; }
  .field-row,.contact-mini-grid { grid-template-columns:1fr; }
  .contact-form { padding:24px 18px; }
  .footer-grid { grid-template-columns:1fr 1fr; }
  .footer-grid div:last-child { grid-column:1/-1; }
  .footer-bottom { flex-direction:column;gap:7px; }
  .product-detail-copy { padding:36px 22px 25px; }
  .product-detail-copy h2 { font-size:40px; }
  .detail-price { align-items:stretch;flex-direction:column; }
  .detail-price .btn { width:100%; }
  .auth-modal { padding:26px 20px; }
}

@media (prefers-reduced-motion: reduce) {
  *,*::before,*::after { animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important; }
  .cursor-orbit { display:none; }
}

/* =========================================================
   V2 — Catálogo editorial, marca compacta y pedidos de evento
   ========================================================= */

.loader-brand { display:flex; align-items:center; gap:12px; }
.loader-brand img { width:62px; height:62px; object-fit:contain; }
.loader-brand span { font-family:"DM Sans",sans-serif; font-size:clamp(28px,4vw,44px); font-weight:700; letter-spacing:-.055em; color:var(--pink); }
.page-loader > img { display:none; }
.loader-line { margin-top:-22vh; }

.site-header { grid-template-columns: 210px 1fr auto; }
.brand { width:auto; height:58px; gap:8px; overflow:visible; }
.brand img { width:45px; height:45px; object-fit:contain; flex:none; }
.brand-wordmark { font-family:"DM Sans",sans-serif; font-weight:700; font-size:23px; letter-spacing:-.06em; color:var(--pink); line-height:1; white-space:nowrap; }

.section-heading.inverse h2 { color:#fff; }
.section-heading.inverse h2 span { color:var(--green); }

/* Catálogo tipo libro: usa una única capa de giro para mantener la animación ligera */
.lookbook {
  position:relative; isolation:isolate; overflow:hidden;
  padding:128px max(5vw,24px) 118px;
  background:#111012; color:#fff;
}
.lookbook::before {
  content:""; position:absolute; inset:0; z-index:-3; pointer-events:none;
  background:
    radial-gradient(circle at 12% 18%, rgba(217,93,166,.18), transparent 25%),
    radial-gradient(circle at 88% 72%, rgba(154,196,40,.12), transparent 28%),
    linear-gradient(120deg, rgba(255,255,255,.02), transparent 42%);
}
.lookbook-head { max-width:1320px; margin:0 auto 58px; display:grid; grid-template-columns:1.05fr .65fr; gap:8vw; align-items:end; }
.lookbook-head p { margin:0 0 6px; color:rgba(255,255,255,.64); line-height:1.75; font-size:16px; max-width:560px; }
.lookbook .eyebrow { color:var(--green); }

.lookbook-decor { position:absolute; pointer-events:none; z-index:-1; opacity:.9; }
.decor-roll { width:260px;height:260px;right:-76px;top:70px;border:18px solid var(--pink);border-radius:50%; }
.decor-roll::before { content:""; position:absolute; inset:38px; border:13px solid var(--pink); border-radius:50%; border-left-color:transparent; transform:rotate(-26deg); }
.decor-roll::after { content:""; position:absolute; inset:82px; border:9px solid var(--pink); border-radius:50%; border-bottom-color:transparent; }
.decor-croissant { width:210px;height:110px;left:-62px;bottom:100px;border:18px solid var(--green);border-top-color:transparent;border-radius:0 0 140px 140px;transform:rotate(20deg); }
.decor-croissant::before,.decor-croissant::after { content:"";position:absolute;top:-24px;width:60px;height:90px;border:13px solid var(--green);border-radius:50%;background:#111012; }
.decor-croissant::before { left:-28px;transform:rotate(-20deg); }
.decor-croissant::after { right:-28px;transform:rotate(20deg); }
.decor-dot { width:15px;height:15px;border-radius:50%;background:var(--green);left:18%;top:43%;box-shadow:34px 18px 0 var(--pink),64px -16px 0 rgba(255,255,255,.32),92px 22px 0 var(--green); }

.book-shell { max-width:1280px; margin:0 auto; }
.book-topline { display:flex; justify-content:space-between; align-items:end; gap:20px; margin:0 8px 16px; font-size:11px; letter-spacing:.13em; text-transform:uppercase; color:rgba(255,255,255,.46); }
.book-topline div { display:flex; gap:18px; align-items:center; }
.book-topline b { color:var(--green); font-size:12px; }
.flipbook { perspective:2200px; outline:none; touch-action:pan-y; }
.book-spread {
  position:relative; display:grid; grid-template-columns:1fr 1fr;
  min-height:640px; border-radius:30px; overflow:visible;
  filter:drop-shadow(0 36px 58px rgba(0,0,0,.34));
}
.book-page {
  position:relative; min-width:0; background:#fffaf3; color:var(--ink); overflow:hidden;
  backface-visibility:hidden; -webkit-backface-visibility:hidden;
}
.book-page-left { border-radius:28px 2px 2px 28px; box-shadow:inset -25px 0 28px -30px rgba(35,20,28,.5); }
.book-page-right { border-radius:2px 28px 28px 2px; box-shadow:inset 25px 0 28px -30px rgba(35,20,28,.5); }
.book-gutter { position:absolute;left:50%;top:0;bottom:0;width:2px;transform:translateX(-50%);z-index:5;background:linear-gradient(180deg,rgba(0,0,0,.04),rgba(0,0,0,.19),rgba(0,0,0,.04));box-shadow:0 0 18px rgba(0,0,0,.18);pointer-events:none; }
.turning-page { position:absolute; top:0; bottom:0; width:50%; z-index:12; display:none; transform-style:preserve-3d; will-change:transform; pointer-events:none; }
.turning-page.is-forward { display:block; left:50%; transform-origin:left center; animation:pageForward .76s cubic-bezier(.38,.02,.18,1) forwards; }
.turning-page.is-backward { display:block; left:0; transform-origin:right center; animation:pageBackward .76s cubic-bezier(.38,.02,.18,1) forwards; }
.turning-page .turn-face { position:absolute;inset:0;overflow:hidden;background:#fffaf3;color:var(--ink);backface-visibility:hidden;-webkit-backface-visibility:hidden; }
.turning-page .turn-front { border-radius:2px 28px 28px 2px; }
.turning-page .turn-back { transform:rotateY(180deg); border-radius:28px 2px 2px 28px; }
.turning-page.is-backward .turn-front { border-radius:28px 2px 2px 28px; }
.turning-page.is-backward .turn-back { border-radius:2px 28px 28px 2px; }
@keyframes pageForward { 0%{transform:rotateY(0deg)} 100%{transform:rotateY(-180deg)} }
@keyframes pageBackward { 0%{transform:rotateY(0deg)} 100%{transform:rotateY(180deg)} }

.book-page-inner { min-height:640px; height:100%; padding:44px; display:flex; flex-direction:column; position:relative; }
.book-page-inner::after { content:attr(data-page); position:absolute; right:24px; bottom:18px; font-size:10px; letter-spacing:.16em; color:rgba(45,37,40,.38); }
.book-kicker { font-size:10px; font-weight:900; letter-spacing:.17em; text-transform:uppercase; color:var(--pink); }
.book-page-title { font-family:"Nunito Sans",sans-serif; font-size:clamp(38px,4vw,66px); line-height:.96; letter-spacing:-.055em; margin:14px 0 15px; }
.book-page-copy { color:var(--muted); line-height:1.65; max-width:520px; margin:0; font-size:14px; }
.book-photo { flex:1; min-height:300px; border-radius:20px; overflow:hidden; margin-top:26px; position:relative; }
.book-photo img { width:100%;height:100%;object-fit:cover; }
.book-photo::after { content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 58%,rgba(20,10,14,.35));pointer-events:none; }
.book-note { position:absolute; right:24px; bottom:34px; z-index:2; background:var(--green); color:#1d1b18; padding:13px 15px; border-radius:3px; transform:rotate(-2deg); box-shadow:0 12px 28px rgba(0,0,0,.15); max-width:210px; font-size:12px; font-weight:800; line-height:1.35; }
.book-category-page { background:#f7e9df; }
.book-category-page.is-pink { background:var(--pink);color:#fff; }
.book-category-page.is-green { background:var(--green); }
.book-category-page.is-black { background:#181518;color:#fff; }
.book-category-page.is-pink .book-kicker,.book-category-page.is-black .book-kicker { color:var(--green); }
.book-category-page.is-pink .book-page-copy,.book-category-page.is-black .book-page-copy { color:rgba(255,255,255,.72); }
.book-product-list { margin-top:auto; display:grid; gap:8px; }
.book-product-row { display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;padding:11px 0;border-top:1px solid rgba(45,37,40,.13);cursor:pointer; }
.book-category-page.is-pink .book-product-row,.book-category-page.is-black .book-product-row { border-top-color:rgba(255,255,255,.2); }
.book-product-row img { width:48px;height:48px;border-radius:11px;object-fit:cover; }
.book-product-row b { display:block;font-size:13px; }
.book-product-row small { display:block;opacity:.62;font-size:10px;margin-top:2px; }
.book-product-row > span { font-size:12px;font-weight:900;white-space:nowrap; }
.book-cta { margin-top:20px; align-self:flex-start; border:0; background:var(--ink);color:#fff;border-radius:12px;padding:12px 15px;font-size:12px;font-weight:800;cursor:pointer; }
.book-category-page.is-black .book-cta { background:var(--green);color:var(--ink); }
.book-controls { display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:center;max-width:520px;margin:22px auto 0; }
.book-arrow { width:48px;height:48px;border-radius:50%;border:1px solid rgba(255,255,255,.2);background:rgba(255,255,255,.06);color:#fff;cursor:pointer;font-size:20px;transition:.2s ease; }
.book-arrow:hover:not(:disabled) { background:var(--pink);border-color:var(--pink);transform:translateY(-2px); }
.book-arrow:disabled { opacity:.3;cursor:not-allowed; }
.book-progress { height:2px;background:rgba(255,255,255,.14);overflow:hidden; }
.book-progress span { display:block;height:100%;width:25%;background:var(--green);transition:width .45s ease; }

/* Catálogo transaccional: la cantidad se ve y se puede escribir */
.product-info { grid-template-columns:1fr auto; }
.product-purchase { grid-column:1/-1; display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; padding:15px 0 2px; border-top:1px solid var(--line); }
.in-cart-count { display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted); }
.in-cart-count b { min-width:30px;height:30px;border-radius:9px;background:rgba(217,93,166,.09);color:var(--pink);display:grid;place-items:center;font-size:13px; }
.card-qty-control { display:grid;grid-template-columns:34px 60px 34px;align-items:center;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#fff; }
.card-qty-control button { width:34px;height:36px;border:0;background:transparent;cursor:pointer;font-size:18px; }
.card-qty-control input { width:60px;height:36px;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);text-align:center;outline:0;font-weight:900;color:var(--ink);-moz-appearance:textfield; }
.card-qty-control input::-webkit-outer-spin-button,.card-qty-control input::-webkit-inner-spin-button { -webkit-appearance:none;margin:0; }
.volume-inline { grid-column:1/-1; display:none; align-items:center;justify-content:space-between;gap:10px;border-radius:12px;background:#181518;color:#fff;padding:11px 12px;font-size:10px;line-height:1.4; }
.volume-inline.is-visible { display:flex; }
.volume-inline b { color:var(--green); }
.volume-inline button { border:0;background:transparent;color:var(--green);padding:0;font-weight:900;cursor:pointer;white-space:nowrap; }
.product-open { margin-top:0; }
.quick-add { display:none; }

.cart-item { grid-template-columns:68px 1fr auto; }
.cart-item img { width:68px;height:68px; }
.qty-control { display:grid;grid-template-columns:28px 54px 28px;gap:0;border:1px solid var(--line);border-radius:9px;overflow:hidden;width:max-content; }
.qty-control button { width:28px;height:30px;border:0;border-radius:0;background:#fff; }
.qty-control input { width:54px;height:30px;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);text-align:center;font-weight:800;outline:none;-moz-appearance:textfield; }
.qty-control input::-webkit-outer-spin-button,.qty-control input::-webkit-inner-spin-button { -webkit-appearance:none;margin:0; }

.event-order-panel { border:1px solid rgba(154,196,40,.55);background:#171518;color:#fff;border-radius:16px;padding:14px;margin-bottom:14px; }
.event-order-head { display:flex;justify-content:space-between;gap:10px;align-items:center; }
.event-order-head span { font-weight:900;font-size:12px; }
.event-order-head b { color:var(--green);font-size:10px;letter-spacing:.12em;text-transform:uppercase; }
.event-order-panel p { color:rgba(255,255,255,.68);font-size:11px;line-height:1.5;margin:9px 0 12px; }
.event-order-panel label { display:block;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.11em;color:rgba(255,255,255,.66); }
.event-order-panel input { width:100%;border:1px solid rgba(255,255,255,.18);background:#fff;color:var(--ink);border-radius:10px;padding:10px 11px;margin-top:7px;outline:0; }
.event-order-panel input:focus { box-shadow:0 0 0 3px rgba(154,196,40,.15);border-color:var(--green); }
.service-link { width:100%;margin-top:9px;border:0;border-radius:10px;background:var(--green);color:#1c1a1b;padding:10px 12px;font-weight:900;font-size:11px;cursor:pointer;display:flex;justify-content:space-between;align-items:center; }

.footer-brand { display:flex;align-items:center;gap:12px;color:#fff; }
.footer-brand img { width:min(260px,70vw);height:auto;filter:none; }
.footer-brand > span { display:none; }
.auth-brand { display:flex;align-items:center;justify-content:center;gap:9px;margin-bottom:18px; }
.auth-brand img { width:50px;height:50px;margin:0; }
.auth-brand span { font-weight:700;font-size:28px;letter-spacing:-.06em;color:var(--pink); }

@media (max-width:980px) {
  .site-header { grid-template-columns:1fr auto auto; }
  .brand { width:auto; }
  .brand img { width:40px;height:40px; }
  .brand-wordmark { font-size:21px; }
  .lookbook-head { grid-template-columns:1fr;gap:22px; }
  .book-spread,.book-page-inner { min-height:570px; }
  .book-page-inner { padding:34px; }
}

@media (max-width:700px) {
  .brand img { width:36px;height:36px; }
  .brand-wordmark { font-size:18px; }
  .lookbook { padding:92px 16px 80px; }
  .lookbook-head { margin-bottom:34px; }
  .lookbook-head p { font-size:14px; }
  .book-topline { margin-left:4px;margin-right:4px; }
  .book-topline div > span { display:none; }
  .book-spread { display:block;min-height:590px; }
  .book-page-left { display:none; }
  .book-page-right { min-height:590px;border-radius:24px; }
  .book-gutter { display:none; }
  .book-page-inner { min-height:590px;padding:28px 24px; }
  .turning-page { width:100%;left:0!important; }
  .turning-page.is-forward,.turning-page.is-backward { transform-origin:left center; }
  .turning-page.is-backward { transform-origin:right center; }
  .turning-page .turn-front,.turning-page .turn-back,.turning-page.is-backward .turn-front,.turning-page.is-backward .turn-back { border-radius:24px; }
  .book-photo { min-height:280px; }
  .book-controls { max-width:100%; }
  .product-purchase { grid-template-columns:1fr; }
  .card-qty-control { width:100%;grid-template-columns:42px 1fr 42px; }
  .card-qty-control input { width:100%; }
  .volume-inline { align-items:flex-start;flex-direction:column; }
  .footer-brand > span { font-size:28px; }
}

.book-product-row { border-left:0;border-right:0;border-bottom:0;background:transparent;text-align:left;color:inherit;width:100%;font:inherit; }
.modal-quantity { display:flex;justify-content:space-between;align-items:center;gap:18px;padding:15px 0 18px;border-top:1px solid var(--line);margin-top:4px; }
.modal-quantity > span { font-size:11px;font-weight:900;color:var(--muted);text-transform:uppercase;letter-spacing:.09em; }
@media (max-width:640px) { .modal-quantity { align-items:flex-start;flex-direction:column; } .modal-quantity .card-qty-control { width:100%; } }

/* =========================================================
   V3 — Mesas de postres: configurador por invitados
   ========================================================= */
[hidden] { display:none !important; }

/* Mantiene el isotipo legible sin comerse el header */
.site-header { grid-template-columns: 205px 1fr auto; }
.brand { gap:9px; }
.brand img { width:40px; height:40px; }
.brand-wordmark { font-size:22px; }

.table-promo-card {
  grid-column:1 / -1;
  position:relative; overflow:hidden; min-height:360px;
  border-radius:30px; padding:42px;
  background:
    radial-gradient(circle at 84% 18%, rgba(154,196,40,.18), transparent 22%),
    radial-gradient(circle at 18% 90%, rgba(217,93,166,.28), transparent 28%),
    #151316;
  color:#fff; display:flex; flex-direction:column; align-items:flex-start; justify-content:flex-end;
  box-shadow:0 24px 70px rgba(45,24,34,.16);
}
.table-promo-card::before {
  content:""; position:absolute; width:210px; height:210px; right:65px; top:45px;
  border:17px solid var(--pink); border-radius:50%; opacity:.9;
}
.table-promo-card::after {
  content:""; position:absolute; width:122px; height:122px; right:109px; top:89px;
  border:12px solid var(--green); border-radius:50%; border-left-color:transparent; transform:rotate(-24deg);
}
.table-promo-kicker { color:var(--green); font-size:10px; font-weight:900; letter-spacing:.18em; text-transform:uppercase; }
.table-promo-card h3 { position:relative; z-index:1; max-width:700px; margin:12px 0 10px; font-family:"Nunito Sans",sans-serif; font-size:clamp(38px,4.5vw,68px); line-height:.95; letter-spacing:-.05em; }
.table-promo-card > p { position:relative; z-index:1; max-width:620px; color:rgba(255,255,255,.66); line-height:1.65; margin:0 0 20px; }
.table-promo-stats { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:22px; }
.table-promo-stats span { border:1px solid rgba(255,255,255,.14); background:rgba(255,255,255,.055); padding:10px 13px; border-radius:12px; font-size:11px; color:rgba(255,255,255,.72); }
.table-promo-stats b { color:var(--green); font-size:15px; margin-right:4px; }
.table-promo-card .btn { position:relative; z-index:1; }

.dessert-table-builder {
  position:relative; isolation:isolate; overflow:hidden;
  margin-top:30px; padding:54px; border-radius:34px;
  background:
    radial-gradient(circle at 100% 0%, rgba(217,93,166,.18), transparent 28%),
    radial-gradient(circle at 0% 46%, rgba(154,196,40,.10), transparent 25%),
    #121013;
  color:#fff; box-shadow:0 34px 100px rgba(54,26,39,.18);
}
.dtb-decor { position:absolute; pointer-events:none; z-index:-1; }
.dtb-roll { width:260px; height:260px; right:-92px; top:110px; border:16px solid var(--pink); border-radius:50%; opacity:.62; }
.dtb-roll::before { content:""; position:absolute; inset:45px; border:12px solid var(--pink); border-radius:50%; border-right-color:transparent; transform:rotate(28deg); }
.dtb-roll::after { content:""; position:absolute; inset:91px; border:8px solid var(--green); border-radius:50%; border-top-color:transparent; }
.dtb-sprinkles { left:32px; top:310px; width:8px; height:8px; border-radius:50%; background:var(--green); box-shadow:35px 19px 0 var(--pink),77px -11px 0 rgba(255,255,255,.33),115px 27px 0 var(--green),152px -20px 0 var(--pink); opacity:.65; }

.dtb-intro { display:grid; grid-template-columns:1.15fr .7fr; gap:7vw; align-items:end; max-width:1220px; margin-bottom:30px; }
.dtb-intro .eyebrow { color:var(--green); }
.dtb-intro h3 { margin:0; font-family:"Nunito Sans",sans-serif; font-size:clamp(44px,5vw,76px); letter-spacing:-.055em; line-height:.96; }
.dtb-intro h3 span { color:var(--pink); }
.dtb-intro > p { margin:0 0 5px; color:rgba(255,255,255,.62); line-height:1.72; font-size:15px; }

.dtb-principles { display:flex; flex-wrap:wrap; gap:9px; padding-bottom:34px; border-bottom:1px solid rgba(255,255,255,.10); }
.dtb-principles span { display:flex; align-items:center; gap:7px; padding:9px 12px; border:1px solid rgba(255,255,255,.12); border-radius:999px; color:rgba(255,255,255,.62); font-size:10px; font-weight:700; }
.dtb-principles b { color:var(--green); font-size:13px; }

.dtb-layout { display:grid; grid-template-columns:minmax(0,1fr) 360px; gap:28px; align-items:start; margin-top:34px; }
.dtb-config { display:grid; gap:20px; }
.dtb-step { background:#fffaf3; color:var(--ink); border-radius:25px; padding:28px; box-shadow:0 18px 55px rgba(0,0,0,.14); }
.dtb-step-head { display:grid; grid-template-columns:44px 1fr; gap:13px; align-items:start; margin-bottom:22px; }
.dtb-step-head > span { width:42px; height:42px; display:grid; place-items:center; border-radius:13px; background:var(--pink); color:#fff; font-size:11px; font-weight:900; }
.dtb-step-head h4 { margin:1px 0 4px; font-family:"Nunito Sans",sans-serif; font-size:28px; letter-spacing:-.035em; }
.dtb-step-head p { margin:0; color:var(--muted); line-height:1.5; font-size:12px; }

.dtb-presets { display:grid; grid-template-columns:repeat(3,1fr); gap:9px; margin-bottom:18px; }
.dtb-presets button { border:1px solid var(--line); background:#fff; border-radius:14px; padding:13px; text-align:left; cursor:pointer; transition:.2s ease; }
.dtb-presets button:hover { border-color:var(--pink); transform:translateY(-2px); box-shadow:0 10px 24px rgba(85,44,61,.08); }
.dtb-presets b,.dtb-presets span { display:block; }
.dtb-presets b { font-size:12px; }
.dtb-presets span { color:var(--muted); font-size:10px; margin-top:4px; }

.dtb-fields { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.dtb-fields label,.dtb-notes { display:block; font-size:10px; font-weight:900; text-transform:uppercase; letter-spacing:.09em; color:var(--muted); }
.dtb-fields input,.dtb-fields select,.dtb-notes textarea,.dtb-variant-row select {
  display:block; width:100%; margin-top:7px; border:1px solid var(--line); background:#fff; color:var(--ink);
  border-radius:11px; padding:11px 12px; outline:0; font:inherit; font-size:12px; text-transform:none; letter-spacing:0;
  transition:border .2s ease, box-shadow .2s ease;
}
.dtb-fields input:focus,.dtb-fields select:focus,.dtb-notes textarea:focus,.dtb-variant-row select:focus { border-color:var(--pink); box-shadow:0 0 0 3px rgba(217,93,166,.08); }
.dtb-notes { margin-top:14px; }
.dtb-notes textarea { resize:vertical; min-height:90px; }

.dtb-guidance { margin:0 0 16px; padding:14px 15px; border-radius:14px; background:#191619; color:#fff; display:grid; grid-template-columns:auto 1fr; gap:14px; align-items:center; }
.dtb-guidance div { padding-right:15px; border-right:1px solid rgba(255,255,255,.14); white-space:nowrap; }
.dtb-guidance span { display:block; font-size:9px; text-transform:uppercase; letter-spacing:.12em; color:rgba(255,255,255,.5); }
.dtb-guidance b { display:block; margin-top:3px; color:var(--green); font-size:20px; }
.dtb-guidance p { margin:0; color:rgba(255,255,255,.63); line-height:1.5; font-size:10px; }

.dtb-menu { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.dtb-dessert-card { overflow:hidden; border:1px solid var(--line); border-radius:18px; background:#fff; transition:border .2s ease, box-shadow .2s ease, transform .2s ease; }
.dtb-dessert-card.is-selected { border-color:rgba(217,93,166,.42); box-shadow:0 12px 32px rgba(89,41,61,.08); }
.dtb-dessert-card.has-error { border-color:#b32929; }
.dtb-dessert-media { height:160px; overflow:hidden; background:#eee; }
.dtb-dessert-media img { width:100%; height:100%; object-fit:cover; transition:transform .55s ease; }
.dtb-dessert-card:hover .dtb-dessert-media img { transform:scale(1.035); }
.dtb-dessert-body { padding:15px; }
.dtb-dessert-title { display:flex; justify-content:space-between; align-items:start; gap:12px; }
.dtb-dessert-title h5 { margin:0 0 4px; font-size:17px; }
.dtb-dessert-title p { margin:0; color:var(--muted); font-size:10px; line-height:1.45; }
.dtb-dessert-title > span { flex:none; min-width:28px; height:28px; padding:0 7px; border-radius:9px; background:var(--pink); color:#fff; display:grid; place-items:center; font-size:11px; font-weight:900; }
.dtb-variant-row { display:grid; grid-template-columns:1fr auto; gap:10px; align-items:end; margin-top:13px; }
.dtb-variant-row label { font-size:9px; font-weight:900; text-transform:uppercase; letter-spacing:.08em; color:var(--muted); }
.dtb-variant-row select { margin-top:5px; padding:9px 10px; }
.dtb-variant-price { text-align:right; white-space:nowrap; }
.dtb-variant-price span,.dtb-variant-price small { display:block; color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:.08em; }
.dtb-variant-price b { display:block; color:var(--pink); font-size:16px; line-height:1.15; }
.dtb-dessert-foot { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:13px; padding-top:12px; border-top:1px solid var(--line); }
.dtb-minimum span { display:block; color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:.09em; }
.dtb-minimum b { display:block; font-size:10px; margin-top:3px; }
.dtb-table-qty { display:grid; grid-template-columns:30px 48px 30px; border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.dtb-table-qty button { border:0; background:#fff; height:32px; cursor:pointer; font-size:16px; }
.dtb-table-qty input { width:48px; height:32px; border:0; border-left:1px solid var(--line); border-right:1px solid var(--line); outline:0; text-align:center; font-weight:900; -moz-appearance:textfield; }
.dtb-table-qty input::-webkit-outer-spin-button,.dtb-table-qty input::-webkit-inner-spin-button { -webkit-appearance:none; margin:0; }
.dtb-add-min { width:100%; margin-top:10px; border:0; border-radius:10px; background:#f3ece7; color:var(--ink); padding:9px 10px; cursor:pointer; font-size:9px; font-weight:900; text-align:left; }
.dtb-add-min:hover { background:var(--green); }
.dtb-line-total { display:flex; justify-content:space-between; gap:10px; margin-top:10px; padding:8px 10px; border-radius:9px; background:rgba(154,196,40,.13); font-size:9px; }
.dtb-line-total b { color:var(--ink); }
.dtb-card-error { margin:9px 0 0; color:#a92525; font-size:9px; line-height:1.4; font-weight:800; }

.dtb-service-options { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:14px; }
.service-option { position:relative; display:block; cursor:pointer; }
.service-option input { position:absolute; opacity:0; pointer-events:none; }
.service-option > span { display:block; min-height:98px; border:1px solid var(--line); border-radius:15px; padding:14px; transition:.2s ease; }
.service-option input:checked + span { border-color:var(--pink); box-shadow:inset 0 0 0 1px var(--pink); background:rgba(217,93,166,.035); }
.service-option b,.service-option small { display:block; }
.service-option b { font-size:12px; margin-bottom:6px; }
.service-option small { color:var(--muted); font-size:10px; line-height:1.45; }

.dtb-summary { position:sticky; top:118px; }
.dtb-summary-card { border:1px solid rgba(255,255,255,.12); border-radius:24px; background:rgba(255,255,255,.055); backdrop-filter:blur(12px); padding:22px; box-shadow:0 24px 65px rgba(0,0,0,.22); }
.dtb-summary-kicker { display:block; color:var(--green); font-size:9px; font-weight:900; text-transform:uppercase; letter-spacing:.16em; }
.dtb-summary h4 { margin:8px 0 18px; font-family:"Nunito Sans",sans-serif; font-size:35px; letter-spacing:-.045em; }
.dtb-metric-grid { display:grid; grid-template-columns:1fr 1fr; gap:8px; }
.dtb-metric-grid div { border:1px solid rgba(255,255,255,.10); border-radius:13px; padding:12px; }
.dtb-metric-grid span,.dtb-metric-grid small { display:block; color:rgba(255,255,255,.48); font-size:8px; text-transform:uppercase; letter-spacing:.1em; }
.dtb-metric-grid b { display:block; color:#fff; font-size:26px; margin:2px 0; }
.dtb-progress { height:5px; overflow:hidden; border-radius:99px; background:rgba(255,255,255,.10); margin:12px 0; }
.dtb-progress span { display:block; width:0; height:100%; background:var(--pink); transition:width .35s ease, background .25s ease; }
.dtb-progress span.is-complete { background:var(--green); }
.dtb-variety-line { display:flex; justify-content:space-between; gap:12px; color:rgba(255,255,255,.5); font-size:9px; padding-bottom:14px; border-bottom:1px solid rgba(255,255,255,.10); }
.dtb-variety-line b { color:#fff; }
.dtb-summary-lines { max-height:230px; overflow:auto; margin:13px 0; padding-right:3px; }
.dtb-summary-lines > p { color:rgba(255,255,255,.48); font-size:10px; line-height:1.5; }
.dtb-summary-lines > div { display:flex; justify-content:space-between; gap:12px; padding:9px 0; border-bottom:1px solid rgba(255,255,255,.08); }
.dtb-summary-lines span b,.dtb-summary-lines span small { display:block; }
.dtb-summary-lines span b { color:#fff; font-size:10px; }
.dtb-summary-lines span small { color:rgba(255,255,255,.42); font-size:8px; margin-top:3px; }
.dtb-summary-lines strong { color:var(--green); font-size:10px; white-space:nowrap; }
.dtb-price-row { display:flex; justify-content:space-between; align-items:end; gap:12px; padding:11px 0 0; }
.dtb-price-row span { color:rgba(255,255,255,.55); font-size:9px; max-width:150px; }
.dtb-price-row b { color:var(--green); font-size:22px; }
.dtb-price-row.secondary { padding-top:5px; }
.dtb-price-row.secondary b { color:#fff; font-size:13px; }
.dtb-status { display:grid; gap:6px; margin:13px 0; }
.dtb-status p { margin:0; border-radius:10px; padding:8px 9px; font-size:8px; line-height:1.45; }
.dtb-status .error { background:rgba(218,70,70,.14); color:#ffc3c3; }
.dtb-status .notice { background:rgba(255,255,255,.07); color:rgba(255,255,255,.65); }
.dtb-status .tip { background:rgba(217,93,166,.15); color:#ffc2df; }
.dtb-status .success { background:rgba(154,196,40,.14); color:#dff5a7; }
.dtb-disclaimer { display:block; margin-top:10px; color:rgba(255,255,255,.38); font-size:8px; line-height:1.45; }

@media (max-width:1100px) {
  .dtb-layout { grid-template-columns:1fr; }
  .dtb-summary { position:relative; top:auto; }
  .dtb-summary-card { display:grid; grid-template-columns:1fr 1fr; gap:0 24px; }
  .dtb-summary-kicker,.dtb-summary h4,.dtb-metric-grid,.dtb-progress,.dtb-variety-line { grid-column:1; }
  .dtb-summary-lines,.dtb-price-row,.dtb-status,.dtb-summary-card .btn,.dtb-disclaimer { grid-column:2; }
  .dtb-summary-lines { grid-row:1 / span 5; margin-top:0; }
}

@media (max-width:780px) {
  .site-header { grid-template-columns:1fr auto auto; }
  .brand img { width:36px; height:36px; }
  .brand-wordmark { font-size:19px; }
  .dessert-table-builder { padding:28px 18px; border-radius:26px; }
  .dtb-intro { grid-template-columns:1fr; gap:14px; }
  .dtb-intro h3 { font-size:clamp(40px,12vw,58px); }
  .dtb-principles { gap:6px; }
  .dtb-presets,.dtb-fields,.dtb-service-options,.dtb-menu { grid-template-columns:1fr; }
  .dtb-step { padding:20px 15px; border-radius:20px; }
  .dtb-guidance { grid-template-columns:1fr; }
  .dtb-guidance div { border-right:0; border-bottom:1px solid rgba(255,255,255,.14); padding:0 0 10px; }
  .dtb-dessert-media { height:190px; }
  .dtb-summary-card { display:block; }
  .dtb-summary-lines { max-height:none; }
  .table-promo-card { min-height:440px; padding:28px 22px; }
  .table-promo-card::before { right:-80px; top:38px; }
  .table-promo-card::after { right:-36px; top:82px; }
}


/* V4 · compra directa por WhatsApp */
.header-whatsapp {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:42px;
  padding:0 14px;
  border:1px solid var(--line);
  border-radius:999px;
  background:rgba(255,255,255,.72);
  color:var(--ink);
  font-size:12px;
  font-weight:800;
  text-decoration:none;
}
.header-whatsapp:hover { border-color:var(--pink); color:var(--pink); }
.optional-label { font-weight:500; color:var(--muted); }
.dtb-event-meta { border:1px solid var(--line);border-radius:12px;padding:12px 14px;min-width:0; }
.dtb-event-meta span { display:block;color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.1em;margin-bottom:4px; }
.dtb-event-meta b { font-size:13px; }
.allergen-note {
  padding:72px max(6vw,24px);
  background:#f2e6dd;
  display:grid;
  grid-template-columns:.85fr 1.15fr auto;
  gap:36px;
  align-items:center;
  border-top:1px solid var(--line);
}
.allergen-note h2 { margin:8px 0 0;font-family:"Nunito Sans";font-size:clamp(30px,3vw,48px);letter-spacing:-.04em;line-height:1.02; }
.allergen-note p { margin:0;color:var(--muted);line-height:1.7;max-width:760px; }
@media (max-width:980px) {
  .header-whatsapp { display:none; }
  .allergen-note { grid-template-columns:1fr;gap:20px; }
  .allergen-note .btn { width:max-content; }
}


/* V4.2 · Modelo comercial por volumen / eventos / reventa */
.hero-note { display:block; margin-top:14px; font-size:11px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.76); }

.service-models { padding:120px max(6vw,24px); background:#fff; }
.service-models-head { max-width:900px; margin-bottom:42px; }
.service-models-head h2 { margin:10px 0 14px; font-family:"Nunito Sans",sans-serif; font-size:clamp(38px,5vw,72px); line-height:.98; letter-spacing:-.05em; }
.service-models-head h2 span { color:var(--pink); }
.service-models-head p { max-width:760px; color:var(--muted); line-height:1.7; }
.service-models-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; }
.service-model-card { min-height:330px; border-radius:28px; padding:28px; display:flex; flex-direction:column; }
.service-model-card.pink { background:var(--pink); color:#fff; }
.service-model-card.green { background:var(--green); color:var(--ink); }
.service-model-card.cream { background:#E7D9CD; color:var(--ink); }
.service-model-card > span { font-size:11px; font-weight:900; letter-spacing:.13em; opacity:.7; }
.service-model-card h3 { margin:52px 0 12px; font-family:"Nunito Sans",sans-serif; font-size:30px; line-height:1.02; letter-spacing:-.035em; }
.service-model-card p { margin:0 0 26px; line-height:1.6; opacity:.78; }
.service-model-action { margin-top:auto; align-self:flex-start; border:0; background:transparent; padding:0; color:inherit; cursor:pointer; font:inherit; }
.service-model-card.pink .service-model-action { color:#fff; }

.catalog-condition { max-width:760px; margin:20px 0 0; color:var(--muted); line-height:1.65; font-size:14px; }
.product-price-block { text-align:right; }
.product-price-block small { display:block; margin-top:4px; max-width:150px; color:var(--muted); font-size:9px; line-height:1.35; }
.detail-price > div small { display:block; margin-top:4px; color:var(--muted); font-size:10px; line-height:1.4; }
.service-link--secondary { background:#fff; color:var(--ink); border:1px solid rgba(255,255,255,.2); }
.dtb-response-note { margin:13px 0 8px; padding:14px; border:1px solid rgba(154,196,40,.28); border-radius:14px; background:rgba(154,196,40,.08); }
.dtb-response-note span { display:block; color:var(--green); font-size:9px; font-weight:900; text-transform:uppercase; letter-spacing:.12em; }
.dtb-response-note b { display:block; margin-top:6px; color:#fff; font-size:11px; line-height:1.5; }

@media (max-width: 900px) {
  .service-models-grid { grid-template-columns:1fr; }
  .service-model-card { min-height:260px; }
}
@media (max-width: 600px) {
  .service-models { padding:84px 18px; }
  .service-model-card h3 { margin-top:36px; }
  .product-price-block { text-align:left; }
}


/* Galería de eventos: estructura preparada para fotografías reales.
   Permanece oculta mediante [hidden] hasta incorporar el material final. */
.event-gallery[hidden] { display:none !important; }
.event-gallery { margin:34px 0 4px; padding:28px; border:1px solid rgba(255,255,255,.10); border-radius:24px; background:rgba(255,255,255,.045); }
.event-gallery-head { display:grid; grid-template-columns:1fr .75fr; gap:40px; align-items:end; margin-bottom:20px; }
.event-gallery-head .eyebrow { color:var(--green); }
.event-gallery-head h4 { margin:7px 0 0; color:#fff; font-family:"Nunito Sans",sans-serif; font-size:clamp(27px,3vw,42px); letter-spacing:-.04em; line-height:1; }
.event-gallery-head p { margin:0; color:rgba(255,255,255,.55); font-size:12px; line-height:1.65; }
.event-gallery-grid { display:grid; grid-template-columns:1.35fr 1fr 1fr; grid-auto-rows:210px; gap:12px; }
.event-gallery-card { position:relative; overflow:hidden; margin:0; border-radius:18px; background:#242124; }
.event-gallery-card--wide { grid-row:span 2; }
.event-photo-placeholder { width:100%; height:100%; display:grid; place-content:center; text-align:center; background:radial-gradient(circle at 25% 25%, rgba(154,196,40,.20), transparent 35%), radial-gradient(circle at 75% 70%, rgba(217,93,166,.23), transparent 38%), #211e21; color:rgba(255,255,255,.35); }
.event-photo-placeholder span { display:block; font-family:"Nunito Sans",sans-serif; font-size:44px; font-weight:900; letter-spacing:-.05em; }
.event-photo-placeholder small { display:block; margin-top:2px; font-size:8px; font-weight:900; text-transform:uppercase; letter-spacing:.18em; }
.event-gallery-card > img { width:100%; height:100%; object-fit:cover; display:block; transition:transform .6s ease; }
.event-gallery-card:hover > img { transform:scale(1.025); }
.event-gallery-card figcaption { position:absolute; inset:auto 12px 12px; padding:10px 12px; border-radius:12px; background:rgba(20,18,20,.68); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); color:#fff; }
.event-gallery-card figcaption b,.event-gallery-card figcaption span { display:block; }
.event-gallery-card figcaption b { font-size:11px; }
.event-gallery-card figcaption span { margin-top:2px; color:rgba(255,255,255,.55); font-size:8px; }
@media (max-width:900px) {
  .event-gallery-head { grid-template-columns:1fr; gap:10px; }
  .event-gallery-grid { grid-template-columns:1fr 1fr; grid-auto-rows:190px; }
  .event-gallery-card--wide { grid-row:span 1; }
}
@media (max-width:560px) {
  .event-gallery { padding:18px; }
  .event-gallery-grid { grid-template-columns:1fr; grid-auto-rows:220px; }
}

/* =========================================================
   V4.4 — Flujo comercial + responsive hardening
   ========================================================= */

/* Las anclas nunca deben quedar detrás del navbar fijo. */
html { scroll-padding-top: calc(var(--header-h) + 34px); }
main section[id], #alergenos { scroll-margin-top: calc(var(--header-h) + 34px); }

.btn:disabled,
.book-arrow:disabled,
#tableQuoteBtn:disabled {
  opacity: .48;
  cursor: not-allowed;
  transform: none !important;
  box-shadow: none;
}

/* Navegación y filtros: estados inequívocos y targets táctiles reales. */
.category-tabs button {
  min-height: 44px;
  padding: 10px 15px;
  border-radius: 999px;
  background: #fff;
  color: var(--ink);
  font-weight: 800;
  font-size: 12px;
  cursor: pointer;
  transition: background .2s ease, color .2s ease, border-color .2s ease, transform .2s ease;
}
.category-tabs button:hover { border-color: rgba(217,93,166,.5); transform: translateY(-1px); }
.category-tabs button.is-active {
  border-color: var(--pink);
  background: var(--pink);
  color: #fff;
}

/* Explica el flujo una sola vez, en vez de repetirlo dentro de cada tarjeta. */
.catalog-flow {
  max-width: 980px;
  margin: 28px 0 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(255,255,255,.62);
  overflow: hidden;
}
.catalog-flow span {
  min-height: 58px;
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 12px 14px;
  border-right: 1px solid var(--line);
  color: var(--muted);
  font-size: 11px;
  font-weight: 700;
}
.catalog-flow span:last-child { border-right: 0; }
.catalog-flow b {
  width: 26px;
  height: 26px;
  flex: none;
  display: grid;
  place-items: center;
  border-radius: 9px;
  background: rgba(217,93,166,.09);
  color: var(--pink);
  font-size: 11px;
}

/* Tarjeta de producto: cantidad -> estado -> detalle. */
.product-purchase {
  grid-template-columns: minmax(0,1fr) auto;
  gap: 10px 14px;
}
.purchase-label span,
.purchase-label small { display: block; }
.purchase-label span { font-size: 11px; font-weight: 900; color: var(--ink); }
.purchase-label small { margin-top: 3px; color: var(--muted); font-size: 9px; line-height: 1.35; }
.purchase-status {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-top: 10px;
  border-top: 1px dashed rgba(45,37,40,.12);
  font-size: 10px;
  color: var(--muted);
}
.purchase-status b { color: var(--pink); }
.purchase-status button {
  min-height: 34px;
  border: 0;
  border-radius: 9px;
  background: rgba(217,93,166,.08);
  color: var(--pink);
  padding: 7px 10px;
  font-weight: 900;
  cursor: pointer;
}

/* Los CTA de los tres modelos deben parecer acciones, no texto decorativo. */
.service-model-action {
  display: inline-flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  min-height: 44px;
  padding: 10px 14px;
  border: 1px solid currentColor !important;
  border-radius: 12px;
  font-weight: 900;
  text-decoration: none;
}
.service-model-card.pink .service-model-action { border-color: rgba(255,255,255,.42) !important; }
.service-model-card.green .service-model-action,
.service-model-card.cream .service-model-action { border-color: rgba(45,37,40,.22) !important; }

/* ---------- Catálogo editorial: debe caber a zoom 100% ---------- */
.lookbook { padding: 92px max(5vw,24px) 86px; }
.lookbook-head {
  max-width: 1120px;
  margin-bottom: 34px;
  grid-template-columns: minmax(0,1.05fr) minmax(280px,.7fr);
  gap: 6vw;
}
.lookbook .section-heading h2 { font-size: clamp(42px, 4.9vw, 72px); }
.book-shell { max-width: 1120px; }
.book-spread {
  min-height: 0;
  height: clamp(460px, 56vh, 540px);
}
.book-page-inner {
  min-height: 0;
  height: 100%;
  padding: 30px 32px;
}
.book-page-title {
  font-size: clamp(30px, 3.15vw, 48px);
  line-height: .98;
  margin: 10px 0 10px;
}
.book-page-copy { font-size: 13px; line-height: 1.52; }
.book-photo { min-height: 0; margin-top: 18px; border-radius: 17px; }
.book-note { right: 18px; bottom: 24px; max-width: 200px; padding: 11px 13px; font-size: 10px; }
.book-product-list { margin-top: 20px; gap: 0; }
.book-product-row {
  grid-template-columns: 42px minmax(0,1fr) auto;
  gap: 10px;
  padding: 9px 0;
}
.book-product-row img { width: 42px; height: 42px; border-radius: 9px; }
.book-product-row b { font-size: 12px; }
.book-product-row small { font-size: 9px; }
.book-product-row > span { font-size: 11px; }
.book-cta { margin-top: 12px; min-height: 40px; }
.book-controls { margin-top: 17px; }

/* ---------- Carrito: estado del mínimo y CTA determinista ---------- */
.order-minimum-status {
  margin-bottom: 13px;
  padding: 13px 14px;
  border: 1px solid var(--line);
  border-radius: 14px;
  background: #faf7f2;
}
.order-minimum-head { display: flex; justify-content: space-between; gap: 12px; align-items: center; }
.order-minimum-head span { font-size: 10px; font-weight: 900; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); }
.order-minimum-head b { color: var(--pink); font-size: 12px; white-space: nowrap; }
.order-minimum-progress { height: 6px; margin: 9px 0 7px; overflow: hidden; border-radius: 99px; background: rgba(45,37,40,.09); }
.order-minimum-progress span { display: block; width: 0; height: 100%; background: var(--pink); transition: width .25s ease, background .2s ease; }
.order-minimum-progress span.is-complete { background: var(--green); }
.order-minimum-status > small { margin: 0; font-size: 9px; line-height: 1.45; color: var(--muted); }
#checkoutBtn:disabled { background: #b9afb3; color: #fff; }
.drawer-foot { max-height: 63dvh; overflow-y: auto; overscroll-behavior: contain; }

/* Configurador: el campo de decoración aparece solo cuando hay montaje. */
#tableStyleField[hidden] { display: none !important; }
.dtb-step input,
.dtb-step select,
.dtb-step textarea { min-height: 44px; }

/* ---------- Tablet ---------- */
@media (max-width: 980px) {
  .nav { top: calc(10px + var(--header-h) + 8px); }
  .lookbook { padding-top: 84px; }
  .book-spread { height: 520px; min-height: 0; }
  .book-page-inner { min-height: 0; padding: 26px; }
  .book-page-title { font-size: clamp(29px, 4.2vw, 42px); }
  .book-photo { min-height: 0; }
  .catalog-flow { grid-template-columns: 1fr 1fr; }
  .catalog-flow span:nth-child(2) { border-right: 0; }
  .catalog-flow span:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
}

/* ---------- Mobile ---------- */
@media (max-width: 700px) {
  :root { --header-h: 66px; }
  html { scroll-padding-top: calc(var(--header-h) + 26px); }
  main section[id], #alergenos { scroll-margin-top: calc(var(--header-h) + 26px); }

  .site-header {
    top: max(8px, env(safe-area-inset-top));
    height: var(--header-h);
    width: calc(100% - 16px);
    padding: 0 8px 0 12px;
    border-radius: 17px;
  }
  .nav { left: 8px; right: 8px; top: calc(max(8px, env(safe-area-inset-top)) + var(--header-h) + 8px); }
  .brand-wordmark { font-size: 17px; }
  .brand img { width: 34px; height: 34px; }
  .menu-toggle { width: 40px; height: 40px; }
  .cart-button { min-width: 42px; min-height: 42px; padding: 8px; }
  .cart-button b { width: 25px; height: 25px; }

  /* En pantallas bajas el hero crece, nunca recorta el título bajo el navbar. */
  .hero { min-height: max(100svh, 690px); }
  .hero-slide {
    align-items: center;
    padding: calc(var(--header-h) + 70px) 18px 92px;
  }
  .hero-content { width: 100%; max-width: 620px; }
  .hero h1 { font-size: clamp(40px, 11.8vw, 58px); line-height: .98; }
  .hero p { margin: 16px 0 16px; font-size: 14px; line-height: 1.5; }
  .hero-note { margin-top: 10px; font-size: 9px; line-height: 1.45; }
  .hero-ctas { margin-top: 18px; gap: 9px; }
  .hero-ctas .btn { min-height: 47px; flex: 1 1 150px; padding: 13px 14px; }
  .hero-controls { bottom: 18px; }

  .service-models,
  .catalog,
  .about,
  .contact { padding-top: 82px; padding-bottom: 82px; }

  .catalog-flow { margin-top: 22px; grid-template-columns: 1fr; }
  .catalog-flow span { min-height: 48px; border-right: 0; border-bottom: 1px solid var(--line); }
  .catalog-flow span:last-child { border-bottom: 0; }
  .catalog-toolbar { margin-top: 28px; }
  .category-tabs { display: grid; grid-template-columns: 1fr 1fr; width: 100%; }
  .category-tabs button { width: 100%; }

  .product-info { padding: 18px; }
  .product-purchase { grid-template-columns: 1fr auto; }
  .purchase-status { align-items: stretch; }
  .purchase-status button { min-height: 38px; }

  /* Libro móvil: una sola página compacta, sin 590px vacíos. */
  .lookbook { padding: 78px 14px 72px; }
  .lookbook-head { margin-bottom: 26px; }
  .lookbook .section-heading h2 { font-size: clamp(38px, 11vw, 52px); }
  .book-topline { margin-bottom: 10px; }
  .book-spread { height: 520px; min-height: 520px; }
  .book-page-right { height: 520px; min-height: 520px; }
  .book-page-inner { height: 520px; min-height: 520px; padding: 23px 20px; }
  .book-page-title { font-size: clamp(30px, 9vw, 40px); margin-top: 8px; }
  .book-page-copy { font-size: 12px; line-height: 1.45; }
  .book-product-list { margin-top: 14px; }
  .book-product-row { padding: 8px 0; grid-template-columns: 38px minmax(0,1fr) auto; }
  .book-product-row img { width: 38px; height: 38px; }
  .book-cta { width: 100%; justify-content: center; }
  .book-controls { margin-top: 14px; }

  .dessert-table-builder { margin-left: -2px; margin-right: -2px; }
  .dtb-step-head { grid-template-columns: 38px 1fr; }
  .dtb-step-head > span { width: 36px; height: 36px; }
  .dtb-step-head h4 { font-size: 24px; }
  .dtb-summary h4 { font-size: 29px; }

  .cart-drawer { width: 100%; }
  .drawer-head { padding: 20px 18px; }
  .drawer-head h2 { font-size: 31px; }
  .cart-items { padding: 8px 18px; }
  .drawer-foot { padding: 16px 18px calc(18px + env(safe-area-inset-bottom)); max-height: 68dvh; }
  .cart-item { grid-template-columns: 58px minmax(0,1fr) auto; gap: 9px; }
  .cart-item img { width: 58px; height: 58px; }
  .cart-item > div:last-child { text-align: right; font-size: 11px; }
  .event-order-panel { padding: 12px; }
  .service-link { min-height: 42px; }
}

@media (max-width: 430px) {
  .brand-wordmark { display: none; }
  .site-header { grid-template-columns: 1fr auto auto; }
  .hero h1 { font-size: clamp(39px, 12.3vw, 52px); }
  .section-heading h2,
  .about h2,
  .contact h2 { font-size: clamp(39px, 11vw, 52px); }
  .product-media { height: 255px; }
  .book-spread,
  .book-page-right,
  .book-page-inner { height: 500px; min-height: 500px; }
}

/* =========================================================
   V4.5 — detalle inmersivo, fechas nativas y lookbook útil
   ========================================================= */

/* La tarjeta completa comunica que tiene un segundo nivel de detalle. */
.product-card[data-open-card] { cursor:pointer; }
.product-card[data-open-card]:focus-visible { outline:3px solid rgba(217,93,166,.28); outline-offset:4px; }
.product-card .card-qty-control,
.product-card .purchase-status button,
.product-card .product-open { cursor:auto; }
.product-card .card-qty-control button,
.product-card .purchase-status button,
.product-card .product-open { cursor:pointer; }

/* Detalle de producto: usa prácticamente todo el viewport en lugar de un modal pequeño. */
.product-modal {
  width:min(1440px, calc(100vw - 32px));
  height:min(900px, calc(100dvh - 32px));
  max-width:none;
  max-height:none;
  border-radius:26px;
}
.product-modal[open] { display:block; }
.product-modal .modal-close {
  position:fixed;
  top:max(26px, calc(env(safe-area-inset-top) + 18px));
  right:max(26px, calc(env(safe-area-inset-right) + 18px));
  z-index:10;
  background:rgba(255,255,255,.92);
  box-shadow:0 8px 30px rgba(20,14,17,.14);
}
.product-detail { min-height:100%; height:100%; grid-template-columns:minmax(0,1.08fr) minmax(420px,.92fr); }
.product-detail-media { min-height:100%; height:100%; }
.product-detail-copy { height:100%; overflow-y:auto; padding:clamp(42px,5vw,78px) clamp(34px,4.5vw,68px) 44px; }
.product-detail-copy h2 { font-size:clamp(48px,5.5vw,80px); }
.product-detail-copy > p { max-width:650px; font-size:15px; }
.detail-possibilities { margin:22px 0 2px; padding:18px 0 20px; border-top:1px solid var(--line); }
.detail-possibilities > span { display:block; margin-bottom:11px; color:var(--muted); font-size:10px; font-weight:900; letter-spacing:.1em; text-transform:uppercase; }
.detail-possibilities > div { display:flex; flex-wrap:wrap; gap:8px; }
.detail-possibilities button { border:1px solid var(--line); border-radius:999px; background:#fff; padding:9px 12px; color:var(--ink); font:inherit; font-size:11px; font-weight:800; }
.detail-possibilities small { display:block; margin-top:10px; color:var(--muted); line-height:1.5; font-size:9px; }

/* Los inputs date se quedan nativos: el navegador impide meses/días imposibles y respeta min. */
input[type="date"] { color-scheme:light; cursor:pointer; }
input[type="date"]::-webkit-calendar-picker-indicator { cursor:pointer; }

/* Opciones de sabores/acabados para eventos: no requieren fotografía. */
.dtb-options { margin:16px 0 4px; padding-top:15px; border-top:1px solid var(--line); }
.dtb-options-head { display:flex; justify-content:space-between; gap:12px; align-items:center; margin-bottom:10px; }
.dtb-options-head span { font-size:10px; font-weight:900; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); }
.dtb-options-head small { font-size:9px; font-weight:900; color:var(--pink); }
.dtb-option-grid { display:flex; flex-wrap:wrap; gap:7px; }
.dtb-option {
  border:1px solid rgba(45,37,40,.16);
  border-radius:999px;
  background:#fff;
  padding:9px 12px;
  color:var(--ink);
  font:inherit;
  font-size:10px;
  font-weight:800;
  cursor:pointer;
  transition:.18s ease;
}
.dtb-option:hover { border-color:rgba(217,93,166,.44); transform:translateY(-1px); }
.dtb-option.is-active { background:var(--pink); border-color:var(--pink); color:#fff; }
.dtb-options-note { display:block; margin-top:8px; color:var(--muted); font-size:8px; line-height:1.45; }

/* El libro deja de repetir el ecommerce: funciona como lookbook de posibilidades. */
.book-idea-layout { display:grid; grid-template-columns:minmax(120px,.72fr) minmax(0,1.28fr); gap:16px; align-items:stretch; margin-top:17px; min-height:0; }
.book-idea-layout > img { width:100%; height:100%; min-height:190px; object-fit:cover; border-radius:16px; }
.book-choice-cloud { align-content:start; display:flex; flex-wrap:wrap; gap:8px; }
.book-choice-cloud span { display:inline-flex; align-items:center; min-height:36px; padding:9px 11px; border-radius:999px; background:rgba(255,255,255,.72); color:var(--ink); font-size:10px; font-weight:900; line-height:1.15; }
.book-choice-cloud--light span { background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.16); color:#fff; }
.book-pairing-grid { display:grid; gap:10px; margin-top:22px; }
.book-pairing-grid > span { padding:14px 15px; border:1px solid var(--line); border-radius:14px; font-size:11px; font-weight:850; line-height:1.45; }
.book-pairing-grid b { display:inline-flex; margin-right:8px; color:var(--pink); }
.book-pairing-grid small { margin-left:29px; color:var(--muted); font-size:9px; }

@media (max-width: 900px) {
  .product-modal {
    width:calc(100vw - 16px);
    height:calc(100dvh - 16px);
    border-radius:20px;
  }
  .product-detail { grid-template-columns:1fr; height:auto; min-height:100%; }
  .product-detail-media { height:min(42dvh,390px); min-height:280px; }
  .product-detail-copy { height:auto; overflow:visible; padding:32px 22px calc(28px + env(safe-area-inset-bottom)); }
  .product-detail-copy h2 { font-size:clamp(40px,10vw,58px); }
}

@media (max-width:700px) {
  .product-modal {
    inset:0;
    width:100vw;
    height:100dvh;
    margin:0;
    border-radius:0;
  }
  .product-modal .modal-close { top:max(14px, calc(env(safe-area-inset-top) + 8px)); right:14px; }
  .product-detail-media { height:38dvh; min-height:250px; }
  .product-detail-copy { padding-top:28px; }
  .book-idea-layout { grid-template-columns:1fr; gap:10px; margin-top:12px; }
  .book-idea-layout > img { display:none; }
  .book-choice-cloud { gap:6px; }
  .book-choice-cloud span { min-height:32px; padding:8px 10px; font-size:9px; }
  .book-pairing-grid { gap:7px; margin-top:13px; }
  .book-pairing-grid > span { padding:10px 11px; }
  .dtb-option { min-height:38px; padding:9px 12px; }
}
.detail-possibilities > div > span { border:1px solid var(--line); border-radius:999px; background:#fff; padding:9px 12px; color:var(--ink); font-size:11px; font-weight:800; }


/* Identidad final SofystiCakes · octubre 2026 */
[hidden] { display:none !important; }
.quote-anchor { height:1px; scroll-margin-top:calc(var(--header-h) + 34px); }
.brand { position:relative; width:205px; height:58px; padding:0; overflow:visible; }
.brand img { width:205px; height:58px; object-fit:contain; object-position:left center; flex-shrink:0; }
.product-media--illustration { background:var(--paper); }
.product-art { position:relative; width:100%; height:100%; min-height:180px; display:grid; place-items:center; overflow:hidden; background:radial-gradient(circle at 75% 22%,rgba(154,196,40,.25),transparent 30%),radial-gradient(circle at 18% 82%,rgba(217,93,166,.20),transparent 34%),linear-gradient(145deg,#fff9f5,#f5e9e8); }
.product-art::before { content:""; position:absolute; width:210px; height:210px; border:18px solid rgba(217,93,166,.18); border-left-color:transparent; border-radius:50%; transform:rotate(-28deg); }
.product-art img { position:relative; z-index:1; width:94px; height:94px; object-fit:contain; opacity:.92; }
.product-art span { position:absolute; z-index:2; bottom:18px; left:18px; right:18px; color:#8d3f68; font-family:"Nunito Sans",sans-serif; font-size:clamp(18px,2vw,26px); font-weight:900; letter-spacing:-.04em; }
.product-art--arroz-con-leche { background:radial-gradient(circle at 75% 18%,rgba(154,196,40,.2),transparent 30%),#fff9f5; }
.product-art--pan-banano { background:radial-gradient(circle at 25% 20%,rgba(231,217,205,.95),transparent 35%),#fff7ee; }
.product-art--concha { background:radial-gradient(circle at 70% 30%,rgba(217,93,166,.18),transparent 35%),#fff9f5; }
.product-art--pastel-zanahoria { background:radial-gradient(circle at 70% 25%,rgba(154,196,40,.25),transparent 35%),#fff9f5; }
.product-art--tres-leches { background:radial-gradient(circle at 30% 25%,rgba(217,93,166,.16),transparent 35%),#fff9f5; }
.product-art--tiramisu { background:radial-gradient(circle at 75% 20%,rgba(231,217,205,.9),transparent 35%),#fff9f5; }
.product-art--rollo-salado { background:radial-gradient(circle at 70% 20%,rgba(154,196,40,.2),transparent 32%),#f7f0e6; }
.product-detail-media .product-art { min-height:600px; }
.dtb-dessert-media .product-art { min-height:160px; }
.cart-item img[src$="product-art.svg"] { object-fit:cover; background:#fff9f5; }
.quote-extra-fields { padding:15px; margin:4px 0 16px; border:1px solid var(--line); border-radius:16px; background:rgba(255,255,255,.68); }
.quote-extra-fields label { margin-bottom:12px; }
.quote-extra-fields label:last-child { margin-bottom:0; }
.contact-form input[type="date"] { min-height:44px; }
.hero-slide--queques { background-position:center right; }
.hero-slide--queques::before { display:none; }
.hero-slide--queques::after { background:linear-gradient(180deg,rgba(0,0,0,.04),transparent 30%,rgba(0,0,0,.12)); }
@media (max-width:980px) {
  .brand { width:160px; height:50px; }
  .brand img { width:160px; height:50px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
  *,*::before,*::after { animation-duration:.01ms !important; animation-iteration-count:1 !important; transition-duration:.01ms !important; }
}


/* V6 · Encuesta de satisfacción integrada */
.feedback-section { padding:100px max(6vw,24px); background:linear-gradient(135deg,#fff9f5 0%,#fbedf4 55%,#f7f6e9 100%); border-top:1px solid rgba(217,93,166,.13); }
.feedback-shell { max-width:1260px; margin:0 auto; display:grid; grid-template-columns:.78fr 1.22fr; gap:clamp(28px,5vw,76px); align-items:start; position:relative; }
.feedback-copy { position:sticky; top:120px; }
.feedback-copy h2 { margin:12px 0 18px; max-width:500px; font-family:"Nunito Sans",sans-serif; font-size:clamp(42px,5vw,70px); line-height:.98; letter-spacing:-.055em; }
.feedback-copy h2 em { color:var(--pink); font-style:normal; }
.feedback-copy > p { max-width:460px; color:var(--muted); line-height:1.75; font-size:15px; }
.feedback-promise { display:flex; align-items:center; gap:14px; margin-top:28px; padding:16px 18px; max-width:360px; border:1px solid rgba(217,93,166,.16); border-radius:18px; background:rgba(255,255,255,.72); }
.feedback-promise > span { display:grid; place-items:center; flex:0 0 44px; height:44px; border-radius:50%; background:var(--pink); color:white; font-size:27px; }
.feedback-promise b,.feedback-promise small { display:block; }
.feedback-promise b { font-size:13px; }
.feedback-promise small { margin-top:3px; color:var(--muted); font-size:11px; }
.feedback-whatsapp { display:flex; flex-direction:column; align-items:flex-start; gap:5px; margin-top:24px; font-size:12px; color:var(--muted); }
.feedback-whatsapp span { color:var(--pink-dark); font-weight:900; }
.feedback-form { min-width:0; padding:clamp(22px,3vw,38px); background:rgba(255,255,255,.91); border:1px solid rgba(255,255,255,.95); border-radius:28px; box-shadow:0 22px 70px rgba(69,34,49,.10); }
.feedback-honeypot { position:absolute!important; left:-10000px!important; top:auto!important; width:1px!important; height:1px!important; opacity:0!important; pointer-events:none!important; }
.feedback-fieldset { min-width:0; padding:0; margin:0 0 24px; border:0; }
.feedback-fieldset legend,.feedback-label { display:block; width:100%; margin:0 0 12px; font-size:13px; font-weight:900; line-height:1.5; }
.feedback-fieldset legend small,.feedback-label small { font-size:11px; font-weight:500; color:var(--muted); }
.required-mark { color:var(--pink); }
.feedback-rating { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:8px; }
.feedback-rating label { display:flex; flex-direction:column; align-items:center; gap:4px; padding:12px 4px 10px; border:1px solid var(--line); border-radius:14px; cursor:pointer; background:#fff; transition:border-color .2s,background .2s,transform .2s; }
.feedback-rating input { position:absolute; opacity:0; width:1px; height:1px; }
.feedback-rating label > span { color:#e7c6d8; font-size:27px; line-height:1; }
.feedback-rating label > small { color:var(--muted); font-size:10px; text-align:center; }
.feedback-rating label:has(input:checked) { border-color:var(--pink); background:#fff4fa; transform:translateY(-2px); box-shadow:0 0 0 2px rgba(217,93,166,.09); }
.feedback-rating label:has(input:checked) > span { color:var(--magenta); }
.feedback-rating label:focus-within { outline:2px solid var(--pink); outline-offset:2px; }
.feedback-label { margin-bottom:24px; }
.feedback-label select,.feedback-label textarea { display:block; width:100%; margin-top:8px; padding:13px 14px; border:1px solid var(--line); border-radius:13px; background:#fff; color:var(--ink); outline:0; font-size:13px; }
.feedback-label select:focus,.feedback-label textarea:focus { border-color:var(--pink); box-shadow:0 0 0 3px rgba(217,93,166,.1); }
.feedback-label textarea { resize:vertical; line-height:1.5; }
.feedback-chips { display:flex; flex-wrap:wrap; gap:8px; }
.feedback-chips label { cursor:pointer; }
.feedback-chips input { position:absolute; opacity:0; width:1px; height:1px; }
.feedback-chips span { display:block; padding:9px 12px; border:1px solid var(--line); border-radius:999px; background:#fff; color:#65545e; font-size:11px; font-weight:700; transition:all .2s; }
.feedback-chips input:checked + span { border-color:var(--pink); background:#fff0f7; color:var(--pink-dark); box-shadow:inset 0 0 0 1px rgba(217,93,166,.18); }
.feedback-chips label:focus-within span { outline:2px solid var(--pink); outline-offset:2px; }
.feedback-chips--compact { gap:9px; }
.feedback-rebuy { padding-top:4px; }
.feedback-submit-row { display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-top:2px; }
.feedback-submit-row > small { max-width:260px; color:var(--muted); font-size:10px; line-height:1.5; }
.feedback-status { min-height:18px; margin:12px 0 0; font-size:12px; line-height:1.5; color:var(--pink-dark); }
.feedback-fallback { display:inline-block; margin-top:8px; color:var(--magenta); font-size:12px; font-weight:900; text-decoration:underline; text-underline-offset:3px; }
.feedback-success { grid-column:2; padding:48px 32px; background:#fff; border:1px solid rgba(255,255,255,.95); border-radius:28px; text-align:center; box-shadow:0 22px 70px rgba(69,34,49,.10); }
.feedback-success-icon { display:grid; place-items:center; width:64px; height:64px; margin:0 auto 24px; border-radius:50%; background:var(--green); color:var(--ink); font-size:34px; font-weight:900; }
.feedback-success h3 { margin:12px 0; font-family:"Nunito Sans",sans-serif; font-size:clamp(30px,3vw,44px); line-height:1.02; letter-spacing:-.04em; }
.feedback-success p { max-width:430px; margin:0 auto 24px; color:var(--muted); line-height:1.7; }
.feedback-success-wa { display:block; width:max-content; margin:18px auto 0; color:var(--pink-dark); font-size:12px; font-weight:900; }
.feedback-section [hidden] { display:none!important; }
@media(max-width:900px) { .feedback-shell { grid-template-columns:1fr; gap:28px; } .feedback-copy { position:static; } .feedback-copy h2 { max-width:640px; } .feedback-success { grid-column:1; } }
@media(max-width:540px) { .feedback-section { padding:76px 16px; } .feedback-form { padding:22px 16px; border-radius:22px; } .feedback-rating { gap:5px; } .feedback-rating label { padding:10px 2px; } .feedback-rating label > span { font-size:23px; } .feedback-rating label > small { font-size:9px; } .feedback-chips { gap:6px; } .feedback-chips span { padding:8px 10px; font-size:10px; } .feedback-submit-row { align-items:flex-start; flex-direction:column; } .feedback-submit-row .btn { width:100%; justify-content:center; } }

.feedback-share { display:block; margin:12px auto 0; border:1px solid var(--line); border-radius:999px; padding:10px 16px; background:#fff; color:var(--pink-dark); font-size:12px; font-weight:900; cursor:pointer; } .feedback-share:hover { border-color:var(--pink); background:#fff5fa; }


/* V7 · precios claros, etiquetas de referencia y carrito tipo marketplace */
.image-reference-tag { position:absolute;left:12px;bottom:12px;z-index:2;padding:6px 9px;border-radius:999px;background:rgba(255,255,255,.92);color:#65545e;font-size:9px;font-weight:800;letter-spacing:.02em;box-shadow:0 3px 12px rgba(30,20,25,.08); }
.product-detail-media { position:relative;overflow:hidden; }
.product-detail-media .image-reference-tag { left:18px;bottom:18px; }
.dtb-dessert-media { position:relative; }
.product-price-block small { max-width:200px; }
.product-purchase .purchase-label small { max-width:290px; }
.drawer-subtitle { margin:7px 0 0;color:var(--muted);font-size:11px;line-height:1.4; }
.drawer-foot { max-height:58dvh;overflow-y:auto;overscroll-behavior:contain; }
.event-order-panel label { margin-top:10px; }
.event-order-panel input,.event-order-panel select { display:block;width:100%;border:1px solid rgba(255,255,255,.18);background:#fff;color:var(--ink);border-radius:10px;padding:10px 11px;margin-top:7px;outline:0;font:inherit;font-size:12px;text-transform:none;letter-spacing:0; }
.event-order-panel select:focus { box-shadow:0 0 0 3px rgba(154,196,40,.15);border-color:var(--green); }
.event-order-panel .service-link { width:100%;margin-top:10px; }
.cart-line-price { min-width:66px;text-align:right;font-size:12px; }
.cart-line-price b { color:var(--pink-dark);white-space:nowrap; }
.cart-min-note { display:block;margin-top:6px;color:#a33c74;font-size:9px;line-height:1.4; }
.guest-qty-control { display:grid;grid-template-columns:38px minmax(0,1fr) 38px;gap:0;margin-top:7px;border:1px solid var(--line);border-radius:11px;overflow:hidden;background:#fff; }
.guest-qty-control button { border:0;background:#fff5fa;color:var(--pink-dark);font-size:20px;font-weight:900;cursor:pointer; }
.guest-qty-control input { margin:0!important;border:0!important;border-left:1px solid var(--line)!important;border-right:1px solid var(--line)!important;border-radius:0!important;text-align:center;font-weight:900; }
.feedback-marketing-copy { margin:-8px 0 18px;color:var(--muted);font-size:11px;line-height:1.6; }
.feedback-marketing-fields { padding:16px;border:1px solid var(--line);border-radius:16px;background:#fff9fc; }
.feedback-label input[type="email"],.feedback-label input[type="tel"] { display:block;width:100%;margin-top:8px;padding:13px 14px;border:1px solid var(--line);border-radius:13px;background:#fff;color:var(--ink);font-size:13px;outline:0; }
.feedback-label input[type="email"]:focus,.feedback-label input[type="tel"]:focus { border-color:var(--pink);box-shadow:0 0 0 3px rgba(217,93,166,.1); }
.feedback-consent { display:flex;align-items:flex-start;gap:10px;margin:10px 0 0;color:var(--muted);font-size:11px;line-height:1.6;cursor:pointer; }
.feedback-consent input { flex:none;width:17px;height:17px;margin-top:2px;accent-color:var(--magenta); }
.feedback-consent b { color:var(--ink); }
@media(max-width:600px) { .drawer-head { padding:20px 18px; } .drawer-head h2 { font-size:32px; } .cart-items { padding:8px 16px; } .drawer-foot { padding:14px 16px 20px;max-height:62dvh; } .cart-item { grid-template-columns:52px minmax(0,1fr) auto;gap:8px; } .cart-item img { width:52px;height:52px; } .cart-line-price { min-width:56px;font-size:10px; } .product-price-block small { max-width:260px; } }

.cart-validation-status { margin:8px 0 12px;padding:10px 12px;border-radius:10px;background:#fff0f4;color:#9b2459;font-size:11px;font-weight:800;line-height:1.45; }
