/* ============================================================
   piebuve.lv — theme.css
   The single stylesheet for the whole storefront.

   HOW THEMES WORK
   ---------------
   Every colour, radius and font in the components below comes from
   a CSS variable. The admin panel sets <html data-theme="...">:

       warm-oak  (default)  — dark umber + raw spruce
       nordic               — graphite + cool paper + steel blue
       brass                — charcoal + warm gold

   Adding a theme later = one more [data-theme] block. No component
   ever names a colour directly.

   Components included now for later use: buttons, badges, cards,
   gallery, lightbox, forms, alerts, tabs, breadcrumbs, pagination,
   tables, modal, slider controls, sticky mobile bar, footer.
   ============================================================ */


/* ------------------------------------------------------------
   1. THEME TOKENS
   ------------------------------------------------------------ */

:root,
[data-theme="warm-oak"]{
    /* surfaces */
    --bg:        #f4efe5;   /* page background — limewash */
    --bg-alt:    #ece4d4;   /* alternate section */
    --panel:     #ffffff;   /* cards */
    --ink:       #1d1710;   /* darkest — stained timber */
    --ink-2:     #2a2118;
    --text:      #33291e;
    --muted:     #7d6f5d;
    --line:      rgba(29, 23, 16, .14);

    /* brand */
    --brand:     #6f4f2f;   /* oiled oak */
    --brand-2:   #8a653d;
    --spruce:    #efe3ca;   /* raw spruce — light accents on dark */
    --accent:    #b3814d;

    /* functional */
    --wa:        #1fab55;   /* WhatsApp */
    --wa-dark:   #168a43;
    --ok:        #4e8a5f;
    --warn:      #b07f2c;
    --danger:    #a8453a;

    /* type */
    --font-display: 'Cormorant Garamond', Georgia, serif;
    --font-body:    'Inter', -apple-system, 'Segoe UI', sans-serif;

    /* shape */
    --radius:    14px;
    --radius-sm: 9px;
    --shadow:    0 10px 34px rgba(29,23,16,.10);
    --shadow-sm: 0 3px 12px rgba(29,23,16,.08);

    /* the slat motif (signature element) */
    --slat-dark: rgba(29,23,16,.92);
    --slat-gap:  transparent;
}

[data-theme="nordic"]{
    --bg:        #eef1f2;
    --bg-alt:    #e2e8ea;
    --panel:     #ffffff;
    --ink:       #17222b;
    --ink-2:     #22303b;
    --text:      #263440;
    --muted:     #64778a;
    --line:      rgba(23, 34, 43, .14);
    --brand:     #33566e;
    --brand-2:   #427089;
    --spruce:    #dfe8ee;
    --accent:    #5a86a3;
    --slat-dark: rgba(23,34,43,.92);
}

[data-theme="brass"]{
    --bg:        #f2efe9;
    --bg-alt:    #e9e4da;
    --panel:     #ffffff;
    --ink:       #201d18;
    --ink-2:     #2c2820;
    --text:      #322d24;
    --muted:     #7c7263;
    --line:      rgba(32, 29, 24, .15);
    --brand:     #8a6a24;
    --brand-2:   #a8842f;
    --spruce:    #f0e6cd;
    --accent:    #bf9a3f;
    --slat-dark: rgba(32,29,24,.93);
}


/* ------------------------------------------------------------
   2. RESET + BASE
   ------------------------------------------------------------ */

*, *::before, *::after{ box-sizing:border-box; margin:0; padding:0; }

html{ scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce){
    html{ scroll-behavior:auto; }
    *, *::before, *::after{ animation:none !important; transition:none !important; }
}

body{
    background:var(--bg);
    color:var(--text);
    font-family:var(--font-body);
    font-size:16px;
    line-height:1.65;
    -webkit-font-smoothing:antialiased;
}

img{ max-width:100%; display:block; }
a{ color:inherit; }
button{ font:inherit; cursor:pointer; }

:focus-visible{
    outline:2px solid var(--accent);
    outline-offset:2px;
    border-radius:3px;
}

