/* ============================================================
   ONCEMORE DIGITAL PRINT — studio-light edition
   Clean white storefront · electric blue accent · dark navy ink
   Fonts: Space Grotesk (display), Inter (body),
          Noto Sans/Serif Gujarati (Gujarati toggle)
   NOTE: --gold* variable names are kept for compatibility —
   they now carry the electric-blue accent scale, not gold.
   Default theme is LIGHT; html[data-theme="dark"] is night mode.
   ============================================================ */
:root{
  --paper:#ffffff;          /* studio white */
  --paper2:#f4f6fb;        /* pale blue-grey */
  --panel:#ffffff;         /* card panel */
  --panel2:#f4f6fb;
  --soft:#e9edf5;
  --ink:#101828;           /* dark navy text */
  --ink-dim:#344054;
  --muted:#667085;
  --line:rgba(16,24,40,.14);
  --line-soft:rgba(16,24,40,.08);
  --gold:#2456e6;          /* electric blue (legacy name) */
  --gold-bright:#3d6bf5;
  --gold-deep:#1a41c4;
  --gold-lt:#dbe4ff;       /* pale blue tint */
  --cyan:#00a7bd;          /* CMYK craft accents */
  --magenta:#ca176b;
  --yellow:#d9a400;
  --ok:#12805c; --warn:#b54708; --bad:#d92d20;
  --shadow:0 14px 40px rgba(16,24,40,.10);
  --r-lg:20px; --r-md:16px;
  --font-d:"Space Grotesk","Noto Serif Gujarati",Georgia,"Times New Roman",serif;
  --font-b:"Inter","Noto Sans Gujarati",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{
  font-family:var(--font-b);
  background:var(--paper);
  color:var(--ink);min-height:100vh;line-height:1.6;font-size:17px;
}
::selection{background:var(--gold);color:#fff}
img,video{max-width:100%}
a{color:var(--gold-deep)}

/* ---------- type helpers ---------- */
.display{font-family:var(--font-d);font-weight:600;letter-spacing:-.02em}
.serif{font-family:var(--font-d)}
.gold{color:var(--gold)} .mut{color:var(--muted)} .ivory{color:var(--ink)}
.wrap{max-width:1600px;margin:0 auto;padding:0 22px} /* N11 REVERTED 2026-10-04: test_desktop_layout_uses_full_width guards 1600px as a deliberate full-width desktop decision; the audit's 1280px recommendation needs an explicit call from the parent/user */
.eyebrow{
  display:flex;align-items:center;gap:10px;
  color:var(--gold);font-size:.8rem;font-weight:700;
  letter-spacing:.22em;text-transform:uppercase;margin-bottom:14px;
}
.eyebrow::before{content:"";display:block;width:30px;height:2px;background:var(--gold);border-radius:2px}
.kicker{color:var(--gold);letter-spacing:4px;font-size:14px;text-transform:uppercase;margin-bottom:10px}

/* ---------- display headings: solid navy, tight and modern ---------- */
h1.display,h2.display,h3.display,h1.serif,h2.serif,h3.serif{color:var(--ink);font-weight:600;letter-spacing:-.02em}
/* Hero CMYK headline: each line a print-process colour, heavy and powerful */
.hero-cmyk{font-weight:800;letter-spacing:-.03em;line-height:1.08;font-size:clamp(2.4rem,5.2vw,4.2rem)}
.hero-cmyk .hl-c{color:#00A8E0}
.hero-cmyk .hl-m{color:#D60087}
.hero-cmyk .hl-k{color:var(--ink);position:relative}
.hero-cmyk .hl-k::after{content:"";position:absolute;left:0;right:0;bottom:.08em;height:.28em;background:#FFD200;z-index:-1;border-radius:2px}
html[data-theme="dark"] .hero-cmyk .hl-c{color:#33C3F0}
html[data-theme="dark"] .hero-cmyk .hl-m{color:#F04BA8}
html[data-theme="dark"] .hero-cmyk .hl-k{color:#fff}
html[data-theme="dark"] .hero-cmyk .hl-k::after{background:#B89400}

/* ---------- announcement ticker (CMYK sign bar, owner-editable) ---------- */
.announce{
  position:relative;overflow:hidden;white-space:nowrap;
  background:linear-gradient(100deg,#005f8f 0%,#00a8e0 28%,#c1007a 62%,#8a0057 100%);
  border-top:2px solid #ffd200;border-bottom:2px solid #ffd200; /* Y sign-edges */
  font-family:var(--font-d,Georgia,serif);font-size:15px;font-weight:700;letter-spacing:.06em;
}
.announce::after{ /* soft shine sweep */
  content:"";position:absolute;top:0;bottom:0;width:34%;left:-40%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.22),transparent);
  animation:ann-shine 7s ease-in-out infinite;
}
@keyframes ann-shine{0%{left:-40%}55%,100%{left:130%}}
.announce-track{
  display:inline-flex;align-items:center;color:#fff;text-decoration:none;
  padding:10px 0;animation:tick 16s linear infinite;will-change:transform;
  text-shadow:0 1px 3px rgba(0,0,0,.45);
}
.announce-track:hover{color:#fff8dc}
.ann-it{display:inline-flex;align-items:center;white-space:nowrap}
.ann-it i{font-style:normal;color:#ffd200;margin:0 26px;font-size:12px}
.ann-hl{
  background:#fff;color:#141428;
  border-radius:999px;padding:2px 14px;margin:0 4px;
  box-shadow:0 0 12px rgba(255,255,255,.55);
  text-shadow:none;
}
@keyframes tick{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){
  .announce-track{animation:none}
  .announce::after{animation:none;display:none}
}

/* ---------- topbar ---------- */
.topbar{
  position:sticky;top:0;z-index:60;
  background:rgba(255,255,255,.92);backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line-soft);
}
.topbar .wrap{display:flex;align-items:center;justify-content:space-between;padding:9px 22px;gap:10px}
.topbar-cmyk{display:flex;height:3px}
.topbar-cmyk i{flex:1}
.topbar-cmyk .c{background:var(--cyan)}.topbar-cmyk .m{background:var(--magenta)}
.topbar-cmyk .y{background:var(--yellow)}.topbar-cmyk .k{background:#98a2b3}
.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink)}
.brand .logo-badge{
  width:40px;height:40px;border-radius:50%;flex:0 0 40px;
  background:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 14px rgba(16,24,40,.14),0 0 0 2px rgba(36,86,230,.35);
  overflow:hidden;
}
.brand .logo-badge img{width:100%;height:100%;object-fit:contain;display:block}
.brand-word b{font-family:var(--font-d);letter-spacing:3px;font-size:19px;color:var(--ink);font-weight:700;line-height:1.1}
.brand-word small{display:block;font-size:11px;color:var(--muted);letter-spacing:2.5px;font-family:var(--font-b);margin-top:2px}
.nav{display:flex;gap:8px;align-items:center;flex-wrap:nowrap}
/* Small round icon buttons — cart, theme */
.iconbtn{
  position:relative;width:38px;height:38px;border-radius:50%;flex:0 0 38px;
  display:inline-flex;align-items:center;justify-content:center;cursor:pointer;
  background:#f4f6fb;border:1px solid var(--line-soft);
  color:var(--ink-dim);transition:background .15s ease,transform .15s ease;
}
.iconbtn:hover{background:var(--gold-lt);color:var(--gold-deep);transform:translateY(-1px)}
/* blue dot on the account icon while a customer is logged in */
#loginbtn.loggedin::after{content:'';position:absolute;top:5px;right:5px;width:9px;height:9px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 2px var(--panel)}
.iconbtn svg{display:block}
/* N1: first .cbadge + .langbtn deleted as dups — the winning rules live with the other helpers below. */
.langmenu{
  position:absolute;z-index:200;min-width:170px;border-radius:14px;overflow:hidden;
  background:var(--panel);border:1px solid var(--line);
  box-shadow:0 14px 40px rgba(16,24,40,.18);padding:6px;
  animation:fsecin .18s ease;
}
.langmenu button{
  display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  border:none;background:transparent;color:var(--ink-dim);cursor:pointer;
  padding:10px 12px;border-radius:9px;font-size:14.5px;font-family:var(--font-b);font-weight:600;
}
.langmenu button:hover{background:var(--gold-lt)}
.langmenu button.sel{color:var(--gold-deep);background:var(--gold-lt)}
.langmenu .ltick{color:var(--gold);font-weight:800}
/* N13: .cornerbtn deleted (dead — zero template usages) */

/* ---------- buttons: pill, never square ---------- */
.btn{
  display:inline-block;border:none;cursor:pointer;text-decoration:none;text-align:center;
  background:var(--gold);
  color:#fff;font-weight:700;padding:15px 32px;border-radius:999px;
  font-size:17px;letter-spacing:.2px;box-shadow:0 10px 26px rgba(36,86,230,.28);
  transition:transform .16s ease,box-shadow .16s ease,background .16s ease;font-family:var(--font-b);
}
.btn:hover{background:var(--gold-deep);transform:translateY(-2px);box-shadow:0 14px 32px rgba(36,86,230,.34)}
.btn:active{transform:translateY(1px)}
.btn.secondary{background:#fff;color:var(--gold-deep);border:1.5px solid rgba(36,86,230,.55);box-shadow:none}
.btn.secondary:hover{background:var(--gold-lt)}
.btn.ghost{background:transparent;color:var(--gold-deep);border:1.5px solid var(--gold);box-shadow:none}
.btn.dark{background:#101828;color:#fff;border:1px solid var(--line-soft);box-shadow:none}
.btn.small{padding:9px 20px;font-size:15px}
.btn.danger{background:linear-gradient(180deg,#e88,#c44);color:#200}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.btn.block{width:100%}
.langbtn{background:transparent;border:1.5px solid var(--gold);color:var(--gold-deep);border-radius:999px;padding:9px 20px;cursor:pointer;font-weight:700;font-size:16px;font-family:var(--font-b)}
.cbadge{position:absolute;top:-7px;right:-7px;background:var(--gold);color:#fff;font-size:11px;font-weight:800;min-width:19px;height:19px;border-radius:999px;align-items:center;justify-content:center;padding:0 5px;display:flex}

/* ---------- cards & panels ---------- */
.card{
  background:var(--panel);
  border:1px solid var(--line-soft);border-radius:var(--r-lg);padding:26px;margin:18px 0;
  box-shadow:var(--shadow);
}
.card.flush{padding:0;overflow:hidden}
h1.serif,h2.serif,h3.serif{color:var(--ink);font-weight:600;letter-spacing:-.01em}

/* ============================================================
   HERO — press video under a bright veil, navy headline
   ============================================================ */
.hero{position:relative;overflow:hidden;background:#f2f5fd;border-bottom:1px solid var(--line-soft);isolation:isolate}
.hero-grid{
  position:relative;z-index:3;max-width:1600px;margin:0 auto;padding:clamp(56px,9vh,104px) 22px clamp(64px,10vh,110px);
  display:grid;grid-template-columns:minmax(0,1fr);gap:36px;align-items:start;
}
/* desktop: fill the empty right half with price + promise cards (70% of customers are on desktop) */
.hero-side{display:none}
.hero-main{display:contents}
@media(min-width:1020px){
  .hero-grid{grid-template-columns:minmax(0,1fr) 400px;gap:44px;align-items:center;
    padding:clamp(48px,8vh,88px) 22px clamp(48px,8vh,88px)}
  .hero-main{display:block;min-width:0;max-width:780px}
  .hero-side{display:flex;flex-direction:column;gap:18px;grid-column:2;grid-row:1;align-self:center;justify-self:end;width:100%;max-width:400px}
  .proof-chips{display:grid;grid-template-columns:1fr 1fr;gap:10px;max-width:660px}
  .proof-chips .pill{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}
/* ≥1280px: press photo and Popular-prints card sit side by side —
   image in the middle, price list at the end — so the whole first
   screen reads complete with no blank stretch. Phones keep the stacked layout. */
@media(min-width:1280px){
  .hero-grid{grid-template-columns:minmax(0,1fr) auto}
  .hero-side{display:grid;grid-template-columns:320px 300px;gap:28px;align-items:center;
    width:auto;max-width:none;padding-left:60px}
  .hero-visual{margin:2px 0 26px}
  .promise-line{grid-column:1/-1;margin:2px 0 0}
}
.pop-row b.por{font-size:12.5px;font-weight:600}
/* Classic price card — ivory menu, gold rule, hairline dividers; wider than the photo. */
.pop-card{background:linear-gradient(180deg,#fffdf6,#ffffff 65%);
  border:1px solid var(--line-soft);border-top:3px solid var(--gold);
  border-radius:18px;padding:24px 28px 22px; /* N4: pill/organic — no squarish corners */
  box-shadow:0 24px 60px rgba(16,24,40,.12);
  animation:popFloat 7s ease-in-out infinite}
@keyframes popFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
.pop-card h3{display:flex;align-items:center;gap:14px;margin:0 0 10px;font-size:.82rem;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);font-weight:700;text-align:center}
.pop-card h3::before,.pop-card h3::after{content:"";flex:1;height:1px;background:var(--gold);opacity:.5}
.pop-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:11px 2px;border-bottom:1px solid var(--line-soft);font-size:16px;color:var(--ink)}
.pop-row b{color:var(--gold-deep);font-size:18px;font-weight:800;white-space:nowrap}
.pop-note{font-size:14px;color:var(--muted);margin:14px 0 14px;text-align:center;font-style:italic} /* N5 */
.pop-ask{display:inline-flex;align-items:center;gap:8px;background:transparent;border:1.5px solid var(--gold);color:var(--gold-deep);border-radius:999px;padding:10px 20px;font-weight:700;font-size:15px;cursor:pointer;font-family:inherit}
.pop-ask:hover{background:var(--gold-lt)}
/* Hero photo visual — Concept 7 collage (original studio photography).
   Photo sits inset so the price card below reads wider; LIVE badge straddles the top edge. */
.hero-visual{position:relative;margin:2px 22px 26px}
.hero-visual .hv-main{display:block;width:100%;aspect-ratio:5/6;object-fit:cover;border-radius:22px;box-shadow:0 18px 44px rgba(16,24,40,.14)}
.hero-visual .hv-sub{position:absolute;left:-24px;bottom:-22px;width:52%;aspect-ratio:4/3;object-fit:cover;border-radius:16px;border:5px solid #fff;box-shadow:0 14px 34px rgba(16,24,40,.18)}
.hero-visual .hv-tag{position:absolute;top:26px;left:14px;transform:translateY(-50%)} /* M9: straddles top edge, stays inside the photo column */
.hero-visual-mob .hv-tag{position:absolute;top:0;left:20px;transform:translateY(-50%)}
/* "Printing now" chat bubble — white card, green pulse dot, bold title, job detail. */
.live-bubble{display:flex;flex-direction:column;gap:4px;align-items:flex-start;background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:13px 18px;box-shadow:0 14px 34px rgba(16,24,40,.16);max-width:250px;z-index:3}
.live-head{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:800;letter-spacing:0;color:var(--ink);white-space:nowrap}
.pulse{width:8px;height:8px;border-radius:50%;background:#22c55e;flex:0 0 8px;position:relative}
.pulse::after{content:"";position:absolute;inset:-4px;border-radius:50%;border:2px solid #22c55e;animation:liveping 1.6s ease-out infinite}
@keyframes liveping{0%{transform:scale(.45);opacity:.9}100%{transform:scale(1.25);opacity:0}}
.live-job{font-size:12.5px;font-weight:600;color:var(--ink-dim);transition:opacity .25s ease;line-height:1.45}
.hero-visual-mob{display:none}
@media(max-width:1019px){
  .hero-visual-mob{display:block;margin:36px 0 6px;position:relative}
  .hero-visual-mob img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:20px;box-shadow:0 18px 44px rgba(16,24,40,.14)}
}
.hero-media{position:absolute;inset:0;z-index:1}
.hero-media video{width:100%;height:100%;object-fit:cover;filter:saturate(.55) contrast(1.02) brightness(1.1);opacity:.3}
.hero-media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(255,255,255,.97) 0%,rgba(255,255,255,.9) 44%,rgba(255,255,255,.6) 74%,rgba(255,255,255,.88) 100%),
             linear-gradient(0deg,rgba(255,255,255,.92),transparent 55%);
}
.ink-wash{position:absolute;z-index:2;width:min(52vw,700px);height:210px;pointer-events:none;opacity:.55;filter:blur(60px);will-change:transform,border-radius}
.ink-wash.cyan{left:-34%;top:10%;background:radial-gradient(ellipse at 70% 50%,rgba(36,86,230,.22),rgba(36,86,230,.07) 54%,transparent 74%);animation:cyanPour 11s ease-in-out infinite}
.ink-wash.magenta{right:-36%;bottom:6%;background:radial-gradient(ellipse at 30% 50%,rgba(101,131,255,.2),rgba(101,131,255,.06) 54%,transparent 74%);animation:magentaPour 13s ease-in-out infinite}
@keyframes cyanPour{0%,100%{transform:translate3d(-12%,0,0) rotate(-6deg) scale(.9);border-radius:58% 42% 66% 34%/46% 54% 40% 60%}48%{transform:translate3d(70%,22px,0) rotate(4deg) scale(1.18);border-radius:38% 62% 42% 58%/62% 36% 64% 38%}}
@keyframes magentaPour{0%,100%{transform:translate3d(14%,0,0) rotate(7deg) scale(.94);border-radius:42% 58% 36% 64%/56% 44% 62% 38%}52%{transform:translate3d(-68%,-26px,0) rotate(-5deg) scale(1.2);border-radius:64% 36% 58% 42%/38% 62% 44% 56%}}
.hero-journey{display:flex;align-items:center;gap:12px;margin-bottom:22px;color:var(--gold-deep);font-size:.8rem;font-weight:700;letter-spacing:.24em;text-transform:uppercase}
.hero-journey i{display:block;width:30px;height:2px;background:var(--gold);border-radius:2px}
.hero h1{font-size:clamp(2.6rem,6vw,4.8rem);line-height:1.04;max-width:880px;color:var(--ink)}
.hero h1 .cmyk{color:var(--gold)}
.hero h1 .made{display:block;color:var(--ink-dim);font-size:.52em;margin-top:.28em;font-weight:500;letter-spacing:-.01em}
.hero-copy{color:var(--ink-dim);max-width:660px;font-size:clamp(1.02rem,1.5vw,1.18rem);margin:18px 0 24px;border-left:3px solid var(--gold);padding-left:20px}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap}
.proof-chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.proof-chips .pill{background:#fff;border:1px solid var(--line);color:var(--gold-deep);font-size:.82rem;padding:7px 14px;font-weight:600}
.design-help{display:flex;flex-direction:column;gap:4px;margin-top:14px;padding:14px 16px;border:1.5px dashed rgba(36,86,230,.5);border-radius:16px;text-decoration:none;background:rgba(36,86,230,.05)}
.design-help b{color:var(--gold-deep);font-size:.95rem}
.design-help span{color:var(--muted);font-size:.85rem}
.hero-credit{margin:20px 0 0;font-size:.85rem;color:var(--muted)}
.hero-credit a{color:var(--gold-deep)}

/* ---------- sections ---------- */
.section{padding:56px 0 40px;position:relative} /* N10: rhythm lives in the section itself */
.section-head{margin-bottom:30px;max-width:760px}
.section-head h2{font-size:clamp(2rem,4.4vw,3rem);color:var(--ink);line-height:1.08}
.section-head p{color:var(--muted);margin-top:10px;font-size:1.08rem}

/* ---------- what we print cards (mockup-simple) ---------- */
.mock-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.mock-card{background:#fff;border:1px solid var(--line-soft);border-radius:var(--r-lg);padding:26px;box-shadow:var(--shadow)}
.mock-card h3{font-family:var(--font-d);font-size:1.3rem;color:var(--ink);margin:0 0 10px;font-weight:600}
.mock-card p{color:var(--muted);font-size:1rem;line-height:1.6;margin:0 0 14px}
.mock-card .price{color:var(--gold);font-weight:700;font-size:1rem}
@media(max-width:640px){.mock-cards{grid-template-columns:1fr}}

/* ---------- how it works ---------- */
.how-section{background:var(--paper2);border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);padding:64px 0} /* N10: dropped compensating margin-top */
.how-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:960px}
.how-step{background:#fff;border:1px solid var(--line-soft);border-radius:var(--r-md);padding:26px;box-shadow:var(--shadow)}
.how-step b{display:block;font-family:var(--font-d);font-size:1.25rem;color:var(--ink);margin-bottom:8px;font-weight:600}
.how-step b i{font-style:normal;color:var(--gold);margin-right:8px}
.how-step>span{color:var(--muted);font-size:1rem;line-height:1.6}
@media(max-width:760px){.how-grid{grid-template-columns:1fr}}

/* ---------- promise: one slim line under the price card, not a big card ---------- */
.promise-line{display:flex;gap:10px;align-items:flex-start;margin:14px 0 0;padding:10px 14px;border:1px solid var(--line-soft);border-left:3px solid var(--gold);border-radius:10px;background:var(--paper2);font-size:.86rem;line-height:1.5;color:var(--ink-dim)}
.promise-line b{color:var(--ink)}
.pl-tick{color:var(--gold-deep);font-weight:700;flex:none}
html[data-theme="dark"] .promise-line{background:rgba(255,255,255,.03)}
.promise-fn{max-width:760px;margin:14px auto 0;text-align:center;font-size:.82rem;color:var(--muted)}
.fine-fn{font-size:.82rem;color:var(--muted);margin-top:6px}
.fine-fn [lang="gu"]{display:block;margin-top:4px}

/* ---------- reviews ---------- */
.reviews-section{position:relative;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);padding:64px 0;background:var(--paper2)} /* N10: dropped compensating margin-top */
.reviews-section::before{content:"";position:absolute;top:-1px;left:0;width:200px;height:3px;background:linear-gradient(90deg,var(--cyan) 0 33%,var(--magenta) 33% 66%,var(--yellow) 66%)}
.review-intro{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:30px}
.google-rating{display:flex;align-items:center;gap:14px;color:var(--gold-deep);font-family:var(--font-d);font-size:1.6rem}
.google-rating strong{font-size:2.8rem;font-weight:600;color:var(--ink)}
.google-rating .stars{color:var(--gold);letter-spacing:3px;font-size:1.4rem}
.review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.review{background:#fff;border:1px solid var(--line-soft);border-radius:var(--r-md);padding:30px;min-height:230px;display:flex;flex-direction:column;justify-content:space-between;box-shadow:var(--shadow)}
.review blockquote{font-family:var(--font-d);font-size:1.3rem;line-height:1.35;color:var(--ink);font-weight:500}
.review footer{border:0;margin:20px 0 0;color:var(--gold);font-size:.85rem;letter-spacing:.14em;text-transform:uppercase;background:none;padding:0;text-align:left;font-weight:700}
.feedback-panel{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;margin-top:32px;padding-top:28px;border-top:1px solid var(--line-soft)}
.feedback-panel h3{font-family:var(--font-d);font-size:1.9rem;color:var(--ink)}
.feedback-panel p{color:var(--muted)}
.feedback-actions{display:flex;gap:10px;flex-wrap:wrap}

/* ---------- talk-to-a-human contact cards ----------
   N13: .store-card/.store-info/.store-meta deleted (dead — zero template usages).
   .contact-link stays — used in templates. */
.contact-link{color:var(--gold-deep);text-decoration:none;border-bottom:1px dotted var(--gold)}
.contact-link.tel{white-space:nowrap}
.f-contact{margin:5px 0}

/* ---------- talk-to-a-human contact cards ----------
   Every card is a real action: tap = tel: / wa.me / mailto: / Google Maps. */
.talk-wrap{max-width:1180px;margin:0 auto}
.talk-sub{color:var(--muted);font-size:17px;margin:12px 0 26px;max-width:660px}
.talk-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.talk-card{background:var(--panel);border:1px solid var(--line-soft);border-radius:18px;
  padding:26px 28px;display:flex;flex-direction:column;gap:10px;color:inherit;text-decoration:none;
  transition:transform .18s ease,box-shadow .18s ease}
a.talk-card:hover{transform:translateY(-3px);box-shadow:0 16px 40px rgba(16,24,40,.12)}
.tk-k{display:flex;align-items:center;gap:10px;font-weight:800;font-size:16px;color:var(--ink)}
.tk-v{font-size:25px;font-weight:800;letter-spacing:.01em;color:var(--ink);text-decoration:none}
a.tk-v:hover{text-decoration:underline}
.tk-email{font-size:19px;word-break:break-all}
.tk-shop{font-size:19px}
.tk-s{font-size:14px;color:var(--muted)}
.tk-s a{color:var(--ink);font-weight:700;text-decoration:none}
.tk-s a:hover{text-decoration:underline}
.tk-note{font-size:14px;color:var(--muted);line-height:1.6}
.tk-addr{font-size:15px;line-height:1.65;color:var(--ink-dim);font-weight:600}
.tk-hours{display:grid;grid-template-columns:1fr auto;gap:8px 14px;font-size:15px;color:var(--ink-dim)}
.tk-hours b{color:var(--ink);font-weight:800;white-space:nowrap}
.tk-btn{align-self:flex-start;margin-top:6px}
.talk-map{display:flex;flex-direction:column;align-items:center;gap:8px;margin-top:16px;
  padding:46px 24px;background:var(--panel);border:1px solid var(--line-soft);border-radius:18px;
  text-decoration:none;transition:transform .18s ease,box-shadow .18s ease}
.talk-map:hover{transform:translateY(-3px);box-shadow:0 16px 40px rgba(16,24,40,.12)}
.tk-pin{font-size:36px}
.tk-map-t{font-size:17px;font-weight:800;color:var(--ink)}
.tk-map-s{font-size:13.5px;color:var(--muted)}
.talk-review{display:flex;justify-content:center;margin-top:16px}
@media(max-width:600px){
  .talk-card{padding:20px 18px}
  .tk-v{font-size:19px}
  .tk-email{font-size:14.5px}
  .tk-shop{font-size:16px}
  .tk-k{font-size:14px}
  .tk-note{font-size:14px} /* N5: phone note keeps 14px body size */
  .talk-map{padding:36px 18px}
}
/* M2: contact cards stack on phones so hours + phone number fit. */
@media(max-width:640px){
  .talk-grid{grid-template-columns:1fr}
}

/* ---------- intro splash: logo rises, flashes, brand reveals ---------- */
#intro{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;
  background:linear-gradient(160deg,#2456e6 0%,#1a41c4 45%,#0e256e 100%);cursor:pointer;
  animation:introOut .55s ease 1.75s forwards}
#intro .intro-badge{width:128px;height:128px;background:#fff;border-radius:30px;display:flex;align-items:center;justify-content:center;
  box-shadow:0 24px 80px rgba(0,0,0,.45);overflow:hidden;position:relative;padding:14px;
  opacity:0;transform:translateY(72px) scale(.92);
  animation:introRise .7s cubic-bezier(.2,.9,.25,1.15) .1s forwards}
#intro .intro-badge img{width:100%;height:100%;object-fit:contain}
#intro .intro-badge::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(105deg,transparent 42%,rgba(255,255,255,.9) 50%,transparent 58%);
  transform:translateX(-130%);animation:introFlash .65s ease .85s forwards}
@keyframes introRise{to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes introFlash{to{transform:translateX(130%)}}
@keyframes introOut{to{opacity:0;visibility:hidden}}
@media (prefers-reduced-motion:reduce){#intro{display:none}}

/* ---------- footer ---------- */
.footer{margin:56px 0 0;background:#fff;border-top:1px solid var(--line-soft)}
.footer-cmyk{display:flex;height:4px}
.footer-cmyk i{flex:1}
.footer-cmyk .c{background:var(--cyan)}.footer-cmyk .m{background:var(--magenta)}
.footer-cmyk .y{background:var(--yellow)}.footer-cmyk .k{background:#98a2b3}
.footer-grid{display:grid;grid-template-columns:1.25fr 1fr 1fr 1fr 1fr;gap:28px;padding:40px 0 28px}
.footer h3{font-family:var(--font-d);font-size:1.1rem;color:var(--ink);margin:0 0 14px;letter-spacing:.5px;font-weight:600}
.footer p{color:var(--muted);font-size:.93rem;margin:8px 0}
.footer a{color:var(--gold-deep);text-decoration:none}
.footer a:hover{text-decoration:underline}
.f-logo b{font-family:var(--font-d);letter-spacing:3px;font-size:20px;color:var(--ink);font-weight:700}
.f-logo small{display:block;font-size:11px;color:var(--muted);letter-spacing:2.5px;margin-top:3px}
.f-since{font-size:.82rem!important;color:var(--muted)!important;letter-spacing:.5px}
.f-row{display:flex;gap:10px;align-items:flex-start;margin:10px 0!important}
.f-row svg{flex:0 0 15px;margin-top:3px;color:var(--gold)}
.f-row span,.f-row a{line-height:1.55}
.f-social{display:flex;gap:10px;margin:12px 0 0!important}
.f-social .soc{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid var(--gold);border-radius:50%;color:var(--gold);transition:transform .2s,background .2s,color .2s}
.f-social .soc:hover{transform:translateY(-2px);background:var(--gold);color:#fff}
.footer details{margin:8px 0;border-bottom:1px solid var(--line-soft);padding-bottom:7px}
.footer summary{cursor:pointer;color:var(--ink-dim);font-weight:600;font-size:.93rem}
.footer .fine{border-top:1px solid var(--line-soft);padding:16px 0 24px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:.82rem;color:var(--muted)}

/* ============================================================
   PROUDLY MADE IN INDIA — flag pills & badges
   ============================================================ */
.india-pill{display:inline-flex;align-items:center;gap:9px;border-color:rgba(255,153,51,.45)!important;
  background:linear-gradient(120deg,rgba(255,153,51,.14),rgba(255,255,255,.05) 45%,rgba(19,136,8,.14))!important}
.flag-in{width:27px;height:auto;border-radius:3px;box-shadow:0 0 0 1px rgba(16,24,40,.18);flex:none}
.f-made{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.f-made .flag-in{width:22px}

/* ============================================================
   FOOTER — mission / vision / goal trio + proud emblem
   ============================================================ */
.f-creed{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line-soft);border-radius:var(--r-lg);overflow:hidden;margin-bottom:36px;background:var(--paper2)}
.f-creed article{padding:26px 26px 22px}
.f-creed article+article{border-left:1px solid var(--line-soft)}
.f-creed .eyebrow{margin-bottom:12px}
.f-creed p{color:var(--ink-dim);line-height:1.65;font-size:.94rem;margin:0}
.f-proud{display:flex;align-items:center;justify-content:center;gap:11px;margin-top:20px;padding-top:20px;border-top:1px solid var(--line-soft);color:var(--gold-deep);font-weight:700;letter-spacing:.16em;text-transform:uppercase;font-size:.85rem}
.f-proud .flag-in{width:32px}
/* Homepage heritage creed: Our reason (founder) + Our mission. Restored
   2026-10-02 — the exact original block and styling. */
.creed{display:grid;grid-template-columns:1fr 1fr;margin-top:36px;border:1px solid var(--line);border-radius:var(--r-lg);overflow:hidden;background:linear-gradient(160deg,rgba(36,86,230,.06),transparent 55%)} /* M6: all-blue */
.creed article{padding:32px 32px 28px}
.creed article+article{border-left:1px solid var(--line)}
.creed h3{font-family:var(--font-d);font-size:1.65rem;color:var(--gold-bright);margin:10px 0 12px;font-weight:600}
.creed p{color:var(--ink-dim);line-height:1.7;font-size:1.02rem;margin:0 0 12px}
.creed .sign{font-family:var(--font-d);font-style:italic;color:var(--gold);font-size:1.1rem;margin:16px 0 0}
@media(max-width:760px){
  .f-creed{grid-template-columns:1fr;margin-bottom:28px}
  .f-creed article{padding:22px 20px}
  .f-creed article+article{border-left:0;border-top:1px solid var(--line-soft)}
  .creed{grid-template-columns:1fr;margin-top:26px}
  .creed article{padding:24px 22px}
  .creed article+article{border-left:0;border-top:1px solid var(--line)}
}

/* ============================================================
   HEADER — Ask Me bubble + hamburger menu
   ============================================================ */
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* Chat-bubble glyph: rounded square with a little tail, per the brief. */
.askme-ico{
  width:22px;height:19px;border-radius:7px 7px 7px 2px;position:relative;flex:0 0 auto;
  background:var(--gold);
  color:#fff;font-weight:800;font-size:13px;font-family:var(--font-b);
  display:flex;align-items:center;justify-content:center;line-height:1;
}
.askme-ico::after{
  content:'';position:absolute;left:4px;bottom:-4px;width:9px;height:5px;
  background:var(--gold);clip-path:polygon(0 0,100% 0,0 100%);
}
.cust #themebtn{display:none}
/* Dropdown menu panel */
.hmenu{
  position:fixed;top:64px;right:12px;z-index:96;width:min(332px,calc(100vw - 24px));
  max-height:calc(100vh - 84px);overflow:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:0 24px 60px rgba(16,24,40,.2);padding:6px;
}
/* mini cart dropdown (Amazon-style) */
#cartmenu{width:min(360px,calc(100vw - 24px))}
.cm-items{display:flex;flex-direction:column;max-height:min(44vh,360px);overflow:auto}
.cm-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:transparent;border:0;border-bottom:1px solid var(--line-soft);padding:10px 12px;cursor:pointer;color:var(--ink);font-family:inherit;font-size:inherit}
.cm-row:hover{background:var(--gold-lt)}
.cm-ic{font-size:22px;flex:0 0 auto}
.cm-tx{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.cm-tx b{font-size:14px}
.cm-tx i{font-style:normal;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-pr{font-weight:800;font-size:14px;color:var(--gold-deep);white-space:nowrap}
.cm-foot{padding:10px 12px 12px}
.cm-sub{display:flex;justify-content:space-between;align-items:center;margin:2px 0 10px;font-size:15px}
.cm-sub b{color:var(--gold-deep);font-size:17px}
.hmenu.hidden{display:none}
.hm-sec{padding:8px 4px 10px;border-bottom:1px solid var(--line-soft)}
.hm-sec:last-of-type{border-bottom:0}
.hm-h{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin:2px 10px 8px;font-weight:700}
.hm-sub{font-size:12px;color:var(--muted);margin:2px 10px 8px;font-weight:600}
.hm-row{
  display:flex;align-items:center;gap:12px;width:100%;padding:11px 10px;border:0;
  background:none;color:var(--ink);font-family:var(--font-b);font-size:15px;
  border-radius:10px;cursor:pointer;text-decoration:none;text-align:left;
}
.hm-row:hover{background:var(--gold-lt)}
.hm-row svg{flex:0 0 auto;color:var(--gold)}
.hm-row.primary{color:var(--gold-deep);font-weight:700}
.hm-langs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:0 6px 4px}
.hm-langs button{
  border:1px solid var(--line);background:transparent;color:var(--ink-dim);
  border-radius:10px;padding:11px 4px;font-size:13px;cursor:pointer;font-family:var(--font-b); /* N6 */
}
.hm-langs button:hover{border-color:var(--gold)}
.hm-langs button.sel{border-color:var(--gold);color:var(--gold-deep);background:var(--gold-lt);font-weight:700}
.hm-user{padding:4px 10px 8px;font-size:15px;color:var(--ink)}
.hm-user b{color:var(--gold-deep)}
.hm-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 10px 8px;font-size:13px;color:var(--muted)}
.hm-foot a{color:var(--gold-deep);font-weight:700;text-decoration:none;white-space:nowrap}
.hm-staff{color:var(--muted);font-size:13.5px;padding:10px 10px 6px}
.hm-staff svg{color:var(--muted)}
.hm-staff:hover{color:var(--ink)}
.askme-ico svg{display:block}
.f-links{display:flex;flex-direction:column;gap:2px}
.f-links a{color:var(--ink-dim);text-decoration:none;padding:6px 0;font-size:.93rem;line-height:1.5}
.f-links a:hover{color:var(--gold-deep)}

/* ============================================================
   ASK ME — header-anchored assistant
   ============================================================ */
.assistant-panel{
  position:fixed;right:16px;top:70px;z-index:94;
  width:min(400px,calc(100vw - 28px));max-height:calc(100vh - 100px);overflow:auto;
  background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:var(--r-lg);
  box-shadow:0 28px 70px rgba(16,24,40,.22);padding:22px;
}
.assistant-panel.hidden{display:none}
.assistant-panel h2{font-family:var(--font-d);font-size:2rem;color:var(--ink);margin:0}
.assistant-panel .muted{color:var(--muted);font-size:.92rem}
.assistant-thread{display:grid;gap:10px;margin:16px 0}
.assistant-msg{padding:11px 14px;background:var(--paper2);font-size:.94rem;border-radius:14px;border:1px solid var(--line-soft);white-space:pre-line;color:var(--ink-dim)}
.assistant-msg.user{background:var(--gold);color:#fff;margin-left:30px;border:0}
.assistant-msg .btn{margin-top:10px}
.quick-questions{display:flex;gap:7px;flex-wrap:wrap}
.quick-questions button{
  border:1px solid var(--line);background:transparent;color:var(--ink-dim);border-radius:999px;
  padding:10px 16px;cursor:pointer;font-size:.82rem;font-family:var(--font-b); /* N6 */
}
.quick-questions button:hover{border-color:var(--gold);color:var(--gold-deep)}
.assistant-panel input{background:#fff!important;color:var(--ink)!important;border-color:var(--line)!important}
.assistant-close{float:right;background:none;border:none;color:var(--muted);font-size:20px;cursor:pointer}

/* ============================================================
   CUSTOMER LOGIN MODAL
   ============================================================ */
.cust-modal{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;
  background:rgba(16,24,40,.5);padding:18px}
.cust-modal.hidden{display:none}
.cust-modal .card{width:min(420px,100%);position:relative;max-height:calc(100vh - 60px);overflow:auto}
.cust-modal .f{display:block;margin:12px 0 6px;font-size:14px;color:var(--ink-dim)}
.cust-modal input{width:100%}

/* Inline field-validation message: a small line directly under the input.
   Block-level and full-width, so it never disturbs the pill-button .row
   layouts at any viewport (checked at ~390px). */
.field-err{display:none;color:var(--bad);font-size:14px;line-height:1.4;margin:6px 2px 0;max-width:100%;overflow-wrap:anywhere} /* N5 */

/* ============================================================
   ORDER WIZARD
   ============================================================ */
.wizard-shell{position:relative}
.opt{
  border:1.5px solid var(--line-soft);border-radius:var(--r-md);padding:20px;cursor:pointer;
  background:#fff;transition:border-color .16s ease,background .16s ease,transform .16s ease;text-align:center;
  /* <button class="opt"> does NOT inherit text color/font from body by default,
     so set them explicitly — otherwise the wording renders in the browser's
     default dark button style on the dark card and becomes unreadable. */
  color:var(--ink);font-family:var(--font-b);font-size:16px;font-weight:600;
}
.opt:hover{border-color:var(--gold);transform:translateY(-2px)}
.opt.sel{border-color:var(--gold);background:var(--gold-lt);box-shadow:0 0 0 1px var(--gold);color:var(--gold-deep)}
.opt.disabled{opacity:.45;cursor:not-allowed;transform:none}
.opt h3{margin:8px 0 4px;font-size:19px}
.opt p{font-size:14.5px;color:var(--muted)}
.opt .big{font-size:38px}
.upzone{
  border:2px dashed var(--gold);border-radius:var(--r-lg);padding:34px 18px;text-align:center;cursor:pointer;
  background:rgba(36,86,230,.05);transition:background .16s ease;
}
.upzone:hover{background:rgba(36,86,230,.1)}
/* iOS Safari ignores programmatic .click() on display:none file inputs, so the
   real input covers the whole zone invisibly and takes the tap directly. */
.upzone{position:relative;overflow:hidden}
.upzone input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:16px}
.upzone .big{font-size:44px}
/* upload progress rows: live bar while sending, inline error instead of alert() */
#upprog{margin-top:6px}
.uprow{display:flex;align-items:center;gap:10px;margin-top:8px;font-size:14px}
.upfname{max-width:42%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-dim)}
.upbar{flex:1;height:8px;background:var(--soft);border-radius:99px;overflow:hidden;min-width:80px}
.upbar i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--gold-deep),var(--gold-bright));border-radius:99px;transition:width .15s}
.uprow.ok .upfname{color:var(--ok)}
.upok{color:var(--ok);font-weight:700}
.uppct{font-weight:700;font-size:13px;color:var(--gold-deep);min-width:40px;text-align:right;font-variant-numeric:tabular-nums}
.uprow.bad .upfname{color:var(--bad)}
.uperr{color:var(--bad);font-size:13px;flex:1}
.uprow.bad .fx{flex:none}
.stepbar{display:flex;gap:6px;margin:20px 0 6px}
.stepbar i{flex:1;height:5px;border-radius:99px;background:var(--soft)}
.stepbar i.done{background:linear-gradient(90deg,var(--gold-deep),var(--gold-bright))}
.est{
  position:sticky;bottom:12px;z-index:40;margin:16px 0;
  background:#fff;
  border:1.5px solid var(--gold);border-radius:var(--r-lg);padding:15px 20px;
  display:flex;justify-content:space-between;align-items:center;box-shadow:var(--shadow);gap:12px;
  pointer-events:none; /* display-only: never block taps on the cards it floats over */
}
.est .t{font-size:14px;color:var(--muted)}
.est .v{font-size:29px;font-family:var(--font-d);color:var(--gold-deep);font-weight:700}
.qstep{display:none}.qstep.on{display:block;animation:qfade .32s ease}
@keyframes qfade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.diagram{display:flex;gap:10px;justify-content:center;margin:12px 0}
.diagram svg{border:1px solid var(--line-soft);border-radius:12px;background:var(--paper2)}
/* ============================================================
   ORDER 3-COLUMN LAYOUT — progress rail | configurator | summary
   Desktop: rail + summary pin beside the scrolling middle.
   Phone: rail becomes a horizontal chip strip on top, summary
   stacks below the configurator.
   ============================================================ */
.ord3{display:grid;grid-template-columns:minmax(0,1fr) 340px;grid-template-areas:"rail rail" "mid sum";gap:18px 28px;align-items:start}
.ord-rail{grid-area:rail;position:sticky;top:56px;z-index:5;background:var(--paper);display:flex;flex-direction:row;align-items:center;gap:2px;padding:6px 4px;overflow-x:auto;scrollbar-width:thin;border-bottom:1px solid var(--line-soft)}
.ord-mid{grid-area:mid;min-width:0}
.ord-sum{grid-area:sum}
.ord-rail .rail-t{display:none}
.ord-rail .rail-prog{display:none}
.ord-rail .rail-pct{display:none}
/* Compact horizontal steps: number + short label only */
.ord-rail .rail-step{flex:none;width:auto;display:flex;align-items:center;gap:8px;padding:8px 12px;white-space:nowrap}
.ord-rail .rail-step .rt span{display:none}
.ord-rail .rail-step .rt b{font-size:13.5px}
.ord-rail .rail-step .rn{width:26px;height:26px;font-size:12.5px}
.ord-rail .rail-step{cursor:pointer;border-radius:10px}
.ord-rail .rail-step:hover{background:var(--soft)}
/* Horizontal connectors between steps */
.ord-rail .rail-link{flex:none;width:28px;height:3px;min-height:0;margin:0 -2px;align-self:center;border-radius:2px;background:var(--line-soft);transition:background .6s ease,box-shadow .6s ease}
.ord-rail .rail-link.on{background:linear-gradient(90deg,var(--gold-deep),var(--gold-bright));box-shadow:0 0 8px rgba(36,86,230,.5);animation:railDraw .6s ease}
@keyframes railDraw{from{opacity:.3;transform:scaleX(.3)}to{opacity:1;transform:scaleX(1)}}
.ord-rail .rail-pay{flex:none;display:flex;align-items:center;gap:8px;padding:8px 12px;white-space:nowrap}
.ord-rail .rail-pay .rt span{display:none}
.ord-rail .rail-pay .rt b{font-size:13.5px}
.ord-rail .rail-t{font-family:var(--font-d);font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-deep);margin:0 0 10px 4px}
/* Progress toward payment: fills gold as the customer completes steps */
.rail-prog{height:8px;border-radius:99px;background:var(--line-soft);margin:0 4px 6px;overflow:hidden}
.rail-prog-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,var(--gold-deep),var(--gold-bright));transition:width .5s ease;box-shadow:0 0 8px rgba(36,86,230,.4)}
.rail-pct{font-size:12px;color:var(--muted);margin:0 4px 14px;font-weight:600}
.rail-step{display:flex;gap:11px;align-items:flex-start;padding:11px 10px;border-radius:var(--r-md);cursor:pointer;border:1px solid transparent;background:none;width:100%;text-align:left;color:var(--ink);font-family:var(--font-b)}
.rail-step:hover{background:var(--soft)}
.rail-step .rn{flex:none;width:27px;height:27px;border-radius:50%;border:1.5px solid var(--line-soft);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--muted);background:#fff}
.rail-step.done .rn{background:linear-gradient(135deg,var(--gold-deep),var(--gold-bright));border-color:var(--gold-deep);color:#fff}
.rail-step.active{border-color:var(--gold);background:#fffdf6;box-shadow:var(--shadow)}
.rail-step.active .rn{border-color:var(--gold-deep);color:var(--gold-deep)}
.rail-step .rt b{display:block;font-size:14.5px}
.rail-step .rt span{font-size:12px;color:var(--muted);font-weight:400}
.rail-step.done .rt span{color:var(--gold-deep)}
/* Progressive connector: the line between two steps lights up gold the
   moment the upper step is complete, so the line draws itself 1→2→3→4.
   The tail runs from step 4 to the payment dot. */
.rail-link{flex:none;width:3px;min-height:16px;margin:-2px 0 -2px 22px;border-radius:2px;background:var(--line-soft)}
.rail-link.on{background:linear-gradient(180deg,var(--gold-deep),var(--gold-bright));box-shadow:0 0 6px rgba(36,86,230,.5)} /* M6: all-blue */
.rail-pay{display:flex;gap:11px;align-items:center;padding:9px 10px;font-family:var(--font-b);color:var(--ink)}
.rail-pay .rn{flex:none;width:27px;height:27px;border-radius:50%;border:1.5px solid var(--line-soft);display:flex;align-items:center;justify-content:center;font-size:14px;background:#fff}
.rail-pay .rt b{display:block;font-size:14.5px}
.rail-pay .rt span{font-size:12px;color:var(--muted);font-weight:400}
.rail-pay.on .rn{background:linear-gradient(135deg,var(--gold-deep),var(--gold-bright));border-color:var(--gold-deep)}
.rail-pay.on .rt b{color:var(--gold-deep)}
.ord-sum{position:sticky;top:76px;align-self:start;background:#fffdf8;border:1.5px solid var(--gold);border-radius:var(--r-lg);padding:16px;box-shadow:var(--shadow);max-height:calc(100vh - 92px);max-height:calc(100dvh - 92px);overflow-y:auto;scrollbar-width:thin}
.ord-sum h3{font-family:var(--font-d);font-size:17px;margin:0 0 4px;color:var(--ink)}
.ord-sum .sum-sub{font-size:12.5px;color:var(--muted);margin:0 0 10px}
.sum-pvwrap{margin-bottom:12px;border-bottom:1px solid var(--line-soft);padding-bottom:12px}
.sum-pv-h{font-family:var(--font-d);font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:8px}
.sum-pv .pv-sheet{max-width:100%;margin:0 auto;box-shadow:0 8px 22px rgba(20,20,40,.18)}
.sum-item{display:flex;gap:10px;padding:10px 0;border-top:1px solid var(--line-soft);align-items:flex-start}
.sum-thumb{flex:none;width:46px;height:46px;border-radius:10px;background:var(--soft);border:1px solid var(--line-soft);display:flex;align-items:center;justify-content:center;font-size:22px;overflow:hidden}
.sum-thumb img{width:100%;height:100%;object-fit:cover}
.sum-item .si-b{flex:1;min-width:0}
.sum-item .si-b b{font-size:13.5px;display:block}
.sum-item .si-b .mut{font-size:12px}
.sum-item .si-t{text-align:right;white-space:nowrap;font-weight:700;font-size:14px}
.sum-item .si-act{font-size:12.5px;margin-top:3px;display:flex;gap:10px;justify-content:flex-end}
.sum-item .si-act a{color:var(--gold-deep);text-decoration:none;cursor:pointer}
.sum-item .si-act a.rm{color:#b3261e} /* M8: remove-link contrast 6.54:1 */
.sum-cur{border:1.5px dashed var(--gold);border-radius:var(--r-md);padding:10px 12px;margin:10px 0;font-size:13.5px}
.sum-tot{display:flex;justify-content:space-between;font-size:14px;margin:8px 0 2px}
.sum-tot.grand{font-size:17px;font-weight:700;border-top:1.5px solid var(--gold);padding-top:10px;margin-top:10px}
.sum-btns{display:flex;flex-direction:column;gap:8px;margin-top:12px}
html[data-theme="dark"] .ord-sum{background:#141c33}
html[data-theme="dark"] .rail-step.active{background:#1a2340}
html[data-theme="dark"] .rail-step .rn{background:#1a2340}
html[data-theme="dark"] .rail-pay .rn{background:#1a2340}
/* N9: rail check/number glyphs readable on the lightened blue at night */
html[data-theme="dark"] .rail-step.done .rn,
html[data-theme="dark"] .rail-pay.on .rn{color:#0a1120}
@media(max-width:1080px){
  .ord3{grid-template-columns:1fr;grid-template-areas:"rail" "mid" "sum"}
  .ord-rail{top:52px}
  .ord-sum{position:static;max-height:none}
}
label.f{display:block;margin:16px 0 7px;font-weight:600;color:var(--ink-dim);font-size:15px}
.req-star{color:#e5484d;font-weight:700}
.ph-hint{font-size:14px;color:var(--muted);margin:4px 2px 0} /* N5 */
input[type=text],input[type=tel],input[type=email],input[type=number],input[type=password],input[type=month],select,textarea{
  width:100%;padding:14px 18px;border-radius:999px;border:1.5px solid var(--line);
  background:#fff;color:var(--ink);font-size:16px;font-family:inherit;
}
textarea{border-radius:var(--r-md);resize:vertical;min-height:76px}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(36,86,230,.15)}
select option{background:#fff}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}

/* ---------- track panel ---------- */
.track-panel{overflow:hidden;max-height:0;opacity:0;transition:max-height .4s ease,opacity .4s ease,margin .4s ease;margin:0}
.track-panel.open{max-height:400px;opacity:1;margin:18px 0}

/* ============================================================
   COUNTER / OWNER
   ============================================================ */
table{width:100%;border-collapse:collapse;font-size:15px;margin:10px 0}
th,td{padding:10px 8px;border-bottom:1px solid var(--line-soft);text-align:left;vertical-align:top}
th{color:var(--gold-deep);font-size:12.5px;letter-spacing:1px;text-transform:uppercase}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.tot td{font-weight:800;color:var(--gold-deep);font-size:17px;border-top:2px solid var(--gold)}
.pill{display:inline-block;padding:5px 14px;border-radius:999px;font-size:13px;font-weight:700;letter-spacing:.5px;background:var(--gold-lt);border:1px solid var(--line-soft);color:var(--gold-deep)}
.st-placed{background:#e6e9ff;color:#2b3a9e;border-color:#b9c2f5}
.st-in_production{background:#fef0c7;color:#93370d;border-color:#f5d47a}
.st-ready{background:#d3f8df;color:#067647;border-color:#8fe0ae}
.st-out_for_delivery{background:#d9e8ff;color:#175cd3;border-color:#a9c8f7}
.st-delivered{background:#d3f8df;color:#067647;border-color:#8fe0ae}
.flash-new{animation:glow 1.2s ease-in-out infinite}
@keyframes glow{0%,100%{box-shadow:0 0 0 0 rgba(36,86,230,0)}50%{box-shadow:0 0 18px 3px rgba(36,86,230,.35)}}
.alert{background:#fef3f2;border:1px solid var(--bad);color:#b42318;padding:13px 17px;border-radius:var(--r-md);margin:12px 0;font-size:1rem}
.alert.info{background:#eff4ff;border-color:var(--gold);color:#1a41c4}
.alert.warn{background:#fffaeb;border-color:#dc6803;color:#93370d}
.okmsg{background:#ecfdf3;border:1px solid var(--ok);color:#067647;padding:13px 17px;border-radius:var(--r-md);margin:12px 0}
.badge{display:inline-block;background:#ecfdf3;border:1px solid var(--ok);color:#067647;border-radius:999px;padding:5px 14px;font-size:13px;margin:2px}
.tabs{display:flex;gap:8px;margin:14px 0;flex-wrap:wrap}
.tabs .btn.on{background:var(--gold);color:#fff;border-color:var(--gold);font-weight:800}
.st-cancelled{background:#f2f4f7;color:#667085;border-color:#d0d5dd}
.loginbox{max-width:440px;margin:64px auto}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:16px 0}
.stat{background:#fff;border:1px solid var(--line-soft);border-radius:var(--r-md);padding:18px;text-align:center}
.stat .n{font-size:28px;font-family:var(--font-d);color:var(--gold-deep);font-weight:700}
.stat .l{font-size:13px;color:var(--muted)}
pre.ticket{background:var(--paper2);border:1px solid var(--line-soft);border-radius:var(--r-md);padding:16px;white-space:pre-wrap;font-size:14px;color:var(--ink)}

/* ============================================================
   SCROLL REVEAL — floating, never static
   ============================================================ */
.reveal{position:relative}
.motion-ready .reveal{opacity:0;transform:translate3d(0,30px,0);transition:opacity .75s cubic-bezier(.22,.68,.28,1),transform .75s cubic-bezier(.22,.68,.28,1)}
.motion-ready .reveal.from-left{transform:translate3d(-34px,0,0)}
.motion-ready .reveal.from-right{transform:translate3d(34px,0,0)}
.motion-ready .reveal.in-view{opacity:1;transform:translate3d(0,0,0)}
@keyframes edgeFloat{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(40px,-30px,0) scale(1.15)}}

/* ============================================================
   RESPONSIVE — mobile first, iOS safe
   ============================================================ */
@media(max-width:900px){
  .review-grid{grid-template-columns:repeat(2,1fr)}
  .footer-grid{grid-template-columns:1fr}
}
@media(max-width:640px){
  .grid2,.grid3{grid-template-columns:1fr}
  .stat-grid{grid-template-columns:1fr 1fr}
  .review-grid{grid-template-columns:1fr}
  .review{min-height:auto}
  .hero h1{font-size:clamp(2.4rem,12vw,3.4rem)}
  .hero-grid{padding-top:56px;padding-bottom:64px}
  .hero-actions .btn{width:100%}
  .assistant-panel{right:12px;left:12px;width:auto;top:66px;max-height:calc(100vh - 90px)}
  .hmenu{top:60px;right:10px}
  .feedback-actions .btn{width:100%}
  .est{bottom:calc(10px + env(safe-area-inset-bottom))}
  .topbar .wrap{padding:8px 14px}
  .brand-word b{font-size:15px;letter-spacing:2px}
  .brand-word small{font-size:9.5px;letter-spacing:1.8px}
  .brand .logo-badge{width:34px;height:34px;flex-basis:34px}
  .footer-grid{grid-template-columns:1fr;gap:22px}
}
/* Compact header on small phones: 6 icon buttons must stay on one row. (M1)
   Placed AFTER the ≤640px query so these tighter values win at ≤560px,
   where the looser 640px rules would otherwise override them. */
@media(max-width:560px){
  .topbar .wrap{gap:6px;padding:8px 12px}
  .brand{gap:8px}
  .brand .logo-badge{width:30px;height:30px;flex-basis:30px}
  .brand-word b{font-size:13.5px;letter-spacing:1px}
  .brand-word small{display:none}
  .nav{gap:4px}
  .nav .btn.small{padding:8px 12px;font-size:13.5px;white-space:nowrap}
  .iconbtn{width:30px;height:30px;flex-basis:30px;font-size:12px}
  .announce{font-size:.85rem} /* N12: ticker readable on phones */
}

/* ---------- print: invoices stay clean ---------- */
@media print{
  body{background:#fff;color:#111}
  .topbar,.footer,.noprint,.est,.assistant-panel,.hmenu,.announce{display:none!important}
  .card{background:#fff;border:1px solid #999;box-shadow:none;color:#111}
  h1.serif,h2.serif,h3.serif,.gold{color:#111}
  h1.display,h2.display,h3.display{color:#111}
  .mut{color:#555} .ivory{color:#111}
  table{color:#111} th{color:#111}
  .tot td{color:#111}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .ink-wash{animation:none;opacity:.12}
  .motion-ready .reveal{transition:none;opacity:1;transform:none}
  .hero-media video{display:none}
  .pulse::after{animation:none}
  .pop-card{animation:none} /* N7: price-card float disabled for reduced motion */
}

/* ---------- one-screen order flow ---------- */
.fsec{border:1px solid var(--line);border-radius:18px;padding:16px 18px;margin:0 0 14px;background:#fff;scroll-margin-top:96px;animation:fsecin .38s ease;box-shadow:var(--shadow)} /* N2: merged with the duplicate below */
/* Review & checkout (last step): bigger, unmissable — the primary action lives here */
#fsec-review{padding:24px 26px;border-width:2px;border-color:var(--gold);box-shadow:0 12px 32px rgba(36,86,230,.12)}
#fsec-review .fsec-h{font-size:20px}
@keyframes fsecin{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.fsec-head{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px}
.fsec-head .n{flex:none;width:30px;height:30px;border-radius:50%;border:1.5px solid var(--gold);color:var(--gold-deep);background:var(--gold-lt);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:15px;margin-top:2px}
.fsec-head h2{font-size:23px;margin:0 0 4px;color:var(--ink)}

/* ---------- smooth single-line flow ----------
   One slim upload line; everything else glides in as compact rows. */
.upline{
  position:relative;display:flex;align-items:center;gap:12px;
  border:1.5px dashed rgba(36,86,230,.55);border-radius:999px;
  padding:13px 20px;cursor:pointer;background:rgba(36,86,230,.05);
  transition:background .18s ease,border-color .18s ease,transform .18s ease;
  overflow:hidden;
}
.upline:hover{background:rgba(36,86,230,.1);border-color:var(--gold);transform:translateY(-1px)}
.upline input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;font-size:16px}
.upline .uic{
  flex:0 0 38px;width:38px;height:38px;border-radius:50%;
  background:var(--gold);
  display:flex;align-items:center;justify-content:center;color:#fff;
  box-shadow:0 4px 12px rgba(36,86,230,.35);
}
.upline .utx{flex:1;min-width:0}
.upline .utx b{display:block;font-size:15.5px;color:var(--ink);font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.upline .utx small{display:block;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
/* Compact file chips — one horizontal line, scrolls sideways. */
.fchips{display:flex;gap:8px;overflow-x:auto;padding:10px 2px 4px;scrollbar-width:thin}
/* PDF page reorder strip */
.porder-wrap{margin:12px 0 4px;padding:10px 12px;border:1px solid var(--line-soft);border-radius:12px;background:var(--paper2)}
.porder-h{font-size:13px;font-weight:600;margin-bottom:8px}
.porder-strip{display:flex;gap:8px;overflow-x:auto;padding:4px 2px;scrollbar-width:thin}
.porder-cell{position:relative;flex:0 0 auto;width:64px;border:1px solid var(--line-soft);border-radius:8px;overflow:hidden;background:#fff}
.porder-cell img{width:100%;height:80px;object-fit:cover;display:block}
.porder-num{position:absolute;top:2px;left:4px;background:rgba(0,0,0,.65);color:#fff;font-size:11px;font-weight:700;border-radius:6px;padding:1px 6px}
.porder-btns{position:absolute;bottom:2px;left:0;right:0;display:flex;justify-content:center;gap:4px}
.porder-btns button{background:rgba(0,0,0,.65);color:#fff;border:none;border-radius:6px;font-size:14px;line-height:1;padding:8px 12px;cursor:pointer} /* N6 */
.porder-btns button:disabled{opacity:.3;cursor:default}
.porder-d{font-size:14px;color:var(--ink-dim);margin-top:6px} /* N5 */
.fchip{
  flex:0 0 auto;display:inline-flex;align-items:center;gap:8px;
  border:1px solid var(--line-soft);border-radius:999px;padding:7px 8px 7px 12px;
  background:var(--paper2);font-size:13px;color:var(--ink-dim);
  animation:fsecin .3s ease;max-width:230px;
}
.fchip .fn{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:150px}
.fchip .fx{
  flex:0 0 22px;width:22px;height:22px;border-radius:50%;border:none;cursor:pointer;
  background:rgba(217,45,32,.1);color:#d92d20;font-size:11px;line-height:1;
  display:flex;align-items:center;justify-content:center;
}
.fchip .fx:hover{background:rgba(217,45,32,.25);color:#fff}
/* M3/M4: consolidated single .seg definition below (44px buttons, one divider) */
/* Product chips — one horizontal line. */
.prow{display:flex;gap:8px;overflow-x:auto;padding:4px 2px;scrollbar-width:thin}
.pchip{
  flex:1 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:1.5px solid var(--line-soft);border-radius:999px;padding:11px 18px;cursor:pointer;
  background:#fff;color:var(--ink-dim);font-size:14.5px;font-weight:600;
  font-family:var(--font-b);transition:border-color .16s ease,background .16s ease,transform .16s ease;
  white-space:nowrap;
}
.pchip:hover{border-color:var(--gold);transform:translateY(-1px)}
.pchip.sel{border-color:var(--gold);background:var(--gold-lt);color:var(--gold-deep);box-shadow:0 0 0 1px var(--gold)}
.pchip .pe{font-size:17px}
/* Settings list — one slim row per option, label left, control right. */
.setlist{border:1px solid var(--line-soft);border-radius:var(--r-md);overflow:hidden;background:#fff;animation:fsecin .3s ease}
.srow{display:flex;align-items:center;gap:12px;padding:11px 14px;animation:fsecin .3s ease}
.srow:not(:last-child){border-bottom:1px solid var(--line-soft)}
.srow>label{flex:1;font-size:14.5px;color:var(--ink-dim);font-weight:600}
.srow select,.srow input[type=number]{
  flex:0 1 auto;max-width:46%;text-align:right;
  background:var(--paper2);border:1px solid var(--line-soft);border-radius:999px;
  color:var(--ink);padding:8px 14px;font-size:14px;font-family:var(--font-b);
}
.srow input[type=number]{width:108px}
.srow .snote{flex-basis:100%;font-size:14px;color:var(--muted);margin-top:-4px} /* N5 */
/* Slimmer section shells for the flowing feel. (N2: the duplicate .fsec padding is merged above) */
.fsec-head{margin-bottom:10px}
.fsec-head .n{width:26px;height:26px;font-size:13px}
.fsec-head h2{font-size:20px} /* N3: same size on phones — no media-query flip */
.fsec-head p{font-size:14px;margin:2px 0 0} /* N5 */
.fsec-head .mut{margin:0;font-size:14px}
.fsec-head .fdone{flex:none;color:var(--gold);font-weight:700;font-size:18px}
.fsec-body .grid2{margin-top:2px}
/* live print preview */
.pv-wrap{display:flex;gap:18px;flex-wrap:wrap;align-items:flex-start;margin-top:6px}
.pv-fig{margin:0;text-align:center}
.pv-fig figcaption{font-size:13px;color:var(--muted);margin-top:8px;letter-spacing:.08em;text-transform:uppercase}
.pv-sheet{position:relative;width:100%;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 10px 34px rgba(16,24,40,.25);margin:0 auto;display:flex;align-items:center;justify-content:center;border:1px solid var(--line-soft)}
.pv-sheet.fit img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.pv-sheet.actual .pv-actual{line-height:0;box-shadow:0 2px 14px rgba(16,24,40,.2)}
.pv-sheet.actual .pv-actual img{width:100%;height:100%;display:block;object-fit:contain}
.pv-pdf{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#5a5a6a;background:#fff;padding:10px;text-align:center}
/* Duplex "pick up and flip": one sheet, two faces. Tap to turn it over. */
.flip-wrap{flex-basis:100%;display:flex;flex-direction:column;align-items:center;gap:8px;margin:12px 0 4px}
.flip-stage{perspective:1400px;width:min(100%,440px)}
.flip-sheet{position:relative;transform-style:preserve-3d;transition:transform .75s cubic-bezier(.3,.7,.3,1);cursor:pointer}
.flip-sheet.flipped{transform:rotateY(180deg)}
.flip-sheet .face{backface-visibility:hidden;-webkit-backface-visibility:hidden}
.flip-sheet .face.back{position:absolute;inset:0;transform:rotateY(180deg)}
.flip-cap{text-align:center;font-size:12.5px;color:var(--muted);margin-top:6px}
/* Print-quality verdict badge under a preview figure: measured effective DPI,
   never a guess about the picture. */
.pv-q{display:block;margin:7px auto 0;padding:4px 12px;border-radius:999px;font-size:12.5px;font-weight:500;max-width:fit-content;line-height:1.45}
.q-excellent{background:#e3f6ea;color:#0f6b34}
.q-great{background:#e5f1fd;color:#0b5aa8}
.q-good{background:#f1f3e2;color:#6d711f}
.q-poor{background:#fdeede;color:#9a5208}
.q-attention{background:#fde3e3;color:#a31414}
.q-warn{background:#fff4d6;color:#8a6d00;border:1px dashed #d4b800;display:block;margin:7px auto 0;padding:6px 14px;border-radius:12px;font-size:12.5px;max-width:420px;line-height:1.5}
html[data-theme="dark"] .q-excellent{background:rgba(46,204,113,.16);color:#7fe0a0}
html[data-theme="dark"] .q-great{background:rgba(90,160,255,.16);color:#9cc2ff}
html[data-theme="dark"] .q-good{background:rgba(225,225,130,.14);color:#e3e69a}
html[data-theme="dark"] .q-poor{background:rgba(255,170,80,.14);color:#ffbe78}
html[data-theme="dark"] .q-attention{background:rgba(255,90,90,.16);color:#ff9a9a}
.aibadge{display:inline-block;font-size:14px;background:var(--gold-lt);border:1px solid var(--gold);border-radius:99px;padding:7px 14px;color:var(--gold-deep)}
.fitrow{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.fitrow-label{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:14px 0 -6px}
.fitduplex .fitrow{margin-top:8px}

/* Uploaded file list (multiple front files) */
.flist{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.frow{display:flex;align-items:center;gap:10px;padding:8px 12px;border:1px solid rgba(36,86,230,.3);border-radius:12px;background:#fff}
.frow .fic{font-size:22px}
.frow .fname{flex:1;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.frow .fname small{color:var(--muted)}
.frow .fx{border:1px solid rgba(36,86,230,.4);background:transparent;color:var(--gold-deep);border-radius:50%;width:36px;height:36px;cursor:pointer;font-size:14px;line-height:1;flex:none}
.frow.dhover{outline:2px dashed var(--gold);outline-offset:-2px;background:var(--gold-lt)}
.frow input[type="file"]{max-width:100%;min-width:0}
.fhandle{cursor:grab;color:var(--gold);font-size:15px;letter-spacing:2px;user-select:none;-webkit-user-select:none;touch-action:none;padding:4px 2px;flex:none}
.fhandle:active{cursor:grabbing}
.fmoves{display:flex;flex-direction:column;gap:3px;flex:none}
.fmove{border:1px solid rgba(36,86,230,.35);background:transparent;color:var(--gold-deep);border-radius:8px;width:40px;height:34px;cursor:pointer;font-size:14px;line-height:1;padding:0}
.fmove:disabled{opacity:.3;cursor:default}
/* Segmented single-line picker — sides, orientation, flip. (M3/M4 consolidated) */
.seg{display:inline-flex;border:1px solid rgba(36,86,230,.4);border-radius:999px;overflow:hidden;
  vertical-align:middle;background:var(--paper2);animation:fsecin .3s ease;max-width:100%}
.seg button{flex:1;border:0;background:transparent;color:var(--muted);cursor:pointer;
  padding:12px 14px;font-size:14px;font-weight:600;font-family:var(--font-b);
  display:flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;
  transition:background .16s ease,color .16s ease}
.seg button+button{border-left:1px solid rgba(36,86,230,.4)}
.seg button.sel{background:var(--gold);color:#fff;font-weight:700}
.seg button:disabled{opacity:.35;cursor:not-allowed}
.seg button svg{flex:0 0 auto}

/* Full-size preview lightbox */
#pvzoom{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;padding:12px}
#pvzoom.on{display:flex}
#pvzoom .pvz-bg{position:absolute;inset:0;background:rgba(16,24,40,.88)}
.pvz-box{position:relative;background:var(--panel,#fff);color:var(--ink);border-radius:16px;width:min(96vw,780px);max-height:94vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.45)}
.pvz-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;font-weight:700;font-size:15px}
.pvz-x{border:1px solid var(--line-soft,#e2e5ee);background:transparent;color:inherit;border-radius:50%;width:38px;height:38px;font-size:16px;cursor:pointer;flex:none}
.pvz-view{position:relative;overflow:hidden;touch-action:none;background:#fff;width:100%;height:min(62vh,560px);cursor:grab}
.pvz-view:active{cursor:grabbing}
#pvz-canvas{transform-origin:0 0;line-height:0}
#pvz-canvas .pv-sheet{border-radius:0}
.pvz-controls{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 12px}
.pvz-btn{min-width:46px;height:46px;border-radius:12px;border:1px solid var(--line-soft,#e2e5ee);background:var(--panel,#fff);color:var(--ink);font-size:20px;font-weight:700;cursor:pointer}
.pvz-btn.pvz-reset{font-size:14px;padding:0 14px}
#pvz-zlabel{font-weight:700;min-width:58px;text-align:center;font-size:15px}
.pvz-note{text-align:center;font-size:12px;color:var(--muted,#6b7280);padding:0 14px 12px}
/* Finished-photo preview: the customer sees the CUT PHOTO they will receive,
   drawn like a technical drawing — height along the left edge, width along
   the bottom. Never the press sheet. */
.fin-fig{margin:0;text-align:center}
.fin-wrap{display:flex;align-items:stretch;justify-content:center;gap:6px}
.fin-dim{font-size:11.5px;font-weight:600;letter-spacing:.06em;color:var(--muted);white-space:nowrap;display:flex;align-items:center;justify-content:center}
.fin-dim-h{writing-mode:vertical-rl;transform:rotate(180deg);border-right:1px solid var(--line-soft);padding-right:6px}
.fin-dim-w{border-top:1px solid var(--line-soft);padding-top:6px;margin-top:6px}
.fin-wrapcol{display:flex;flex-direction:column;align-items:stretch;flex:1;min-width:0}
.pv-sheet.fin-frame{background:#fff}
.pv-sheet.fin-frame.fit img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.pv-sheet.fin-frame.actual .pv-actual{line-height:0;box-shadow:0 2px 14px rgba(16,24,40,.2);max-width:100%;max-height:100%}
.pv-sheet.fin-frame.actual .pv-actual img{width:100%;height:100%;display:block;object-fit:contain}
html[data-theme="dark"] .fin-dim{color:var(--muted)}
html[data-theme="dark"] .fin-dim-h{border-right-color:var(--line-soft)}
html[data-theme="dark"] .fin-dim-w{border-top-color:var(--line-soft)}
/* Gang imposition preview: each photo cell sits at its true position/size
   on the 12x18 sheet; the dashed outline is the cut line. */
.pv-sheet.pv-gang{display:block}
.pv-gcell{position:absolute;box-sizing:border-box;border:1.5px dashed rgba(26,65,196,.6);line-height:0;background:#fff}
.pv-gcell img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;cursor:default}
.fitpill{border:1.5px solid var(--line);background:#fff;border-radius:14px;padding:9px 14px;cursor:pointer;text-align:left;color:inherit}
.fitpill b{display:block;font-size:15px;color:var(--ink)}
.fitpill span{font-size:13px;color:var(--muted)}
.fitpill.sel{border-color:var(--gold);background:var(--gold-lt);box-shadow:0 0 0 1px var(--gold)}
@media(max-width:560px){.fsec{padding:15px}} /* N3: heading override removed */

/* premium bulk ZIP page */
.bfolder{margin-bottom:14px}
.bthumbs{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.bthumb{width:86px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--paper2);text-align:center;padding:4px;position:relative}
.bthumb img{width:100%;height:64px;object-fit:cover;border-radius:8px;display:block}
.bthumb span{font-size:30px;line-height:64px}
.bthumb small{display:block;font-size:11px;color:var(--muted);margin-top:2px}
.bnum{position:absolute;top:2px;left:2px;min-width:22px;height:22px;line-height:22px!important;font-size:12px!important;background:var(--gold);color:#fff;border-radius:11px;padding:0 5px;font-weight:700}
.bjob{display:flex;flex-wrap:wrap;gap:10px;align-items:end;background:var(--paper2);border:1px solid var(--line-soft);border-radius:12px;padding:10px 12px}
.bjob .f{margin-bottom:2px}

/* Legacy (since 2006) + finale */
.hero-trust{margin:-8px 0 24px;color:var(--ink-dim);font-size:1.02rem;letter-spacing:.02em;max-width:660px;border-left:3px solid var(--gold);padding-left:20px}
.hero-trust strong{color:var(--gold-deep);font-weight:700}
.display .accent{color:var(--gold)}
.hero-pricing{align-self:center;font-weight:600;color:var(--ink);font-size:1.02rem;text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1.5px}
.hero-pricing:hover{color:var(--gold)}
.hero-proof{display:flex;gap:clamp(28px,5vw,72px);margin-top:30px;flex-wrap:wrap}
.hp-stat{display:flex;flex-direction:column;gap:2px}
.hp-stat b{font-size:1.55rem;font-weight:800;letter-spacing:-.01em;color:var(--ink)}
.hp-stat span{font-size:.9rem;color:var(--ink-dim)}
/* Founder quote — slim line inside Visit the shop */
.founder-quote{margin:22px 0 0;padding-left:18px;border-left:3px solid var(--gold);font-family:var(--font-d);font-style:italic;font-size:1.08rem;color:var(--ink-dim);line-height:1.6}

/* Checkout sequencing: place-order spinner + confirmation status tracker */
.spin{display:inline-block;width:17px;height:17px;border:2.5px solid rgba(255,255,255,.35);
  border-top-color:#fff;border-radius:50%;animation:ocspin .8s linear infinite;vertical-align:-3px;margin-right:6px}
@keyframes ocspin{to{transform:rotate(360deg)}}
.tracker{display:flex;align-items:flex-start;justify-content:center;gap:6px;margin:14px auto 4px;max-width:560px}
.tstep{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:13px;color:var(--muted);position:relative}
.tstep .tdot{width:30px;height:30px;border-radius:50%;border:2px solid var(--line-soft);display:flex;
  align-items:center;justify-content:center;font-size:14px;font-weight:700;background:#fff}
.tstep.done{color:var(--gold-deep)}
.tstep.done .tdot{border-color:var(--gold);background:var(--gold-lt);color:var(--gold-deep)}
.tstep.now{color:var(--ink)}
.tstep.now .tdot{border-color:var(--gold);background:var(--gold);color:#fff;
  box-shadow:0 0 0 5px rgba(36,86,230,.18)}
.tstep:not(:last-child)::after{content:"";position:absolute;top:15px;left:calc(50% + 18px);right:calc(-50% + 18px);
  height:2px;background:var(--line-soft)}
.tstep.done:not(:last-child)::after{background:var(--gold)}
@media(max-width:520px){.tracker{gap:2px}.tstep{font-size:12px}} /* N5: tracker 12px */

/* ---- Floating logo intro (homepage) ----
   The logo is a transparent PNG, so it floats free — no box, no card.
   It drifts in, bobs gently, and a light sweep flashes across it. */
#intro{position:fixed;inset:0;z-index:2000;display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:radial-gradient(1200px 700px at 50% 36%,#ffffff 0%,#f4f7fe 58%,#e8eefb 100%)}
.intro-stage{perspective:1400px;text-align:center;padding:20px;max-width:100%}
.intro-float{position:relative;display:inline-block;overflow:hidden;
  filter:drop-shadow(0 18px 36px rgba(16,24,40,.18)) drop-shadow(0 0 34px rgba(36,86,230,.25));
  animation:introFloatIn 1.05s cubic-bezier(.2,.7,.3,1) both,introBob 2.7s ease-in-out .95s}
.intro-float img{display:block;width:min(64vw,320px);height:auto}
@keyframes introFloatIn{0%{opacity:0;transform:translateY(30px) scale(.92)}
  100%{opacity:1;transform:translateY(0) scale(1)}}
@keyframes introBob{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
/* the light sweep: masked to the logo's own alpha, so the flash
   only ever appears ON the artwork — never as a floating rectangle */
.intro-shine{position:absolute;inset:0;pointer-events:none;
  -webkit-mask-image:url(/static/logo.png?v=2);mask-image:url(/static/logo.png?v=2); /* N14: matching versions, single fetch */
  -webkit-mask-size:contain;mask-size:contain;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center}
.intro-shine::before{content:"";position:absolute;top:0;bottom:0;left:-45%;width:40%;
  transform:skewX(-18deg);
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.85),transparent);
  animation:introShine 1.15s ease .85s both}
@keyframes introShine{0%{left:-45%}100%{left:135%}}
/* the written wordmark under the logo: electric-blue stagger */
.intro-word{margin-top:26px;font-family:"Space Grotesk",Georgia,'Times New Roman',serif;font-weight:600;
  font-size:clamp(38px,9vw,74px);letter-spacing:.14em}
.intro-word span{display:inline-block;color:#98a2b3;opacity:.55;animation:introLetter .55s ease forwards}
.intro-word span:nth-child(1){animation-delay:.55s}.intro-word span:nth-child(2){animation-delay:.64s}
.intro-word span:nth-child(3){animation-delay:.73s}.intro-word span:nth-child(4){animation-delay:.82s}
.intro-word span:nth-child(5){animation-delay:.91s}.intro-word span:nth-child(6){animation-delay:1s}
.intro-word span:nth-child(7){animation-delay:1.09s}.intro-word span:nth-child(8){animation-delay:1.18s}
@keyframes introLetter{to{color:#3ca1e3;opacity:1;transform:translateY(-3px);
  text-shadow:0 0 16px rgba(60,161,227,.4),0 0 42px rgba(60,161,227,.22)}}
.intro-cmyk{margin-top:16px;font-weight:800;font-size:clamp(24px,5.5vw,40px);letter-spacing:.5em;text-indent:.5em}
.intro-cmyk span{display:inline-block;opacity:.35;animation:introFlash .5s ease-in-out 2}
.intro-cmyk span:nth-child(1){animation-delay:1.2s}.intro-cmyk span:nth-child(2){animation-delay:1.28s}
.intro-cmyk span:nth-child(3){animation-delay:1.36s}.intro-cmyk span:nth-child(4){animation-delay:1.44s}
.ic{color:#2fa8d8}.im{color:#d63d90}.iy{color:#d9a400}.ik{color:#333338}
@keyframes introFlash{50%{opacity:1;transform:scale(1.18);text-shadow:0 0 22px currentColor}}
.intro-tag{margin-top:16px;color:#667085;font-weight:600;letter-spacing:.35em;font-size:12px}
#intro.done{opacity:0;transition:opacity .55s ease;pointer-events:none}
@media (prefers-reduced-motion:reduce){#intro{display:none}}

/* ---- Board 8 P1+P2 mobile fixes ---- */
.twrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
#t_pay,#t_exp,#t_ord,#t_cr{overflow-x:auto;-webkit-overflow-scrolling:touch}
@media(max-width:560px){
  .seg{flex-wrap:wrap;border-radius:16px;max-width:100%}
  .seg button{flex:1 1 40%;padding:10px 12px;font-size:14px}
  .seg button+button{border-left:0;border-top:1px solid rgba(36,86,230,.4)}
}
@media(hover:none){
  .fhandle{display:none}
}
@media(max-width:560px){
  .intro-tag{letter-spacing:.22em}
  /* Upload pill: let the instruction wrap so mobile never truncates it. */
  .upline{border-radius:22px}
  .upline .utx b,.upline .utx small{white-space:normal;overflow:visible;text-overflow:clip}
}

/* ============================================================
   NIGHT MODE — the same studio design after dark.
   Toggle: sun button in the topbar (persisted in localStorage).
   ============================================================ */
html[data-theme="dark"]{
  --paper:#0a1120; --paper2:#0d1526; --panel:#101a2e; --panel2:#0c1425; --soft:#16202f;
  --ink:#f2f4f7; --ink-dim:#d0d5dd; --muted:#98a2b3;
  --line:rgba(122,152,255,.28); --line-soft:rgba(122,152,255,.13);
  --gold:#6b93ff; --gold-bright:#8dabff; --gold-deep:#8dabff; --gold-lt:#22345f;
  --cyan:#22c3d6; --magenta:#e0448c; --yellow:#e3b81c;
  --ok:#57c99d; --warn:#f0b45b; --bad:#e06c5c;
  --shadow:0 14px 40px rgba(0,0,0,.5);
}
html[data-theme="dark"] body{background:var(--paper)}
html[data-theme="dark"] ::selection{background:var(--gold);color:#0a1120}
html[data-theme="dark"] a{color:var(--gold-bright)}
/* topbar + header */
html[data-theme="dark"] .topbar{background:rgba(10,17,32,.92)}
html[data-theme="dark"] .brand-word b{color:var(--ink)}
html[data-theme="dark"] .iconbtn{background:#16202f;color:var(--ink-dim)}
html[data-theme="dark"] .iconbtn:hover{background:#22345f;color:var(--gold-bright)}
html[data-theme="dark"] .announce{background:linear-gradient(100deg,#0e0e22 0%,#191930 45%,#0e0e22 100%)}
/* N8: no white splash flash for night-mode users */
html[data-theme="dark"] #intro{background:radial-gradient(1200px 700px at 50% 36%,#101a30 0%,#0a1120 60%,#060b16 100%)}
html[data-theme="dark"] .intro-tag{color:#98a2b3}
/* hero at night */
html[data-theme="dark"] .hero{background:#0a1120}
html[data-theme="dark"] .hero-media video{filter:saturate(.55) contrast(1.1) brightness(.55);opacity:.5}
html[data-theme="dark"] .hero-media::after{background:
  linear-gradient(90deg,rgba(8,12,22,.96) 0%,rgba(8,12,22,.85) 44%,rgba(8,12,22,.45) 74%,rgba(8,12,22,.7) 100%),
  linear-gradient(0deg,rgba(8,12,22,.8),transparent 60%)}
html[data-theme="dark"] .ink-wash.cyan{background:radial-gradient(ellipse at 70% 50%,rgba(107,147,255,.35),rgba(107,147,255,.1) 54%,transparent 74%)}
html[data-theme="dark"] .ink-wash.magenta{background:radial-gradient(ellipse at 30% 50%,rgba(224,68,140,.3),rgba(224,68,140,.08) 54%,transparent 74%)}
html[data-theme="dark"] .hero h1{color:#f2f4f7}
html[data-theme="dark"] .hero h1 .cmyk{color:var(--gold-bright)}
html[data-theme="dark"] .hero h1 .made{color:var(--ink-dim)}
html[data-theme="dark"] .hero-copy{color:var(--ink-dim)}
html[data-theme="dark"] .hero-journey{color:var(--gold-bright)}
html[data-theme="dark"] .hero-credit{color:var(--muted)}
html[data-theme="dark"] .hero-credit a{color:var(--gold-bright)}
html[data-theme="dark"] .hero-trust{color:var(--ink-dim)}
html[data-theme="dark"] .hero-trust strong{color:var(--gold-bright)}
html[data-theme="dark"] .proof-chips .pill{background:#101a2e;color:var(--gold-bright)}
html[data-theme="dark"] .design-help{background:rgba(107,147,255,.08)}
html[data-theme="dark"] .design-help b{color:var(--gold-bright)}
html[data-theme="dark"] .pop-card{background:var(--panel)}
html[data-theme="dark"] .pop-row{color:var(--ink-dim)}
html[data-theme="dark"] .pop-row b{color:var(--gold-bright)}
html[data-theme="dark"] .pop-note{color:var(--muted)}
html[data-theme="dark"] .pop-ask{color:var(--gold-bright)}
html[data-theme="dark"] .pop-ask:hover{background:#22345f}
/* buttons at night */
html[data-theme="dark"] .btn{background:var(--gold);color:#0a1120;box-shadow:0 10px 26px rgba(0,0,0,.5)}
html[data-theme="dark"] .btn:hover{background:var(--gold-bright)}
html[data-theme="dark"] .btn.secondary{background:transparent;color:var(--gold-bright);border-color:rgba(107,147,255,.6)}
html[data-theme="dark"] .btn.secondary:hover{background:#22345f}
html[data-theme="dark"] .btn.ghost{color:var(--gold-bright);background:#101a2e;border-color:rgba(122,152,255,.3)}
/* cards & sections at night */
html[data-theme="dark"] .card{background:linear-gradient(165deg,#101a2e,#0c1425)}
/* N13: dead dark rules deleted (value-bar, journey-stage, store-card/actions, pillar, section-float) */
html[data-theme="dark"] .service{background:linear-gradient(150deg,#101a2e,#0c1425)}
html[data-theme="dark"] .service .starter{background:#22345f;color:var(--gold-bright);border-color:rgba(107,147,255,.4)}
html[data-theme="dark"] .reviews-section{background:#0a1120}
html[data-theme="dark"] .review{background:var(--panel)}
html[data-theme="dark"] .mock-card{background:var(--panel)}
html[data-theme="dark"] .how-step{background:var(--panel)}
html[data-theme="dark"] .google-rating strong{color:var(--ink)}
html[data-theme="dark"] .footer{background:#0a1120}
html[data-theme="dark"] .footer a{color:var(--gold-bright)}
html[data-theme="dark"] .f-creed{background:#0d1526}
html[data-theme="dark"] .creed{background:#0d1526}
html[data-theme="dark"] .creed .sign{color:var(--gold-bright)}
html[data-theme="dark"] .india-pill{background:linear-gradient(120deg,rgba(255,153,51,.16),rgba(255,255,255,.03) 45%,rgba(19,136,8,.16))!important}
/* order flow at night */
html[data-theme="dark"] .opt{background:var(--panel)}
html[data-theme="dark"] .opt.sel{background:#22345f;color:var(--gold-bright)}
html[data-theme="dark"] .fsec{background:var(--panel)}
html[data-theme="dark"] .fsec-head .n{background:#22345f;color:var(--gold-bright)}
html[data-theme="dark"] .upline{background:rgba(107,147,255,.07)}
html[data-theme="dark"] .upline:hover{background:rgba(107,147,255,.13)}
html[data-theme="dark"] .seg button.sel{background:var(--gold);color:#0a1120}
html[data-theme="dark"] .pchip{background:var(--panel)}
html[data-theme="dark"] .pchip.sel{background:#22345f;color:var(--gold-bright)}
html[data-theme="dark"] .setlist{background:var(--panel)}
html[data-theme="dark"] .srow select,html[data-theme="dark"] .srow input[type=number]{background:#16202f}
html[data-theme="dark"] .frow{background:var(--panel)}
html[data-theme="dark"] .frow.dhover{background:#22345f}
html[data-theme="dark"] .fitpill{background:var(--panel)}
html[data-theme="dark"] .fitpill.sel{background:#22345f}
html[data-theme="dark"] .fchip{background:#16202f}
html[data-theme="dark"] .est{background:linear-gradient(180deg,#16294d,#101a36)}
html[data-theme="dark"] .tstep .tdot{background:#16202f}
html[data-theme="dark"] .tstep.now{color:#fff}
html[data-theme="dark"] .tstep.now .tdot{background:var(--gold);color:#0a1120;border-color:var(--gold-bright)}
html[data-theme="dark"] .tstep.done .tdot{background:#22345f}
/* forms at night */
html[data-theme="dark"] input[type=text],html[data-theme="dark"] input[type=tel],
html[data-theme="dark"] input[type=email],html[data-theme="dark"] input[type=number],
html[data-theme="dark"] input[type=password],html[data-theme="dark"] input[type=month],
html[data-theme="dark"] select,html[data-theme="dark"] textarea{background:#0c1425}
html[data-theme="dark"] select option{background:#101a2e}
html[data-theme="dark"] input:focus,html[data-theme="dark"] select:focus,html[data-theme="dark"] textarea:focus{box-shadow:0 0 0 3px rgba(107,147,255,.25)}
html[data-theme="dark"] .upbar{background:#22345f}
html[data-theme="dark"] .stepbar i{background:#22345f}
html[data-theme="dark"] .diagram svg{background:#0c1425}
/* messages at night */
html[data-theme="dark"] .alert{background:rgba(224,108,92,.12);color:#ffb4a8}
html[data-theme="dark"] .alert.info{background:rgba(107,147,255,.12);color:#b9ccff}
html[data-theme="dark"] .alert.warn{background:rgba(240,180,91,.12);color:#f5cf87}
html[data-theme="dark"] .okmsg{background:rgba(87,201,157,.12);color:#b8f0cd}
html[data-theme="dark"] .badge{background:rgba(87,201,157,.12);color:#b8f0cd}
html[data-theme="dark"] .aibadge{background:#22345f;color:var(--gold-bright)}
/* ask me at night */
html[data-theme="dark"] .assistant-panel{background:#0d1526}
html[data-theme="dark"] .assistant-msg{background:#16202f}
html[data-theme="dark"] .assistant-msg.user{background:var(--gold);color:#0a1120}
html[data-theme="dark"] .assistant-panel input{background:#0c1425!important;color:var(--ink)!important}
html[data-theme="dark"] .askme-ico{color:#0a1120}
/* M7: pin small white-on-blue badges to deep blue in dark mode (5.92:1) */
html[data-theme="dark"] .cbadge,
html[data-theme="dark"] .pop,
html[data-theme="dark"] .bnum,
html[data-theme="dark"] .upline .uic{background:#2456e6}
html[data-theme="dark"] .askme-ico svg{stroke:#0a1120}
/* menus at night */
html[data-theme="dark"] .hmenu{background:#101a2e}
html[data-theme="dark"] .cm-row:hover{background:#22345f}
html[data-theme="dark"] .hm-row:hover{background:#22345f}
html[data-theme="dark"] .hm-langs button.sel{background:#22345f}
/* counter/owner at night */
html[data-theme="dark"] .stat{background:var(--panel)}
html[data-theme="dark"] pre.ticket{background:#0c1425}
html[data-theme="dark"] .st-placed{background:#2b3560;color:#cdd6ff;border-color:#4a589b}
html[data-theme="dark"] .st-in_production{background:#5c451a;color:#ffe1a8;border-color:#9b7430}
html[data-theme="dark"] .st-ready{background:#1f5b3a;color:#b8f0cd;border-color:#2f8b58}
html[data-theme="dark"] .st-out_for_delivery{background:#1f4a6b;color:#bfe3ff;border-color:#2f6b9b}
html[data-theme="dark"] .st-delivered{background:#2c5b1f;color:#d4f5b8;border-color:#4a8b30}
html[data-theme="dark"] .st-cancelled{background:#2a2f3a;color:#cfcfcf;border-color:#4a4f5a}
html[data-theme="dark"] .pill{background:#22345f;color:var(--gold-bright)}

/* ================= visual option cards =================
   Tappable choice cards: option rows get a blue-bordered card grid
   instead of long dropdowns. Keep compact: small paddings, wrap. */
.crow{margin:2px 0 12px}
.crow-h{font-family:var(--font-b);font-size:14px;font-weight:700;color:var(--ink-dim);letter-spacing:.4px;margin-bottom:8px}
.ocards{display:flex;flex-wrap:wrap;gap:8px}
.ocard{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  min-width:86px;padding:10px 12px;border:1px solid var(--line);border-radius:var(--r-md);
  background:var(--panel);color:var(--ink);
  cursor:pointer;font-family:inherit;font-size:14px;transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease;
  -webkit-tap-highlight-color:transparent}
/* Real-photo header inside a finishing card (lamination / cutting). */
.ocard .fimg{width:calc(100% + 24px);height:88px;object-fit:cover;border-radius:calc(var(--r-md) - 4px);
  margin:-10px -12px 2px;display:block}
.ocard.lam .fimg{height:76px}
.ocard:hover{border-color:var(--gold);transform:translateY(-1px)}
.ocard:focus-visible{outline:2px solid var(--gold-bright);outline-offset:2px}
.ocard.sel{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold);
  background:var(--gold-lt)}
.ocard.sel::after{content:"✓";position:absolute;top:6px;right:9px;font-size:12px;font-weight:800;color:var(--gold-deep)}
.ocard b{font-size:14px;font-weight:700;line-height:1.25}
.ocard small{font-size:11.5px;color:var(--muted);line-height:1.3}
.ocard:disabled{opacity:.38;cursor:not-allowed;transform:none}
.ocard.big{min-width:130px;flex:1 1 130px;padding:14px 10px}
.ocard.big svg{color:var(--gold)}
.ocard.big small{max-width:150px}
/* ================= payment-choice cards (cart checkout) =================
   Scoped to #cc_paycards ONLY — the shared .ocard stays compact everywhere
   else (orientation, sides, flip, size pickers). The payment choice is the
   primary decision on the checkout screen, so these cards are big and
   prominent: generous padding, large icon, strong selected state. */
#cc_paycards{gap:14px}
#cc_paycards .ocard{flex:1 1 220px;min-width:220px;padding:24px 22px;gap:10px;
  border-width:2px;border-radius:var(--r-lg);font-size:15px}
#cc_paycards .ocard .big{font-size:46px;line-height:1.1}
#cc_paycards .ocard b{font-size:17px}
#cc_paycards .ocard p{margin:0;font-size:13.5px;line-height:1.45;color:var(--muted);max-width:280px}
#cc_paycards .ocard:hover{transform:translateY(-2px)}
#cc_paycards .ocard.sel{border-width:2px;
  box-shadow:0 0 0 2px var(--gold),0 12px 30px rgba(36,86,230,.20)}
#cc_paycards .ocard.sel::after{font-size:17px;top:10px;right:13px}
/* proportional paper-size cards */
.szgroup{margin-bottom:6px;width:100%}
.szgroup-h{font-size:12px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:var(--gold-deep);margin:2px 0 6px}
.szgrid{width:100%}
.ocard.sz{min-width:88px;padding:10px 10px 8px}
.szrect{display:block;border:2px solid var(--gold);border-radius:3px;background:rgba(36,86,230,.08);margin-bottom:2px}
.szrect.custom{border-style:dashed;font-size:22px;display:flex;align-items:center;justify-content:center;width:40px!important;height:54px!important}
/* paper-weight cards: thickness bar grows with GSM */
.ocard.gsm{min-width:92px;padding:10px 12px 9px}
.gbar{display:flex;align-items:flex-end;height:34px}
.gbar i{display:block;width:34px;border-radius:3px;background:linear-gradient(180deg,var(--gold-bright),var(--gold-deep));box-shadow:0 2px 8px rgba(36,86,230,.3)}
.ocard.gsm .feel{color:var(--gold-deep)}
.pop{position:absolute;top:-9px;left:50%;transform:translateX(-50%);font-size:10px;font-weight:800;letter-spacing:.8px;
  background:var(--gold);color:#fff;padding:2px 10px;border-radius:999px;white-space:nowrap}
/* sticker swatches */
.ocard.stk{min-width:96px;flex:1 1 96px}
.sw{display:block;width:44px;height:44px;border-radius:12px;border:1px solid rgba(16,24,40,.2);box-shadow:inset 0 2px 6px rgba(255,255,255,.4),0 4px 10px rgba(16,24,40,.12)}
.sw-reg{background:linear-gradient(135deg,#fdfbf6,#ece7d8)}
.sw-hm{background:linear-gradient(135deg,#f4e6c4,#dfc98f)}
.sw-og{background:linear-gradient(135deg,#ffffff 30%,#dbe7f2 55%,#ffffff 80%)}
.sw-om{background:#c9ced4}
.sw-tp{background:repeating-conic-gradient(rgba(255,255,255,.35) 0 25%,rgba(160,180,200,.25) 0 50%) 0 0/14px 14px}
.sw-ch{background:linear-gradient(135deg,#f2f2f2,#aeb6c2 50%,#e8ecf1)}
.sw-si{background:linear-gradient(135deg,#e6e9ee,#9aa2ad 45%,#dfe4ea 70%,#8b93a0)}
.sw-go{background:linear-gradient(135deg,#f9e7b2,#d4a83c 45%,#f4d97e 70%,#b8860b)}
/* lamination swatches */
.sw.lamsw{border-radius:50%;width:38px;height:38px;display:flex;align-items:center;justify-content:center;font-size:16px}
.lamsw.none{background:transparent;border-style:dashed}
.lamsw.glossy{background:linear-gradient(135deg,#ffffff,#cfe3f2)}
.lamsw.matte{background:linear-gradient(135deg,#d8d3c4,#a9a294)}
.lamsw.hard{background:linear-gradient(135deg,#e8d9a8,#8a6c33)}
/* price badge: real owner price; .por = blank owner price (on request) */
.pbadge{display:inline-block;font-size:12px;font-weight:800;color:#fff;background:var(--gold);
  padding:2px 10px;border-radius:999px;white-space:nowrap}
.pbadge.por{background:transparent;color:var(--warn);border:1.5px dashed var(--warn);font-weight:700}
/* quantity stepper + quick chips */
.qstep{display:flex;flex-direction:column;gap:8px}
.stepper{display:inline-flex;align-items:center;gap:0;border:1px solid var(--line);border-radius:999px;overflow:hidden;background:var(--panel)}
.stbtn{width:44px;height:44px;border:0;background:transparent;color:var(--gold-deep);font-size:22px;font-weight:700;cursor:pointer;font-family:inherit;touch-action:manipulation}
.stbtn:hover{background:var(--gold-lt)}
.stbtn:focus-visible{outline:2px solid var(--gold-bright);outline-offset:-2px}
.stepper input{width:108px;border:0;background:transparent;color:var(--ink);font-size:18px;font-weight:700;text-align:center;font-family:inherit;padding:14px 10px;-moz-appearance:textfield}
.stepper input::-webkit-inner-spin-button,.stepper input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.qchips{display:flex;flex-wrap:wrap;gap:8px}
.qchip{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:11px 18px; /* N6: ~41px tall */
  font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:6px;transition:border-color .15s,box-shadow .15s}
.qchip:hover{border-color:var(--gold)}
.qchip.sel{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold);background:var(--gold-lt);color:var(--gold-deep)}
.qchip small{font-size:11px;color:var(--muted);font-weight:600}
.qchip.gsmc{flex-direction:column;gap:2px;border-radius:var(--r-md);padding:10px 14px 8px}
.qchip.gsmc .gbar{height:26px}
.qchip.gsmc .gbar i{width:30px}
.ocard.brk{min-width:78px;padding:9px 10px 8px}
html[data-theme="dark"] .ocard small{color:var(--muted)}
html[data-theme="dark"] .ocard.sel{background:#22345f}
html[data-theme="dark"] .stepper input{color:var(--ink)}
html[data-theme="dark"] .qchip.sel{color:var(--gold-bright);background:#22345f}
html[data-theme="dark"] .crow-h{color:var(--ink-dim)}
@media (max-width:560px){
  .ocard.big{min-width:calc(50% - 4px);flex:1 1 calc(50% - 4px)}
  .ocard.sz{min-width:calc(33.33% - 6px);flex:1 1 calc(33.33% - 6px)}
  .ocard.gsm{min-width:calc(33.33% - 6px);flex:1 1 calc(33.33% - 6px)}
  .ocard.stk{min-width:calc(50% - 4px);flex:1 1 calc(50% - 4px)}
}

/* Scan-and-review helper page */
.rev-pick{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:10px 0;background:var(--panel)}
.rev-text{flex:1;font-size:14px;line-height:1.55;margin:0;color:var(--ink)}
.rev-pick .btn{flex:none}

/* ---------- brochure flip preview + printer's sheet map ---------- */
.bk-wrap{display:flex;flex-direction:column;align-items:center;padding:10px 0 4px}
.bk{position:relative;width:min(600px,100%);perspective:2200px;border-radius:14px;
  box-shadow:0 24px 60px rgba(16,24,40,.25),0 4px 14px rgba(16,24,40,.18);
  background:#e9edf5}
.bk::after{content:"";position:absolute;top:0;bottom:0;left:50%;width:26px;transform:translateX(-50%);
  background:linear-gradient(90deg,transparent,rgba(16,24,40,.2),transparent);pointer-events:none;z-index:4}
.bk-static{position:absolute;top:0;bottom:0;width:50%;overflow:hidden;background:#fff}
.bk-left{left:0;border-radius:13px 0 0 13px;border:1px solid #d9d4c5;border-right:none}
.bk-right{right:0;border-radius:0 13px 13px 0;border:1px solid #d9d4c5;border-left:none}
.bk-leaf{position:absolute;top:0;bottom:0;width:50%;right:0;transform-origin:left center;
  transform-style:preserve-3d;transition:transform .7s cubic-bezier(.45,.05,.3,1);z-index:6;pointer-events:none}
.bk-leaf.left{right:auto;left:0;transform-origin:right center}
.bk-leaf.go{transform:rotateY(-180deg)}
.bk-leaf.left.go{transform:rotateY(180deg)}
.bk-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;
  background:#fff;overflow:hidden}
.bk-leaf .bk-face{border:1px solid #d9d4c5}
.bk-leaf:not(.left) .bk-face{border-radius:0 13px 13px 0}
.bk-leaf.left .bk-face{border-radius:13px 0 0 13px}
.bk-fback{transform:rotateY(180deg)}
.bk-img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#fff}
.bk-num{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:"Space Grotesk",Georgia,serif;font-size:44px;color:#c9c2ae}
.bk-pgnum{position:absolute;bottom:7px;font-size:11px;color:#9a937f;z-index:2}
.bk-left .bk-pgnum,.bk-leaf.left .bk-pgnum{left:12px}
.bk-right .bk-pgnum,.bk-leaf:not(.left) .bk-pgnum{right:12px}
.bk-badge{position:absolute;top:8px;left:50%;transform:translateX(-50%);z-index:2;
  font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;
  color:#fff;background:var(--gold);
  border:1px solid var(--gold-deep);border-radius:999px;padding:3px 12px;white-space:nowrap}
.bk-blankpage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  background:repeating-linear-gradient(45deg,#fbfaf7,#fbfaf7 12px,#f1eee6 12px,#f1eee6 24px)}
.bk-blankpage span{font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:#a8a191}
.bk-half{position:absolute;inset:0;overflow:hidden;background:#fff}
.bk-half img{position:absolute;top:0;height:100%;width:200%;max-width:none}
.bk-half .half-left{left:0}
.bk-half .half-right{left:-100%}
.bk-ctl{display:flex;align-items:center;justify-content:center;gap:16px;margin:12px 0 2px}
.bk-ind{font-size:13.5px;color:var(--muted);min-width:90px;text-align:center}
.bk-note{font-size:14px;color:var(--muted);margin:8px 2px;max-width:640px} /* N5 */
.sh-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;margin:6px 0 4px}
.sh{border:1px solid var(--line-soft);border-radius:14px;padding:12px;background:var(--panel)}
.sh.outer{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}
.sh-h{font-weight:700;font-size:13.5px;margin-bottom:10px;color:var(--ink)}
.sh-sides{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.sh-side>span{display:block;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.sh-lr{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px}
.sh-lr b{font-family:"Space Grotesk",Georgia,serif;font-size:19px;color:var(--ink);font-weight:600}
.sh-lr i{font-style:normal;color:var(--muted);opacity:.6}
.sh-thumb{width:100%;border:1px solid #d9d4c5;border-radius:8px;background:#fff;display:block}
@media (max-width:560px){.bk-ctl{gap:10px}.bk-ind{min-width:70px}}
/* saddle-stitch pins drawn on the flip-book spine (1, 2 or 3 per customer choice) */
.bk-pins{position:absolute;top:0;bottom:0;left:50%;width:0;z-index:5;pointer-events:none}
.bk-pin{position:absolute;left:-5px;width:10px;height:15px;transform:translateY(-50%);
  background:linear-gradient(180deg,#f2f2f2 0%,#b9b9b9 55%,#8a8a8a 100%);
  border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.7)}

/* ============================================================
   PUBLIC PRICE LIST (/quote) — "Honest pricing"
   Classic ivory tables, deep-ink header rows, gold rules.
   Prices are the owner's live rates, rendered server-side.
   ============================================================ */
.plist-head{text-align:center;max-width:660px;margin:30px auto 4px;padding:0 16px}
.plist-head h1{font-size:2.5rem;margin:8px 0 6px}
.plist-head p{font-size:15px}
.card.plist{margin:20px 0;padding:8px 22px 14px}
.plist h2{font-family:var(--font-d);font-size:1.4rem;margin:14px 0 2px;font-weight:600}
.plist h2 .per{font-family:var(--font-b);font-weight:400;font-size:.85rem;color:var(--muted)}
.ptbl-wrap{border:1px solid var(--line-soft);border-radius:var(--r-md);overflow:hidden;margin:10px 0 6px}
.ptbl-wrap table{margin:0}
.ptbl-wrap thead th{background:#141d33;color:#f5f1e6;border:0;font-size:12px;letter-spacing:1.5px;padding:12px 14px}
.ptbl-wrap tbody td{padding:11px 14px}
.ptbl-wrap th.num,.ptbl-wrap td.price{text-align:right}
.ptbl-wrap td.price{font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}
.por{color:var(--muted);font-style:italic;font-weight:400;font-size:13.5px;white-space:nowrap}
.pnote{font-size:14px;color:var(--muted);margin:8px 2px 4px;line-height:1.55} /* N5 */
.plist-cta{text-align:center;margin:26px 0 6px}
@media(max-width:560px){
  .plist-head h1{font-size:2rem}
  .card.plist{padding:6px 14px 12px}
  .ptbl-wrap thead th{padding:10px 10px;font-size:11px}
  .ptbl-wrap tbody td{padding:9px 10px;font-size:14px}
  /* Payment cards stack vertically on phones — side-by-side overflows 390px. */
  #cc_paycards{flex-direction:column}
  #cc_paycards .ocard{min-width:0;width:100%}
  /* 40px minimum touch targets for low-literacy mobile users. */
  .btn.small{padding:12px 20px;font-size:15px;min-height:40px}
}

/* ---- Owner dashboard: calm tabbed layout (2026-10-02) ---- */
.otabs{position:sticky;top:63px;z-index:55;display:flex;gap:8px;overflow-x:auto;
  padding:10px 4px;margin:4px -4px 2px;background:var(--paper);
  border-bottom:1px solid var(--line-soft);scrollbar-width:none}
.otabs::-webkit-scrollbar{display:none}
.otab-btn{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;
  padding:10px 16px;border-radius:999px;border:1px solid var(--line);
  background:var(--panel);color:var(--ink);font-size:14px;font-weight:600;
  cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}
.otab-btn span{font-weight:400;color:var(--muted);font-size:13px}
.otab-btn.on{background:var(--gold);border-color:var(--gold);color:#fff}
.otab-btn.on span{color:rgba(255,255,255,.85)}
.obadge{display:inline-flex;align-items:center;justify-content:center;
  min-width:20px;height:20px;padding:0 6px;border-radius:999px;
  background:var(--bad);color:#fff;font-size:12px;font-style:normal;font-weight:700}
.otab{animation:ofade .18s ease}
@keyframes ofade{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* ---------- owner control centre: header + left menu ---------- */
.oadmin{display:grid;grid-template-columns:232px minmax(0,1fr);gap:16px;align-items:start;margin-top:14px}
.oside{position:sticky;top:12px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:10px 8px;max-height:calc(100vh - 24px);overflow:auto}
.oside .grp{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin:12px 8px 4px}
.oside .grp:first-child{margin-top:2px}
.oside button{display:flex;width:100%;align-items:center;gap:8px;background:none;border:0;text-align:left;padding:8px 10px;border-radius:9px;color:var(--ink);font-size:13.5px;cursor:pointer}
.oside button:hover{background:rgba(212,175,55,.08)}
.oside button.on{background:rgba(212,175,55,.22);color:var(--ink);font-weight:700}
.opage{min-width:0}
@media(max-width:900px){
  .oadmin{grid-template-columns:1fr}
  .oside{position:static;max-height:none;display:flex;gap:6px;overflow-x:auto;padding:8px}
  .oside::-webkit-scrollbar{display:none}
  .oside .grp{display:none}
  .oside button{width:auto;white-space:nowrap;flex:none}
}

/* ---- Dropdown configurator (clean order-form rows) ---- */
.dd-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:12px;margin:14px 0}
.dd{display:flex;flex-direction:column;gap:6px;min-width:0}
.dd>span{font-size:13px;font-weight:600;color:var(--ink-dim);letter-spacing:.01em}
.dd select{appearance:none;-webkit-appearance:none;width:100%;padding:11px 38px 11px 13px;font-size:14.5px;font-family:var(--font-b);color:var(--ink);background:var(--panel);border:1.5px solid var(--line);border-radius:16px;cursor:pointer;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23667085' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>");background-repeat:no-repeat;background-position:right 13px center;transition:border-color .15s,box-shadow .15s}
.dd select:hover{border-color:var(--gold-bright)}
.dd select:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-lt)}
.dd select:disabled{opacity:.55;cursor:not-allowed}
.dd-note{font-size:12.5px;color:var(--muted);margin-top:2px}
.dd-sect{font-size:13.5px;font-weight:700;color:var(--ink);margin:18px 0 2px;display:flex;align-items:center;gap:8px}
.dd-sect:first-child{margin-top:4px}
/* quantity stepper that matches the dropdown row height */
.dd-qty{display:flex;align-items:stretch;border:1.5px solid var(--line);border-radius:16px;overflow:hidden;background:var(--panel)} /* N4 */
.dd-qty button{width:44px;border:0;background:var(--paper2);color:var(--gold-deep);font-size:20px;font-weight:700;cursor:pointer;transition:background .15s}
.dd-qty button:hover{background:var(--gold-lt)}
.dd-qty input{flex:1;min-width:0;border:0;text-align:center;font-size:15px;font-weight:600;color:var(--ink);background:transparent;padding:10px 4px}
.dd-qty input:focus{outline:none}
@media(max-width:640px){.dd-grid{grid-template-columns:repeat(2,1fr);gap:10px}}
[data-theme="dark"] .dd select{background-color:#1a2233}
[data-theme="dark"] .dd-qty button{background:#1a2233}

/* ---- Bilingual server-rendered pages: show ONE language at a time ----
   Templates carry <span class="t-en"> + <span class="t-gu"> pairs; the
   pre-paint script in base.html sets html[data-lang="gu"] when the customer
   chose Gujarati. English is the default — never both at once. */
.t-gu{display:none}
html[data-lang="gu"] .t-en{display:none}
html[data-lang="gu"] .t-gu{display:inline}

/* ---- Feedback love note: the 19-year thank-you, full width ---- */
.feedback-love{flex-basis:100%;font-family:var(--font-d);font-size:1.05rem;line-height:1.65;color:var(--ink);margin:18px 0 0;padding-top:16px;border-top:1px solid var(--line-soft)}
.feedback-love::before{content:"🙏 ";font-family:var(--font-b)}
.feedback-love .love-highlight{color:#c0392b;font-weight:700;font-size:1.25rem;line-height:1.5}
.feedback-love .love-second{display:block;color:#000;margin-top:8px;font-size:1rem}
/* Pagination component (reference pattern: per-page + First/Prev/numbers/Next/Last) */
.pg-wrap{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:14px 0;padding:10px 0;border-top:1px solid var(--line-soft)}
.pg-per{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:6px}
.pg-per select{padding:4px 8px;border-radius:8px;border:1px solid var(--line-soft);background:var(--panel,#fff);font-size:13px}
.pg-btns{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pg-btn{padding:7px 14px;border-radius:10px;border:1px solid var(--line-soft);background:#1c1a24;color:#e8e4da;font-size:13.5px;cursor:pointer;min-width:44px}
a.pg-btn{text-decoration:none;display:inline-block;text-align:center}
a.pg-btn.disabled{opacity:.4;cursor:not-allowed;pointer-events:none}
.pg-btn:hover:not(:disabled){background:#2a2733}
.pg-btn.on{background:#3b82c4;border-color:#3b82c4;color:#fff;font-weight:700}
.pg-btn:disabled{opacity:.4;cursor:not-allowed}
.pg-ellipsis{color:var(--muted);padding:0 4px}
.pg-status{font-size:13px;color:var(--muted);margin-left:auto}
html[data-theme="light"] .pg-btn{background:#f0ede6;color:#2a2733;border-color:#d8d2c4}
html[data-theme="light"] .pg-btn:hover:not(:disabled){background:#e4ded2}
/* FAQ accordion */
.faq-list details{border:1px solid var(--line-soft);border-radius:12px;margin-bottom:10px;background:var(--panel,#fff);overflow:hidden}
.faq-list summary{padding:14px 18px;font-weight:600;font-size:15.5px;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary::after{content:"+";font-size:20px;color:var(--gold);font-weight:700}
.faq-list details[open] summary::after{content:"−"}
.faq-list details p{padding:0 18px 16px;margin:0;font-size:14.5px;line-height:1.7;color:var(--muted)}
.pricing-notes p{margin:10px 0}
html[data-lang="gu"] .feedback-love{font-family:"Noto Serif Gujarati",serif}

/* ---- PDF thumbnail loading state ---- */
.pv-sheet .pv-loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:#f8f9fb;color:var(--muted);font-size:13px}
.pv-sheet .pv-loading .spin{width:28px;height:28px;border:3px solid var(--line-soft);border-top-color:var(--gold);border-radius:50%;animation:pvspin .8s linear infinite}
@keyframes pvspin{to{transform:rotate(360deg)}}
.pv-sheet img.pv-thumb{opacity:0;transition:opacity .3s}
.pv-sheet img.pv-thumb.loaded{opacity:1}
.pv-sheet img.pv-thumb.loaded + .pv-loading{display:none}

/* ============================================================
   ORDER TAKEOVER — full-screen order flow
   Tapping START YOUR ORDER opens a proper new screen: the flow
   becomes a fixed full-viewport layer with its own scroll, sliding
   in over the homepage. Back (button or browser) reverses it.
   Theme-aware via var(--paper); works phone + desktop.
   ============================================================ */
#orderbox.takeover{
  position:fixed;inset:0;z-index:80;
  display:block !important;
  margin:0;border:0;border-radius:0;box-shadow:none;
  background:var(--paper);
  overflow-y:auto;overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
  animation:obIn .32s cubic-bezier(.2,.7,.25,1);
}
#orderbox.takeover.closing{animation:obOut .2s ease-in forwards}
@keyframes obIn{from{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}
@keyframes obOut{to{opacity:0;transform:translateY(16px)}}
#orderbox.takeover .ord3{max-width:min(1720px,92vw);margin:0 auto;padding:0 24px 90px}
/* Sticky top bar: back button, title, quick actions */
.ob-topbar{
  position:sticky;top:0;z-index:6;
  display:flex;align-items:center;gap:8px;
  padding:10px 14px;margin-bottom:8px;
  background:var(--paper);
  border-bottom:1px solid var(--line-soft);
}
.ob-topbar .ob-title{flex:1;text-align:center;font-size:1.2rem;color:var(--ink);margin:0}
.ob-topbar .btn.ghost.small{white-space:nowrap;flex:0 0 auto}
@media (max-width:640px){
  #orderbox.takeover .ord3{padding:0 12px 80px}
  .ob-topbar{padding:8px 10px}
  .ob-topbar .ob-title{font-size:1.05rem}
}
/* Wide desktop: side-by-side configurator + live preview.
   Controls start on the left; the preview takes the right side,
   stretches toward the right edge, and sticks while the customer
   scrolls the options — the artwork stays big and visible. */
@media(min-width:1280px){
  #orderbox.takeover .ord3{max-width:min(1720px,92vw)}
  /* Side-by-side only when the preview is actually visible (JS toggles
     .pv-side on #qwrap) — otherwise sections use full width, no empty gap. */
  #orderbox.takeover #qwrap.pv-side{display:grid;grid-template-columns:minmax(360px,430px) minmax(0,1fr);gap:26px;align-items:start}
  #orderbox.takeover #qwrap.pv-side .fsec{grid-column:1;min-width:0;margin-bottom:16px}
  #orderbox.takeover #qwrap.pv-side #fsec-preview{grid-column:2;grid-row:1/-1;position:sticky;top:84px;max-height:calc(100vh - 104px);max-height:calc(100dvh - 104px);overflow-y:auto;scrollbar-width:thin;margin-bottom:0}
  /* Bigger artwork in the side-by-side preview */
  #orderbox.takeover #fsec-preview .pv-fig{width:min(100%,900px)!important;margin:0 auto}
  #orderbox.takeover #fsec-preview .pv-wrap{gap:22px;justify-content:center}
  #orderbox.takeover #fsec-preview .pv-sheet{width:100%}
}

/* Cart panel as a modal overlay (sits above the order takeover). */
#cartpanel{position:fixed;inset:0;z-index:85;display:none;overflow-y:auto;
  background:rgba(10,15,30,.5);padding:24px 14px;-webkit-overflow-scrolling:touch}
#cartpanel .card{margin:0 auto;animation:obIn .25s cubic-bezier(.2,.7,.25,1)}

/* Tappable preview sheet → magnifier. Subtle 🔍 badge hints the sheet itself
   opens the loupe; the dedicated button below stays for discoverability. */
.pv-sheet.pv-zoomable{cursor:zoom-in}
.pv-sheet.pv-zoomable:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.pv-zoom{position:absolute;top:8px;right:8px;min-width:30px;height:30px;padding:0 7px;
  border-radius:15px;background:rgba(16,24,40,.55);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:14px;
  pointer-events:none;z-index:2}
