.elementor-kit-16{--e-global-color-primary:#000080;--e-global-color-text:#000080;--e-global-color-secondary:#AA0000;--e-global-color-accent:#FFC900;--e-global-color-b93ef04:#FFFFFF;--e-global-color-a5dd50d:#FFF0D7;--e-global-color-912538b:#333333;--e-global-color-3c6235c:#C1C1C1;--e-global-typography-primary-font-family:"Hurme Geometric Sans 1";--e-global-typography-primary-font-size:40px;--e-global-typography-primary-font-weight:700;--e-global-typography-primary-line-height:1.275em;--e-global-typography-primary-letter-spacing:0.06em;--e-global-typography-secondary-font-family:"Eames Century Modern";--e-global-typography-secondary-font-size:16px;--e-global-typography-secondary-font-weight:400;--e-global-typography-secondary-line-height:1.5em;--e-global-typography-text-font-family:"Eames Century Modern";--e-global-typography-text-font-size:16px;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.5em;--e-global-typography-accent-font-family:"Hurme Geometric Sans 1";--e-global-typography-accent-font-size:16px;--e-global-typography-accent-font-weight:700;--e-global-typography-accent-line-height:1.5em;--e-global-typography-accent-letter-spacing:0.04em;--e-global-typography-lvhero-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvhero-font-size:60px;--e-global-typography-lvhero-font-weight:700;--e-global-typography-lvhero-line-height:1.1em;--e-global-typography-lvhero-letter-spacing:0.03em;--e-global-typography-lvh140-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvh140-font-size:40px;--e-global-typography-lvh140-font-weight:700;--e-global-typography-lvh140-line-height:1.275em;--e-global-typography-lvh140-letter-spacing:0.06em;--e-global-typography-lvh230-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvh230-font-size:30px;--e-global-typography-lvh230-font-weight:700;--e-global-typography-lvh230-line-height:1.275em;--e-global-typography-lvh230-letter-spacing:0.06em;--e-global-typography-lvh320-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvh320-font-size:20px;--e-global-typography-lvh320-font-weight:700;--e-global-typography-lvh320-line-height:1.275em;--e-global-typography-lvh320-letter-spacing:0.06em;--e-global-typography-lvhm26-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvhm26-font-size:26px;--e-global-typography-lvhm26-font-weight:700;--e-global-typography-lvhm26-line-height:1.38em;--e-global-typography-lvhm26-letter-spacing:0.06em;--e-global-typography-lvstat-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvstat-font-size:40px;--e-global-typography-lvstat-font-weight:700;--e-global-typography-lvstat-line-height:1.1em;--e-global-typography-lvstat-letter-spacing:0.02em;--e-global-typography-lvnav-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvnav-font-size:16px;--e-global-typography-lvnav-font-weight:700;--e-global-typography-lvnav-line-height:1.5em;--e-global-typography-lvnav-letter-spacing:0.04em;--e-global-typography-lvarrow-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvarrow-font-size:16px;--e-global-typography-lvarrow-font-weight:700;--e-global-typography-lvarrow-line-height:1.3125em;--e-global-typography-lvarrow-letter-spacing:0.3em;--e-global-typography-lvtile-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvtile-font-size:16px;--e-global-typography-lvtile-font-weight:700;--e-global-typography-lvtile-line-height:2.1875em;--e-global-typography-lvtile-letter-spacing:0.06em;--e-global-typography-lvlab10-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvlab10-font-size:10px;--e-global-typography-lvlab10-font-weight:700;--e-global-typography-lvlab10-line-height:1.5em;--e-global-typography-lvlab10-letter-spacing:0.3em;--e-global-typography-lvfoot-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvfoot-font-size:12px;--e-global-typography-lvfoot-font-weight:400;--e-global-typography-lvfoot-line-height:1.5em;--e-global-typography-lvfoot-letter-spacing:0.06em;--e-global-typography-lvbody-font-family:"Eames Century Modern";--e-global-typography-lvbody-font-size:16px;--e-global-typography-lvbody-font-weight:400;--e-global-typography-lvbody-line-height:1.5em;--e-global-typography-lvpromo-font-family:"Eames Century Modern";--e-global-typography-lvpromo-font-size:18px;--e-global-typography-lvpromo-font-weight:400;--e-global-typography-lvpromo-line-height:1.5em;--e-global-typography-lvcard-font-family:"Eames Century Modern";--e-global-typography-lvcard-font-size:20px;--e-global-typography-lvcard-font-weight:400;--e-global-typography-lvcard-line-height:1.275em;--e-global-typography-lvserv-font-family:"Eames Century Modern";--e-global-typography-lvserv-font-size:22px;--e-global-typography-lvserv-font-weight:400;--e-global-typography-lvserv-line-height:1.5em;--e-global-typography-lvbtn13-font-family:"Hurme Geometric Sans 1";--e-global-typography-lvbtn13-font-size:13px;--e-global-typography-lvbtn13-font-weight:700;--e-global-typography-lvbtn13-line-height:1.5em;--e-global-typography-lvbtn13-letter-spacing:0.3em;font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );}.elementor-kit-16 button,.elementor-kit-16 input[type="button"],.elementor-kit-16 input[type="submit"],.elementor-kit-16 .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-lvbtn13-font-family ), Sans-serif;font-size:var( --e-global-typography-lvbtn13-font-size );font-weight:var( --e-global-typography-lvbtn13-font-weight );line-height:var( --e-global-typography-lvbtn13-line-height );letter-spacing:var( --e-global-typography-lvbtn13-letter-spacing );color:var( --e-global-color-primary );border-radius:0px 0px 0px 0px;padding:10px 26px 10px 26px;}.elementor-kit-16 e-page-transition{background-color:#FFBC7D;}body.e-wc-error-notice .woocommerce-error, body.e-wc-error-notice .wc-block-components-notice-banner.is-error{background-color:#FFF0D7;}body.e-wc-message-notice .woocommerce-message, body.e-wc-message-notice .wc-block-components-notice-banner.is-success{background-color:#FFF0D7;}body.e-wc-message-notice .woocommerce-message .button, body.e-wc-message-notice .wc-block-components-notice-banner.is-success .button{background-color:#FFFFFF !important;background-image:none !important;font-family:"Hurme Geometric Sans 1", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;line-height:1.5em;letter-spacing:0.3em;border-width:1px 1px 1px 1px;}body.e-wc-message-notice .woocommerce-message .button:hover, body.e-wc-message-notice .wc-block-components-notice-banner.is-success .button:hover{background-color:#FFFFFF !important;background-image:none !important;}body.e-wc-info-notice .woocommerce-info, body.e-wc-info-notice .wc-block-components-notice-banner.is-info{background-color:#FFF0D7;}body.e-wc-info-notice .woocommerce-info .button, body.e-wc-info-notice .wc-block-components-notice-banner.is-info .button{background-color:#FFFFFF !important;background-image:none !important;font-family:"Hurme Geometric Sans 1", Sans-serif;font-size:12px;font-weight:700;text-transform:uppercase;line-height:1.5em;letter-spacing:0.3em;border-width:1px 1px 1px 1px;}body.e-wc-info-notice .woocommerce-info .button:hover, body.e-wc-info-notice .wc-block-components-notice-banner.is-info .button:hover, body.e-wc-info-notice .e-my-account-tab:not(.e-my-account-tab__dashboard--custom) .woocommerce .woocommerce-info .woocommerce-Button:hover, body.e-wc-info-notice .e-my-account-tab:not(.e-my-account-tab__dashboard--custom) .woocommerce .wc-block-components-notice-banner.is-info .woocommerce-Button:hover{background-color:#FFFFFF !important;background-image:none !important;}.elementor-kit-16 p{margin-block-end:0px;}.elementor-kit-16 a{color:var( --e-global-color-secondary );}.elementor-kit-16 a:hover{color:#000080;}.elementor-kit-16 label{color:#000080;font-family:var( --e-global-typography-lvlab10-font-family ), Sans-serif;font-size:var( --e-global-typography-lvlab10-font-size );font-weight:var( --e-global-typography-lvlab10-font-weight );line-height:var( --e-global-typography-lvlab10-line-height );letter-spacing:var( --e-global-typography-lvlab10-letter-spacing );}.elementor-kit-16 input:not([type="button"]):not([type="submit"]),.elementor-kit-16 textarea,.elementor-kit-16 .elementor-field-textual{font-family:var( --e-global-typography-lvbody-font-family ), Sans-serif;font-size:var( --e-global-typography-lvbody-font-size );font-weight:var( --e-global-typography-lvbody-font-weight );line-height:var( --e-global-typography-lvbody-line-height );color:#000080;background-color:#FFFFFF;border-style:solid;border-width:2px 2px 2px 2px;border-color:#000080;border-radius:0px 0px 0px 0px;transition:0.2ms;padding:14px 18px 14px 18px;}.elementor-kit-16 input:focus:not([type="button"]):not([type="submit"]),.elementor-kit-16 textarea:focus,.elementor-kit-16 .elementor-field-textual:focus{color:#000080;background-color:#FFFFFF;border-style:solid;border-width:3px 3px 3px 3px;border-color:#AA0000;border-radius:0px 0px 0px 0px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1440px;}.e-con{--container-max-width:1440px;--container-default-padding-top:0px;--container-default-padding-right:60px;--container-default-padding-bottom:0px;--container-default-padding-left:60px;}.elementor-widget:not(:last-child){margin-block-end:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.e-wc-error-notice .woocommerce-error, .e-wc-error-notice .wc-block-components-notice-banner.is-error{--error-message-text-color:#000080;font-family:"Eames Century Modern", Sans-serif;font-size:16px;font-weight:400;line-height:1.5em;letter-spacing:0px;--error-message-icon-color:#AA0000;--error-message-normal-links-color:#AA0000;--error-message-hover-links-color:#AA0000;--error-box-border-radius:0px 0px 0px 0px;}body.e-wc-error-notice .woocommerce-error a.wc-backward, body.e-wc-error-notice .wc-block-components-notice-banner.is-error a.wc-backward{font-family:"Eames Century Modern", Sans-serif;font-size:16px;font-weight:400;line-height:1.5em;}.e-wc-message-notice .woocommerce-message, .e-wc-message-notice .wc-block-components-notice-banner.is-success{--message-message-text-color:#000080;font-family:"Eames Century Modern", Sans-serif;font-size:16px;font-weight:400;line-height:1.5em;letter-spacing:0px;--message-message-icon-color:#000080;--message-box-border-radius:0px 0px 0px 0px;--message-buttons-normal-text-color:#000080;--message-buttons-hover-text-color:#000080;--message-buttons-hover-border-color:#000080;--message-buttons-hover-transition-duration:0ms;--message-border-type:solid;--message-border-color:#000080;--message-buttons-border-radius:0px 0px 0px 0px;--message-buttons-padding:9px 26px 9px 26px;}body.e-wc-message-notice .woocommerce-message .restore-item, body.e-wc-message-notice .wc-block-components-notice-banner.is-success .restore-item, body.e-wc-message-notice .woocommerce-message a:not([class]), body.e-wc-message-notice .wc-block-components-notice-banner.is-success a:not([class]){font-family:"Eames Century Modern", Sans-serif;font-size:16px;font-weight:400;line-height:1.5em;}.e-wc-message-notice .woocommerce-message .restore-item, .e-wc-message-notice .wc-block-components-notice-banner.is-success .restore-item, .e-wc-message-notice .woocommerce-message a:not([class]), .e-wc-message-notice .wc-block-components-notice-banner.is-success a:not([class]){--notice-message-normal-links-color:#AA0000;}.e-wc-message-notice .woocommerce-message .restore-item:hover, .e-wc-message-notice .wc-block-components-notice-banner.is-success .restore-item:hover, .e-wc-message-notice .woocommerce-message a:not([class]):hover, .e-wc-message-notice .wc-block-components-notice-banner.is-success a:not([class]):hover{--notice-message-hover-links-color:#AA0000;}.e-wc-info-notice .woocommerce-info, .e-wc-info-notice .wc-block-components-notice-banner.is-info{--info-message-text-color:#000080;font-family:"Eames Century Modern", Sans-serif;font-size:16px;font-weight:400;line-height:1.5em;letter-spacing:0px;--info-message-icon-color:#000080;--info-box-border-radius:0px 0px 0px 0px;--info-buttons-normal-text-color:#000080;--info-buttons-hover-text-color:#000080;--info-buttons-hover-border-color:#000080;--info-buttons-hover-transition-duration:0ms;--info-border-type:solid;--info-border-color:#000080;--info-buttons-border-radius:0px 0px 0px 0px;--info-buttons-padding:9px 26px 9px 26px;}@media(max-width:1024px){.elementor-kit-16{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );}.elementor-kit-16 button,.elementor-kit-16 input[type="button"],.elementor-kit-16 input[type="submit"],.elementor-kit-16 .elementor-button{font-size:var( --e-global-typography-lvbtn13-font-size );line-height:var( --e-global-typography-lvbtn13-line-height );letter-spacing:var( --e-global-typography-lvbtn13-letter-spacing );}.elementor-kit-16 label{font-size:var( --e-global-typography-lvlab10-font-size );line-height:var( --e-global-typography-lvlab10-line-height );letter-spacing:var( --e-global-typography-lvlab10-letter-spacing );}.elementor-kit-16 input:not([type="button"]):not([type="submit"]),.elementor-kit-16 textarea,.elementor-kit-16 .elementor-field-textual{font-size:var( --e-global-typography-lvbody-font-size );line-height:var( --e-global-typography-lvbody-line-height );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;--container-default-padding-top:0px;--container-default-padding-right:40px;--container-default-padding-bottom:0px;--container-default-padding-left:40px;}}@media(max-width:767px){.elementor-kit-16{--e-global-typography-lvhero-font-size:26px;--e-global-typography-lvhero-line-height:1.38em;--e-global-typography-lvhero-letter-spacing:0.06em;--e-global-typography-lvh140-font-size:26px;--e-global-typography-lvh140-line-height:1.38em;--e-global-typography-lvh140-letter-spacing:0.06em;--e-global-typography-lvh230-font-size:26px;--e-global-typography-lvh230-line-height:1.38em;--e-global-typography-lvh230-letter-spacing:0.06em;font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );}.elementor-kit-16 button,.elementor-kit-16 input[type="button"],.elementor-kit-16 input[type="submit"],.elementor-kit-16 .elementor-button{font-size:var( --e-global-typography-lvbtn13-font-size );line-height:var( --e-global-typography-lvbtn13-line-height );letter-spacing:var( --e-global-typography-lvbtn13-letter-spacing );}.elementor-kit-16 label{font-size:var( --e-global-typography-lvlab10-font-size );line-height:var( --e-global-typography-lvlab10-line-height );letter-spacing:var( --e-global-typography-lvlab10-letter-spacing );}.elementor-kit-16 input:not([type="button"]):not([type="submit"]),.elementor-kit-16 textarea,.elementor-kit-16 .elementor-field-textual{font-size:var( --e-global-typography-lvbody-font-size );line-height:var( --e-global-typography-lvbody-line-height );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;--container-default-padding-top:0px;--container-default-padding-right:20px;--container-default-padding-bottom:0px;--container-default-padding-left:20px;}}/* Start custom CSS *//* ===== LV shared components (F5) =====================================   ONLY components with no native control live here. Buttons, breadcrumbs,   notices, tiles and cards are built from container + widget settings -   see the styleguide page. Add these classes in Advanced &gt; CSS Classes. *//* F5.3 Link/Arrow - Figma 52:13 / 52:18. The arrow is a 32x7 hairline with   a small head; no icon in the library matches it, so it is an inline SVG. */.lv-arrow .elementor-heading-title{display:inline-flex;align-items:center;gap:14px;}.lv-arrow .elementor-heading-title:after{content:"";flex:0 0 34px;width:34px;height:8px;background:no-repeat center/34px 8px url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2734%27 height=%278%27 viewBox=%270 0 34 8%27%3E%3Cpath d=%27M0 4h31M27 1l4 3-4 3%27 fill=%27none%27 stroke=%27%23000080%27 stroke-width=%271.5%27/%3E%3C/svg%3E");}.lv-arrow--on-navy .elementor-heading-title:after{background-image:url("data:image/svg+xml,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2734%27 height=%278%27 viewBox=%270 0 34 8%27%3E%3Cpath d=%27M0 4h31M27 1l4 3-4 3%27 fill=%27none%27 stroke=%27%23ffffff%27 stroke-width=%271.5%27/%3E%3C/svg%3E");}/* F5.5 Nav/Pagination - Figma 84:264. Rendered by WooCommerce/Elementor,   so there is no widget panel for the individual page links. */.lv-pager{display:flex;gap:8px;flex-wrap:wrap;}.lv-pager a,.lv-pager span{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:44px;padding:9px 16px;border:1px solid #000080;font-family:"Hurme Geometric Sans 1",sans-serif;font-weight:700;font-size:16px;line-height:1.5;letter-spacing:.64px;color:#000080;text-decoration:none;}.lv-pager .current{background:#000080;color:#FFFFFF;}.lv-pager .dots{border-color:transparent;}/* F5.6 Chip, 4 states - Figma 84:277. Filter chips come from the filter   plugin (not yet chosen); the status variant is also used for order status. */.lv-chip{display:inline-flex;align-items:center;box-sizing:border-box;padding:8px 16px;border:1px solid #000080;background:transparent;color:#000080;font-family:"Eames Century Modern",serif;font-size:16px;line-height:1.5;text-decoration:none;}.lv-chip--active{background:#000080;border-color:#000080;color:#FFFFFF;}.lv-chip--clear{border-color:#AA0000;color:#AA0000;}.lv-chip--status{background:#FFC900;border-color:#FFC900;color:#000080;}/* F5.8 Field/Input (underline) - Figma 86:226 */.elementor-kit-16 .lv-field-underline input:not([type=button]):not([type=submit]),.elementor-kit-16 .lv-field-underline .elementor-field{background:transparent;border:0;border-bottom:1px solid #000080;border-radius:0;padding:0 0 5px;min-height:0;}/* F5.8 Checkbox - Figma 52:42 / 86:231. No native control styles a checkbox. */.elementor-kit-16 .lv-check input[type=checkbox],.elementor-kit-16 .elementor-field-type-acceptance input[type=checkbox],.elementor-kit-16 .elementor-field-type-checkbox input[type=checkbox]{appearance:none;-webkit-appearance:none;box-sizing:border-box;display:inline-block;vertical-align:middle;flex:0 0 18px;width:18px;height:18px;min-height:0;padding:0;border:2px solid #000080;border-radius:0;background:#FFFFFF;position:relative;margin:0;cursor:pointer;}.elementor-kit-16 .lv-check input[type=checkbox]:checked,.elementor-kit-16 .elementor-field-type-acceptance input[type=checkbox]:checked,.elementor-kit-16 .elementor-field-type-checkbox input[type=checkbox]:checked{background:#000080;}.elementor-kit-16 .lv-check input[type=checkbox]:checked:after,.elementor-kit-16 .elementor-field-type-acceptance input[type=checkbox]:checked:after,.elementor-kit-16 .elementor-field-type-checkbox input[type=checkbox]:checked:after{content:"";position:absolute;left:4px;top:0;width:5px;height:9px;border:2px solid #FFFFFF;border-top:0;border-left:0;transform:rotate(45deg);}.lv-check label{display:inline-flex;align-items:center;gap:12px;font-family:"Eames Century Modern",serif;font-size:16px;line-height:1.5;color:#000080;}/* consent text is body copy, not a field label; no control separates the two */.elementor-kit-16 .elementor-field-type-acceptance label{font-family:"Eames Century Modern",serif;font-weight:400;font-size:16px;line-height:1.5;letter-spacing:normal;color:#000080;margin-left:12px;}

/* — article card (moved from archive template 5763 on 2026-09-04 so every consumer gets it: B8 archive + B1 homepage row) — */
/* — article card — */
.jet-listing-grid__item{display:flex;}
.jet-engine-listing-overlay-wrap{width:100%;}
.lv-card{height:100%;}
/* reserve the ratio from width so a lazy-loaded thumbnail never lands on the text */
.lv-card__media{position:relative;width:100%;height:0;padding-bottom:90.91%;overflow:hidden;background:#FFF0D7;flex-shrink:0;}
.lv-card__media&gt;.elementor-widget{position:absolute;inset:0;margin:0;}
.lv-card__media .elementor-widget-container,.lv-card__media figure,.lv-card__media a{height:100%;}
.lv-card__media img{width:100%;height:100%;object-fit:cover;display:block;}
.lv-card__media img[src*="elementor/assets/images/placeholder"]{display:none;}
.lv-card__title .elementor-heading-title{font-size:20px;line-height:1.275;color:#000080;}
.lv-card:hover .lv-card__title .elementor-heading-title{text-decoration:underline;}
.lv-card__meta .lv-cardmeta{font-family:"Hurme Geometric Sans 1",sans-serif;font-weight:700;font-size:10px;line-height:1.5;letter-spacing:.3em;text-transform:uppercase;color:#000080;display:inline-block;}
.lv-cardmeta__sep{margin:0 8px;}


/* ===== C1 - Card/Product (Figma 58:250) - owner approved 2026-09-08 =====
   Media is a 1:1 box: the Figma card is 248 wide with 16px side padding, so the
   thumbnail is 216x216. CSS because the Image widget has no height or aspect
   control, and .lv-card__media is the ARTICLE card's ratio - it serves /kasulik/
   and must not be repurposed (see finding B-24). */
.lv-pcard .lv-card__media{position:relative;width:100%;height:0;padding-bottom:100%;overflow:hidden;flex-shrink:0;}
.lv-pcard .lv-card__media > .elementor-element{position:absolute;inset:0;height:100%;width:100%;}
.lv-pcard .lv-card__media .elementor-widget-container{position:absolute;inset:0;height:100%;}
.lv-pcard .lv-card__media img{width:100%;height:100%;object-fit:cover;display:block;}

/* C-SPEC: card title is navy natively (the Heading widget's title_color outranks
   the kit's a{color:#AA0000}), but the Heading widget has NO hover-colour control
   at all - measured 2026-09-04. Owner approved these lines 2026-09-08. */
.lv-pcard__title .elementor-heading-title a:hover,
.lv-pcard__title a:hover .elementor-heading-title,
.lv-pcard__title .elementor-heading-title:hover{color:#AA0000;}


/* ===== C1 - Shop toolbar (Figma 60:607) - owner approved 2026-09-08 ==========
   The count is a shortcode and the sort control is JetSmartFilters' markup;
   neither exposes typography controls in Elementor. Two traps found here:
   1. The widget emits max-width from its native 'Select Width' control at higher
      specificity than any kit rule - so that is set on the WIDGET (210), and the
      width below just fills it.
   2. The chevron is drawn with BORDERS, not a background image: Elementor's
      lazy-background feature emits background-image:none!important for elements
      inside a .e-con that has not lazy-loaded, and it beats our !important too. */
.lv-shop-toolbar{padding-left:20px;padding-right:12px;}
.lv-result-count{font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:15px;line-height:1.5;letter-spacing:0.04em;color:#000080;white-space:nowrap;}
.lv-shop-toolbar .jet-sorting{gap:10px;position:relative;}
.lv-shop-toolbar .jet-sorting-label{font-family:'Eames Century Modern',serif;font-size:16px;line-height:1.5;color:rgba(0,0,128,0.7);white-space:nowrap;margin:0;}
.lv-shop-toolbar .jet-sorting-select{width:210px;height:38px;box-sizing:border-box;background-color:#fff;border:1px solid #000080;border-radius:0;padding:0 34px 0 14px;font-family:'Eames Century Modern',serif;font-size:16px;line-height:1.5;color:#000080;-webkit-appearance:none;appearance:none;}
.lv-shop-toolbar .jet-sorting::after{content:'';position:absolute;right:17px;top:calc(50% - 4px);width:8px;height:8px;border-right:1.5px solid #000080;border-bottom:1.5px solid #000080;transform:rotate(45deg);pointer-events:none;}
@media(max-width:767px){.lv-shop-toolbar .jet-sorting-select{width:100%;}}


/* ===== C1 - LAE VEEL - owner approved 2026-09-08 ===========================
   DELIBERATE DEVIATION FROM FIGMA: frame 60:751 draws this as centred UI/Label 10
   TEXT. The owner chose a yellow button matching the card's OSTA instead, for
   affordance. Do not 'correct' this back to the frame.
   Pagination is owned by JetSmartFilters (see B-38); its markup is a
   div[role=button] with no Elementor style controls, so it is styled here.
   NOTE: JSF's own colour rule is also two classes and its stylesheet loads AFTER
   the kit, so the label .elementor-kit-16 needs three classes to win - not !important.
   No hover animation - site ground rule. */
.lv-shop-loadmore .jet-filters-pagination{display:flex;justify-content:center;margin-top:26px;}
.lv-shop-loadmore .jet-filters-pagination__load-more{display:inline-flex;align-items:center;justify-content:center;min-width:190px;height:44px;padding:0 26px;margin:0;background-color:#FFC900;border-radius:0;cursor:pointer;}
.lv-shop-loadmore .jet-filters-pagination__load-more .jet-filters-pagination__link{font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:13px;line-height:1.5;letter-spacing:0.3em;color:#000080;text-transform:uppercase;text-align:center;background:none;border:0;padding:0;}

/* JSF ships .jet-filters-pagination__load-more .jet-filters-pagination__link:hover
   {color:#fff;background-color:#5fb5ff} - a blue pill over our yellow button.
   Owner asked for it gone (site ground rule: no hover effects on buttons), so hover
   is pinned identical to rest state. Three classes + pseudo beats JSF's two. */
.lv-shop-loadmore .jet-filters-pagination__load-more .jet-filters-pagination__link:hover,
.lv-shop-loadmore .jet-filters-pagination__load-more .jet-filters-pagination__link:focus{background-color:transparent;color:#000080;box-shadow:none;outline:none;}


/* ===== C1 - active category tile (Figma 60:494) ===========================
   The current category's tile is navy with a white label. The class is added at
   render time by wp-content/novamira-sandbox/lv-shop-active-tile.php - Elementor
   has no 'current term' condition and JetEngine's Dynamic Visibility cannot test
   taxonomy ancestry. The tile labels DO carry a title colour on the widget
   (navy, set in the panel), so the white override below needs 4 classes. */
.lv-cat-tile--active{background-color:#000080;}
.lv-cat-tile--active.lv-cat-tile .lv-cat-tile__label .elementor-heading-title,
.lv-cat-tile--active.lv-cat-tile .lv-cat-tile__label .elementor-heading-title a{color:#FFFFFF;}


/* ===== C1 - shop aside: categories + filters (Figma 60:513) - owner approved 2026-09-08 =====
   The subcategory list is a WP widget and the filters are JetSmartFilters markup;
   no Elementor typography control reaches either, so styled here. */
.lv-shop-aside .elementor-element-aside-cats .widget_product_categories > *:first-child,.lv-shop-aside .elementor-element-aside-cats h5{font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:10px;line-height:1.5;letter-spacing:0.3em;color:#000080;text-transform:uppercase;margin:0 0 16px;}
.lv-shop-aside .product-categories{list-style:none;margin:0;padding:0;}
.lv-shop-aside .product-categories li.cat-item{margin:0 0 14px;}
.lv-shop-aside .product-categories li.cat-item:last-child{margin-bottom:0;}
.lv-shop-aside .product-categories li.cat-item a{font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:15px;line-height:1.5;letter-spacing:0.04em;color:#000080;text-decoration:none;}
.lv-shop-aside .product-categories li.cat-item a:hover{color:#AA0000;}
.lv-shop-aside .jet-filter-label{font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:13px;line-height:1.5;letter-spacing:0.04em;color:#000080;text-transform:uppercase;margin:0 0 12px;}
.lv-shop-aside .jet-checkboxes-list__row{margin-bottom:10px;}
.lv-shop-aside .jet-checkboxes-list__row:last-child{margin-bottom:0;}
/* the JSF item is a <label>, and the kit styles every label as UI/Label 10
   (Hurme Bold 10, letter-spacing .3em = 3px) - both inherit into the text below.
   Figma 60:565 is Eames Regular 16 / no tracking, so pin weight and spacing. */
.lv-shop-aside .jet-checkboxes-list__item{font-weight:400;letter-spacing:normal;}
.lv-shop-aside .jet-checkboxes-list__button{display:flex;align-items:center;gap:12px;font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;line-height:1.5;letter-spacing:normal;color:#000080;}
.lv-shop-aside .jet-checkboxes-list .jet-checkboxes-list__item .jet-checkboxes-list__decorator{box-sizing:border-box;background:#fff;border:2px solid #000080;border-radius:0;position:relative;}
.lv-shop-aside .jet-checkboxes-list__item .jet-checkboxes-list__input:checked + .jet-checkboxes-list__button .jet-checkboxes-list__decorator{background:#000080 !important;}
.lv-shop-aside .jet-checkboxes-list__checked-icon,.lv-shop-aside .jet-checkboxes-list__checked-icon svg{color:#fff;}
.lv-shop-aside .jet-checkboxes-list__checked-icon svg path{fill:#fff;}


/* ===== C2 - L2 subcategory archive (Figma 73:345) =========================
   Everything here renders from shortcodes in wp-content/novamira-sandbox/
   lv-shop-cats.php, so no Elementor control reaches any of it.
   The 73:345 frame is newer than C1's 60:438 and supersedes it where the two
   disagree - see the C2 notes in BUILD-PLAN.md before 'correcting' anything back. */

/* KATEGOORIAD / FILTRID: Heading/H3 20 on the widget, the 2px rule here because
   the Heading widget has no border control. */
.lv-shop-aside .lv-aside-h .elementor-widget-container{padding-bottom:14px;border-bottom:2px solid #000080;}
.lv-shop-aside .elementor-element-aside-filt-t{margin-top:18px;}

/* the category list (73:452): parent row in UI/Nav 16, children in Body/Base 16
   indented 16px, the current term red. Every colour here is prefixed to three
   classes because the kit's own `.elementor-kit-16 a{color:#AA0000}` is 1 class +
   1 element and beats a bare `.lv-catnav__item` - without it the whole rail comes
   out red (B-42 again). */
.lv-catnav{display:flex;flex-direction:column;}
.lv-shop-aside .lv-catnav .lv-catnav__parent{padding:9px 0;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:16px;line-height:1.5;letter-spacing:0.04em;color:#000080;text-decoration:none;}
.lv-shop-aside .lv-catnav .lv-catnav__item{padding:8px 0 8px 16px;font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;line-height:1.5;letter-spacing:normal;color:#000080;text-decoration:none;}
.lv-shop-aside .lv-catnav .lv-catnav__item--current{color:#AA0000;}
.lv-shop-aside .lv-catnav .lv-catnav__parent:hover,
.lv-shop-aside .lv-catnav .lv-catnav__item:hover{color:#AA0000;}

/* 21 subcategories is too long a rail, so the frame caps the list at 7 and hides
   the rest behind an expander. The button is a <button>, so weight and tracking
   are restated - the kit styles bare labels and buttons as UI/Label 10 (B-42). */
.lv-catnav__item--rest{display:none;}
.lv-catnav--open .lv-catnav__item--rest{display:block;}
.lv-shop-aside .lv-catnav .lv-catnav__more{align-self:flex-start;margin:0;padding:8px 0 8px 16px;background:none;border:0;border-radius:0;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:10px;line-height:1.5;letter-spacing:0.3em;text-transform:uppercase;color:#000080;text-align:left;cursor:pointer;}
.lv-shop-aside .lv-catnav .lv-catnav__more:hover{color:#AA0000;background:none;}

/* SAMAS RUHMAS (73:409) - the shared .lv-chip component, wrapped on a 10px grid.
   Hover matches the aside links (colour only); no animation - site ground rule. */
.lv-chips{display:flex;flex-wrap:wrap;gap:10px;}
.lv-chips .lv-chip:hover{color:#AA0000;border-color:#AA0000;}

/* TUHISTA FILTRID (73:535) - Button/Secondary outlined. JSF's own markup, no
   Elementor style controls. */
.lv-shop-aside .lv-aside-clear{margin-top:20px;}
/* the border goes on the BUTTON only - JSF nests it in a .jet-remove-all-filters
   div, and styling both drew two boxes, the outer one slightly wider. */
.lv-shop-aside .lv-aside-clear .jet-remove-all-filters{display:block;width:100%;}
.lv-shop-aside .lv-aside-clear .jet-remove-all-filters__button{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-height:38px;margin:0;padding:0 26px;background:transparent;border:1px solid #000080;border-radius:0;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:12px;line-height:1.5;letter-spacing:0.3em;text-transform:uppercase;color:#000080;text-align:center;cursor:pointer;}

/* breadcrumb (73:399) - WooCommerce markup, so UI/Label 10 is restated here. */
.lv-bc{font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:10px;line-height:1.5;letter-spacing:0.3em;text-transform:uppercase;color:#000080;}
.lv-bc a{color:#000080;text-decoration:none;}
.lv-bc a:hover{color:#AA0000;}
.lv-bc__sep{margin:0 6px;}

/* STOPGAP until C4 (frame 75:972) is built. The copy itself is the loop grid's
   native _jsf_no_result_text control, not a gettext filter. */
.jet-smart-filters-elementor-loop-no-result{padding:40px 0;font-family:'Eames Century Modern',serif;font-size:18px;line-height:1.5;color:#000080;}


/* ===== C6 - single product buy column (Figma 55:508) ======================
   The size table and material cards are <button>s from lv-product-chooser.php.
   The kit styles bare <button> as the yellow primary button, so EVERY box model
   and type property is restated here at three classes - see B-42. */

/* Woo still owns validation, price and add-to-cart; its selects just do not show —
   BUT ONLY when our chooser covers every one of this product's variation axes.
   `lv-chooser-covers-all` comes from lv_chooser_covers_all() in
   lv-product-chooser.php. Hiding these unconditionally (as this rule did until
   2026-09-10) left 219 of the 225 variable products with no control at all and
   impossible to add to the cart: the chooser only understands `moot` and
   `materjal`, and the store uses 24 different variation attributes. Never hide a
   platform control without proving the replacement rendered. */
body.lv-chooser-covers-all .lv-prod-cart .variations,
body.lv-chooser-covers-all .lv-prod-cart .reset_variations{display:none;}
body.lv-chooser-covers-all .lv-prod-cart .woocommerce-variation-price,
.lv-prod-cart .woocommerce-variation-availability{display:none;}

/* The fallback look. These are Woo's own selects, shown on any product this build
   cannot draw a chooser for. Plain on purpose — they are a safety net, not a
   design — but they should not look broken next to the rest of the column. */
/* form.cart is a flex row, so the table becomes a flex item and refuses to take a
   full line — the same trap the single_variation_wrap rule below solves. */
.lv-prod-buy .lv-prod-cart .variations{display:block;flex:0 0 100%;width:100%;min-width:0;margin:0 0 18px;}
.lv-prod-buy .lv-prod-cart .variations tbody,
.lv-prod-buy .lv-prod-cart .variations tr,
.lv-prod-buy .lv-prod-cart .variations th,
.lv-prod-buy .lv-prod-cart .variations td{display:block;width:100%;padding:0;text-align:left;border:0;}
.lv-prod-buy .lv-prod-cart .variations th label{display:block;margin:0 0 8px;
  font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:10px;line-height:1.5;
  letter-spacing:0.3em;text-transform:uppercase;color:#000080;}
.lv-prod-buy .lv-prod-cart .variations td.value{margin:0 0 16px;}
.lv-prod-buy .lv-prod-cart .variations select{box-sizing:border-box;width:100%;height:54px;
  padding:0 18px;background:#FFFFFF;border:1px solid #000080;border-radius:0;
  font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;line-height:1.5;
  color:#000080;}
.lv-prod-buy .lv-prod-cart .reset_variations{display:inline-block;margin:0 0 14px;
  font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:10px;
  letter-spacing:0.3em;text-transform:uppercase;color:#AA0000;}

.lv-product-price .price,
.lv-product-price .woocommerce-Price-amount{font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:34px;line-height:1.275;letter-spacing:0.06em;color:#000080;}
.lv-product-price del{opacity:.5;font-size:22px;}
.lv-product-price ins{text-decoration:none;}

.lv-chooser{display:flex;flex-direction:column;gap:8px;width:100%;}

/* Added 2026-09-10 with the generic chooser. One group per variation axis, its
   label taken from the attribute itself, replacing the two fixed VALI MOOT /
   VALI MATERJAL headings that used to sit in template 5882. */
.lv-chooser-group{width:100%;margin:0 0 30px;}
.lv-chooser-group:last-child{margin-bottom:34px;}
.lv-chooser__label{margin:0 0 10px;font-family:'Hurme Geometric Sans 1',sans-serif;
  font-weight:700;font-size:10px;line-height:1.5;letter-spacing:0.3em;
  text-transform:uppercase;color:#000080;}
.lv-chooser__note{margin:0 0 14px;font-family:'Eames Century Modern',serif;font-weight:400;
  font-size:16px;line-height:1.5;color:rgba(0,0,128,0.75);}

/* The default look, for the 20-odd axes that are neither a mast size nor a
   material: just the value, with the price when the axis moves it. */
.lv-prod-buy .lv-chooser .lv-plain{align-items:center;gap:12px;min-height:54px;padding:12px 18px;}
.lv-plain__name{flex:1 0 0;min-width:0;font-family:'Hurme Geometric Sans 1',sans-serif;
  font-weight:700;font-size:15px;line-height:1.5;letter-spacing:0.04em;color:#000080;}

/* Price is now on every kind of option, not only the size row. */
.lv-opt__price{flex:0 0 90px;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;
  font-size:15px;line-height:1.5;letter-spacing:0.04em;color:#000080;text-align:right;}
.lv-opt__price .woocommerce-Price-amount{font:inherit;color:inherit;letter-spacing:inherit;}
.lv-material .lv-opt__price{flex:none;text-align:left;}

.lv-prod-buy .lv-chooser .lv-opt{box-sizing:border-box;display:flex;width:100%;margin:0;background:#FFFFFF;border:1px solid #000080;border-radius:0;text-align:left;cursor:pointer;}
.lv-prod-buy .lv-chooser .lv-opt.is-selected{background:#FFF0D7;border-width:2px;}
.lv-prod-buy .lv-chooser .lv-opt.is-unavailable{opacity:.35;cursor:not-allowed;}

/* size row (55:525): dimensions, mast height, price */
.lv-prod-buy .lv-chooser .lv-size{align-items:center;gap:12px;height:54px;padding:0 18px;}
.lv-size__dim{flex:0 0 150px;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:15px;line-height:1.5;letter-spacing:0.04em;color:#000080;}
.lv-size__mast{flex:1 0 0;min-width:0;font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;line-height:1.5;letter-spacing:normal;color:rgba(0,0,128,0.7);}
.lv-size__price{flex:0 0 90px;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:15px;line-height:1.5;letter-spacing:0.04em;color:#000080;text-align:right;}
.lv-size__price .woocommerce-Price-amount{font:inherit;color:inherit;letter-spacing:inherit;}

/* material card (55:559): name over rationale */
.lv-prod-buy .lv-chooser .lv-material{flex-direction:column;align-items:flex-start;gap:4px;padding:14px 18px;}
.lv-material__name{font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:15px;line-height:1.5;letter-spacing:0.04em;color:#000080;}
.lv-material__note{font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;line-height:1.5;letter-spacing:normal;color:rgba(0,0,128,0.7);}

/* buy row (55:569): 150px stepper + yellow button, both 56 tall.
   woocommerce.css ships `.woocommerce:where(...) button.alt{background:#7f54b3}` -
   :where() is specificity-zero, so that lands at the SAME weight as a two-class
   rule here and wins on load order. Everything below is prefixed with the buy
   column to outrank it. */
/* flex-wrap matters once the native .variations table is visible (the fallback
   path added 2026-09-10): the table and the qty+button row are both full-width
   flex items, and without wrapping the second one is pushed off the column. */
.lv-prod-buy .lv-prod-cart form.cart,
.lv-prod-buy .lv-prod-cart .woocommerce-variation-add-to-cart{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin:0;}
.lv-prod-buy .lv-prod-cart .quantity{display:flex;box-sizing:border-box;flex:0 0 150px;height:56px;margin:0;border:2px solid #000080;}
.lv-prod-buy .lv-prod-cart .quantity .lv-qty-btn{flex:0 0 46px;display:flex;align-items:center;justify-content:center;padding:0;margin:0;background:none;border:0;border-radius:0;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:17px;line-height:1.5;letter-spacing:0.04em;color:#000080;cursor:pointer;}
.lv-prod-buy .lv-prod-cart .quantity input.qty{flex:1 0 0;min-width:0;height:100%;box-sizing:border-box;padding:0;margin:0;background:none;border:0;border-radius:0;text-align:center;-moz-appearance:textfield;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:17px;line-height:1.5;letter-spacing:0.04em;color:#000080;}
.lv-prod-cart .quantity input.qty::-webkit-outer-spin-button,
.lv-prod-cart .quantity input.qty::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.lv-prod-cart .quantity label{display:none;}

.lv-prod-buy .lv-prod-cart button.single_add_to_cart_button{box-sizing:border-box;flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;height:56px;padding:0 26px;margin:0;background-color:#FFC900;border:0;border-radius:0;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:13px;line-height:1.5;letter-spacing:0.3em;text-transform:uppercase;color:#000080;cursor:pointer;}
/* S5 (Figma 81:697) - disabled add-to-cart: grey #C1C1C1 fill, white ink, 60%.
   CHANGED WITH CSS - the widget has no disabled-state control (BUILD-PLAN "Changed with CSS").
   Colours are set here, not left to opacity, because WooCommerce paints a disabled
   button.alt purple at the same specificity. :hover is covered so the widget's native
   hover colours (Style > Button > Hover) do not light a disabled button up. */
.lv-prod-buy .lv-prod-cart form.cart button.single_add_to_cart_button.disabled,
.lv-prod-buy .lv-prod-cart form.cart button.single_add_to_cart_button.disabled:hover{background-color:#C1C1C1;color:#FFFFFF;opacity:.6;cursor:not-allowed;}


/* gallery (55:507) - Woo's own markup, square like the frame's 700x700 */
.lv-prod-gallery .woocommerce-product-gallery{width:100%;margin:0;}
.lv-prod-gallery .woocommerce-product-gallery__image img{width:100%;height:auto;display:block;}

/* the zoom plugin paints an oversized absolutely-positioned image on hover;
   without this it widens the document on narrow screens. */
.lv-prod-gallery .woocommerce-product-gallery__wrapper,
.lv-prod-gallery .woocommerce-product-gallery__image{overflow:hidden;}
.lv-prod-gallery img.zoomImg{max-width:none;}

@media(max-width:767px){
  .lv-prod-buy .lv-prod-cart form.cart,
  .lv-prod-buy .lv-prod-cart .woocommerce-variation-add-to-cart{flex-wrap:wrap;}
  .lv-prod-buy .lv-prod-cart button.single_add_to_cart_button{flex:1 0 100%;padding:0 12px;letter-spacing:0.18em;}
  .lv-prod-buy .lv-chooser .lv-size{height:auto;padding:12px 14px;flex-wrap:wrap;}
  .lv-size__dim{flex:0 0 auto;}
  .lv-size__mast{flex:1 0 100%;order:3;}
  .lv-size__price{flex:1 0 auto;}
}

/* Woo nests the qty+button row inside .single_variation_wrap, which becomes a flex
   ITEM of form.cart and so inherits min-width:auto - it refuses to shrink below the
   row's content width and pushes the button off narrow screens. */
.lv-prod-buy .lv-prod-cart .single_variation_wrap{flex:1 0 100%;width:100%;min-width:0;}
@media(max-width:767px){
  .lv-prod-buy .lv-prod-cart .woocommerce-variation-add-to-cart{flex-wrap:wrap;row-gap:12px;}
  .lv-prod-buy .lv-prod-cart button.single_add_to_cart_button{flex:1 0 100%;}
}

/* C6 mobile buy row: below 768 the row stops being a flex row, because a block
   cannot overflow its parent.
   !important is deliberate here, and it is the ONLY place in this file that needs it.
   Elementor Pro's widget stylesheet sets display:flex through
   `:is(.elementor-widget-woocommerce-product-add-to-cart, .woocommerce div.product
   .elementor-widget-...)` - and :is() takes the specificity of its MOST specific
   argument, so that .elementor-kit-16 outweighs a four-class rule here by a margin that is
   not worth guessing at. (Its sibling `:where()` does the opposite: zero. Both are
   in play on this one widget - see the add-to-cart background note above.) */
@media(max-width:767px){
  .lv-prod-buy .lv-prod-cart .single_variation_wrap .woocommerce-variation-add-to-cart{display:block !important;}
  /* a SIMPLE product has no variation wrapper - the qty and button sit straight
     inside form.cart, so that needs the same treatment (C7). */
  .lv-prod-buy .lv-prod-cart form.cart{display:block !important;}
  .lv-prod-buy .lv-prod-cart .quantity{width:150px;flex-basis:auto;margin:0 0 12px;}
  .lv-prod-buy .lv-prod-cart button.single_add_to_cart_button{display:flex;width:100%;flex-basis:auto;}
}

/* the zoom plugin's oversized image is position:absolute, and its parent is static -
   so it escapes that parent's overflow:hidden and widens the page. */
.lv-prod-gallery .woocommerce-product-gallery__image{position:relative;}

/* ===== C7 - simple product (Figma 74:553) =================================
   Same template 5882 as C6. The body carries .lv-is-simple / .lv-is-variable
   (added in lv-product-chooser.php) so the few genuinely type-specific styles do
   not need a second template. */

/* 74:629 gives a single price Heading/Hero 60; a range (55:512) stays at 34. */
body.lv-is-simple .lv-product-price .price,
body.lv-is-simple .lv-product-price .woocommerce-Price-amount{font-size:60px;line-height:1.1;letter-spacing:0.03em;}
@media(max-width:767px){
  body.lv-is-simple .lv-product-price .price,
  body.lv-is-simple .lv-product-price .woocommerce-Price-amount{font-size:40px;}
}

.lv-price-note{margin:0;font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;line-height:1.5;letter-spacing:normal;color:#000080;}
.lv-shortdesc,.lv-shortdesc p{font-family:'Eames Century Modern',serif;font-weight:400;font-size:18px;line-height:1.5;letter-spacing:normal;color:#000080;}
.lv-shortdesc p:last-child{margin-bottom:0;}

/* stock chip (74:624) - cream, not the outlined .lv-chip used for categories */
.lv-chips--stock{gap:12px;}
.lv-stock-chip{display:inline-flex;align-items:center;padding:6px 14px;background:#FFF0D7;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:10px;line-height:1.5;letter-spacing:0.3em;text-transform:uppercase;color:#000080;}
.lv-stock-chip--outofstock{background:#F2DADA;color:#AA0000;}

/* spec table (74:651) - label left, value right, hairline above */
.lv-specs{margin:30px 0 0;padding:20px 0 0;border-top:1px solid #C1C1C1;}
.lv-specs__row{display:flex;align-items:baseline;justify-content:space-between;gap:24px;padding:8px 0;}
.lv-specs dt{flex:0 0 auto;margin:0;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:10px;line-height:1.5;letter-spacing:0.3em;text-transform:uppercase;color:#000080;}
.lv-specs dd{flex:0 1 auto;margin:0;font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;line-height:1.5;letter-spacing:normal;color:#000080;text-align:right;}
.lv-specs dd a{color:#000080;text-decoration:none;}
.lv-specs dd a:hover{color:#AA0000;}

/* ===== C9 - product tabs (Figma 56:495) ===================================
   Kirjeldus / Tehniline info / KKK, rendered by [lv_product_tabs]. The frame
   shows all three panels open for review; live, only the active one is not
   [hidden]. A tab exists only when its panel has content, so a product with no
   attributes and no KKK simply gets Kirjeldus. */

.lv-tabs__bar{display:flex;flex-wrap:wrap;}
/* the kit styles bare `button`, so a single class would lose to it (B-42) */
.lv-tabs .lv-tabs__bar .lv-tab{display:flex;flex-direction:column;align-items:flex-start;gap:12px;
  margin:0;padding:0 44px 0 0;background:none;border:0;border-radius:0;box-shadow:none;
  cursor:pointer;transition:none;}
.lv-tabs .lv-tabs__bar .lv-tab__text{font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;
  font-size:16px;line-height:1.5;letter-spacing:0.04em;color:rgba(0,0,128,0.55);white-space:nowrap;}
.lv-tabs .lv-tabs__bar .lv-tab:hover .lv-tab__text,
.lv-tabs .lv-tabs__bar .lv-tab.is-active .lv-tab__text{color:#000080;}
/* width:100% of the button's CONTENT box - the 44px sits in padding, so the
   underline is exactly as wide as the label, as drawn (56:499). */
.lv-tabs .lv-tabs__bar .lv-tab__underline{display:block;width:100%;height:3px;background:transparent;}
.lv-tabs .lv-tabs__bar .lv-tab.is-active .lv-tab__underline{background:#000080;}
.lv-tabs .lv-tabs__bar .lv-tab:focus-visible{outline:2px solid #AA0000;outline-offset:4px;}

.lv-tabs__panels{margin-top:40px;}
.lv-tabs .lv-tabs__panel[hidden]{display:none;}

/* Kirjeldus - the product's own long description (56:507) */
.lv-tab__prose{max-width:820px;}
.lv-tab__prose p{margin:0 0 20px;font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;
  line-height:1.5;letter-spacing:normal;color:#000080;}
.lv-tab__prose p:last-child{margin-bottom:0;}

/* section labels inside a panel - UI/Label 10 (56:511, 56:546, 56:552) */
.lv-spec-title{margin:0 0 16px;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;
  font-size:10px;line-height:1.5;letter-spacing:0.3em;text-transform:uppercase;color:#000080;}
.lv-spec-title--mat{margin-top:26px;}

/* mast/flag table (56:513-56:544) */
.lv-tabs .lv-spectable{width:100%;max-width:620px;border-collapse:collapse;table-layout:fixed;}
.lv-tabs .lv-spectable th,
.lv-tabs .lv-spectable td{padding:12px 16px;border:0;border-bottom:1px solid rgba(0,0,128,0.25);
  text-align:left;vertical-align:top;}
.lv-tabs .lv-spectable thead th{background:#FFF0D7;}
.lv-tabs .lv-spectable th:first-child{width:260px;font-family:'Hurme Geometric Sans 1',sans-serif;
  font-weight:700;font-size:14px;line-height:1.5;letter-spacing:0.04em;color:#000080;}
.lv-tabs .lv-spectable th + th,
.lv-tabs .lv-spectable td{font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;
  line-height:1.5;letter-spacing:normal;color:#000080;}

/* materials (56:548-56:550) */
.lv-tabs .lv-matlist{max-width:620px;margin:0;padding:0;list-style:none;}
.lv-tabs .lv-matlist li{margin:0;padding:0 0 4px;font-family:'Eames Century Modern',serif;
  font-weight:400;font-size:16px;line-height:1.5;letter-spacing:normal;color:#000080;}
.lv-matlist__note{color:rgba(0,0,128,0.8);}

/* KKK (56:551) - a plain list, as drawn; no accordion in the frame */
.lv-faq{max-width:620px;}
.lv-faq__item{padding:16px 0;border-bottom:1px solid rgba(0,0,128,0.25);}
.lv-tabs .lv-faq__q{margin:0 0 8px;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;
  font-size:15px;line-height:1.5;letter-spacing:0.04em;text-transform:none;color:#000080;}
.lv-tabs .lv-faq__a p{margin:0 0 8px;font-family:'Eames Century Modern',serif;font-weight:400;
  font-size:16px;line-height:1.5;letter-spacing:normal;color:rgba(0,0,128,0.8);}
.lv-tabs .lv-faq__a p:last-child{margin-bottom:0;}

/* 55:554 - the link from the size chooser into the Tehniline info tab */
.lv-prod-buy .lv-tablelink{display:inline-block;font-family:'Eames Century Modern',serif;
  font-weight:400;font-size:16px;line-height:1.5;letter-spacing:normal;color:#AA0000;
  text-decoration:underline;text-underline-offset:3px;}
.lv-prod-buy .lv-tablelink:hover{color:#000080;}

@media(max-width:767px){
  .lv-tabs__bar{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;}
  .lv-tabs .lv-tabs__bar .lv-tab{padding-right:28px;}
  .lv-tabs__panels{margin-top:28px;}
  .lv-tabs .lv-spectable th,
  .lv-tabs .lv-spectable td{padding:10px 12px;}
  .lv-tabs .lv-spectable th:first-child{width:110px;font-size:13px;}
}


/* ===== Compact category strip (Figma 55:493) ==============================
   The single product's variant of the archive's tile strip - the same Figma
   component, "Property 1=Category (compact)": 79px, text only, the current
   category's cell white. Rendered by [lv_cat_strip] in lv-cat-strip.php.

   The band is NAVY, not the frame's cream (owner, 2026-09-09): the header is
   cream too, so a cream strip under it read as one shapeless block. White stays
   the active fill, as the component intends - it now also ties the active cell
   to the white page below it. */

.lv-catstrip{display:grid;grid-template-columns:repeat(6,1fr);width:100%;background:#000080;}
/* the kit styles bare `a`, so one class would lose to it (B-42) */
.lv-catstrip .lv-catstrip__item{display:flex;align-items:center;justify-content:center;
  min-height:79px;padding:12px 18px;background:#000080;text-align:center;text-decoration:none;
  font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:13px;line-height:1.4;
  letter-spacing:0.3em;text-transform:uppercase;color:#FFFFFF;}
.lv-catstrip .lv-catstrip__item.is-active{background:#FFFFFF;color:#000080;}
.lv-catstrip .lv-catstrip__item:hover{color:#FFC900;}
.lv-catstrip .lv-catstrip__item.is-active:hover{color:#000080;}

/* The frame sets the labels `whitespace-nowrap` inside 240px cells, which clips
   KINGIPOOD JA DISAINSARJAD in its own render. They wrap here instead. */
@media(max-width:1024px){
  .lv-catstrip{grid-template-columns:repeat(3,1fr);}
  .lv-catstrip .lv-catstrip__item{min-height:66px;font-size:12px;letter-spacing:0.24em;padding:12px;}
}
@media(max-width:767px){
  .lv-catstrip{grid-template-columns:repeat(2,1fr);}
  .lv-catstrip .lv-catstrip__item{min-height:58px;font-size:11px;letter-spacing:0.2em;padding:10px;}
}


/* ===== C10 - related categories + upsells (Figma 56:575 / 56:620) =========
   The two sections that close the product page. Both render nothing - and their
   container disappears - when the product has no data for them. */

/* 56:575 - chips for the other categories in this branch. Cream band; the
   branch you are in is navy, the rest white. */
.lv-relcats__title{margin-bottom:38px;}
.lv-relcats__row{display:flex;flex-wrap:wrap;gap:10px;}
/* the kit styles bare `a`, so one class would lose to it (B-42) */
.lv-relcats .lv-relchip{display:inline-flex;align-items:center;justify-content:center;
  min-height:40px;padding:8px 18px;background:#FFFFFF;text-decoration:none;
  font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:14px;line-height:1.5;
  letter-spacing:0.04em;color:#000080;}
.lv-relcats .lv-relchip.is-current{background:#000080;color:#FFFFFF;}
.lv-relcats .lv-relchip:hover{background:#000080;color:#FFFFFF;}

/* 56:620 - upsells. Four across the content column rather than the frame's
   932px inset block, so the row lines up with every other section on the page
   and the cards match the archive grid's width. */
.lv-upsells__title{margin:0 0 40px;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;
  font-size:30px;line-height:1.275;letter-spacing:0.06em;color:#000080;}
.lv-upsells__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:40px 30px;}
.lv-upsells .lv-upsell{display:flex;flex-direction:column;align-items:center;text-align:center;
  text-decoration:none;color:#000080;}
.lv-upsell__thumb{display:block;width:100%;aspect-ratio:1/1;overflow:hidden;}
.lv-upsell__thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.lv-upsell__title{display:block;margin-top:15px;font-family:'Eames Century Modern',serif;
  font-weight:400;font-size:20px;line-height:1.275;letter-spacing:normal;color:#000080;}
.lv-upsells .lv-upsell:hover .lv-upsell__title{color:#AA0000;}
.lv-upsell__price{display:block;margin-top:9px;font-family:'Hurme Geometric Sans 1',sans-serif;
  font-weight:700;font-size:10px;line-height:1.5;letter-spacing:0.3em;color:#000080;}
.lv-upsell__price del{opacity:0.55;}
.lv-upsell__price ins{text-decoration:none;}
/* Woo appends a screen-reader price range after the visible one */
.lv-upsell__price .screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;}
.lv-upsell__btn{display:inline-flex;align-items:center;justify-content:center;
  margin-top:auto;width:120px;height:40px;background:#FFC900;
  font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:13px;line-height:1.5;
  letter-spacing:0.3em;text-transform:uppercase;color:#000080;}
.lv-upsell__price + .lv-upsell__btn,
.lv-upsell__title + .lv-upsell__btn{margin-top:20px;}

@media(max-width:1024px){
  .lv-upsells__grid{grid-template-columns:repeat(3,1fr);}
  .lv-upsells__title{font-size:26px;}
}
@media(max-width:767px){
  .lv-upsells__grid{grid-template-columns:repeat(2,1fr);gap:30px 20px;}
  .lv-upsells__title{font-size:22px;margin-bottom:28px;}
  .lv-upsell__title{font-size:16px;margin-top:12px;}
  .lv-relcats__title{margin-bottom:24px;}
  .lv-relcats .lv-relchip{font-size:12px;padding:7px 14px;min-height:34px;}
}


/* ===== C8 - quote-only product (Figma 75:679) =============================
   84 published products carry no price and cannot be bought. They are a third
   mode next to simple and variable (body.lv-is-quote): no price line, a
   made-to-order chip, and the enquiry form on the page instead of a link away
   from it. Logic in lv-product-quote.php. */

/* 75:763 - Heading/H2 30, where the price widget would have been */
.lv-quote-price{font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:30px;
  line-height:1.275;letter-spacing:0.06em;color:#000080;}
.lv-stock-chip--quote{background:#FFF0D7;color:#000080;}

/* 75:767 - the form panel. The kit already styles a bare `label` as UI/Label 10
   uppercase (B-42), which is exactly what 52:21 asks for, so the labels need
   nothing here. The fields do: kit Form Field styling outranks a component class
   (B-17), so every rule below carries three. */
.lv-quote-form .lv-quote-form__t{margin-bottom:22px;}
.lv-quote-form .elementor-field-group{margin-bottom:20px;}
.lv-quote-form .elementor-field-group > label{margin-bottom:10px;}
.lv-quote-form .elementor-field-group .elementor-field-textual{background:#FFFFFF;border:2px solid #000080;
  border-radius:0;box-shadow:none;min-height:56px;padding:10px 18px;
  font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;line-height:1.5;
  letter-spacing:normal;color:#000080;}
.lv-quote-form .elementor-field-group .elementor-field-textual::placeholder{color:rgba(0,0,128,0.5);opacity:1;}
.lv-quote-form .elementor-field-group textarea.elementor-field-textual{min-height:110px;}
/* focus: the kit's native Form Fields focus (3px red border) - the old extra outline here drew a double ring (S5, 2026-09-28). */

/* 75:808 - the frame draws a dashed drop zone. A native file input cannot be a
   drop zone, so the input itself wears the dashed box. */
.lv-quote-form .elementor-field-group.elementor-field-type-upload input[type=file]{width:100%;
  padding:24px 20px;background:#FFFFFF;border:2px dashed #000080;
  font-family:'Eames Century Modern',serif;font-size:15px;color:#000080;cursor:pointer;}

.lv-qf-hint{margin:0 0 4px;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:10px;
  line-height:1.5;letter-spacing:0.3em;color:#000080;}
.lv-qf-rule{margin:24px 0 0;border:0;border-top:1px solid #000080;}

/* 75:842 - consent row */
/* wrap: the S5 consent error drops to its own line below the checkbox (2026-09-28) */
.lv-quote-form .elementor-field-type-acceptance .elementor-field-option{display:flex;flex-wrap:wrap;align-items:flex-start;gap:0 12px;}
.lv-quote-form .elementor-field-type-acceptance input[type=checkbox]{width:18px;height:18px;margin:2px 0 0;
  accent-color:#000080;flex:0 0 auto;}
.lv-quote-form .elementor-field-type-acceptance label{margin:0;text-transform:none;
  font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:14px;line-height:1.5;
  letter-spacing:0.04em;color:#000080;}
.lv-quote-form .elementor-field-type-acceptance label a{color:#AA0000;}

/* 75:846 - SAADA PARING. No hover animation, per the standing rule. */
.lv-quote-form .elementor-field-type-submit button[type=submit]{width:100%;min-height:40px;
  background:#FFC900;border:0;border-radius:0;color:#000080;
  font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:13px;line-height:1.5;
  letter-spacing:0.3em;text-transform:uppercase;transition:none;}
.lv-quote-form .elementor-field-type-submit button[type=submit]:hover{background:#FFC900;color:#000080;}

/* C8 messages: moved to the shared S5 form-states block at the end of this file (2026-09-28). */

@media(max-width:767px){
  .lv-quote-price{font-size:24px;}
  .lv-quote-form .elementor-field-group{margin-bottom:16px;}
}


/* ===== C4 - archive state: no results (Figma 75:972) ======================
   Rendered by [lv_no_results] inside JetSmartFilters' _jsf_no_result_text - the
   only part of the page JSF re-renders when a filter empties the grid. Its
   output passes through wp_kses_post(), so the markup is plain tags only and
   both buttons are links. Logic in lv-archive-states.php. */

.jet-smart-filters-elementor-loop-no-result{grid-column:1/-1;width:100%;}

/* 75:975 - the panel */
.lv-nores{padding:60px 40px;background:#FFF0D7;}
.lv-nores__h{margin:0 0 16px;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;
  font-size:30px;line-height:1.275;letter-spacing:0.06em;text-transform:uppercase;color:#000080;}
.lv-nores__p{margin:0 0 24px;font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;
  line-height:1.5;letter-spacing:normal;color:#000080;max-width:900px;}
.lv-nores__row{display:flex;flex-wrap:wrap;gap:14px;}
/* the kit styles bare `a`, so one class would lose to it (B-42) */
.lv-nores .lv-nores__btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;
  padding:8px 26px;text-decoration:none;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;
  font-size:13px;line-height:1.5;letter-spacing:0.3em;text-transform:uppercase;color:#000080;
  transition:none;}
.lv-nores .lv-nores__btn--primary{background:#FFC900;}
.lv-nores .lv-nores__btn--secondary{background:transparent;border:1px solid #000080;font-size:12px;}

/* 75:986 - four real products, so an empty result is never a dead end */
.lv-suggs{margin-top:30px;}
.lv-suggs__h{margin:0 0 16px;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;
  font-size:20px;line-height:1.275;letter-spacing:0.06em;text-transform:uppercase;color:#000080;}
.lv-suggs__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:40px 20px;}
.lv-suggs .lv-sugg{display:flex;flex-direction:column;align-items:center;text-align:center;
  text-decoration:none;color:#000080;}
.lv-sugg__thumb{display:block;width:100%;aspect-ratio:1/1;overflow:hidden;}
.lv-sugg__thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.lv-sugg__title{display:block;margin-top:15px;font-family:'Eames Century Modern',serif;font-weight:400;
  font-size:20px;line-height:1.275;letter-spacing:normal;color:#000080;}
.lv-suggs .lv-sugg:hover .lv-sugg__title{color:#AA0000;}
.lv-sugg__price{display:block;margin-top:9px;font-family:'Hurme Geometric Sans 1',sans-serif;
  font-weight:700;font-size:10px;line-height:1.5;letter-spacing:0.3em;color:#000080;}
.lv-sugg__price del{opacity:0.55;}
.lv-sugg__price ins{text-decoration:none;}
.lv-sugg__price .screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;
  clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;}
.lv-sugg__btn{display:inline-flex;align-items:center;justify-content:center;margin-top:20px;
  min-width:120px;min-height:40px;padding:8px 18px;background:#FFC900;
  font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:13px;line-height:1.5;
  letter-spacing:0.3em;text-transform:uppercase;color:#000080;}

@media(max-width:1024px){
  .lv-suggs__grid{grid-template-columns:repeat(3,1fr);}
  .lv-nores{padding:44px 30px;}
  .lv-nores__h{font-size:26px;}
}
@media(max-width:767px){
  .lv-suggs__grid{grid-template-columns:repeat(2,1fr);gap:30px 16px;}
  .lv-nores{padding:32px 20px;}
  .lv-nores__h{font-size:22px;}
  .lv-nores .lv-nores__btn{width:100%;}
  .lv-sugg__title{font-size:16px;margin-top:12px;}
}


/* ===== C5 - archive state: active filters (Figma 75:1027) =================
   JetSmartFilters' own "Active Tags" widget, which the frame's note names
   outright. It hides ITSELF when nothing is active - JSF puts `hide-widget` on
   the Elementor wrapper - so the rule and the label vanish with it and no empty
   band is left between the toolbar and the grid. */

.lv-active-tags{border-top:2px solid #000080;padding-top:22px;}
.lv-active-tags .jet-active-tags__list{display:flex;flex-wrap:wrap;align-items:center;gap:10px;}
.lv-active-tags .jet-active-tags__title{flex:0 0 100%;margin:0 0 2px;
  font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:10px;line-height:1.5;
  letter-spacing:0.3em;text-transform:uppercase;color:#000080;}

/* 75:1045 - the whole chip is the remove control, so it gets a pointer and a
   hover colour. No transition, per the standing no-hover-animation rule. */
.lv-active-tags .jet-active-tag{display:inline-flex;align-items:center;gap:8px;border:1px solid #000080;
  background:#000080;color:#FFFFFF;cursor:pointer;transition:none;
  font-family:'Eames Century Modern',serif;font-weight:400;font-size:16px;line-height:1.5;
  letter-spacing:normal;}
.lv-active-tags .jet-active-tag:hover{background:#AA0000;}
/* The remove glyph's size and its top/right offset, and the chip padding that
   makes room for it, are set on the WIDGET's own controls (tag_remove_size,
   tag_remove_offset_top/right, tag_padding) - Elementor emits those at four
   classes and they beat anything written here (B-37). JSF's default is 12px
   pinned to top:0/right:0, which lands it in the corner, tiny and lopsided
   (owner, 2026-09-09). Same for tags_space_between_*, zeroed so the list's own
   `gap` is the only spacing. */

/* 75:1053 - JSF renders "clear" FIRST; the frame puts it last. */
.lv-active-tags .jet-active-tag--clear{order:99;background:transparent;border-color:#AA0000;color:#AA0000;}
.lv-active-tags .jet-active-tag--clear:hover{background:#AA0000;color:#FFFFFF;}

@media(max-width:767px){
  .lv-active-tags{padding-top:16px;}
  .lv-active-tags .jet-active-tag{font-size:14px;gap:6px;}
}


/* ===== C3 - archive state: loading (Figma 75:894) =========================
   "Vore hagustub ja hiireklikid on blokeeritud. Skeleton hoiab lehe korguse
   paigal." JSF already blocks the clicks and dims to .6; the blur, the height
   pin and the skeleton are here. State lives on <body> because JSF replaces the
   loop container node mid-request - see lv-archive-states.php. */

.lv-pgrid .elementor-loop-container{transition:filter .12s linear;}
body.lv-grid-loading .lv-pgrid .elementor-loop-container{filter:blur(3px);}

/* nothing on screen to blur - the skeleton stands in instead */
body.lv-grid-skeleton .lv-pgrid .elementor-loop-container{display:none;}
.lv-skel{display:none;}
body.lv-grid-skeleton .lv-skel{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;}

/* 75:898 - white card, C1 hairline, 16/16/28 padding */
.lv-skel__card{padding:16px 16px 28px;background:#FFFFFF;border:1px solid #C1C1C1;}
.lv-skel__b{background:#C1C1C1;opacity:0.35;}
.lv-skel__b--img{aspect-ratio:1/1;margin-bottom:16px;}
.lv-skel__b--l1{height:18px;margin-bottom:10px;}
.lv-skel__b--l2{height:18px;width:60%;margin-bottom:10px;}
.lv-skel__b--btn{height:30px;width:40%;}

/* the frame draws a static skeleton; a still one reads as broken content, so the
   bars breathe - and stop dead for anyone who asked for less motion. */
@keyframes lv-skel-pulse{0%,100%{opacity:0.35;}50%{opacity:0.18;}}
.lv-skel__b{animation:lv-skel-pulse 1.4s ease-in-out infinite;}
@media(prefers-reduced-motion:reduce){
  .lv-skel__b{animation:none;}
  .lv-pgrid .elementor-loop-container{transition:none;}
}

@media(max-width:1024px){
  body.lv-grid-skeleton .lv-skel{grid-template-columns:repeat(3,1fr);}
}
@media(max-width:767px){
  body.lv-grid-skeleton .lv-skel{grid-template-columns:repeat(2,1fr);gap:16px;}
  .lv-skel__card{padding:12px 12px 20px;}
}


/* F5.10 Search bar - Figma 80:1253 (404) / 80:921 (search results) / 81:774 (mobile).
   [lv_search_bar] in lv-system.php. The field is the kit's own boxed input
   (2px navy, red focus); the frame puts its text 20 in from the edge, which
   with a 2px stroke inside is 18 of padding. OTSI is the kit button, pulled
   to the field's full height. Stacks on a phone: field 54, 12, button 40. */
.elementor-kit-16 .lv-sbar {
	display: flex;
	align-items: stretch;
	width: 100%;
	margin: 0;
}

.elementor-kit-16 .lv-sbar input.lv-sbar__input {
	flex: 1 1 auto;
	min-width: 0;
	box-sizing: border-box;
	height: 56px;
	margin: 0;
	padding: 14px 18px;
	border-radius: 0;
	background: #FFFFFF;
	color: #000080;
	font-family: "Eames Century Modern", Georgia, serif;
	font-size: 16px;
	line-height: 24px;
	box-shadow: none;
	-webkit-appearance: none;
	appearance: none;
}

.elementor-kit-16 .lv-sbar input.lv-sbar__input::placeholder {
	color: #333333;
	opacity: 1;
}

.elementor-kit-16 .lv-sbar input.lv-sbar__input::-webkit-search-cancel-button {
	-webkit-appearance: none;
}

.elementor-kit-16 .lv-sbar button.lv-sbar__submit,
.elementor-kit-16 .lv-sbar button.lv-sbar__submit:hover,
.elementor-kit-16 .lv-sbar button.lv-sbar__submit:focus,
.elementor-kit-16 .lv-sbar button.lv-sbar__submit:active {
	flex: 0 0 auto;
	margin: 0;
	padding: 0 26px;
	border: 0;
	border-radius: 0;
	background: #FFC900;
	color: #000080;
	text-transform: uppercase;
	box-shadow: none;
}

.elementor-kit-16 .lv-sbar button.lv-sbar__submit:focus-visible {
	outline: 2px solid #000080;
	outline-offset: 3px;
}

@media (max-width: 767px) {
	.elementor-kit-16 .lv-sbar {
		flex-direction: column;
		gap: 12px;
	}

	.elementor-kit-16 .lv-sbar input.lv-sbar__input {
		flex: 0 0 auto;
		height: 54px;
		padding: 13px 16px;
	}

	.elementor-kit-16 .lv-sbar button.lv-sbar__submit,
	.elementor-kit-16 .lv-sbar button.lv-sbar__submit:hover,
	.elementor-kit-16 .lv-sbar button.lv-sbar__submit:focus,
	.elementor-kit-16 .lv-sbar button.lv-sbar__submit:active {
		height: 40px;
	}
}


/* F5.11 Category chips - Figma 80:1144 (desktop) / 98:2499 (mobile).
   [lv_cat_chips] in lv-system.php. A 1px navy outline round a serif label
   and its count, 10 apart, wrapping. The frame's 9/16 is measured from the
   chip's edge with the stroke inside it, so the padding here is 8/15 (B-66):
   42 tall, text 16 in. No hover change, as with every other button. */
.elementor-kit-16 .lv-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.elementor-kit-16 .lv-chips > li {
	margin: 0;
	padding: 0;
}

.elementor-kit-16 a.lv-chip,
.elementor-kit-16 a.lv-chip:visited,
.elementor-kit-16 a.lv-chip:hover,
.elementor-kit-16 a.lv-chip:focus,
.elementor-kit-16 a.lv-chip:active {
	display: inline-block;
	padding: 8px 15px;
	border: 1px solid #000080;
	border-radius: 0;
	background: transparent;
	color: #000080;
	font-family: "Eames Century Modern", Georgia, serif;
	font-size: 16px;
	font-weight: 400;
	line-height: 24px;
	letter-spacing: 0;
	text-transform: none;
	text-decoration: none;
	box-shadow: none;
}
/* ===== S5 - WooCommerce notices (Figma 81:659, #222) =====================
   CHANGED WITH CSS, but only the anatomy - see BUILD-PLAN "Changed with CSS".
   Colours, fonts, the link and the button are NATIVE: Site Settings >
   WooCommerce > Notices (error / message / info). What no control can do is
   here: the box padding and the 4px accent bar INSET 26 from the left, text at
   48. The bar is WooCommerce's icon pseudo-element, and it takes its colour
   from each type's native "Icon Color" control (navy success + info, red error).
   Scoped to the Notices widget (product template 5882, prod-notices), so the
   account template's own notice rules are not touched. border:0 is here and
   NOT in the native Border control: that control also reaches the cart and
   checkout block notices and would strip their left bar. */
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-message,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-info,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-error{position:relative;box-sizing:border-box;width:auto;margin:20px 0 0;padding:20px 26px 20px 48px;border:0;list-style:none;outline:0;}
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-message::before,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-info::before,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-error::before{content:"";position:absolute;left:26px;top:20px;bottom:20px;width:4px;height:auto;margin:0;padding:0;font-size:0;border-radius:0;}
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-message::before{background:var(--message-message-icon-color,#000080);}
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-info::before{background:var(--info-message-icon-color,#000080);}
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-error::before{background:var(--error-message-icon-color,#AA0000);}
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-error li{margin:0;padding:0;list-style:none;}
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-error li + li{margin-top:8px;}
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-message .button,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-info .button{margin:-9px 0 -9px 20px;}
@media (max-width:767px){
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-message,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-info,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-error{padding:18px 20px 18px 40px;}
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-message::before,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-info::before,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-error::before{left:20px;top:18px;bottom:18px;}
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-message .button,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-info .button{float:none;display:block;margin:14px 0 0;text-align:center;}
/* WooCommerce prints the button BEFORE the text; on a phone the text reads first. */
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-message,
.elementor-widget-woocommerce-notices .e-woocommerce-notices-wrapper .woocommerce-info{display:flex;flex-direction:column-reverse;}
}

/* ===== S5 - Elementor form states (Figma 81:647 field error, 81:659 notice) =====
   CHANGED WITH CSS - see BUILD-PLAN "Changed with CSS, not in the UI". One rule set
   for every Elementor form (Kontakt kform, Tule tooele tform, product enquiry
   pb-qf-form, and any future one). The form widget's own Messages controls are left
   EMPTY on purpose: one typography control covers both the inline field error and
   the form-level message, which the sheet draws differently, and it would have to be
   set on each form. The e-mail wording is code: sandbox lv-form-validate.php. */

/* the field in error: 2px red instead of navy (checkbox and upload box too) */
.elementor-kit-16 .elementor-field-group.elementor-error .elementor-field-textual,
.elementor-kit-16 .elementor-field-group.elementor-error input[type=checkbox],
.elementor-kit-16 .elementor-field-group .elementor-error input[type=checkbox],
.elementor-kit-16 .elementor-field-group.elementor-error input[type=file]{border-color:#AA0000;}

/* inline message: UI/Label 10, red, 10 below the field, on its own line (the consent
   error used to sit beside its label). Elementor's eicons glyph becomes the sheet's
   warning sign - eicons is not loaded for visitors, so it rendered as a tofu box.
   On the consent checkbox Elementor puts .elementor-error on the option span, not
   the group, and the message is an inline span inside it - hence display:block. */
.elementor-kit-16 .elementor-field-group .elementor-message.elementor-help-inline{display:block;flex:0 0 100%;width:100%;
  margin:10px 0 0;font-family:'Hurme Geometric Sans 1',sans-serif;font-weight:700;font-size:10px;
  line-height:1.5;letter-spacing:3px;text-transform:none;color:#AA0000;}
.elementor-kit-16 .elementor-field-group .elementor-message.elementor-help-inline::before{content:"\26A0\FE0E";
  font-family:inherit;margin-right:8px;}

/* two fields sharing a row (E-POST | TELEFON): keep each one's label and input at the
   top when the other grows an error line - they used to slide down ~34px */
.elementor-kit-16 .elementor-form .elementor-field-group{align-content:flex-start;}

/* form-level message = the notice anatomy: cream, 4px bar inset 26, text at 48,
   Body 16 navy. Red bar for errors, navy for success. White on the cream C8 panel. */
.elementor-kit-16 .elementor-form > .elementor-message{position:relative;margin:20px 0 0;
  padding:20px 26px 20px 48px;background:#FFF0D7;font-family:'Eames Century Modern',serif;
  font-weight:400;font-size:16px;line-height:1.5;letter-spacing:normal;text-transform:none;color:#000080;}
.elementor-kit-16 .elementor-form > .elementor-message::before{content:"";position:absolute;left:26px;
  top:20px;bottom:20px;width:4px;margin:0;background:#000080;font-size:0;}
.elementor-kit-16 .elementor-form > .elementor-message.elementor-message-danger::before{background:#AA0000;}
.elementor-kit-16 .lv-quote-form .elementor-form > .elementor-message{background:#FFFFFF;}
@media (max-width:767px){
.elementor-kit-16 .elementor-form > .elementor-message{padding:18px 20px 18px 40px;}
.elementor-kit-16 .elementor-form > .elementor-message::before{left:20px;top:18px;bottom:18px;}
}

/* ===== S5 - focus (Figma 81:633; owner decision 2026-09-25: 3px red everywhere) =====
   CHANGED WITH CSS - see BUILD-PLAN "Changed with CSS, not in the UI". The 3px red
   border itself is NATIVE for Elementor fields: Site Settings > Form Fields > Focus.
   Here is only what no control reaches:
   1. The theme's reset.css puts a 2px BLACK outline and a 4px white halo on every
      keyboard-focused input, stacked on the red border (cart coupon, 404 search).
      Off for text fields. :where() keeps this at (0,2,0) so the checkout and
      account focus rules, which draw their red with an inset shadow, still win.
   2. Checkboxes and radios have no border state to turn red, so they get a red ring.
   3. JetSmartFilters hides its checkbox input with display:none, so a keyboard could
      not reach the shop filters at all. Hidden visually instead (still focusable,
      Space ticks it) and the visible box gets the red ring. */
.elementor-kit-16 :where(input:not([type=checkbox]):not([type=radio]):not([type=button]):not([type=submit]),textarea,select):focus-visible{outline:0;box-shadow:none;}
.elementor-kit-16 input[type=checkbox]:focus-visible,
.elementor-kit-16 input[type=radio]:focus-visible{outline:3px solid #AA0000;outline-offset:2px;box-shadow:none;}
.lv-shop-aside .jet-checkboxes-list .jet-checkboxes-list__item{position:relative;}
.lv-shop-aside .jet-checkboxes-list .jet-checkboxes-list__item .jet-checkboxes-list__input{display:block;visibility:visible;
  position:absolute;left:0;top:0;width:1px;height:1px;margin:0;padding:0;opacity:0;pointer-events:none;}
.lv-shop-aside .jet-checkboxes-list .jet-checkboxes-list__input:focus-visible + .jet-checkboxes-list__button .jet-checkboxes-list__decorator{
  outline:3px solid #AA0000;outline-offset:2px;}
/* WooCommerce block checkboxes/radios (checkout "Ostan ettevottena", delivery and
   payment options) carry Woo's own 4-class focus rule, printed later in the body -
   one class more here so the ring is red, not navy. */
.elementor-kit-16 .wc-block-components-checkbox .wc-block-components-checkbox__input[type=checkbox]:focus-visible,
.elementor-kit-16 .wc-block-components-radio-control .wc-block-components-radio-control__input[type=radio]:focus-visible{
  outline:3px solid #AA0000;outline-offset:2px;box-shadow:none;}

/* ===== S5 - uploads (Figma 81:710; owner decision 2026-09-25: style what exists) =====
   CHANGED WITH CSS - see BUILD-PLAN "Changed with CSS, not in the UI". Every
   Elementor upload field (Kontakt "fail", Tule tooele "cv", C8 "kujundusfail"):
   - waiting: the input itself is the dashed 2px navy box (no custom drop zone);
   - the browser's button is dressed as the F5.2 secondary button. Its WORDING is
     the browser's own and follows the visitor's browser language - no CSS reaches it;
   - chosen: solid box + "check name · size" under it (the line is written by the
     sandbox script lv-form-uploads.php, which also sets .lv-upload-js; the browser's
     "No file chosen" text is hidden only then);
   - error: red border + the S5 inline message (group-1 rules), wording Estonian via
     lv-strings.php. Size limits stay per form (kform 8 MB, tform 5 MB, C8 5 MB). */
.elementor-kit-16 .elementor-field-type-upload input[type=file]{box-sizing:border-box;width:100%;min-height:0;
  padding:22px 20px;background:#FFFFFF;border:2px dashed #000080;border-radius:0;
  font-family:'Eames Century Modern',serif;font-size:15px;line-height:1.5;color:#000080;cursor:pointer;}
/* the browser's file button is styled in sandbox lv-form-uploads.php - Elementor's parser drops ::file-.elementor-kit-16-button rules */
/* one class more than the form widget's native field text colour (0,5,0) */
.elementor-kit-16 .elementor-field-group.elementor-field-type-upload.lv-upload-js input[type=file].elementor-field{color:transparent;}
.elementor-kit-16 .elementor-field-type-upload.lv-upload--chosen input[type=file]{border-style:solid;}
.elementor-kit-16 .elementor-field-type-upload .lv-upload-status{display:block;flex:0 0 100%;width:100%;
  margin:10px 0 0;font-family:'Eames Century Modern',serif;font-size:16px;line-height:1.5;color:#000080;
  overflow-wrap:anywhere;}/* End custom CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Hurme Geometric Sans 1';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('https://lv2026.fluxdigital.eu/wp-content/uploads/lv-fonts/HurmeGeometricSans1-Regular.woff2') format('woff2');
}
@font-face {
	font-family: 'Hurme Geometric Sans 1';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url('https://lv2026.fluxdigital.eu/wp-content/uploads/lv-fonts/HurmeGeometricSans1-Bold.woff2') format('woff2');
}
/* End Custom Fonts CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Eames Century Modern';
	font-style: normal;
	font-weight: 400;
	font-display: swap;
	src: url('https://lv2026.fluxdigital.eu/wp-content/uploads/lv-fonts/EamesCenturyModern-Regular.woff2') format('woff2');
}
@font-face {
	font-family: 'Eames Century Modern';
	font-style: normal;
	font-weight: 700;
	font-display: swap;
	src: url('https://lv2026.fluxdigital.eu/wp-content/uploads/lv-fonts/EamesCenturyModern-Bold.woff2') format('woff2');
}
/* End Custom Fonts CSS */