::selection{ background:var(--spruce); color:var(--ink); }


/* ------------------------------------------------------------
   3. TYPOGRAPHY
   ------------------------------------------------------------ */

h1,h2,h3,.display{
    font-family:var(--font-display);
    font-weight:600;
    color:var(--ink);
    line-height:1.12;
    letter-spacing:-.01em;
}

h1{ font-size:clamp(2.5rem, 5.6vw, 4.5rem); }
h2{ font-size:clamp(1.85rem, 3.6vw, 2.7rem); }
h3{ font-size:1.22rem; font-family:var(--font-body); font-weight:800; letter-spacing:0; }

.lead{ font-size:1.12rem; color:var(--muted); max-width:56ch; }

/* eyebrow — small caps label above headings */
.eyebrow{
    display:inline-flex; align-items:center; gap:10px;
    font-size:.74rem; font-weight:800;
    letter-spacing:.22em; text-transform:uppercase;
    color:var(--brand);
}
.eyebrow::before{
    content:""; width:26px; height:8px;
    background:repeating-linear-gradient(180deg,
        var(--brand) 0 2px, transparent 2px 4px);
}

.serif-i{ font-family:var(--font-display); font-style:italic; font-weight:400; }


/* ------------------------------------------------------------
   4. LAYOUT
   ------------------------------------------------------------ */

.container{ width:min(1240px, 92vw); margin-inline:auto; }
.container-wide{ width:min(1520px, 96vw); margin-inline:auto; }

.section{ padding-block:clamp(56px, 9vw, 110px); }
.section-alt{ background:var(--bg-alt); }
.section-dark{ background:var(--ink); color:var(--spruce); }
.section-dark h2{ color:var(--spruce); }
.section-dark .lead{ color:color-mix(in srgb, var(--spruce) 70%, transparent); }

.section-head{ max-width:640px; margin-bottom:clamp(28px, 4vw, 52px); }
.section-head h2{ margin-top:10px; }

.grid{ display:grid; gap:clamp(16px, 2.4vw, 28px); }
.grid-2{ grid-template-columns:repeat(2, 1fr); }
.grid-3{ grid-template-columns:repeat(3, 1fr); }
.grid-4{ grid-template-columns:repeat(4, 1fr); }
@media (max-width: 900px){ .grid-3, .grid-4{ grid-template-columns:repeat(2,1fr); } }
@media (max-width: 620px){ .grid-2, .grid-3, .grid-4{ grid-template-columns:1fr; } }

/* the slat band — signature texture, echoes the railings we build */
.slats{
    height:14px;
    background:repeating-linear-gradient(180deg,
        var(--slat-dark) 0 3px, var(--slat-gap) 3px 7px);
}


/* ------------------------------------------------------------
   5. BUTTONS
   ------------------------------------------------------------ */

.btn{
    display:inline-flex; align-items:center; justify-content:center; gap:10px;
    padding:14px 26px;
    border-radius:var(--radius-sm);
    border:1.5px solid transparent;
    font-weight:800; font-size:.95rem;
    text-decoration:none;
    transition:transform .16s ease, box-shadow .16s ease, background .16s ease;
    white-space:nowrap;
}
.btn:hover{ transform:translateY(-1px); }
.btn:active{ transform:translateY(0); }

.btn-primary{ background:var(--ink); color:var(--spruce); }
.btn-primary:hover{ background:var(--ink-2); box-shadow:var(--shadow-sm); }

.btn-outline{ background:transparent; color:var(--ink); border-color:var(--ink); }
.btn-outline:hover{ background:var(--ink); color:var(--spruce); }

.btn-light{ background:var(--spruce); color:var(--ink); }
.btn-light:hover{ box-shadow:var(--shadow-sm); }

.btn-ghost{ background:transparent; color:var(--ink); border-color:var(--line); }
.btn-ghost:hover{ border-color:var(--ink); }

