/*
Theme Name: Bourgeois Boheme Atelier — Underscores Child
Theme URI: https://example.com/bourgeois-boheme-atelier
Description: Editorial fixed-rail portfolio child theme for Underscores with WooCommerce catalog mode and Elementor Free.
Author: Manus AI
Template: _s
Version: 1.2.9
Requires at least: 7.1
Requires PHP: 7.4
Text Domain: bba-atelier-child
*/
:root{--rail:30vw;--ink:#151515;--paper:#f7f6f2;--line:#252525;--muted:#8e8d88;--sans:Arial,Helvetica,sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:12px;letter-spacing:.14em}body{overflow:hidden}/* Elementor Canvas pages render no #app shell (rail + grid are canvas widgets): the document itself must scroll, otherwise nothing below the fold is reachable. */body.elementor-template-canvas{overflow-y:auto}body.admin-bar.elementor-template-canvas{overflow-y:auto}.rail{position:fixed;inset:0 auto var(--bba-utility-height,28px) 0;width:var(--rail);max-width:420px;background:#f7f6f2;border-right:1px solid var(--line);padding:48px 4vw 30px;z-index:5}.brand{display:block;color:var(--ink);text-decoration:none;letter-spacing:.03em}.brand-name{display:block;font:700 clamp(30px,4.6vw,73px)/.86 Georgia,serif;letter-spacing:-.07em}.brand-sub{display:block;margin-top:18px;font-size:11px;font-weight:700;letter-spacing:.19em}.locale{position:absolute;top:53px;right:30px;display:flex;gap:7px}.locale a{color:var(--ink);text-decoration:none}.locale .is-active{font-weight:700}.primary{position:absolute;top:225px;left:4vw;display:flex;flex-direction:column;align-items:flex-start;gap:11px}.primary a,.menu-toggle{color:var(--ink);font:700 13px/1 var(--sans);letter-spacing:.17em;text-decoration:none;background:none;border:0;padding:0;cursor:pointer;text-align:left}.primary a:hover,.primary a:focus-visible,.menu-toggle:hover{opacity:.55}.submenu{display:flex;flex-direction:column;gap:11px;margin:-2px 0 2px;padding-left:0}.submenu a{font-weight:400;color:#585751}.rail-note{position:absolute;bottom:38px;left:4vw;color:#77756f;font-size:9px;line-height:1.8;letter-spacing:.2em}.utility{position:fixed;left:0;right:0;bottom:0;height:var(--bba-utility-height,28px);display:flex;align-items:center;justify-content:space-between;padding:0 8vw;background:var(--paper);border-top:0;z-index:8}.utility a{color:var(--ink);font-size:10px;text-decoration:none;letter-spacing:.18em}.utility a:hover{opacity:.55}#app{position:fixed;inset:0 0 var(--bba-utility-height,28px) var(--rail);overflow:auto;background:var(--paper)}.page-intro{display:flex;justify-content:space-between;padding:60px 7vw 45px;border-bottom:1px solid var(--line)}.eyebrow{font-size:10px;letter-spacing:.25em}.lede{max-width:440px;font:400 clamp(22px,2.4vw,36px)/1.1 Georgia,serif;letter-spacing:-.02em;margin:0}.hero{min-height:calc(100vh - 28px);display:grid;grid-template-columns:1.05fr .95fr;background:#262624}.hero-copy{padding:8vw 7vw;color:#f4f1e9;display:flex;flex-direction:column;justify-content:space-between}.hero-copy h1{font:400 clamp(52px,7vw,118px)/.86 Georgia,serif;letter-spacing:-.08em;margin:0;max-width:450px}.hero-copy p{max-width:280px;line-height:1.7;letter-spacing:.08em;color:#c8c5bd}.hero-art{position:relative;overflow:hidden;background:linear-gradient(135deg,#ddd8cb 0%,#a99e8b 45%,#ebe8df 46%,#f7f4ec 100%)}.hero-art:before{content:"";position:absolute;width:38%;height:78%;left:29%;top:13%;border:18px solid #44413a;border-radius:48% 48% 10% 10%;box-shadow:0 0 0 2px #d6d0c4 inset}.hero-art:after{content:"";position:absolute;width:70%;height:22%;left:15%;bottom:10%;background:#d8d0c2;border-radius:48% 52% 8% 8%;transform:rotate(-3deg)}.matrix{display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:minmax(280px,43vh)}.tile{position:relative;min-height:260px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;background:linear-gradient(140deg,#eeeae1,#b7b2a7)}.tile:nth-child(2){background:linear-gradient(100deg,#d8d2c7,#9b968e)}.tile:nth-child(3){background:linear-gradient(180deg,#f5f2eb,#ccc5b7)}.tile:nth-child(4){background:linear-gradient(30deg,#cac4ba,#f3efe5)}.tile:nth-child(5){background:linear-gradient(140deg,#edeae2,#88837b)}.tile:nth-child(6){background:linear-gradient(120deg,#dedbd0,#b5ad9d)}.tile:before{content:"";position:absolute;inset:13% 26% 10%;border-radius:48% 48% 8% 8%;background:linear-gradient(90deg,#faf7ef,#c7c1b7 52%,#f5f1e7);box-shadow:0 25px 30px rgba(44,40,31,.18)}.tile:nth-child(2):before{inset:10% 35% 15%;border-radius:50% 50% 35% 35%;transform:rotate(18deg)}.tile:nth-child(3):before{inset:12% 22% 11%;border-radius:48% 48% 14% 14%;transform:skewY(-3deg)}.tile:nth-child(4):before{inset:42% 13% 6%;border-radius:50% 50% 0 0}.tile:nth-child(5):before{inset:17% 18% 13%;border-radius:10% 50% 10% 50%;transform:rotate(-20deg)}.tile:nth-child(6):before{inset:26% 12% 18%;border-radius:50%;transform:rotate(11deg)}.tile-label{position:absolute;left:18px;bottom:16px;z-index:2;font-size:10px;letter-spacing:.18em}.reading{max-width:720px;padding:70px 8vw 130px;margin:0 auto}.reading h1{font:400 clamp(46px,6vw,90px)/.88 Georgia,serif;letter-spacing:-.08em;margin:0 0 90px}.reading h2{font:400 30px/1 Georgia,serif;letter-spacing:-.03em;margin-top:80px}.reading p{max-width:540px;font-size:14px;line-height:1.8;letter-spacing:.03em}.product{display:grid;grid-template-columns:44% 56%;align-items:start;min-height:100%;}.product-gallery{border-right:1px solid var(--line)}.product-frame{height:calc(100vh - 28px);min-height:660px;position:relative;overflow:hidden;border-bottom:1px solid var(--line);background:linear-gradient(145deg,#ebe8e0,#b9b3aa)}.product-frame:before{content:"";position:absolute;inset:8% 22% 10%;background:linear-gradient(90deg,#f7f4ed,#cbc5bb 50%,#f4f1e9);border-radius:47% 47% 9% 9%;box-shadow:0 20px 32px rgba(50,45,35,.19)}.product-frame:after{content:"";position:absolute;left:28%;right:28%;bottom:10%;height:10%;background:#d1cabd}.product-media{background:var(--paper)}.product-media img,.portfolio-image{display:block;width:100%;height:100%;object-fit:cover;position:relative;z-index:1}.product-info{position:sticky;top:0;padding:30vh 8vw 20vh}.product-info h1{font-size:14px;letter-spacing:.25em;margin:0 0 12px}.product-info h2{font-size:12px;font-weight:400;letter-spacing:.23em;margin:0 0 90px}.specs{line-height:1.8;letter-spacing:.18em;margin-bottom:30px}.enquire{color:var(--ink);text-decoration:underline;text-underline-offset:5px;letter-spacing:.18em}.active{opacity:.45}.category-title{padding:45px 7vw 26px;border-bottom:1px solid var(--line);font-size:12px;letter-spacing:.24em}.legal{padding:11vh 10vw 20vh;max-width:760px}.product-description{margin-top:70px;max-width:520px;font-size:13px;line-height:1.8;letter-spacing:.04em}.rail-menu,.utility-menu{list-style:none;margin:0;padding:0}.rail-menu{display:flex;flex-direction:column;gap:11px}.utility-menu{display:flex;gap:8vw;align-items:center}.utility-menu a{color:var(--ink);font-size:10px;text-decoration:none;letter-spacing:.18em}.legal h1{font:400 64px Georgia,serif;letter-spacing:-.06em}.legal p{line-height:1.8;letter-spacing:.04em}@media(max-width:800px){body{overflow:auto}.rail{position:sticky;top:0;width:100%;max-width:none;height:auto;min-height:175px;border-right:0;border-bottom:1px solid var(--line);padding:24px 22px;z-index:10}.brand-name{font-size:44px}.brand-sub{margin-top:12px;font-size:9px}.locale{top:26px;right:22px}.primary{position:static;margin-top:38px;display:flex;flex-flow:row wrap;gap:12px 18px}.submenu{display:none}.menu-toggle{font-size:11px}.primary a{font-size:11px}.rail-note{display:none}#app{position:static;overflow:visible;min-height:calc(100vh - 175px);padding-bottom:52px}.utility{height:45px;padding:0 16px;gap:12px}.utility a{font-size:8px}.hero{min-height:70vh;grid-template-columns:1fr}.hero-copy{min-height:48vh;padding:38px 22px}.hero-copy h1{font-size:64px}.hero-art{min-height:44vh}.matrix{grid-template-columns:repeat(2,1fr);grid-auto-rows:48vw}.tile{min-height:160px}.page-intro{padding:35px 22px;display:block}.lede{margin-top:24px}.reading{padding:48px 22px 90px}.reading h1{margin-bottom:55px}.product{display:block}.product-gallery{border:0}.product-frame{height:105vw;min-height:0}.product-info{position:static;padding:55px 22px 100px}.product-info h2{margin-bottom:50px}}

/* Elementor-editable shell widgets */
.bba-elementor-slot{width:100%;height:100%}.bba-logo{display:block;color:var(--ink);text-decoration:none}.bba-logo img{display:block;max-width:100%;height:auto}.bba-logo-name{display:block;font:700 clamp(30px,4.6vw,73px)/.86 Georgia,serif;letter-spacing:-.07em}.bba-logo-subtitle{display:block;margin-top:18px;font-size:11px;font-weight:700;letter-spacing:.19em}.bba-navigation{display:flex;flex-direction:column;gap:11px}.bba-navigation a,.bba-navigation button{color:var(--ink);font:700 13px/1 var(--sans);letter-spacing:.17em;text-decoration:none;background:none;border:0;padding:0;cursor:pointer;text-align:left}.bba-utility-links{display:flex;align-items:center;justify-content:space-between}.bba-utility-links a{color:var(--ink);font-size:10px;text-decoration:none;letter-spacing:.18em}.bba-portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.bba-portfolio-card{position:relative;display:block;min-height:280px;overflow:hidden;border-right:1px solid var(--line);border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none}.bba-portfolio-card img{display:block;width:100%;height:100%;min-height:280px;object-fit:cover}.bba-portfolio-placeholder{display:block;min-height:280px;background:linear-gradient(140deg,#eeeae1,#b7b2a7)}.bba-portfolio-title{position:absolute;left:18px;bottom:16px;font-size:10px;letter-spacing:.18em}.bba-product-meta h1{font-size:14px;letter-spacing:.25em;margin:0 0 12px}.bba-product-meta h2{font-size:12px;font-weight:400;letter-spacing:.23em;margin:0 0 90px}.bba-product-specs{line-height:1.8;letter-spacing:.18em;margin-bottom:30px}.bba-product-enquiry{color:var(--ink);text-decoration:underline;text-underline-offset:5px;letter-spacing:.18em}@media(max-width:800px){.rail-elementor{position:sticky;top:0;width:100%;max-width:none;height:auto;min-height:175px;border-right:0;border-bottom:1px solid var(--line);padding:24px 22px}.rail-elementor .bba-elementor-slot{height:auto}.rail-elementor .bba-navigation{flex-flow:row wrap;gap:12px 18px;margin-top:38px}.utility-elementor{height:45px;padding:0 16px}.utility-elementor .bba-utility-links{gap:12px;flex-wrap:wrap}.utility-elementor .bba-utility-links a{font-size:8px}.bba-portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.bba-portfolio-card,.bba-portfolio-card img,.bba-portfolio-placeholder{min-height:48vw}}

/* ============================================================
   GLOBAL SETTINGS WIRING — Elementor Site Settings drives the theme.
   Every theme token and theme-rendered element now reads the Elementor
   global variables (declared by the BBA Global Styles loader). Values in
   var(..., fallback) are only used when a global is not set.
   ============================================================ */
body{
  --ink: var(--e-global-color-primary,#1d1d1b);
  --paper: var(--e-global-color-bba-cloud,#f1f1f1);
  --line: var(--e-global-color-secondary,#000000);
  --muted: var(--e-global-color-bba-mid-gray,#999999);
  --sans: var(--e-global-typography-text-font-family,"DM Sans"),Arial,Helvetica,sans-serif;
  --title-font: var(--e-global-typography-primary-font-family,"DM Sans"),Georgia,serif;
  --menu-font: var(--e-global-typography-bba-menu-font-family,var(--e-global-typography-bobo-nav-font-family,"DM Sans")),Arial,Helvetica,sans-serif;
  --submenu-font: var(--e-global-typography-bba-submenu-font-family,var(--e-global-typography-bobo-footer-link-font-family,"DM Sans")),Arial,Helvetica,sans-serif;
  --utility-font: var(--e-global-typography-accent-font-family,"DM Sans"),Arial,Helvetica,sans-serif;
}
/* Theme body + reading copy follow the Body global family. */
body,.reading p,.product-description,.legal p{font-family:var(--sans)}
/* Theme headings follow the Title global (family + weight only; sizes stay per-layout). */
.brand-name,.lede,.reading h1,.reading h2,.legal h1,.hero-copy h1,.product-info h1,.category-title{
  font-family:var(--title-font);
  font-weight:var(--e-global-typography-primary-font-weight,400);
}
/* Primary rail menu = Menu Level One global. */
.primary a,.primary .menu-toggle,.menu-toggle{
  font-family:var(--menu-font);
  font-weight:var(--e-global-typography-bba-menu-font-weight,700);
  font-size:var(--e-global-typography-bba-menu-font-size,13px);
  letter-spacing:var(--e-global-typography-bba-menu-letter-spacing,.17em);
  text-transform:var(--e-global-typography-bba-menu-text-transform,uppercase);
  color:var(--ink);
}
/* Submenu + utility footer = Menu Level Two global. */
.submenu a,.utility a,.utility-menu a{
  font-family:var(--submenu-font);
  font-weight:var(--e-global-typography-bba-submenu-font-weight,400);
  font-size:var(--e-global-typography-bba-submenu-font-size,13px);
  letter-spacing:var(--e-global-typography-bba-submenu-letter-spacing,.17em);
  text-transform:var(--e-global-typography-bba-submenu-text-transform,uppercase);
}
.submenu a{color:var(--e-global-color-text,#666666)}
/* Utility labels (rail note, eyebrows, tile labels) = Utility Caps global. */
.rail-note,.eyebrow,.tile-label,.bba-portfolio-title{
  font-family:var(--utility-font);
  font-weight:var(--e-global-typography-accent-font-weight,400);
  font-size:var(--e-global-typography-accent-font-size,10px);
  letter-spacing:var(--e-global-typography-accent-letter-spacing,.2em);
  text-transform:var(--e-global-typography-accent-text-transform,uppercase);
}
.rail-note{color:var(--e-global-color-bba-utility-gray,#707070)}
/* Elementor-editable shell slots follow the same globals. */
.bba-navigation a,.bba-navigation button{font-family:var(--menu-font);color:var(--ink)}
.bba-utility-links a{font-family:var(--submenu-font)}
.bba-logo-name,.bba-portfolio-title{font-family:var(--title-font)}
.bba-logo-name{font-weight:var(--e-global-typography-primary-font-weight,700)}
@media(max-width:800px){
  .primary a,.menu-toggle{font-size:var(--e-global-typography-bba-menu-font-size,11px)}
  .utility a{font-size:var(--e-global-typography-bba-submenu-font-size,8px)}
}

/* Rail menu: nested submenu from wp_nav_menu styled like the reference. */
.rail-menu ul,.rail-menu ul.sub-menu{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px}
.rail-menu li{list-style:none}
.rail-menu .sub-menu{margin:2px 0 4px;padding-left:0}
.rail-menu .sub-menu a{font-weight:400;color:var(--e-global-color-text,#666666)}
/* Tag links (EXCLUSIVE DESIGNS) are quieter, like the reference. */
.rail-menu .bba-menu-tag > a,.bba-menu-tag a{color:var(--e-global-color-bba-mid-gray,#999999)}
@media(max-width:800px){.rail-menu .sub-menu{display:flex}}

/* Elementor editor: the fixed-rail scroll shell (body overflow hidden + fixed #app)
   must not apply inside the editor preview iframe — otherwise the canvas cannot scroll. */
body.elementor-editor-active,
body.elementor-editor-preview {
    overflow-y: auto !important;
}
body.elementor-editor-active #app,
body.elementor-editor-preview #app {
    position: static !important;
    inset: auto !important;
    width: auto !important;
    overflow: visible !important;
}
/* Desktop editor: keep the fixed rail (and its logo) exactly like the front end,
   and offset the scrolling canvas so content is not hidden beneath it. */
body.elementor-editor-active.bba-editor-static-rail .rail,
body.elementor-editor-preview.bba-editor-static-rail .rail,
body.elementor-editor-active.bba-editor-static-rail .utility,
body.elementor-editor-preview.bba-editor-static-rail .utility {
    position: static !important;
}
@media (min-width: 801px) {
    body.elementor-editor-active #app,
    body.elementor-editor-preview #app {
        margin-left: var(--rail, 30vw) !important;
        padding-bottom: var(--bba-utility-height, 28px);
    }
    body.elementor-editor-active:not(.bba-editor-static-rail) .rail,
    body.elementor-editor-preview:not(.bba-editor-static-rail) .rail {
        position: fixed !important;
        inset: 0 auto var(--bba-utility-height, 28px) 0;
        z-index: 5;
    }
    body.elementor-editor-active:not(.bba-editor-static-rail) .utility,
    body.elementor-editor-preview:not(.bba-editor-static-rail) .utility {
        position: fixed !important;
    }
}

/* Per-page scroll mode: add the CSS class "bba-scroll-page" to a page
   (Elementor: page gear > Advanced > CSS Classes) and the page scrolls as a
   normal document — rail stays pinned left, content flows past it. */
body.bba-scroll-page { overflow-y: auto !important; }
body.bba-scroll-page #app {
    position: static !important;
    inset: auto !important;
    width: auto !important;
    margin-left: var(--rail, 30vw) !important;
    overflow: visible !important;
    padding-bottom: var(--bba-utility-height, 28px);
}
@media (max-width: 800px) {
    body.bba-scroll-page #app { margin-left: 0 !important; }
}

/* ---- Elementor Canvas shell helpers ----
   Use on Canvas templates: add class "bba-canvas-rail" to the left container
   (menu/logo) and "bba-canvas-main" to the content container. Rail stays fixed,
   content scrolls with the page. Rail width follows Site/widget --rail variable. */
.bba-canvas-rail {
    position: fixed !important;
    top: 0; left: 0; bottom: 0;
    width: var(--rail, 30vw) !important;
    max-width: 420px;
    z-index: 5;
    overflow-y: auto;
    padding: 48px 2vw var(--bba-utility-height, 28px);
}
.bba-canvas-main {
    margin-left: var(--rail, 30vw);
    padding-bottom: var(--bba-utility-height, 28px);
}
@media (max-width: 800px) {
    .bba-canvas-rail { position: static !important; width: 100% !important; max-width: none; }
    .bba-canvas-main { margin-left: 0; }
}