.btn-wa{ background:var(--wa); color:#fff; }
.btn-wa:hover{ background:var(--wa-dark); box-shadow:0 6px 18px rgba(31,171,85,.35); }
.btn-wa svg{ width:19px; height:19px; fill:currentColor; }

.btn-sm{ padding:9px 16px; font-size:.85rem; }
.btn-lg{ padding:17px 34px; font-size:1.02rem; }
.btn-block{ width:100%; }

.btn-icon{
    width:44px; height:44px; padding:0;
    border-radius:50%;
    display:inline-flex; align-items:center; justify-content:center;
}


/* ------------------------------------------------------------
   6. BADGES + CHIPS
   ------------------------------------------------------------ */

.badge{
    display:inline-flex; align-items:center; gap:6px;
    padding:5px 12px;
    border-radius:999px;
    font-size:.76rem; font-weight:800; letter-spacing:.04em;
    background:var(--bg-alt); color:var(--ink);
    border:1px solid var(--line);
}
.badge-dark{ background:var(--ink); color:var(--spruce); border-color:transparent; }
.badge-brand{ background:var(--brand); color:#fff; border-color:transparent; }
.badge-ok{ background:var(--ok); color:#fff; border-color:transparent; }

.chip{  /* filter pills for the gallery */
    display:inline-block; padding:9px 18px;
    border-radius:999px; border:1.5px solid var(--line);
    background:transparent; color:var(--text);
    font-weight:700; font-size:.88rem;
    transition:all .15s ease;
}
.chip:hover{ border-color:var(--ink); }
.chip.on{ background:var(--ink); color:var(--spruce); border-color:var(--ink); }


/* ------------------------------------------------------------
   7. HEADER / NAV
   ------------------------------------------------------------ */

.topbar{
    background:var(--ink); color:var(--spruce);
    font-size:.82rem;
    padding:7px 0;
}
.topbar .container{ display:flex; justify-content:space-between; gap:16px; align-items:center; }
.topbar a{ color:inherit; text-decoration:none; font-weight:700; }
.topbar a:hover{ text-decoration:underline; }
@media (max-width:720px){ .topbar .hide-m{ display:none; } }

.site-header{
    position:sticky; top:0; z-index:60;
    background:color-mix(in srgb, var(--bg) 88%, transparent);
    backdrop-filter:blur(10px);
    border-bottom:1px solid var(--line);
}
.site-header .container{
    display:flex; align-items:center; gap:28px;
    height:74px;
}

.logo{
    display:flex; align-items:baseline; gap:2px;
    text-decoration:none;
    font-family:var(--font-display);
    font-size:1.7rem; font-weight:700; color:var(--ink);
    letter-spacing:-.02em;
}
.logo b{ font-weight:600; }
.logo span{ color:var(--brand); }
.logo em{ font-style:normal; font-size:.9rem; color:var(--muted); margin-left:2px; }

.nav{ display:flex; gap:26px; margin-left:auto; }
.nav a{
    text-decoration:none; font-weight:700; font-size:.94rem; color:var(--text);
    padding:6px 0; border-bottom:2px solid transparent;
}
.nav a:hover, .nav a.on{ color:var(--ink); border-bottom-color:var(--brand); }

.lang{ display:flex; gap:2px; border:1px solid var(--line); border-radius:999px; padding:3px; }
.lang a{
    text-decoration:none; font-size:.76rem; font-weight:800;
    padding:4px 9px; border-radius:999px; color:var(--muted);
}
.lang a.on{ background:var(--ink); color:var(--spruce); }
.lang a:not(.on):hover{ color:var(--ink); }

.burger{ display:none; background:none; border:none; width:42px; height:42px; }
.burger span{ display:block; height:2px; background:var(--ink); margin:5px 8px; }

@media (max-width:1020px){
    .nav, .site-header .btn-wa{ display:none; }
    .burger{ display:block; margin-left:auto; }
}

/* mobile slide-down menu */
.mnav{ display:none; background:var(--panel); border-bottom:1px solid var(--line); }
.mnav.open{ display:block; }
.mnav a{ display:block; padding:15px 6vw; text-decoration:none; font-weight:700; border-top:1px solid var(--line); }


/* ------------------------------------------------------------
   8. HERO
   ------------------------------------------------------------ */

.hero{ position:relative; min-height:min(88vh, 820px); display:flex; align-items:flex-end; color:#fff; isolation:isolate; }
.hero-img{ position:absolute; inset:0; z-index:-2; }
.hero-img img{ width:100%; height:100%; object-fit:cover; }
.hero::before{
    content:""; position:absolute; inset:0; z-index:-1;
    background:linear-gradient(12deg, rgba(20,15,10,.82) 0%, rgba(20,15,10,.35) 46%, rgba(20,15,10,.05) 75%);
}
.hero-inner{ padding-block:clamp(60px, 8vw, 110px); width:min(1240px,92vw); margin-inline:auto; }
.hero h1{ color:#fff; max-width:15ch; text-wrap:balance; }
.hero .eyebrow{ color:var(--spruce); }
.hero .eyebrow::before{ background:repeating-linear-gradient(180deg, var(--spruce) 0 2px, transparent 2px 4px); }
.hero p{ margin:18px 0 30px; max-width:52ch; font-size:1.08rem; color:rgba(255,255,255,.85); }
.hero-cta{ display:flex; gap:14px; flex-wrap:wrap; }
.hero .slats{ position:absolute; left:0; right:0; bottom:0; }

.hero-stats{
    display:flex; flex-wrap:wrap; gap:0;
    margin-top:clamp(28px,4vw,48px);
    border-top:1px solid rgba(255,255,255,.25);
}
.hero-stats div{ padding:16px 34px 2px 0; margin-right:34px; }
.hero-stats b{ display:block; font-family:var(--font-display); font-size:1.85rem; font-weight:600; }
.hero-stats span{ font-size:.8rem; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.65); }


/* ------------------------------------------------------------
   9. CARDS
   ------------------------------------------------------------ */

.card{
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:var(--radius);
    overflow:hidden;
    box-shadow:var(--shadow-sm);
}

/* --- project card (gallery) --- */
.pcard{
    position:relative; display:block; text-decoration:none;
    border-radius:var(--radius); overflow:hidden;
    background:var(--ink);
    box-shadow:var(--shadow-sm);
}
.pcard img{ width:100%; height:100%; object-fit:cover; aspect-ratio:4/3; transition:transform .5s ease, opacity .4s; }
.pcard:hover img{ transform:scale(1.045); opacity:.85; }
.pcard-tall img{ aspect-ratio:3/4.4; }
.pcard-info{
    position:absolute; left:0; right:0; bottom:0;
    padding:44px 20px 16px;
    background:linear-gradient(180deg, transparent, rgba(18,13,9,.86) 62%);
    color:#fff;
}
.pcard-info h3{ color:#fff; font-size:1.05rem; margin-bottom:2px; }
.pcard-meta{ display:flex; gap:14px; font-size:.8rem; color:rgba(255,255,255,.75); font-weight:700; }
.pcard-price{
    position:absolute; top:14px; right:14px;
    background:var(--spruce); color:var(--ink);
    font-weight:800; font-size:.82rem;
    padding:6px 12px; border-radius:999px;
}

/* --- category card --- */
.ccard{
    position:relative; display:flex; align-items:flex-end;
    min-height:390px; border-radius:var(--radius); overflow:hidden;
    text-decoration:none; color:#fff; isolation:isolate;
}
.ccard img{ position:absolute; inset:0; z-index:-2; width:100%; height:100%; object-fit:cover; transition:transform .5s; }
.ccard::before{ content:""; position:absolute; inset:0; z-index:-1; background:linear-gradient(200deg, transparent 30%, rgba(18,13,9,.84)); }
.ccard:hover img{ transform:scale(1.05); }
.ccard-body{ padding:24px; }
.ccard-body h3{ color:#fff; font-family:var(--font-display); font-weight:500; font-size:1.5rem; }
.ccard-body p{ font-size:.9rem; color:rgba(255,255,255,.8); margin:6px 0 12px; }
.ccard-more{ font-weight:800; font-size:.85rem; letter-spacing:.05em; color:var(--spruce); }

/* --- blog card --- */
.bcard{ display:flex; flex-direction:column; text-decoration:none; }
.bcard img{ aspect-ratio:16/9; object-fit:cover; }
.bcard-body{ padding:20px 22px 24px; display:flex; flex-direction:column; gap:8px; flex:1; }
.bcard-body time{ font-size:.76rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--brand); }
.bcard-body h3{ line-height:1.35; }
.bcard-body p{ color:var(--muted); font-size:.93rem; }
.bcard:hover h3{ text-decoration:underline; text-underline-offset:3px; }

/* --- step (process) --- */
.step{ position:relative; padding:26px 24px 24px; }
.step b.num{
    font-family:var(--font-display); font-weight:500;
    font-size:2.6rem; color:var(--brand);
    display:block; line-height:1; margin-bottom:10px;
}
.step h3{ margin-bottom:6px; }
.step p{ color:var(--muted); font-size:.94rem; }


/* ------------------------------------------------------------
   10. GALLERY GRID + LIGHTBOX
   ------------------------------------------------------------ */

.works{ display:grid; grid-template-columns:repeat(3,1fr); grid-auto-rows:270px; gap:18px; }
.works .pcard{ height:100%; }
.works .pcard img{ height:100%; aspect-ratio:auto; }
.works .tall{ grid-row:span 2; }
.works .wide{ grid-column:span 2; }
@media (max-width:980px){ .works{ grid-template-columns:repeat(2,1fr); grid-auto-rows:230px; } .works .wide{ grid-column:span 2; } }
@media (max-width:620px){ .works{ grid-template-columns:1fr; grid-auto-rows:250px; } .works .wide{ grid-column:span 1; } .works .tall{ grid-row:span 1; } }

.lightbox{
    position:fixed; inset:0; z-index:100;
    background:rgba(15,11,8,.94);
    display:none; align-items:center; justify-content:center; padding:4vw;
}
.lightbox.open{ display:flex; }
.lightbox img{ max-width:100%; max-height:88vh; border-radius:8px; }
.lightbox-close{
    position:absolute; top:18px; right:22px;
    background:none; border:none; color:#fff; font-size:2.2rem; line-height:1;
}


/* ------------------------------------------------------------
   11. FORMS
   ------------------------------------------------------------ */

.field{ margin-bottom:16px; }
.field label{ display:block; font-size:.8rem; font-weight:800; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); margin-bottom:6px; }
.input, .select, .textarea{
    width:100%; padding:13px 15px;
    border:1.5px solid var(--line); border-radius:var(--radius-sm);
    background:var(--panel); color:var(--text);
    font:inherit; transition:border-color .15s, box-shadow .15s;
}
.input:focus, .select:focus, .textarea:focus{
    outline:none; border-color:var(--brand);
    box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 18%, transparent);
}
.textarea{ min-height:130px; resize:vertical; }
.check{ display:flex; gap:10px; align-items:flex-start; font-size:.9rem; color:var(--muted); }
.check input{ width:18px; height:18px; accent-color:var(--brand); margin-top:2px; }
.field-error .input{ border-color:var(--danger); }
.field-error small{ color:var(--danger); font-weight:700; }


/* ------------------------------------------------------------
   12. ALERTS / TABS / BREADCRUMBS / PAGINATION / TABLE
   ------------------------------------------------------------ */

.alert{ padding:14px 18px; border-radius:var(--radius-sm); font-weight:600; font-size:.94rem; border:1px solid; }
.alert-ok{ background:color-mix(in srgb, var(--ok) 10%, transparent); color:var(--ok); border-color:color-mix(in srgb, var(--ok) 30%, transparent); }
.alert-warn{ background:color-mix(in srgb, var(--warn) 10%, transparent); color:var(--warn); border-color:color-mix(in srgb, var(--warn) 30%, transparent); }
.alert-danger{ background:color-mix(in srgb, var(--danger) 10%, transparent); color:var(--danger); border-color:color-mix(in srgb, var(--danger) 30%, transparent); }

.tabs{ display:flex; gap:4px; border-bottom:1.5px solid var(--line); }
.tabs button{ background:none; border:none; padding:12px 18px; font-weight:800; color:var(--muted); border-bottom:2.5px solid transparent; margin-bottom:-1.5px; }
.tabs button.on{ color:var(--ink); border-bottom-color:var(--brand); }

.crumbs{ display:flex; flex-wrap:wrap; gap:8px; font-size:.84rem; color:var(--muted); }
.crumbs a{ color:inherit; text-decoration:none; font-weight:700; }
.crumbs a:hover{ color:var(--ink); }
.crumbs li{ list-style:none; }
.crumbs li + li::before{ content:"/"; margin-right:8px; opacity:.5; }

.pager{ display:flex; gap:6px; justify-content:center; }
.pager a, .pager span{
    min-width:42px; height:42px; padding:0 8px;
    display:inline-flex; align-items:center; justify-content:center;
    border:1.5px solid var(--line); border-radius:var(--radius-sm);
    text-decoration:none; font-weight:800; font-size:.9rem; color:var(--text);
}
.pager a:hover{ border-color:var(--ink); }
.pager .on{ background:var(--ink); color:var(--spruce); border-color:var(--ink); }

.table{ width:100%; border-collapse:collapse; font-size:.94rem; }
.table th{ text-align:left; font-size:.76rem; letter-spacing:.08em; text-transform:uppercase; color:var(--muted); padding:10px 14px; border-bottom:1.5px solid var(--line); }
.table td{ padding:12px 14px; border-bottom:1px solid var(--line); }
.table tr:hover td{ background:var(--bg-alt); }


/* ------------------------------------------------------------
   13. MODAL
   ------------------------------------------------------------ */

.modal-back{ position:fixed; inset:0; z-index:90; background:rgba(15,11,8,.6); display:none; align-items:center; justify-content:center; padding:20px; }
.modal-back.open{ display:flex; }
.modal{ background:var(--panel); border-radius:var(--radius); max-width:560px; width:100%; box-shadow:var(--shadow); overflow:hidden; }
.modal-head{ display:flex; justify-content:space-between; align-items:center; padding:18px 24px; background:var(--ink); color:var(--spruce); }
.modal-head h3{ color:var(--spruce); }
.modal-body{ padding:24px; }
.modal-foot{ padding:16px 24px; border-top:1px solid var(--line); display:flex; justify-content:flex-end; gap:10px; }


/* ------------------------------------------------------------
   14. SLIDER CONTROLS (shared by future sliders)
   ------------------------------------------------------------ */

.sl-dots{ display:flex; gap:8px; justify-content:center; }
.sl-dot{ width:9px; height:9px; border-radius:50%; border:none; background:var(--line); }
.sl-dot.on{ background:var(--brand); transform:scale(1.25); }
.sl-arrow{
    width:44px; height:44px; border-radius:50%; border:none;
    background:rgba(18,13,9,.45); color:#fff;
    display:inline-flex; align-items:center; justify-content:center;
    backdrop-filter:blur(4px);
}
.sl-arrow:hover{ background:rgba(18,13,9,.7); }


/* ------------------------------------------------------------
   15. CTA BAND
   ------------------------------------------------------------ */

.cta-band{ background:var(--ink); color:var(--spruce); position:relative; overflow:hidden; }
.cta-band .container{ display:flex; align-items:center; justify-content:space-between; gap:28px; flex-wrap:wrap; padding-block:clamp(44px,6vw,72px); }
.cta-band h2{ color:var(--spruce); max-width:20ch; }
.cta-band p{ color:color-mix(in srgb, var(--spruce) 65%, transparent); margin-top:8px; max-width:44ch; }
.cta-band::after{
    content:""; position:absolute; top:0; bottom:0; right:-40px; width:200px;
    background:repeating-linear-gradient(90deg, rgba(255,255,255,.05) 0 4px, transparent 4px 14px);
    transform:skewX(-14deg);
}


/* ------------------------------------------------------------
   16. FOOTER
   ------------------------------------------------------------ */

.footer{ background:var(--ink); color:color-mix(in srgb, var(--spruce) 72%, transparent); font-size:.93rem; }
.footer-main{ display:grid; grid-template-columns:1.5fr 1fr 1fr 1.2fr; gap:36px; padding-block:clamp(44px,6vw,72px); }
@media (max-width:900px){ .footer-main{ grid-template-columns:1fr 1fr; } }
@media (max-width:560px){ .footer-main{ grid-template-columns:1fr; } }
.footer h4{ color:var(--spruce); font-size:.8rem; letter-spacing:.16em; text-transform:uppercase; margin-bottom:14px; }
.footer a{ color:inherit; text-decoration:none; }
.footer a:hover{ color:var(--spruce); }
.footer li{ list-style:none; margin-bottom:9px; }
.footer .logo{ color:var(--spruce); margin-bottom:12px; }
.footer-bottom{ border-top:1px solid rgba(255,255,255,.12); padding-block:18px; display:flex; justify-content:space-between; gap:14px; flex-wrap:wrap; font-size:.8rem; }


/* ------------------------------------------------------------
   17. STICKY MOBILE CONTACT BAR
   ------------------------------------------------------------ */

.mbar{
    position:fixed; left:0; right:0; bottom:0; z-index:70;
    display:none; grid-template-columns:1fr 1fr;
    background:var(--ink);
    padding:10px 12px calc(10px + env(safe-area-inset-bottom));
    gap:10px;
}
.mbar .btn{ padding:12px 10px; font-size:.9rem; }
@media (max-width:760px){
    .mbar{ display:grid; }
    body{ padding-bottom:74px; }
}


/* ------------------------------------------------------------
   18. UTILITIES
   ------------------------------------------------------------ */

.mt-1{margin-top:8px} .mt-2{margin-top:16px} .mt-3{margin-top:28px} .mt-4{margin-top:44px}
.mb-1{margin-bottom:8px} .mb-2{margin-bottom:16px} .mb-3{margin-bottom:28px}
.tac{text-align:center}
.muted{color:var(--muted)}
.flex{display:flex; gap:14px; align-items:center; flex-wrap:wrap}
.between{justify-content:space-between}
.hide{display:none}

/* soft reveal on scroll (JS adds .in) */
.rv{ opacity:0; transform:translateY(14px); transition:opacity .6s ease, transform .6s ease; }
.rv.in{ opacity:1; transform:none; }
@media (prefers-reduced-motion: reduce){ .rv{ opacity:1; transform:none; } }


/* ------------------------------------------------------------
   19. THEME SWITCHER (design-preview only; admin does this later)
   ------------------------------------------------------------ */

.theme-demo{
    position:fixed; right:16px; bottom:90px; z-index:80;
    background:var(--panel); border:1px solid var(--line); border-radius:999px;
    padding:8px 10px; display:flex; gap:8px; align-items:center;
    box-shadow:var(--shadow-sm);
}
.theme-demo span{ font-size:.68rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }
.theme-dot{ width:22px; height:22px; border-radius:50%; border:2px solid var(--line); }
.theme-dot.on{ border-color:var(--ink); transform:scale(1.12); }
.dot-oak{ background:linear-gradient(135deg,#6f4f2f,#1d1710); }
.dot-nordic{ background:linear-gradient(135deg,#33566e,#17222b); }
.dot-brass{ background:linear-gradient(135deg,#a8842f,#201d18); }
@media (max-width:760px){ .theme-demo{ bottom:150px; } }

/* ------------------------------------------------------------
   20. PRODUCT PAGE CONTENT (rich text from the editor)
   ------------------------------------------------------------ */
.product-content p{ margin-bottom:14px; }
.product-content h2, .product-content h3{ margin:26px 0 10px; }
.product-content ul, .product-content ol{ margin:0 0 14px 22px; }
.product-content li{ margin-bottom:6px; }
.product-content img{ border-radius:var(--radius-sm); margin:14px 0; }
.product-content a{ color:var(--brand); }
.product-content table{ width:100%; border-collapse:collapse; margin:14px 0; }
.product-content td, .product-content th{ border:1px solid var(--line); padding:8px 12px; }
