/* Lime Brand Hub · generated from the ChompSaw hub CSS (custom_css post 18683, block BRAND HUB BANNER) on 2026-09-15.
   Scoped to body.lime-hub (added by the plugin on enabled brand archives). Brand tokens and images are set inline per brand. */
/* ===== BRAND HUB BANNER · Lime 2026-09-10 · all .id- prefixed · safe to delete this whole block ===== */
.id-bnr{position:relative;min-height:300px;max-height:420px;border-radius:6px;overflow:hidden;display:flex;align-items:center;margin:0 0 22px;background-image:linear-gradient(90deg,rgba(10,20,35,.90) 0%,rgba(10,20,35,.68) 46%,rgba(10,20,35,.12) 100%),var(--id-bg,none);background-size:cover,cover;background-position:center,center;background-repeat:no-repeat,no-repeat}
.id-bnr-in{position:relative;z-index:2;padding:34px 38px;max-width:580px}
.id-bnr-logo-wrap{margin:0 0 15px}
.id-bnr-logo{display:block;height:48px;width:auto;background:rgba(255,255,255,.96);border-radius:5px;padding:7px 12px;box-shadow:0 3px 14px rgba(0,0,0,.22)}
.id-bnr-kick{font-size:.72rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:#ffd970;margin:0 0 7px;line-height:1.4}
.id-bnr-h1{font-size:2.1rem;font-weight:700;letter-spacing:-.02em;line-height:1.08;color:#fff;margin:0 0 10px;text-shadow:0 2px 14px rgba(0,0,0,.45)}
.id-bnr-copy{font-size:.95rem;line-height:1.55;color:rgba(255,255,255,.94);margin:0 0 16px;text-shadow:0 1px 8px rgba(0,0,0,.5)}
.id-bnr-cta{display:inline-block;background:#f5b800;color:#16161d !important;font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:11px 19px;border-radius:4px;text-decoration:none;margin:0 8px 8px 0}
.id-brand-trust{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 22px;padding:14px 0;border-top:1px solid #e6e9ef;border-bottom:1px solid #e6e9ef}
.id-brand-trust > li{font-size:.73rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;background:#f2f5fa;border:1px solid #dde4ee;border-radius:99px;padding:6px 13px;color:#3d4a5c}
.id-brand-more{border:1px solid #e2e6ee;border-radius:5px;background:#fafbfd;margin:0 0 24px}
.id-brand-more-h{font-size:.92rem;font-weight:600;padding:13px 17px;cursor:pointer;color:#1b3f7a;list-style:none}
.id-brand-more-body{padding:0 17px 16px}
.id-p{font-size:.93rem;line-height:1.62;margin:0 0 10px;color:#3a3f4a}
.id-p:last-child{margin-bottom:0}
@media (max-width:782px){.id-bnr{min-height:0;max-height:none}.id-bnr-in{padding:24px 22px;max-width:none}.id-bnr-h1{font-size:1.55rem}.id-bnr-copy{font-size:.9rem}}

/* --- BRAND PAGE LAYOUT · scoped to body.tax-brand ONLY --- */
/* Verified 2026-09-10: /shop/ and /shop/?filter_brand=... carry body.woocommerce-shop
   and do NOT carry .tax-brand, so shop filters are untouched by these rules. */
body.lime-hub .sidebar-position-left .row > .sidebar-left{display:none !important}
body.lime-hub .content.main-products-loop{width:100% !important;max-width:100% !important;flex:0 0 100% !important;left:0 !important;right:0 !important}
/* --- END BRAND PAGE LAYOUT --- */

/* --- BANNER VIDEO + MOTION · Lime 2026-09-10 · additive, .id- prefixed --- */
/* Slow vertical drift of the banner photo. Range is deliberately small (44%-56%)
   so it reads as ambient motion, not a slideshow. Fully disabled for users who
   ask their OS for reduced motion. */
@keyframes id-bnr-drift{0%{background-position:center 44%,center 44%}50%{background-position:center 56%,center 56%}100%{background-position:center 44%,center 44%}}
.id-bnr{animation:id-bnr-drift 26s ease-in-out infinite;justify-content:space-between;gap:26px}
@media (prefers-reduced-motion:reduce){.id-bnr{animation:none}}

.id-bnr-in{flex:1 1 auto}
.id-bnr-media{position:relative;z-index:2;flex:0 0 42%;max-width:420px;margin-right:38px}

/* Click-to-play facade. No YouTube code loads until the visitor presses play. */
.id-yt{position:relative;width:100%;aspect-ratio:16/9;border-radius:8px;overflow:hidden;background:#0b1320;box-shadow:0 14px 44px rgba(0,0,0,.5);border:1px solid rgba(255,255,255,.2)}
.id-yt-btn{position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;border:0;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center}
.id-yt-btn img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;margin:0}
.id-yt-play{position:relative;z-index:2;width:64px;height:45px;border-radius:12px;background:rgba(16,16,20,.78);display:flex;align-items:center;justify-content:center;transition:background .18s ease,transform .18s ease}
.id-yt-play::after{content:"";display:block;width:0;height:0;border-style:solid;border-width:9px 0 9px 16px;border-color:transparent transparent transparent #fff;margin-left:3px}
.id-yt-btn:hover .id-yt-play,.id-yt-btn:focus-visible .id-yt-play{background:#f00000;transform:scale(1.06)}
.id-yt-btn:focus-visible{outline:3px solid #ffd970;outline-offset:3px}
.id-yt iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

@media (max-width:980px){
.id-bnr{flex-wrap:wrap;max-height:none;gap:0}
.id-bnr-in{flex:1 1 100%;max-width:100%;min-width:0}
.id-bnr-media{flex:1 1 100%;max-width:100%;min-width:0;margin:0 38px 32px}
}
@media (max-width:782px){.id-bnr-media{margin:0 22px 24px}}
/* --- END BANNER VIDEO + MOTION --- */

/* --- HERO CARD · banner + trust strip welded into one unit · Lime 2026-09-10 --- */
/* .id-hero wraps .id-bnr and .id-brand-trust so the strip sits flush against the
   image with no gap and the whole thing rounds as a single card. */
.id-hero{border-radius:6px;overflow:hidden;margin:0 0 26px;box-shadow:0 3px 20px rgba(16,26,43,.11)}
.id-hero .id-bnr{margin:0;border-radius:0}

.id-hero .id-brand-trust{display:flex;flex-wrap:wrap;gap:0;margin:0;padding:0;border:0;border-radius:0;background:#111d31;border-top:1px solid rgba(255,255,255,.10)}
.id-hero .id-brand-trust > li{flex:1 1 0;min-width:168px;display:flex;align-items:center;gap:10px;margin:0;padding:14px 22px;font-size:.735rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.90);background:none;border:0;border-radius:0;border-left:1px solid rgba(255,255,255,.09)}
.id-hero .id-brand-trust > li:first-child{border-left:0}
/* tick drawn from borders, no image request */
.id-hero .id-brand-trust > li::before{content:"";flex:0 0 auto;width:6px;height:11px;border:solid #ffd970;border-width:0 2px 2px 0;transform:rotate(43deg);margin:0 5px 3px 0}
@media (max-width:640px){
.id-hero .id-brand-trust > li{flex:1 1 100%;min-width:0;border-left:0;border-top:1px solid rgba(255,255,255,.09);padding:12px 20px}
.id-hero .id-brand-trust > li:first-child{border-top:0}
}

/* --- MORE ABOUT · proper expandable instead of a thin grey bar --- */
.id-brand-more{border:1px solid #e4e8f0;border-radius:6px;background:#fff;margin:0 0 26px;overflow:hidden}
.id-brand-more-h{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:.95rem;font-weight:600;padding:15px 20px;cursor:pointer;color:#16233a;background:#f7f9fc;list-style:none;transition:background .16s ease}
.id-brand-more-h::-webkit-details-marker{display:none}
.id-brand-more-h:hover{background:#eaeff7}
.id-brand-more-h::after{content:"";flex:0 0 auto;width:8px;height:8px;border:solid #5b6c85;border-width:0 2px 2px 0;transform:rotate(45deg);margin-top:-4px;transition:transform .2s ease}
.id-brand-more[open] .id-brand-more-h{background:#eef2f8;border-bottom:1px solid #e4e8f0}
.id-brand-more[open] .id-brand-more-h::after{transform:rotate(-135deg);margin-top:2px}
.id-brand-more-body{padding:18px 20px 20px}
/* --- END HERO CARD --- */

/* --- MAKER BYLINE · Chompshop is the company, ChompSaw the product. The logo
   sits under the H1 behind a "by" so the two names read as maker + product
   instead of a contradiction. Only brand where they differ. --- */
.id-bnr-by{display:flex;align-items:center;gap:11px;margin:0 0 16px}
.id-bnr-by > span{font-size:.7rem;font-weight:600;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.7);text-shadow:0 1px 6px rgba(0,0,0,.5)}
.id-bnr-by .id-bnr-logo{height:34px;padding:6px 11px}
/* --- END MAKER BYLINE --- */

/* --- BRAND ACCENT · per-brand colour, set inline as --id-accent --- */
.id-hero{border-top:4px solid var(--id-accent,#f5b800)}
.id-hero .id-brand-trust{border-top-color:var(--id-accent,rgba(255,255,255,.10))}
.id-brand-more[open] .id-brand-more-h{box-shadow:inset 3px 0 0 var(--id-accent,#f5b800)}
/* --- END BRAND ACCENT --- */

/* --- NO ONE-SIDED BORDERS + BRAND PALETTE · Lime 2026-09-10 ------------------
   Every single-edge rule is removed. The brand colour now arrives as a FILL on
   the trust strip rather than as an accent line, dividers are gone, and the
   open/closed split in the copy panel is done with background tone, not a rule.
   Colour comes from --id-accent / --id-accent-lt, set once on .id-brand. */

/* kill the accent edge on the hero card */
.id-hero{border-top:0}

/* trust strip: brand fill, no top border, no dividers */
.id-hero .id-brand-trust{background:var(--id-accent,#111d31);border-top:0}
.id-hero .id-brand-trust > li{border-left:0;border-top:0;color:#fff;padding:15px 24px}
.id-hero .id-brand-trust > li::before{border-color:#fff}
@media (max-width:640px){.id-hero .id-brand-trust > li{border-top:0;padding:12px 22px}}

/* kicker keeps the brand's light tint against the photo */
.id-bnr-kick{color:var(--id-accent-lt,#ffd970)}

/* --- MORE ABOUT · redesigned, no edge rules --- */
.id-brand-more{border:1px solid #e3e8f0;border-radius:8px;background:#fff;margin:0 0 26px;overflow:hidden;box-shadow:0 1px 3px rgba(16,26,43,.05)}
.id-brand-more-h{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:1rem;font-weight:600;padding:16px 22px;cursor:pointer;color:#16233a;background:#fff;list-style:none;transition:background .16s ease}
.id-brand-more-h:hover{background:#f7f9fc}
.id-brand-more-h::after{border-color:var(--id-accent,#5b6c85)}
/* open state separates by tone, not by a border-bottom */
.id-brand-more[open] .id-brand-more-h{background:#fff;box-shadow:none;border-bottom:0}
.id-brand-more[open] .id-brand-more-body{background:#fbfcfe}
.id-brand-more-body{padding:22px;display:flex;gap:26px;align-items:flex-start}
.id-more-text{flex:1 1 auto;min-width:0}

/* --- IMAGE TICKER ------------------------------------------------------------
   Continuous marquee, masked to nothing at both edges so it melts into the panel
   instead of ending on a hard line. Images carry margin-right rather than the row
   carrying gap, so translating exactly -50% lands on a seamless loop point.
   Pauses on hover, individual image lifts on hover, stops entirely under
   prefers-reduced-motion. */
.id-more-media{flex:0 0 44%;min-width:0}
.id-tick{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 13%,#000 87%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 13%,#000 87%,transparent 100%)}
.id-tick-row{display:flex;width:max-content;animation:id-tick-run 42s linear infinite}
.id-tick-row img{display:block;height:154px;width:auto;margin:0 10px 0 0;border-radius:6px;cursor:pointer;transition:transform .22s ease,box-shadow .22s ease}
.id-tick-row img:hover{transform:scale(1.07);box-shadow:0 8px 24px rgba(16,26,43,.28)}
.id-tick:hover .id-tick-row{animation-play-state:paused}
@keyframes id-tick-run{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
@media (prefers-reduced-motion:reduce){.id-tick-row{animation:none}}
@media (max-width:880px){
.id-brand-more-body{flex-direction:column;gap:20px;padding:18px}
.id-more-media{flex:1 1 auto;width:100%}
.id-tick-row img{height:130px}
}
/* --- END IMAGE TICKER --- */

/* --- SPEC PANEL · manufacturer detail, two columns, no edge rules --- */
.id-brand-more-body{display:block}
.id-more-top{display:flex;gap:26px;align-items:flex-start}
.id-specs{display:flex;gap:26px;margin:22px 0 0;padding:20px 0 0;background:none}
.id-specs-col{flex:1 1 0;min-width:0}
.id-specs-h{font-size:.72rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--id-accent,#1b3f7a);margin:0 0 11px}
.id-specs-list > div{display:flex;gap:12px;align-items:baseline;padding:8px 0;font-size:.88rem;line-height:1.5;color:#3a3f4a}
.id-specs-list > div{background:none}
.id-specs-list > div > span{flex:0 0 116px;font-weight:600;color:#16233a}
@media (max-width:880px){
.id-more-top{flex-direction:column;gap:20px}
.id-specs{flex-direction:column;gap:18px}
.id-specs-list > div > span{flex:0 0 100px}
}
/* --- END SPEC PANEL --- */

/* --- LESSON RESOURCES · 39 hotlinked PDFs, grouped by grade band -------------
   Files stay on Chompshop's CDN (verified: 200, application/pdf, CORS *, and no
   content-disposition so they render inline). Every link opens in a new tab, so
   this page stays put behind it. No one-sided borders anywhere. */
.id-res-intro{font-size:.92rem;line-height:1.62;color:#3a3f4a;margin:0 0 22px}
.id-res-band{margin:0 0 24px}
.id-res-band:last-child{margin-bottom:0}
.id-res-band-h{font-size:.72rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--id-accent,#1b3f7a);margin:0 0 12px}
.id-lesson{background:#f6f8fc;border-radius:8px;padding:15px 18px;margin:0 0 10px}
.id-lesson:last-child{margin-bottom:0}
.id-lesson-h{font-size:.98rem;font-weight:600;color:#16233a;margin:0 0 3px;line-height:1.3}
.id-lesson-q{font-size:.85rem;color:#5b6c85;margin:0 0 12px;line-height:1.45}
.id-lesson-files{display:flex;flex-wrap:wrap;gap:8px}
.id-lesson-files a{display:inline-flex;align-items:center;gap:6px;font-size:.79rem;font-weight:600;color:var(--id-accent,#1b3f7a) !important;background:#fff;border-radius:99px;padding:7px 14px;text-decoration:none !important;line-height:1.25;transition:background .15s ease,color .15s ease,transform .15s ease}
.id-lesson-files a::after{content:"↗";font-size:.86em;opacity:.65}
.id-lesson-files a:hover{background:var(--id-accent,#1b3f7a);color:#fff !important;transform:translateY(-1px)}
.id-lesson-files a:hover::after{opacity:1}
@media (max-width:880px){.id-lesson{padding:14px 15px}.id-lesson-files a{font-size:.76rem;padding:6px 12px}}
/* --- END LESSON RESOURCES --- */

/* --- HERO SCALE-UP · title and maker mark given more presence --- */
.id-bnr-h1{font-size:2.65rem;line-height:1.04}
.id-bnr-kick{font-size:.76rem;letter-spacing:.17em;margin:0 0 9px}
.id-bnr-by > span{font-size:.74rem}
.id-bnr-by .id-bnr-logo{height:44px;padding:8px 14px}
@media (max-width:782px){.id-bnr-h1{font-size:1.95rem}.id-bnr-by .id-bnr-logo{height:38px}}
/* --- END HERO SCALE-UP --- */

/* --- TRUST STRIP ICONS · Lime 2026-09-10 -------------------------------------
   Replaces four identical CSS ticks with a real icon per claim. Each item names
   its icon with data-ico, so any brand can pick from the set without new CSS.
   Masked SVG files, tinted by currentColor, so they follow the strip's text
   colour on any brand fill. Falls back to the plain tick if data-ico is absent. */
.id-hero .id-brand-trust > li[data-ico]::before{
width:19px;height:19px;border:0;transform:none;margin:0 3px 0 0;
background-color:currentColor;
-webkit-mask-position:center;mask-position:center;
-webkit-mask-size:contain;mask-size:contain;
-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.id-hero .id-brand-trust > li[data-ico="shield"]::before{-webkit-mask-image:url(icons/id-ico-shield.svg);mask-image:url(icons/id-ico-shield.svg)}
/* only age, book, leaf and shield ever had artwork; award/units/ship are dead selectors that
   render a blank square. Added for brands that price in CAD. */
.id-hero .id-brand-trust > li[data-ico="cad"]::before{-webkit-mask-image:url(icons/id-ico-cad.svg);mask-image:url(icons/id-ico-cad.svg)}
.id-hero .id-brand-trust > li[data-ico="age"]::before{-webkit-mask-image:url(icons/id-ico-age.svg);mask-image:url(icons/id-ico-age.svg)}
.id-hero .id-brand-trust > li[data-ico="leaf"]::before{-webkit-mask-image:url(icons/id-ico-leaf.svg);mask-image:url(icons/id-ico-leaf.svg)}
.id-hero .id-brand-trust > li[data-ico="book"]::before{-webkit-mask-image:url(icons/id-ico-book.svg);mask-image:url(icons/id-ico-book.svg)}
/* --- END TRUST STRIP ICONS --- */

/* --- PANEL POLISH · Lime 2026-09-10 -----------------------------------------
   Fixes: the two spec lists ran as bare columns of different heights so their
   rows never lined up and the block bottom looked ragged. They are now two
   self-contained cards, which removes the need for rows to align at all and
   gives the visual separation a divider would have. Copy gets a measure cap so
   it stops dropping a single word onto its own line. */

/* copy column: capped measure, stronger type, no widows */
.id-more-text{max-width:68ch}
.id-brand-more .id-p{font-size:.95rem;font-weight:500;line-height:1.66;color:#2f3542;margin:0 0 13px;text-wrap:pretty}
.id-brand-more .id-p:last-child{margin-bottom:0}

/* spec lists as paired cards */
.id-specs{gap:20px;margin:24px 0 0;padding:0}
.id-specs-col{background:#f6f8fc;border-radius:8px;padding:18px 20px 14px}
.id-specs-h{margin:0 0 8px}
.id-specs-list > div{padding:9px 10px;margin:0 -10px;border-radius:6px;transition:background .15s ease}
.id-specs-list > div:hover{background:#fff}
.id-specs-list > div > span{flex:0 0 124px}
@media (max-width:880px){
.id-more-text{max-width:none}
.id-specs-col{padding:16px 16px 12px}
.id-specs-list > div > span{flex:0 0 104px}
}
/* --- END PANEL POLISH --- */

/* --- LESSONS CARD + DOWNLOADS MODAL · Lime 2026-09-10 ------------------------
   Both worlds: the nine lesson names sit visible in the panel as plain indexable
   text, and the full 39-file list lives behind one button so it never buries the
   page. Modal markup is in the DOM either way. */
.id-brand-more-h{font-size:1.12rem}

.id-lessons-card{background:#f6f8fc;border-radius:8px;padding:18px 20px 20px;margin:20px 0 0}
.id-lessons-sub{font-size:.88rem;line-height:1.55;color:#5b6c85;margin:0 0 15px}
.id-lessons-grid{display:flex;gap:22px;margin:0 0 17px}
.id-lessons-col{flex:1 1 0;min-width:0}
.id-lessons-col-h{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#6b7a90;margin:0 0 9px}
.id-lessons-col > div{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:.89rem;font-weight:500;color:#2f3542;padding:6px 0;line-height:1.4}
.id-lessons-col > div > span{flex:0 0 auto;font-size:.74rem;font-weight:600;color:#8996a8}
.id-res-btn{display:inline-block;border:0;background:var(--id-accent,#1b3f7a);color:#fff;font-size:.82rem;font-weight:600;letter-spacing:.03em;padding:11px 21px;border-radius:6px;cursor:pointer;font-family:inherit;transition:filter .15s ease,transform .15s ease}
.id-res-btn:hover{filter:brightness(1.13);transform:translateY(-1px)}
.id-res-btn:focus-visible{outline:3px solid var(--id-accent,#1b3f7a);outline-offset:3px}

.id-modal{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;padding:22px;background:rgba(10,20,35,.74)}
.id-modal[hidden]{display:none}
.id-modal-card{background:#fff;border-radius:10px;width:100%;max-width:920px;max-height:86vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 26px 74px rgba(0,0,0,.42)}
.id-modal-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:18px 22px;background:#fff;flex:0 0 auto}
.id-modal-t{font-size:1.06rem;font-weight:600;color:#16233a}
.id-modal-x{flex:0 0 auto;width:36px;height:36px;border:0;border-radius:8px;background:#f1f4f9;color:#3a4658;font-size:1.4rem;line-height:1;cursor:pointer;font-family:inherit;transition:background .15s ease,color .15s ease}
.id-modal-x:hover{background:var(--id-accent,#1b3f7a);color:#fff}
.id-modal-body{overflow-y:auto;padding:2px 22px 24px;flex:1 1 auto}
@media (max-width:880px){
.id-lessons-grid{flex-direction:column;gap:16px}
.id-modal{padding:12px}
.id-modal-card{max-height:92vh}
.id-res-btn{width:100%}
}
/* --- END LESSONS CARD + MODAL --- */

/* --- THREE-CARD DETAIL ROW · Lime 2026-09-10 --------------------------------
   Box, specs and lessons now sit as three equal cards on one row instead of two
   rows, which is roughly a third of the previous height. In narrower columns the
   label/value pairs stack rather than sitting side by side, so long values like
   the cutting-mechanism line stop shredding into ragged wraps. */
.id-specs{gap:18px;align-items:stretch}
.id-specs > .id-lessons-card,.id-specs-col{flex:1 1 0;min-width:0;margin:0;background:#f6f8fc;border-radius:8px;padding:18px 18px 16px}

/* stacked label over value */
.id-specs-list > div{flex-direction:column;align-items:stretch;gap:1px;padding:7px 9px;margin:0 -9px}
.id-specs-list > div > span{flex:0 0 auto;font-size:.83rem}
.id-specs-list > div{font-size:.86rem;line-height:1.45}

/* lessons become one narrow column, bands stacked */
.id-lessons-sub{font-size:.83rem;margin:0 0 13px}
.id-lessons-grid{flex-direction:column;gap:13px;margin:0 0 15px}
.id-lessons-col-h{font-size:.66rem;margin:0 0 5px}
.id-lessons-col > div{font-size:.85rem;padding:3px 0}
.id-lessons-col > div > span{font-size:.71rem}
.id-res-btn{width:100%;text-align:center;padding:10px 14px;font-size:.79rem}

@media (max-width:1100px){
.id-specs{flex-wrap:wrap}
.id-specs > .id-lessons-card,.id-specs-col{flex:1 1 46%}
}
@media (max-width:880px){
.id-specs{flex-direction:column;flex-wrap:nowrap}
.id-specs > .id-lessons-card,.id-specs-col{flex:1 1 auto}
.id-lessons-grid{flex-direction:row;flex-wrap:wrap;gap:18px}
.id-lessons-col{flex:1 1 40%}
}
/* --- END THREE-CARD DETAIL ROW --- */

/* --- HERO STACK SPACING · copy sits between headline and maker mark --- */
.id-bnr-copy{margin:0 0 18px}
.id-bnr-by{margin:0}
/* --- END HERO STACK SPACING --- */

/* --- TICKER BLEED · Lime 2026-09-10 ------------------------------------------
   The ticker was a fixed 154px strip in a flex column, so whenever the copy ran
   taller it left dead space underneath. It is now absolutely positioned to the
   full height of the copy block, which means it always matches the text exactly,
   and it runs wider so it passes under the text. The mask fades it to nothing
   just before the copy starts, so it reads as tucked behind without ever sitting
   under a word. */
.id-more-top{position:relative;display:block;min-height:262px}
.id-more-media{position:absolute;left:0;top:0;bottom:0;width:60%;flex:none;max-width:none;min-width:0}
.id-tick{height:100%;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 44%,transparent 76%);mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 44%,transparent 76%)}
.id-tick-row{height:100%;align-items:stretch}
.id-tick-row img{height:100%;width:auto;border-radius:8px;margin:0 12px 0 0}
.id-more-text{position:relative;z-index:2;margin-left:46%;width:54%;max-width:none}

@media (max-width:880px){
.id-more-top{position:static;display:flex;flex-direction:column;gap:20px;min-height:0}
.id-more-media{position:static;width:100%;height:auto}
.id-tick{height:auto}
.id-tick-row{height:auto}
.id-tick-row img{height:132px}
.id-more-text{margin-left:0;width:100%}
}
/* --- END TICKER BLEED --- */

/* --- TABBED DETAIL · Lime 2026-09-10 -----------------------------------------
   Replaces the three side-by-side cards. Those were forced to equal height, so
   the shortest ran 182px of dead space while the longest had 16px, and the row
   cost ~470px of page whatever you did. One panel at a time removes the height
   mismatch by construction and cuts the footprint to roughly a third. All three
   panels stay in the DOM, so nothing is lost to search or to screen readers. */
.id-tabs{margin:24px 0 0}
.id-tabbar{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.id-tab{border:0;background:#eef2f8;color:#3a4658;font-family:inherit;font-size:.85rem;font-weight:600;padding:11px 18px;border-radius:8px;cursor:pointer;transition:background .15s ease,color .15s ease}
.id-tab:hover{background:#e3e9f4}
.id-tab[data-id-active]{background:var(--id-accent,#1b3f7a);color:#fff}
.id-tab:focus-visible{outline:3px solid var(--id-accent,#1b3f7a);outline-offset:3px}
.id-tabpanel{background:#f6f8fc;border-radius:8px;padding:20px 22px}
.id-tabpanel[hidden]{display:none}

/* full-width panel, so label and value sit side by side again */
.id-tabpanel .id-specs-list > div{flex-direction:row;align-items:baseline;gap:16px;padding:9px 10px;font-size:.9rem}
.id-tabpanel .id-specs-list > div > span{flex:0 0 150px;font-size:.9rem}
.id-tabpanel .id-lessons-grid{flex-direction:row;gap:26px;margin:0 0 16px}
.id-tabpanel .id-lessons-sub{font-size:.89rem;margin:0 0 15px}
.id-tabpanel .id-lessons-col-h{font-size:.7rem}
.id-tabpanel .id-lessons-col > div{font-size:.89rem;padding:5px 0}
.id-tabpanel .id-res-btn{width:auto;padding:11px 21px;font-size:.82rem}

@media (max-width:880px){
.id-tab{flex:1 1 auto;text-align:center;font-size:.8rem;padding:10px 12px}
.id-tabpanel{padding:16px}
.id-tabpanel .id-specs-list > div{flex-direction:column;gap:1px}
.id-tabpanel .id-specs-list > div > span{flex:0 0 auto}
.id-tabpanel .id-lessons-grid{flex-direction:column;gap:16px}
.id-tabpanel .id-res-btn{width:100%}
}
/* --- END TABBED DETAIL --- */

/* --- PANEL POLISH ROUND 2 · Lime 2026-09-10 ---------------------------------
   1. Copy was top-aligned against a taller image column. .id-more-top is now a
      flex box whose only in-flow child is the copy (the ticker is absolute), so
      align-items:center genuinely centres it against the images.
   2. Copy sized up.
   3. Ticker widened so it carries further under the text.
   4. The tab panels ran full width while a five-row list used only the left
      half, stranding a huge empty right side. Rows now flow into two balanced
      columns on wide screens. */

.id-more-top{display:flex;align-items:center;min-height:334px}
.id-more-media{width:66%}
.id-tick{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 46%,transparent 74%);mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 46%,transparent 74%)}
.id-more-text{margin-left:50%;width:50%}
.id-brand-more .id-p{font-size:1rem;line-height:1.68;margin:0 0 14px}

@media (min-width:1100px){
.id-tabpanel .id-specs-list{columns:2;column-gap:46px}
.id-tabpanel .id-specs-list > div{break-inside:avoid;-webkit-column-break-inside:avoid}
}
@media (max-width:880px){
.id-more-top{display:flex;flex-direction:column;align-items:stretch;min-height:0}
.id-more-media{width:100%}
.id-more-text{margin-left:0;width:100%}
.id-brand-more .id-p{font-size:.95rem}
.id-tabpanel .id-specs-list{columns:auto}
}
/* --- END PANEL POLISH ROUND 2 --- */

/* --- COPY SIZE · root font is 14px here, so these are px not rem --- */
.id-brand-more .id-p{font-size:15.5px;line-height:1.7;margin:0 0 15px}
.id-tabpanel .id-specs-list > div{font-size:14.5px}
.id-tabpanel .id-specs-list > div > span{font-size:14.5px}
.id-tabpanel .id-lessons-col > div{font-size:14.5px}
.id-tabpanel .id-lessons-sub{font-size:14px}
@media (max-width:880px){.id-brand-more .id-p{font-size:14.5px}}
/* --- END COPY SIZE --- */

/* --- TIGHTEN · Lime 2026-09-10 -----------------------------------------------
   The detail block had grown taller than the product grid it sits above, which
   is backwards for a shop page. The tab bar moves into the copy column beside
   the image, using space that was empty, and the panel opens full width below.
   Padding and row rhythm pulled in throughout. */
.id-more-top{min-height:306px}
.id-brand-more .id-p{margin:0 0 12px}
.id-more-text .id-tabbar{margin:18px 0 0}
.id-tabs{margin:14px 0 0}
.id-tab{padding:9px 15px;font-size:13.5px}
.id-tabpanel{padding:15px 18px}
.id-tabpanel .id-specs-list > div{padding:6px 10px}
.id-tabpanel .id-lessons-col > div{padding:4px 0}
.id-tabpanel .id-lessons-sub{margin:0 0 12px}
.id-tabpanel .id-lessons-grid{margin:0 0 13px}
.id-brand-more-body{padding:18px 22px 20px}
@media (max-width:880px){
.id-more-text .id-tabbar{margin:16px 0 0}
.id-tabpanel{padding:14px}
}
/* --- END TIGHTEN --- */

/* --- LESSONS PANEL SLIMMED · Lime 2026-09-10 --------------------------------
   Lessons is the panel that opens by default, so it is the one that has to earn
   its height. Intro condensed to one line, grade columns tightened, file counts
   pulled in beside the titles, button reduced to a link-weight control. */
.id-tabpanel[data-id-panel="lessons"]{padding:15px 18px 16px}
.id-tabpanel .id-lessons-sub{font-size:13px;color:#6b7a90;margin:0 0 11px;line-height:1.5}
.id-tabpanel .id-lessons-grid{gap:30px;margin:0 0 12px}
.id-tabpanel .id-lessons-col-h{font-size:10.5px;letter-spacing:.11em;color:#8996a8;margin:0 0 6px}
.id-tabpanel .id-lessons-col > div{font-size:13.5px;padding:3px 0;gap:12px}
.id-tabpanel .id-lessons-col > div > span{font-size:11px;color:#98a4b4}
.id-tabpanel .id-res-btn{background:none;color:var(--id-accent,#1b3f7a);padding:4px 0;font-size:13px;text-decoration:underline;text-underline-offset:3px}
.id-tabpanel .id-res-btn:hover{background:none;filter:none;transform:none;opacity:.72}
/* --- END LESSONS PANEL SLIMMED --- */

/* --- SHRINK TO MATCH HERO · Lime 2026-09-10 ---------------------------------
   Panel measured 630px against a 349px hero. The copy was the cause: 12 lines
   in a 725px column. Widening the column and easing the leading drops it to
   about 8, which is the bulk of the saving. Rest comes off padding and the
   lessons rhythm. */
.id-more-media{width:60%}
.id-tick{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 48%,transparent 78%);mask-image:linear-gradient(90deg,transparent 0,#000 6%,#000 48%,transparent 78%)}
.id-more-text{margin-left:44%;width:56%}
.id-brand-more .id-p{font-size:15px;line-height:1.6;margin:0 0 11px}
.id-more-top{min-height:258px}
.id-more-text .id-tabbar{margin:15px 0 0}

.id-brand-more-h{padding:13px 22px;font-size:1.06rem}
.id-brand-more-body{padding:15px 22px 17px}
.id-tabs{margin:12px 0 0}
.id-tabpanel[data-id-panel="lessons"]{padding:13px 16px 14px}
.id-tabpanel .id-lessons-sub{margin:0 0 9px}
.id-tabpanel .id-lessons-grid{margin:0 0 10px;gap:26px}
.id-tabpanel .id-lessons-col > div{padding:2px 0}

@media (max-width:880px){
.id-more-media{width:100%}
.id-more-text{margin-left:0;width:100%}
.id-brand-more .id-p{font-size:14.5px}
}
/* --- END SHRINK TO MATCH HERO --- */

/* --- LESSONS PANEL, LEANER STILL · Lime 2026-09-10 --------------------------
   The downloads control moves onto the intro line instead of holding a row of
   its own, and the grade rhythm tightens. Same nine lessons, same 39 files,
   roughly a third less height. */
.id-tabpanel .id-lessons-sub{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px 20px;font-size:12.5px;margin:0 0 10px}
.id-tabpanel .id-lessons-sub > .id-sub-t{flex:1 1 auto;min-width:0}
.id-tabpanel .id-lessons-sub .id-btn-wrap{flex:0 0 auto}
.id-tabpanel .id-lessons-sub .id-res-btn{font-size:12.5px;padding:0}
.id-tabpanel .id-lessons-grid{gap:24px;margin:0}
.id-tabpanel .id-lessons-col-h{font-size:10px;margin:0 0 4px}
.id-tabpanel .id-lessons-col > div{font-size:13px;padding:1.5px 0}
.id-tabpanel .id-lessons-col > div > span{font-size:10.5px}
.id-tabpanel[data-id-panel="lessons"]{padding:12px 16px 13px}
@media (max-width:880px){
.id-tabpanel .id-lessons-sub{justify-content:flex-start}
}
/* --- END LESSONS PANEL, LEANER STILL --- */

/* --- TRUST STRIP ALIGNMENT · Lime 2026-09-10 --------------------------------
   Each claim sits in an equal-width cell but was left-aligned inside it, so the
   four read as ragged rather than evenly spaced. Icon and label are now centred
   as a pair within their own cell.
   Dividers are drawn as a positioned ::after rule between cells, not as a
   border on one side of an element. ::before is already the icon. They are
   dropped on mobile, where the cells stack. */
.id-hero .id-brand-trust > li{justify-content:center;position:relative}
.id-hero .id-brand-trust > li::after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);width:1px;height:22px;background:rgba(255,255,255,.24)}
.id-hero .id-brand-trust > li:last-child::after{display:none}
@media (max-width:640px){
.id-hero .id-brand-trust > li{justify-content:flex-start}
.id-hero .id-brand-trust > li::after{display:none}
}
/* --- END TRUST STRIP ALIGNMENT --- */

/* --- MAX WIDTH ON BIG SCREENS · Lime 2026-09-10 ------------------------------
   Removing the sidebar set the content to 100%, which on a 2560px monitor gave
   a 2455px hero and 178 characters per line of copy. The theme's own container
   caps at 1440px; this uses 1520 because the sidebar is gone and the space is
   ours, and caps the product grid on the same line so the hero and the tiles
   stay flush instead of one running wider than the other.
   Scoped to the brand page only, same as the sidebar rule it corrects. */
body.lime-hub .content.main-products-loop{max-width:1520px !important;margin-left:auto !important;margin-right:auto !important;float:none !important}
/* belt and braces: copy never outruns a comfortable measure even if the cap moves */
.id-more-text{max-width:840px}
.id-tabpanel .id-specs-list{max-width:1400px}
/* --- END MAX WIDTH ON BIG SCREENS --- */

/* --- TAB BAR AIR · buttons were crowding the last line of copy --- */
.id-more-text .id-tabbar{margin:22px 0 0}
/* --- END TAB BAR AIR --- */

/* --- LESSON LIST SIMPLIFIED · Lime 2026-09-10 --------------------------------
   The file count was pushed to the far edge of a wide column by space-between,
   so it read as a stranded number rather than a property of the lesson beside
   it. It now sits directly after the title. Band headings shortened to match.
   Ticker height reduced with it. */
.id-more-top{min-height:212px}
.id-tabpanel .id-lessons-col > div{justify-content:flex-start;gap:9px;align-items:baseline;padding:2.5px 0}
.id-tabpanel .id-lessons-col > div > span{flex:0 0 auto;font-size:10.5px;font-weight:600;color:#9aa6b6;letter-spacing:.02em}
.id-tabpanel .id-lessons-col-h{font-size:10.5px;letter-spacing:.13em;color:#8b98a9;margin:0 0 6px}
.id-tabpanel .id-lessons-grid{gap:34px}
/* --- END LESSON LIST SIMPLIFIED --- */

/* --- BUTTONS STACKED BESIDE THE COPY · Lime 2026-09-10 ----------------------
   The tab bar moves out of the copy block and becomes its own column to the
   right, stacked vertically. .id-more-top gets padding-left instead of the copy
   carrying a margin, which keeps the absolutely positioned ticker pinned to the
   left edge (an abspos child resolves against the padding box, so padding does
   not shift it). */
.id-more-top{display:flex;align-items:center;gap:26px;padding-left:44%;min-height:212px}
.id-more-text{margin-left:0;width:auto;flex:1 1 auto;min-width:0;max-width:820px}
.id-more-top > .id-tabbar{flex:0 0 210px;flex-direction:column;align-items:stretch;gap:8px;margin:0}
.id-more-top > .id-tabbar .id-btn-wrap{width:100%}
.id-more-top > .id-tabbar .id-tab{width:100%;text-align:left;padding:11px 15px}

@media (max-width:980px){
.id-more-top{flex-wrap:wrap}
.id-more-top > .id-tabbar{flex:1 1 100%;flex-direction:row;margin:16px 0 0}
.id-more-top > .id-tabbar .id-btn-wrap{width:auto}
.id-more-top > .id-tabbar .id-tab{width:auto;text-align:center}
}
@media (max-width:880px){
.id-more-top{padding-left:0;flex-direction:column;align-items:stretch;gap:20px}
.id-more-top > .id-tabbar{margin:0}
.id-more-top > .id-tabbar .id-tab{flex:1 1 auto}
}
/* --- END BUTTONS STACKED BESIDE THE COPY --- */

/* --- AUTHORISED RESELLER BADGE · Lime 2026-09-10 -----------------------------
   Sits on the byline row, directly after the maker's mark, because that is what
   it qualifies: this is their brand, and we are authorised to sell it. Confirmed
   by the client 2026-09-10 as true for every brand Andy carries, so this is a
   template element, not a ChompSaw one-off.
   Icon is a masked SVG tinted by the brand's light accent. */
.id-bnr-by{flex-wrap:wrap;gap:11px 13px}
.id-bnr-auth{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#fff;background:rgba(255,255,255,.15);border-radius:99px;padding:7px 15px 7px 12px;white-space:nowrap;text-shadow:0 1px 6px rgba(0,0,0,.35)}
.id-bnr-auth::before{content:"";flex:0 0 auto;width:15px;height:15px;background-color:var(--id-accent-lt,#ffd970);-webkit-mask-image:url(icons/id-ico-verified.svg);mask-image:url(icons/id-ico-verified.svg);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
@media (max-width:782px){.id-bnr-auth{font-size:10px;padding:6px 12px 6px 10px}}
/* --- END AUTHORISED RESELLER BADGE --- */

/* --- HERO SHOP CTA · Lime 2026-09-11 ----------------------------------------
   There was no buying action in the hero at all. Sits under the copy, above the
   maker byline, in the brand's own colour. Scoped to .id-bnr so it cannot leak. */
.id-bnr-cta-wrap{margin:0 0 16px}
.id-bnr .id-bnr-cta{display:inline-flex;align-items:center;gap:9px;border:0;cursor:pointer;font-family:inherit;
background:var(--id-accent,#f5b800);color:#fff;font-size:13.5px;font-weight:700;letter-spacing:.04em;
padding:13px 24px;border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,.28);
transition:filter .16s ease,transform .16s ease}
.id-bnr .id-bnr-cta:hover{filter:brightness(1.12);transform:translateY(-1px)}
.id-bnr .id-bnr-cta:focus-visible{outline:3px solid #fff;outline-offset:3px}
.id-bnr .id-bnr-cta::after{content:"↓";font-size:1.05em;opacity:.85}
@media (max-width:782px){.id-bnr .id-bnr-cta{width:100%;justify-content:center;padding:13px 18px}}
/* --- END HERO SHOP CTA --- */

/* --- COMPARISON TABLE · Lime 2026-09-11 --------------------------------------
   Fourth tab. All three ChompSaw listings carried the SAME description, so a
   buyer saw three prices with nothing to justify stepping up. Contents verified
   against Chompshop's own catalogue.
   Prices are NOT hardcoded here: the snippet reads them from the product tiles
   on this same page, so they can never disagree with a live promotion. */
.id-cmp-note{font-size:13px;line-height:1.55;color:#5b6c85;margin:0 0 14px}
.id-cmp-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.id-cmp{width:100%;border-collapse:collapse;font-size:13.5px;min-width:560px}
table.id-cmp thead th{text-align:center;padding:10px 12px;font-weight:700;color:#16233a;vertical-align:bottom;font-size:13.5px}
table.id-cmp thead th:first-child{text-align:left;color:#6b7a90;font-weight:600;font-size:11px;letter-spacing:.09em;text-transform:uppercase}
table.id-cmp .id-cmp-price{display:block;font-weight:800;font-size:16px;color:var(--id-accent,#1b3f7a);margin-top:3px}
table.id-cmp tbody th{text-align:left;font-weight:500;color:#2f3542;padding:10px 12px 10px 0;line-height:1.45}
table.id-cmp tbody td{text-align:center;padding:10px 12px;color:#3a3f4a}
table.id-cmp tbody tr:nth-child(odd) th,table.id-cmp tbody tr:nth-child(odd) td{background:#fff}
table.id-cmp td span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
table.id-cmp td.id-y::before{content:"";display:inline-block;width:7px;height:12px;border:solid var(--id-accent,#1b3f7a);border-width:0 2.5px 2.5px 0;transform:rotate(43deg)}
table.id-cmp td.id-n::before{content:"";display:inline-block;width:12px;height:2px;background:#c3cbd7;vertical-align:middle}
/* .id-cmp-v: a visible detail under the tick, for bundles that differ by version rather than by
   presence (RA2 Pro vs RA3, 39 vs 59 inch). Plain cells keep the screen-reader-only label above. */
table.id-cmp td span.id-cmp-v{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal;display:block;margin-top:5px;font-size:12.5px;line-height:1.3;color:#5b6472}
@media (max-width:880px){table.id-cmp{font-size:12.5px}table.id-cmp thead th{padding:8px 8px}table.id-cmp tbody td{padding:8px}}
/* --- END COMPARISON TABLE --- */

/* --- CTA ON THE BYLINE ROW · Lime 2026-09-11 ---------------------------------
   The Shop button sat on a row of its own between the copy and the byline,
   which read as stranded. It now sits inline with the maker mark and the
   reseller badge, so the hero has one row of credentials and actions instead
   of two competing blocks. Smaller than before, because it no longer has to
   carry a whole row. */
.id-bnr-by{align-items:center}
.id-bnr .id-bnr-cta{padding:10px 20px;font-size:12.5px;box-shadow:0 3px 12px rgba(0,0,0,.26)}
.id-bnr .id-bnr-cta::after{font-size:1em;margin-left:1px}
@media (max-width:782px){
.id-bnr-by{gap:9px 10px}
.id-bnr .id-bnr-cta{width:auto;padding:10px 18px}
}
/* --- END CTA ON THE BYLINE ROW --- */

/* --- BYLINE ROW FIT · Lime 2026-09-11 ----------------------------------------
   Measured: "by" 15 + logo 154 + badge 191 + CTA 136 + gaps 39 = ~535px against
   a 504px content width, so the CTA wrapped onto its own line. Widening the copy
   block and tightening the badge brings it to ~500px and onto one row. */
.id-bnr-in{max-width:660px}
.id-bnr-by{gap:10px 11px}
.id-bnr-auth{font-size:10px;letter-spacing:.06em;padding:6px 12px 6px 10px}
.id-bnr-auth::before{width:13px;height:13px}
.id-bnr-by .id-bnr-logo{height:40px;padding:7px 12px}
@media (max-width:980px){.id-bnr-in{max-width:none}}
/* --- END BYLINE ROW FIT --- */

/* --- LOGO IS THE SHOP BUTTON · Lime 2026-09-11 -------------------------------
   Two separate controls (logo pill + Shop Now button) read as clutter on one
   row. They are now a single control: the white pill holds the maker's mark and
   the action together, so it reads as "shop Chompshop" rather than as a logo
   sitting next to an unrelated button. */
.id-bnr-shop{display:inline-flex;align-items:center;gap:0;border:0;padding:0;cursor:pointer;
background:rgba(255,255,255,.96);border-radius:6px;overflow:hidden;font-family:inherit;
box-shadow:0 3px 14px rgba(0,0,0,.24);transition:transform .16s ease,box-shadow .16s ease}
.id-bnr-shop:hover{transform:translateY(-1px);box-shadow:0 6px 20px rgba(0,0,0,.3)}
.id-bnr-shop:focus-visible{outline:3px solid #fff;outline-offset:3px}

/* the logo sits inside the control now, so it loses its own pill */
.id-bnr-shop .id-bnr-logo{height:26px;background:none;border-radius:0;padding:0;margin:0 0 0 14px;box-shadow:none}

.id-bnr-shop-t{display:inline-flex;align-items:center;gap:7px;margin-left:13px;padding:11px 16px 11px 13px;
background:var(--id-accent,#1b3f7a);color:#fff;font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
align-self:stretch}
.id-bnr-shop-t::after{content:"↓";font-size:1.05em;opacity:.85}
.id-bnr-shop:hover .id-bnr-shop-t{filter:brightness(1.12)}

@media (max-width:782px){
.id-bnr-shop .id-bnr-logo{height:23px;margin-left:11px}
.id-bnr-shop-t{font-size:10.5px;padding:10px 13px 10px 11px;margin-left:10px}
}
/* --- END LOGO IS THE SHOP BUTTON --- */

/* --- RESELLER BADGE: TOP-LEFT CORNER · Lime 2026-09-11 -----------------------
   Sitting in the byline row it competed with the Shop control, because one is a
   credential and the other is an action. It is now a corner stamp on the hero
   itself: flush to the top-left, squared on the corner it touches so it reads as
   attached to the card rather than floating on it. Direct child of .id-bnr, so
   it positions against the hero box and not the vertically-centred copy. */
.id-bnr-cred{position:absolute;top:0;left:0;z-index:4}
.id-bnr-cred .id-bnr-auth{border-radius:0 0 7px 0;padding:9px 15px 9px 12px;
background:rgba(255,255,255,.15);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
font-size:10px;letter-spacing:.1em}
.id-bnr-cred .id-bnr-auth::before{width:13px;height:13px}

/* the copy stack needs headroom so the H1 never runs under the stamp */
.id-bnr-in{padding-top:52px}
@media (max-width:782px){
.id-bnr-cred .id-bnr-auth{font-size:9.5px;padding:8px 12px 8px 10px}
.id-bnr-in{padding-top:46px}
}
/* --- END RESELLER BADGE CORNER --- */

/* --- 3-UP GRID + INSET BADGE · Lime 2026-09-11 -------------------------------
   ChompSaw has 3 products in a 5-up grid, which left two empty slots on every
   row. Verified safe to do in CSS alone: the theme floats the tiles with plain
   percentage widths, there is no isotope/masonry JS positioning them and no
   inline styles to fight. Scoped to this one brand, so every other archive and
   the shop keep their 5-up layout.
   The badge also lifts off the corner and rounds fully, since an inset element
   reading as a squared-off tab makes no sense. */
body.lime-hub .products.row-count-5 > .product{
width:33.3333% !important;max-width:33.3333% !important;flex:0 0 33.3333% !important}
@media (max-width:991px){
body.lime-hub .products.row-count-5 > .product{width:50% !important;max-width:50% !important;flex:0 0 50% !important}
}
@media (max-width:575px){
body.lime-hub .products.row-count-5 > .product{width:100% !important;max-width:100% !important;flex:0 0 100% !important}
}

.id-bnr-cred{top:16px;left:16px}
.id-bnr-cred .id-bnr-auth{border-radius:99px;padding:9px 16px 9px 13px}
.id-bnr-in{padding-top:64px}
@media (max-width:782px){
.id-bnr-cred{top:12px;left:12px}
.id-bnr-in{padding-top:56px}
}
/* --- END 3-UP GRID + INSET BADGE --- */

/* --- 3-UP GRID, CORRECTED SELECTOR · Lime 2026-09-11 -------------------------
   The first attempt used a child combinator, but the theme wraps the tiles in
   an .ajax-content div, so .products > .product never matched. Descendant
   selector instead. Still scoped to this one brand. */
body.lime-hub .products .product{
width:33.3333% !important;max-width:33.3333% !important;flex:0 0 33.3333% !important}
@media (max-width:991px){
body.lime-hub .products .product{width:50% !important;max-width:50% !important;flex:0 0 50% !important}
}
@media (max-width:575px){
body.lime-hub .products .product{width:100% !important;max-width:100% !important;flex:0 0 100% !important}
}
/* --- END 3-UP GRID CORRECTED --- */

/* --- HERO AWARDS + PANEL BACKGROUND + SPACING · Lime 2026-09-11 --------------
   Awards are real and verifiable: TIME Best Inventions 2025 has a dedicated
   ChompSaw entry, Fast Company Innovation by Design 2025 is a listed win, and
   the 30,000+ figure is TIME's own reporting. Third-party credentials, not our
   claims, and no competitor in this market is using them. */
.id-bnr-awards{display:flex;flex-wrap:wrap;gap:7px 8px;margin:14px 0 0}
.id-bnr-awards span{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:600;
letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.9);
background:rgba(255,255,255,.13);border-radius:4px;padding:5px 10px;white-space:nowrap;
text-shadow:0 1px 5px rgba(0,0,0,.4)}
.id-bnr-awards span::before{content:"";flex:0 0 auto;width:4px;height:4px;border-radius:50%;
background:var(--id-accent-lt,#ffd970)}
@media (max-width:782px){.id-bnr-awards span{font-size:9.5px;padding:4px 8px}}

/* the brand's own photo, faded almost out, so each hub feels distinct without
   costing legibility or another image request (this file is already cached
   from the hero) */
.id-brand-more{background-image:linear-gradient(rgba(255,255,255,.965),rgba(255,255,255,.975)),var(--id-bg-soft,none);
background-size:cover,cover;background-position:center,center;background-repeat:no-repeat,no-repeat}
.id-brand-more[open] .id-brand-more-body{background:rgba(255,255,255,.55)}
.id-brand-more-h{background:transparent}
.id-brand-more-h:hover{background:rgba(255,255,255,.6)}

/* breathing room under the detail block now that it ends the page */
.id-below-loop{margin:34px 0 56px}
.id-below-loop .id-brand-more{margin-bottom:0}
@media (max-width:782px){.id-below-loop{margin:24px 0 40px}}
/* --- END HERO AWARDS + PANEL BACKGROUND --- */

/* --- AWARD CHIPS ARE LINKS · Lime 2026-09-11 ---------------------------------
   All three claims verified at source 2026-09-11: TIME Best Inventions (Oct 9
   2025, Leslie Horn Peterson), Fast Company Innovation by Design (Sep 15 2025,
   Mark Wilson), and the 30,000 figure from that same Fast Company piece
   ("a $250 creativity machine that's sold more than 30,000 units online").
   The two awards now link to their sources, because an unlinked badge is an
   assertion and a linked one is evidence. "worldwide" was added to the units
   figure so it cannot read as our own sales. */
.id-bnr-awards a,.id-bnr-awards span{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;
font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.9) !important;
background:rgba(255,255,255,.13);border-radius:4px;padding:5px 10px;white-space:nowrap;
text-shadow:0 1px 5px rgba(0,0,0,.4);text-decoration:none !important;transition:background .15s ease}
.id-bnr-awards a::before,.id-bnr-awards span::before{content:"";flex:0 0 auto;width:4px;height:4px;
border-radius:50%;background:var(--id-accent-lt,#ffd970)}
.id-bnr-awards a::after{content:"↗";font-size:.9em;opacity:.6;margin-left:1px}
.id-bnr-awards a:hover{background:rgba(255,255,255,.26);color:#fff !important}
.id-bnr-awards a:hover::after{opacity:1}
.id-bnr-awards a:focus-visible{outline:2px solid #fff;outline-offset:2px}
/* --- END AWARD CHIPS ARE LINKS --- */

/* --- HERO BREATHING ROOM · Lime 2026-09-11 -----------------------------------
   Measured the cramping rather than guessing at it:
     text column 660px, minus 76px padding = 584px of usable width
     award chips need 725px  ->  wrapped onto two rows, looked broken
     and there were 352px of dead space sitting between the text and the video
   So the column widens into space that was already empty. Nothing is squeezed
   and the video is untouched.
   Hero also gains height: the stack is 275px of content in a 326px box with
   64px of top padding, which is what made it feel stuffed. */
.id-bnr{min-height:404px}
.id-bnr-in{max-width:880px;padding:60px 38px 34px}

/* vertical rhythm through the stack */
.id-bnr-kick{margin:0 0 11px}
.id-bnr-h1{margin:0 0 13px}
.id-bnr-copy{margin:0 0 17px}
.id-bnr-awards{margin:0 0 18px;gap:8px}
.id-bnr-by{margin:0}

@media (max-width:1200px){
.id-bnr-in{max-width:none}
}
@media (max-width:980px){
.id-bnr{min-height:0}
.id-bnr-in{padding:58px 26px 26px}
}
/* --- END HERO BREATHING ROOM --- */

/* --- CHIP ICONS + 4-UP GRID · Lime 2026-09-11 --------------------------------
   Three chips of pure uppercase text read as a wall. Each now carries a masked
   icon: a medal for the two awards, a shipping box for the units figure. Same
   mask-plus-currentColor approach as the trust strip, so the icons take the
   chip's own colour and need no per-brand CSS.
   Grid moves to 4-up because Andy added the Table Accessories Set today, which
   left an orphan tile on row two. */
.id-bnr-awards a[data-ico]::before,.id-bnr-awards span[data-ico]::before{
width:13px;height:13px;border-radius:0;background-color:var(--id-accent-lt,#ffd970);
-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;
-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}
.id-bnr-awards [data-ico="award"]::before{-webkit-mask-image:url(icons/id-ico-award.svg);mask-image:url(icons/id-ico-award.svg)}
.id-bnr-awards [data-ico="units"]::before{-webkit-mask-image:url(icons/id-ico-units.svg);mask-image:url(icons/id-ico-units.svg)}

body.lime-hub .products .product{
width:25% !important;max-width:25% !important;flex:0 0 25% !important}
@media (max-width:1200px){
body.lime-hub .products .product{width:33.3333% !important;max-width:33.3333% !important;flex:0 0 33.3333% !important}
}
@media (max-width:991px){
body.lime-hub .products .product{width:50% !important;max-width:50% !important;flex:0 0 50% !important}
}
@media (max-width:575px){
body.lime-hub .products .product{width:100% !important;max-width:100% !important;flex:0 0 100% !important}
}
/* --- END CHIP ICONS + 4-UP GRID --- */
/* 2026-09-18: the 4-up rule above is hardcoded for every hub. Follow the loop's own row-count
   instead, so `loop_columns` in a brand config (which sets row-count-N) takes effect. Hubs without
   it render row-count-5 and keep 4-up. The sticky product bar (.id-stuck) keeps its own layout. */
@media (min-width:1201px){
body.lime-hub .products.row-count-3:not(.id-stuck) .product{width:33.3333% !important;max-width:33.3333% !important;flex:0 0 33.3333% !important}
body.lime-hub .products.row-count-2:not(.id-stuck) .product{width:50% !important;max-width:50% !important;flex:0 0 50% !important}
}

/* --- VIDEO HOVER PREVIEW + EXPAND · Lime 2026-09-11 --------------------------
   Rest: poster only, no Google code. Hover: muted preview in place, with a
   subtle lift so it reads as interactive. Click: grows to fill the hero height
   and unmutes. The still is always the banner; the video is enhancement on top,
   per the video-hero-banner playbook. */
.id-bnr-media{transition:flex-basis .42s cubic-bezier(.16,1,.3,1),max-width .42s cubic-bezier(.16,1,.3,1)}
.id-yt{transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s ease}
.id-yt-previewing{transform:scale(1.02);box-shadow:0 16px 48px rgba(0,0,0,.55)}
.id-yt-previewing .id-yt-btn{opacity:0;pointer-events:none;transition:opacity .25s ease}

/* click-to-expand: the video takes the hero's height, copy makes room */
.id-bnr-media--expanded{flex:0 0 56% !important;max-width:640px !important}
.id-yt-expanded{transform:none;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.id-bnr-media--expanded + .id-bnr-in,.id-bnr-in:has(~ .id-bnr-media--expanded){max-width:880px}

/* the poster must not sit above the playing frame */
.id-yt iframe{z-index:2}
.id-yt-previewing .id-yt-btn img,.id-yt-expanded .id-yt-btn{opacity:0}

@media (hover:none),(prefers-reduced-motion:reduce){
.id-yt-previewing{transform:none;box-shadow:0 14px 44px rgba(0,0,0,.5)}
.id-bnr-media{transition:none}
}
@media (max-width:980px){
.id-bnr-media--expanded{flex:1 1 100% !important;max-width:100% !important}
}

/* hero copy: cap the measure so it stops dropping two words onto their own line */
.id-bnr-copy{max-width:660px;text-wrap:pretty}
/* --- END VIDEO HOVER PREVIEW + EXPAND --- */

/* --- HERO POLISH R3 · Lime 2026-09-11 ----------------------------------------
   1. Video now fills the hero's full height when played. It stretches rather
      than being width-capped, so the 16:9 frame is driven by the hero height
      and the copy column yields. Before it was 640x360 in a 404px hero.
   2. The reseller badge is OUR credential; the three chips are THIRD-PARTY
      awards. They were styled identically, which flattened that distinction.
      Ours is now solid in the brand colour with a white tick; theirs stay
      translucent with a link arrow.
   3. The badge was 16px from the edge while all the copy starts at 38px. It now
      aligns to the same left edge as the kicker and headline. */

/* 1. full-height video on play */
.id-bnr-media--expanded{align-self:stretch !important;flex:0 0 auto !important;max-width:none !important;
margin:14px 14px 14px 0 !important;display:flex;align-items:center}
.id-yt-expanded{height:100%;width:auto;aspect-ratio:16/9;border-radius:8px}
.id-bnr-media--expanded + .id-bnr-in,.id-bnr-in:has(~ .id-bnr-media--expanded){max-width:880px}

/* 2. our credential reads as ours, not as a third-party award */
.id-bnr-cred .id-bnr-auth{background:var(--id-accent,#1b3f7a);color:#fff;font-size:10.5px;
letter-spacing:.11em;padding:8px 15px 8px 12px;border-radius:5px;
box-shadow:0 3px 12px rgba(0,0,0,.3);backdrop-filter:none;-webkit-backdrop-filter:none}
.id-bnr-cred .id-bnr-auth::before{background-color:#fff;width:14px;height:14px}

/* 3. aligned to the copy, not floating in the corner */
.id-bnr-cred{top:26px;left:38px}
.id-bnr-in{padding-top:74px}

@media (max-width:980px){
.id-bnr-media--expanded{align-self:auto !important;flex:1 1 100% !important;margin:0 !important}
.id-yt-expanded{height:auto;width:100%}
}
@media (max-width:782px){
.id-bnr-cred{top:20px;left:22px}
.id-bnr-in{padding-top:64px}
.id-bnr-cred .id-bnr-auth{font-size:9.5px;padding:7px 12px 7px 10px}
}
/* --- END HERO POLISH R3 --- */
/* Video expand, final word. Drive a definite WIDTH and let aspect-ratio derive
   the height. The previous pass did the reverse (height:100% + width:auto) which
   is circular under flex: the wrapper sized from its content's max-content width,
   the content sized from the wrapper's height, and Chrome broke the loop with the
   poster's intrinsic 0, collapsing the video to a 4px full-height sliver.
   --id-yt-w is set inline by snippet 50 from the hero's rest height. */
.id-bnr-media--expanded{align-self:center !important;flex:0 0 auto !important;
width:var(--id-yt-w,620px) !important;max-width:58% !important;min-width:0 !important;
margin:14px 14px 14px 0 !important;display:block !important}
.id-yt-expanded{width:100% !important;height:auto !important;aspect-ratio:16/9 !important;
transform:none;box-shadow:0 20px 60px rgba(0,0,0,.6)}
.id-bnr-media--expanded + .id-bnr-in,.id-bnr-in:has(~ .id-bnr-media--expanded){max-width:880px}
/* During the muted preview the player must not take the pointer. It sits on top
   at z-index 2, so it was eating the click that should expand and unmute, and a
   click inside a controls=0 player just toggles pause. */
.id-yt-previewing:not(.id-yt-expanded) iframe{pointer-events:none}
.id-yt-previewing:not(.id-yt-expanded){cursor:pointer}
.id-yt-previewing:not(.id-yt-expanded)::after{content:"Click for sound";position:absolute;
right:10px;bottom:10px;z-index:3;background:rgba(11,19,32,.82);color:#fff;font-size:11px;
font-weight:600;letter-spacing:.04em;padding:5px 10px;border-radius:4px;pointer-events:none}

/* Full-bleed hero band. The background photo and the blue trust strip run edge
   to edge, while the copy, the video and the trust items stay on the theme's
   content width so the hero still lines up with the product grid below it.
   --id-cw (content width) and --id-vw (viewport minus scrollbar) are published
   by snippet 50; the fallbacks keep this sane if that script does not run.
   --id-vw is used in place of 100vw because 100vw includes the scrollbar and
   would add a horizontal scrollbar of its own on classic-scrollbar platforms. */
.id-brand .id-hero{width:var(--id-vw,100vw);
margin-left:calc(50% - var(--id-vw,100vw) / 2);
margin-right:calc(50% - var(--id-vw,100vw) / 2);
border-radius:0;box-shadow:none}
.id-brand .id-hero .id-bnr{max-width:none;margin-left:0;margin-right:0;
padding-left:max(0px,calc((100% - var(--id-cw,1490px)) / 2));
padding-right:max(0px,calc((100% - var(--id-cw,1490px)) / 2))}
.id-brand .id-hero .id-brand-trust{padding-left:max(0px,calc((100% - var(--id-cw,1490px)) / 2));
padding-right:max(0px,calc((100% - var(--id-cw,1490px)) / 2))}
@media (min-width:1025px){
.id-brand .id-hero .id-bnr-cred{left:calc(max(0px,(100% - var(--id-cw,1490px)) / 2) + 38px)}
}

/* The theme's breadcrumb strip repeats what the hero already says, and its 25px
   bottom margin was the white gap sitting above the full-bleed band. Hidden on
   this hub only, so every other archive keeps its breadcrumbs. */
body.lime-hub .page-heading{display:none}
/* More air top and bottom. The band read as squeezed once the video grew. */
.id-brand .id-hero .id-bnr-in{padding-top:98px;padding-bottom:56px}
.id-brand .id-hero .id-bnr-media{margin-top:24px;margin-bottom:24px}

/* The band is pinned by a min-height, so the extra padding alone could not
   make it taller. Raised so the hero has real room above and below. */
.id-brand .id-hero .id-bnr{min-height:462px}

/* The reseller badge sat 70px clear of the kicker, which read as floating. Drop
   it so it sits directly on top of the first line. Desktop only, the stacked
   layout below 1025px places it against the top edge on purpose. */
@media (min-width:1025px){
.id-brand .id-hero .id-bnr-cred{top:80px}
}
/* Maple leaf beside the tick. The badge is already an inline-flex row with a 7px
   gap, so the leaf is added as ::after and pulled in front of the text with
   order, giving check, leaf, wordmark with the existing spacing. Same icon the
   trust strip uses for Ships from Canada, so the set stays consistent. */
.id-brand .id-bnr-auth::before{order:-2}
.id-brand .id-bnr-auth::after{content:"";order:-1;flex:0 0 auto;width:15px;height:15px;
background-color:#fff;
-webkit-mask:url(icons/id-ico-leaf.svg) center/contain no-repeat;
mask:url(icons/id-ico-leaf.svg) center/contain no-repeat}

/* Reseller badge, icon panel.
   Order is leaf then tick, with a hairline between them, and the icon side sits
   on Canadian red while the wordmark keeps the brand blue. The split is a hard
   colour stop rather than a second element, because the badge is a single span
   and both its pseudo-elements are already spent on the two icons.
   69px = 12 pad + 15 leaf + 7 gap + 1 rule + 7 pad + 15 tick + 12 pad, so the
   red ends 12px past the tick, matching the 12px in front of the leaf, and the
   rule sits with 7px of air on both sides. */
.id-brand .id-bnr-auth{background:linear-gradient(90deg,#d52b1e 0 69px,var(--id-accent,#056db7) 69px)}
/* The two source icons fill their 24x24 artboards very differently: the tick is
   a r=9.2 circle plus a 2px stroke, so ~85% of the box, while the leaf spans
   only y2.2 to y18, so ~66%, and its centre sits at y10.1 rather than 12. At
   equal box sizes the leaf therefore renders smaller and about 1.5px high.
   Scaling the leaf's mask to 130% and dropping its origin to 16% matches the
   two optically while both boxes stay 15px, so the layout does not move. */
.id-brand .id-bnr-auth::after{order:-2;width:15px;height:15px;
-webkit-mask-size:130%;mask-size:130%;
-webkit-mask-position:center 16%;mask-position:center 16%}
.id-brand .id-bnr-auth::before{order:-1;width:15px;height:15px;box-sizing:content-box;
padding:0 12px 0 7px;margin-right:7px;border-left:1px solid rgba(255,255,255,.45);
-webkit-mask-origin:content-box;mask-origin:content-box;
-webkit-mask-clip:content-box;mask-clip:content-box}
/* Byline lifted onto the title's line, without touching the term description
   markup, so the hero HTML stays identical for the other 64 brands. Grid was the
   first attempt and sat the byline far right, because with two auto columns the
   copy and award rows that span them, not the word ChompSaw, decided column
   one's width. inline-block was the second attempt and broke to a new line,
   because copy and awards sit between the title and the byline in the DOM and
   are block level. So: grid again, but max-content for the title column and 1fr
   for the rest, which pins column one to the word. Below 1025px it stacks. */
@media (min-width:1025px){
.id-brand .id-bnr-in{display:grid;grid-template-columns:max-content 1fr;column-gap:22px;
grid-template-areas:"kick kick" "h1 by" "copy copy" "awards awards"}
.id-brand .id-bnr-kick{grid-area:kick}
.id-brand .id-bnr-h1{grid-area:h1;align-self:center}
.id-brand .id-bnr-copy{grid-area:copy;min-width:0}
.id-brand .id-bnr-awards{grid-area:awards;min-width:0}
.id-brand .id-bnr-by{grid-area:by;align-self:center;justify-self:start;margin-bottom:13px}
}

/* Comparison table: the label column sat 12px off the panel edge, which read as
   cramped, and the rows were tight vertically once the table gained a fourth
   row. Inset the outer columns and give every row a little more air. */
.id-brand .id-cmp th,.id-brand .id-cmp td{padding-top:12px;padding-bottom:12px}
.id-brand .id-cmp th:first-child,.id-brand .id-cmp td:first-child{padding-left:24px}
.id-brand .id-cmp th:last-child,.id-brand .id-cmp td:last-child{padding-right:24px}

/* ===== Sections below the product grid (2026-09-14): reviews carousel + studio gallery ===== */
.id-brand .id-sec{margin:34px 0 0;border-radius:8px;overflow:hidden}
.id-brand .id-sec-in{padding:40px 44px 36px;max-width:1120px;margin:0 auto;position:relative;z-index:1}
.id-brand .id-sec-kick{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--id-accent-lt,#8FCBEE);margin:0 0 8px}
.id-brand .id-sec-h{font-size:26px;font-weight:700;line-height:1.2;margin:0 0 8px}
.id-brand .id-sec-sub{font-size:14px;line-height:1.55;max-width:680px;margin:0 0 22px;opacity:.9}
.id-brand .id-sec-sub a{color:inherit;text-decoration:underline}
/* reviews: photo with gradient so the quote reads, quotes fade in place */
.id-brand .id-rev{position:relative;color:#fff;background:var(--lh-rev-base,#0b1320) var(--id-rev-bg) center/cover no-repeat;min-height:380px}
.id-brand .id-rev::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,color-mix(in srgb,var(--lh-rev-shade,#08101c) 94%,transparent) 0%,color-mix(in srgb,var(--lh-rev-shade,#08101c) 86%,transparent) 48%,color-mix(in srgb,var(--lh-rev-shade,#08101c) 35%,transparent) 100%)}
.id-brand .id-rev-track{position:relative;min-height:168px;max-width:720px}
.id-brand .id-rev-card{position:absolute;inset:0;opacity:0;transition:opacity .7s ease;pointer-events:none}
.id-brand .id-rev-card[data-id-active]{position:relative;opacity:1;pointer-events:auto}
.id-brand .id-rev-stars{color:#ffd970;font-size:18px;letter-spacing:2px;margin:0 0 10px}
.id-brand .id-rev-stars::before{content:"\2605\2605\2605\2605\2605"}
.id-brand .id-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.id-brand .id-rev-q{font-size:20px;line-height:1.45;font-weight:500;margin:0 0 14px}
.id-brand .id-rev-who{font-size:13px;font-weight:700;letter-spacing:.04em}
.id-brand .id-rev-who span{display:block;font-weight:400;opacity:.8;letter-spacing:0;margin-top:2px}
.id-brand .id-rev-dots{display:flex;gap:7px;margin:18px 0 0}
.id-brand .id-rev-dot{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.35);border:0;padding:0;cursor:pointer}
.id-brand .id-rev-dot[data-id-on]{background:#fff}
.id-brand .id-rev-note{margin:22px 0 0;padding:10px 14px;font-size:13px;line-height:1.5;background:rgba(255,255,255,.1);border-radius:6px;max-width:720px}
/* gallery */
.id-brand .id-gal{background:#f4f7fb}
.id-brand .id-gal .id-sec-kick{color:var(--id-accent,#056DB7)}
.id-brand .id-gal .id-sec-h{color:#111d31}
.id-brand .id-gal-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.id-brand .id-gal-grid img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;border-radius:8px;background:#fff;display:block;box-shadow:0 2px 10px rgba(16,26,43,.08);transition:transform .25s ease}
.id-brand .id-gal-grid img:hover{transform:scale(1.03)}
@media (max-width:900px){
.id-brand .id-sec-in{padding:28px 22px}
.id-brand .id-sec-h{font-size:22px}
.id-brand .id-rev-q{font-size:17px}
.id-brand .id-gal-grid{grid-template-columns:repeat(2,1fr)}
}
@media (prefers-reduced-motion:reduce){.id-brand .id-rev-card{transition:none}}

/* awards: four chips read better as a deliberate 2x2 than a 3+1 wrap */
@media (min-width:1025px){
.id-brand .id-bnr-awards{display:grid;grid-template-columns:repeat(2,max-content);gap:8px 10px;max-width:none}
}
/* reviews, simplified: logo, quote, name, photo. One small source line. */
.id-brand .id-rev{min-height:420px}
.id-brand .id-rev .id-sec-in{padding:44px 52px 40px;max-width:1160px}
.id-brand .id-rev-top{display:flex;align-items:center;gap:18px;margin:0 0 30px}
.id-brand .id-rev-logo{width:150px;height:auto;display:block;opacity:.95}
.id-brand .id-rev-src{font-size:12px;letter-spacing:.04em;color:#fff;text-decoration:none;opacity:.8;border-left:1px solid rgba(255,255,255,.35);padding-left:16px;line-height:1.3}
.id-brand .id-rev-src:hover{opacity:1;text-decoration:underline}
.id-brand .id-rev-track{max-width:760px;min-height:200px}
.id-brand .id-rev-stars{font-size:16px;margin:0 0 14px}
.id-brand .id-rev-q{font-size:27px;line-height:1.35;font-weight:500;margin:0 0 20px;letter-spacing:-.005em}
.id-brand .id-rev-who{font-size:14px}
.id-brand .id-rev-who span{font-size:12.5px;opacity:.7}
.id-brand .id-rev-dots{margin-top:26px}
@media (max-width:900px){.id-brand .id-rev .id-sec-in{padding:30px 22px}.id-brand .id-rev-q{font-size:20px}.id-brand .id-rev-logo{width:110px}}
/* rating pill in the byline: stars, score, count; scrolls to the reviews block */
.id-brand .id-bnr-rating{display:inline-flex;align-items:center;gap:8px;margin-left:14px;padding:8px 13px;border:1px solid rgba(255,255,255,.28);border-radius:6px;background:rgba(255,255,255,.08);color:#fff;cursor:pointer;font:inherit;line-height:1;transition:background .18s ease,border-color .18s ease}
.id-brand .id-bnr-rating:hover{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.5)}
.id-brand .id-bnr-rating:focus-visible{outline:3px solid #ffd970;outline-offset:2px}
.id-brand .id-bnr-rating-stars{color:#ffd970;font-size:13px;letter-spacing:1px}
.id-brand .id-bnr-rating-stars::before{content:"\2605\2605\2605\2605\2605"}
.id-brand .id-bnr-rating-t{font-size:12.5px;font-weight:700;letter-spacing:.02em}
.id-brand .id-bnr-rating-n{font-size:12px;opacity:.85;border-left:1px solid rgba(255,255,255,.3);padding-left:8px}
@media (max-width:900px){.id-brand .id-bnr-rating{margin:10px 0 0}}
/* gallery as a collage: one hero tile, four supporting, hover lifts + caption, click opens lightbox */
.id-brand .id-gal-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:230px;gap:14px}
.id-brand .id-gal-item{position:relative;overflow:hidden;border-radius:10px;background:#fff;cursor:zoom-in;box-shadow:0 2px 10px rgba(16,26,43,.08)}
.id-brand .id-gal-big{grid-column:span 2;grid-row:span 2}
.id-brand .id-gal-pic{height:100%}
.id-brand .id-gal-item img{width:100%;height:100%;object-fit:cover;display:block;aspect-ratio:auto;border-radius:0;box-shadow:none;transition:transform .45s cubic-bezier(.16,1,.3,1)}
.id-brand .id-gal-item:hover img{transform:scale(1.06)}
.id-brand .id-gal-cap{position:absolute;left:0;right:0;bottom:0;padding:26px 14px 12px;color:#fff;font-size:12.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.55));opacity:0;transform:translateY(6px);transition:opacity .3s ease,transform .3s ease}
.id-brand .id-gal-item:hover .id-gal-cap{opacity:1;transform:none}
.id-brand .id-gal-item:focus-visible{outline:3px solid var(--id-accent,#056DB7);outline-offset:2px}
@media (max-width:900px){.id-brand .id-gal-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:160px}.id-brand .id-gal-big{grid-column:span 2;grid-row:span 2}}
/* lightbox */
.id-brand .id-lb{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:24px}
.id-brand .id-lb[hidden]{display:none}
.id-brand .id-lb-bg{position:absolute;inset:0;background:rgba(6,12,22,.86)}
.id-brand .id-lb-card{position:relative;max-width:min(1100px,94vw);max-height:92vh;background:#fff;border-radius:10px;overflow:hidden;box-shadow:0 30px 80px rgba(0,0,0,.5)}
.id-brand .id-lb-img{display:block;max-width:100%;max-height:82vh;width:auto;height:auto;margin:0 auto}
.id-brand .id-lb-cap{padding:12px 16px;font-size:13px;color:#3d4a5c;text-align:center}
.id-brand .id-lb-x{position:absolute;top:8px;right:8px;width:38px;height:38px;border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;font-size:24px;line-height:1;cursor:pointer;z-index:2}
/* taller hero: more air above the fold, per Sehroz 2026-09-14 */
.id-brand .id-hero .id-bnr{min-height:540px}
.id-brand .id-hero .id-bnr-in{padding-top:110px;padding-bottom:70px}
/* hero air pass (2026-09-14): rating as plain text, more space between the left-column pieces */
.id-brand .id-bnr-rating{border:0;background:none;padding:0;margin:10px 0 0 2px;gap:9px}
.id-brand .id-bnr-rating:hover{background:none;text-decoration:underline}
.id-brand .id-bnr-rating-stars{font-size:14px}
.id-brand .id-bnr-rating-t{font-size:13px}
.id-brand .id-bnr-rating-n{border-left:1px solid rgba(255,255,255,.35);padding-left:9px;font-size:12.5px}
@media (min-width:1025px){
.id-brand .id-bnr-kick{margin-bottom:14px}
.id-brand .id-bnr-h1{font-size:46px;line-height:1.05}
.id-brand .id-bnr-copy{margin:16px 0 22px;max-width:620px;font-size:15.5px;line-height:1.6}
.id-brand .id-bnr-awards{gap:10px 12px}
.id-brand .id-bnr-in{row-gap:0}
}
/* controls are anchors now (theme scripts swallow <button> clicks on archives); keep them looking as before */
.id-brand a.id-bnr-shop,.id-brand a.id-bnr-rating{text-decoration:none;color:#fff;display:inline-flex;align-items:center}
.id-brand a.id-bnr-shop:hover,.id-brand a.id-bnr-rating:hover{color:#fff}
/* hero rework 2026-09-14: left column restacked (badge, kicker, title, rating, copy, awards, byline),
   product cutout on the right, video moved to a play pill that opens in the lightbox. The old in-place
   facade stays in the markup but hidden, so snippets 42/50 keep working if this is ever reverted. */
@media (min-width:1025px){
.id-brand .id-bnr-in{display:grid;grid-template-columns:1fr;grid-template-areas:"kick" "h1" "rate" "copy" "awards" "by";column-gap:0;row-gap:0;max-width:56% !important;padding-top:104px;padding-bottom:64px}
.id-brand .id-bnr-kick{grid-area:kick;margin-bottom:12px}
.id-brand .id-bnr-h1{grid-area:h1;font-size:50px;margin:0 0 12px}
.id-brand .id-bnr-rate{grid-area:rate;margin:0 0 18px}
.id-brand .id-bnr-rating{margin:0}
.id-brand .id-bnr-copy{grid-area:copy;margin:0 0 24px;max-width:600px}
.id-brand .id-bnr-awards{grid-area:awards;margin:0 0 28px}
.id-brand .id-bnr-by{grid-area:by;margin:0;justify-self:start}
.id-brand .id-bnr-media{flex:0 0 40% !important;max-width:none !important;width:auto !important;margin:0 0 0 auto !important;align-self:center !important;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px}
}
.id-brand .id-bnr-media .id-yt{display:none !important}
.id-brand .id-bnr-cutwrap{width:100%;display:flex;justify-content:center}
.id-brand .id-bnr-cut{width:100%;max-width:560px;height:auto;display:block;filter:drop-shadow(0 34px 38px rgba(0,0,0,.5)) drop-shadow(0 4px 8px rgba(0,0,0,.35))}
.id-brand .id-bnr-play{display:inline-flex;align-items:center;gap:10px;padding:11px 18px 11px 14px;border:1px solid rgba(255,255,255,.55);border-radius:99px;color:#fff;text-decoration:none;font-size:13px;font-weight:700;letter-spacing:.04em;background:rgba(0,0,0,.28);backdrop-filter:blur(4px);transition:background .18s ease,border-color .18s ease}
.id-brand .id-bnr-play::before{content:"";width:0;height:0;border-style:solid;border-width:7px 0 7px 12px;border-color:transparent transparent transparent #fff;margin-left:3px}
.id-brand .id-bnr-play:hover{background:rgba(255,255,255,.16);border-color:#fff;color:#fff}
.id-brand .id-lb-pic iframe{display:block;width:min(1000px,90vw);aspect-ratio:16/9;height:auto;border:0}
@media (max-width:1024px){.id-brand .id-bnr-media{display:flex;flex-direction:column;align-items:center;gap:16px;margin:0 0 22px !important}.id-brand .id-bnr-cut{max-width:320px}}
/* cutout bump: it had room, let it own the right column */
@media (min-width:1025px){.id-brand .id-bnr-media{flex-basis:42% !important}.id-brand .id-bnr-cut{max-width:640px}}
/* video back, cutout as a corner badge (Sehroz 2026-09-14): the in-place YouTube facade returns, the play
   pill goes, and the product cutout hangs off the video's bottom-left corner. Hidden while expanded. */
.id-brand .id-bnr-media .id-yt{display:block !important}
.id-brand .id-bnr-playwrap{display:none}
@media (min-width:1025px){
.id-brand .id-bnr-media{display:block;position:relative;flex:0 0 44% !important;max-width:560px !important;margin:0 0 0 auto !important;align-self:center !important;overflow:visible}
.id-brand .id-bnr-cutwrap{position:absolute;left:-118px;bottom:-34px;width:300px;z-index:4;pointer-events:none;justify-content:flex-start}
.id-brand .id-bnr-cut{max-width:100%;filter:drop-shadow(0 22px 26px rgba(0,0,0,.55)) drop-shadow(0 3px 6px rgba(0,0,0,.4));transform:rotate(-4deg)}
.id-brand .id-bnr-media--expanded .id-bnr-cutwrap{display:none}
}
@media (max-width:1024px){
.id-brand .id-bnr-media{position:relative;display:block}
.id-brand .id-bnr-cutwrap{position:absolute;left:-10px;bottom:-22px;width:150px;z-index:4;pointer-events:none}
.id-brand .id-bnr-cut{max-width:100%;transform:rotate(-4deg)}
}
/* cutout floats gently over the video corner */
@keyframes id-float{0%,100%{transform:rotate(-4deg) translateY(0)}50%{transform:rotate(-4deg) translateY(-9px)}}
.id-brand .id-bnr-cut{animation:id-float 4.6s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.id-brand .id-bnr-cut{animation:none}}
/* award seals in the hero instead of text chips (2026-09-14). Seals from the Chompshop marquee. */
.id-brand .id-bnr-awards--logos{align-items:center;gap:10px 18px;margin-top:16px}
.id-brand .id-bnr-awards--logos a{background:none !important;padding:0 !important;border:0 !important;box-shadow:none !important;display:inline-flex;align-items:center;opacity:.96;transition:transform .2s,opacity .2s}
.id-brand .id-bnr-awards--logos a::before,.id-brand .id-bnr-awards--logos a::after{content:none !important}
.id-brand .id-bnr-awards--logos a:hover{opacity:1;transform:translateY(-2px);background:none !important}
.id-brand .id-bnr-awards--logos img{display:block;width:auto;height:60px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.35))}
.id-brand .id-bnr-awards--logos .id-bnr-aw-time{height:66px}
.id-brand .id-bnr-awards--logos .id-bnr-aw-fc{height:20px;filter:brightness(0) invert(1);opacity:.9}
@media (max-width:782px){.id-brand .id-bnr-awards--logos{gap:8px 14px}.id-brand .id-bnr-awards--logos img{height:46px}.id-brand .id-bnr-awards--logos .id-bnr-aw-time{height:50px}.id-brand .id-bnr-awards--logos .id-bnr-aw-fc{height:16px}}
/* kraft cardboard ground for the lesson strip and the FAQ, with a light-to-warm gradient over it */
.id-brand .id-les,.id-brand .id-faq{position:relative;color:#2e2114;background:var(--lh-surface,#c9a674) var(--lh-img-kraft) center/512px repeat}
.id-brand .id-les::before,.id-brand .id-faq::before{content:"";position:absolute;inset:0;pointer-events:none}
.id-brand .id-les{margin:26px 0 0;border-radius:8px;overflow:hidden}
.id-brand .id-les::before{background:linear-gradient(90deg,rgba(255,250,242,.78),rgba(255,250,242,.42) 55%,rgba(80,52,24,.18))}
.id-brand .id-les-in{position:relative;z-index:1;display:flex;align-items:center;justify-content:space-between;gap:22px 36px;flex-wrap:wrap;padding:26px 36px;max-width:1120px;margin:0 auto}
.id-brand .id-les-txt{flex:1 1 420px;min-width:0}
.id-brand .id-les-k{font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--lh-surface-accent,#7a4f22);margin:0 0 6px}
.id-brand .id-les-h{font-size:22px;font-weight:700;line-height:1.2;margin:0 0 6px;color:#1f160c}
.id-brand .id-les-s{font-size:14px;line-height:1.5;margin:0;opacity:.85}
.id-brand .id-les-cta{display:flex;align-items:center;gap:14px 18px;flex-wrap:wrap}
.id-brand .id-les-pills{display:flex;gap:6px}
.id-brand .id-les-pills span{font-size:11px;font-weight:700;letter-spacing:.06em;padding:5px 10px;border-radius:999px;background:rgba(255,255,255,.75);color:#5a3a18}
.id-brand .id-les .id-btn-wrap{margin:0}
.id-brand .id-faq::before{background:linear-gradient(180deg,color-mix(in srgb,var(--lh-faq-light,#fffaf2) 66%,transparent),color-mix(in srgb,var(--lh-faq-light,#fffaf2) 34%,transparent) 45%,color-mix(in srgb,var(--lh-faq-shade,#462d14) 30%,transparent))}
.id-brand .id-faq .id-sec-kick{color:var(--lh-surface-accent,#7a4f22)}
.id-brand .id-faq .id-sec-h{color:#1f160c}
.id-brand .id-faq-src{font-size:13px;line-height:1.55;max-width:760px;margin:0 0 22px;opacity:.85}
.id-brand .id-faq-src a{color:inherit;text-decoration:underline}
.id-brand .id-faq-list{display:grid;grid-template-columns:1fr 1fr;gap:12px 18px;align-items:start}
.id-brand .id-faq-i{background:rgba(255,255,255,.93);border-radius:8px;box-shadow:0 2px 12px rgba(60,40,20,.14);margin:0}
.id-brand .id-faq-i summary{list-style:none;cursor:pointer;padding:16px 52px 16px 20px;font-weight:700;font-size:15.5px;line-height:1.35;position:relative;color:#1b1b1b;margin:0}
.id-brand .id-faq-i summary::-webkit-details-marker{display:none}
.id-brand .id-faq-i summary::marker{content:""}
.id-brand .id-faq-i summary::after{content:"+";position:absolute;right:16px;top:50%;transform:translateY(-50%);width:26px;height:26px;border-radius:50%;background:#f2e6d3;color:var(--lh-surface-accent,#7a4f22);font-weight:700;font-size:18px;line-height:26px;text-align:center}
.id-brand .id-faq-i[open] summary::after{content:"\2212"}
.id-brand .id-faq-i[open] summary{color:var(--lh-surface-accent,#7a4f22)}
.id-brand .id-faq-a{padding:0 20px 18px;font-size:14.5px;line-height:1.6;color:#333}
@media (max-width:900px){.id-brand .id-faq-list{grid-template-columns:1fr}.id-brand .id-les-in{padding:22px 22px}.id-brand .id-les-h{font-size:19px}}
/* seals on one row, the units chip on its own line beneath them */
.id-brand .id-bnr-awards--logos{gap:8px 16px}
.id-brand .id-bnr-awards--logos img{height:54px}
.id-brand .id-bnr-awards--logos .id-bnr-aw-time{height:60px}
.id-brand .id-bnr-awards--logos .id-bnr-aw-fc{height:18px}
.id-brand .id-bnr-awards--logos span{flex:0 0 auto;width:100%;justify-content:flex-start;align-self:flex-start;margin-top:2px}
.id-brand .id-bnr-awards--logos span{width:auto;flex-basis:100%;max-width:max-content}
/* awards as four identical tiles (Sehroz: same size, same shape, aligned). Units tile matches the seals. */
.id-brand .id-bnr-awards--tiles{display:grid !important;grid-template-columns:repeat(4,74px);gap:10px;margin-top:18px;align-items:stretch}
.id-brand .id-bnr-awards--tiles > a,.id-brand .id-bnr-awards--tiles > span{display:flex !important;flex-direction:column;align-items:center;justify-content:center;width:74px;height:74px;padding:7px !important;border-radius:12px;background:rgba(255,255,255,.96) !important;box-shadow:0 6px 16px rgba(0,0,0,.28) !important;opacity:1;text-shadow:none;letter-spacing:0;text-transform:none;white-space:normal;margin:0}
.id-brand .id-bnr-awards--tiles > span::before,.id-brand .id-bnr-awards--tiles > a::before,.id-brand .id-bnr-awards--tiles > a::after{content:none !important}
.id-brand .id-bnr-awards--tiles img{display:block;max-width:100%;max-height:100%;width:auto;height:auto !important;object-fit:contain;filter:none !important;opacity:1}
.id-brand .id-bnr-awards--tiles .id-bnr-aw-toty{width:60px;height:60px !important}
.id-brand .id-bnr-awards--tiles .id-bnr-aw-time{height:58px !important}
.id-brand .id-bnr-awards--tiles .id-bnr-aw-fc{width:60px}
.id-brand .id-bnr-awards--tiles a:hover{transform:translateY(-3px);background:#fff !important}
.id-brand .id-bnr-units strong{font-size:15px;font-weight:800;color:#0b1320;line-height:1;letter-spacing:-.01em}
.id-brand .id-bnr-units em{font-style:normal;font-size:8.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#5d6b7c;margin-top:4px;line-height:1.1;text-align:center}
@media (max-width:782px){.id-brand .id-bnr-awards--tiles{grid-template-columns:repeat(4,60px);gap:8px}.id-brand .id-bnr-awards--tiles > a,.id-brand .id-bnr-awards--tiles > span{width:60px;height:60px;padding:5px !important;border-radius:10px}.id-brand .id-bnr-awards--tiles .id-bnr-aw-toty{width:48px;height:48px !important}.id-brand .id-bnr-awards--tiles .id-bnr-aw-time{height:46px !important}.id-brand .id-bnr-units strong{font-size:12px}.id-brand .id-bnr-units em{font-size:7px}}
/* cutout moves to the top-left corner of the video so the play button and the poster's lower band stay clear */
@media (min-width:1025px){.id-brand .id-bnr-cutwrap{bottom:auto;top:-46px;left:-124px;width:270px}}
@media (max-width:1024px){.id-brand .id-bnr-cutwrap{bottom:auto;top:-18px;left:-10px;width:130px}}
/* lesson strip, gallery and FAQ break out to the full page width */
.id-brand .id-les,.id-brand .id-gal,.id-brand .id-faq,.id-brand .id-help{width:100vw;max-width:100vw;position:relative;left:50%;margin-left:-50vw;margin-right:0;border-radius:0}
.id-brand .id-les{margin-top:30px}
.id-brand .id-les-in,.id-brand .id-faq .id-sec-in{max-width:1280px;padding-left:40px;padding-right:40px}
.id-brand .id-gal .id-sec-in{max-width:1400px;padding:44px 40px 40px}
.id-brand .id-gal{background:#0f1a2b}
.id-brand .id-gal .id-sec-kick{color:#8FCBEE}
.id-brand .id-gal .id-sec-h{color:#fff}
.id-brand .id-gal-grid{gap:10px}
.id-brand .id-gal-item{border-radius:6px}
@media (max-width:900px){.id-brand .id-les-in,.id-brand .id-faq .id-sec-in,.id-brand .id-gal .id-sec-in{padding-left:20px;padding-right:20px}}
/* gallery as five equal squares, full width: the kit photos are square studio shots, the collage was cropping them */
.id-brand .id-gal-grid{display:grid;grid-template-columns:repeat(5,1fr);grid-auto-rows:auto;gap:12px}
.id-brand .id-gal-item,.id-brand .id-gal-big{grid-column:auto !important;grid-row:auto !important;aspect-ratio:1/1;border-radius:8px;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.id-brand .id-gal-item img{object-fit:cover;object-position:center}
@media (max-width:900px){.id-brand .id-gal-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:auto}.id-brand .id-gal-item,.id-brand .id-gal-big{grid-column:auto !important;grid-row:auto !important}}
@media (min-width:1025px){.id-brand .id-bnr-cutwrap{top:-28px;left:-118px;width:260px}}
/* kicker sits under the reseller pill and peeks out; keep its grid slot, hide the text */
.id-brand .id-bnr-kick{visibility:hidden}
/* taller hero, roomier sections (Sehroz 2026-09-14 evening): hero felt squished, blocks below sat on top of each other */
@media (min-width:1025px){
.id-brand .id-bnr{min-height:640px !important}
.id-brand .id-bnr-in{padding-top:112px !important;padding-bottom:72px !important}
.id-brand .id-bnr-cutwrap{top:-34px;left:auto;right:-110px;width:250px;justify-content:flex-end}
}
.id-brand .id-bnr-cut{transform:rotate(-3deg)}
@keyframes id-float{0%,100%{transform:rotate(-3deg) translateY(0)}50%{transform:rotate(-3deg) translateY(-9px)}}
.id-brand .id-les{margin-top:48px}
.id-brand .id-les-in{padding-top:34px;padding-bottom:34px}
.id-brand details.id-brand-more{margin-top:48px}
.id-brand .id-sec{margin-top:56px}
.id-brand .id-rev .id-sec-in{padding-top:56px;padding-bottom:52px}
.id-brand .id-gal .id-sec-in{padding-top:56px;padding-bottom:56px}
.id-brand .id-faq .id-sec-in{padding-top:56px;padding-bottom:60px}
.id-brand .id-faq{margin-bottom:0}
.id-brand .id-bnr-kick{visibility:hidden}
@media (max-width:900px){.id-brand .id-les,.id-brand details.id-brand-more{margin-top:32px}.id-brand .id-sec{margin-top:36px}}
/* cutout to the top-right corner of the video (Sehroz) */
@media (max-width:1024px){.id-brand .id-bnr-cutwrap{left:auto;right:-8px;top:-16px}}
.id-brand .id-bnr-cut{transform:rotate(3deg)}
@keyframes id-float{0%,100%{transform:rotate(3deg) translateY(0)}50%{transform:rotate(3deg) translateY(-9px)}}
/* full-bleed sections touch each other and the footer (Sehroz: "no extra padding, should be touching") */
.id-brand .id-faq{margin-top:0}
.id-brand .id-gal{margin-top:56px}
body.lime-hub .term-description.id-below-loop{margin-bottom:0}
body.lime-hub .content-page{padding-bottom:0 !important}
body.lime-hub .footer-product{margin-top:0}
/* hero polish: stronger left-to-right legibility gradient, bigger name, framed video, larger CTA */
@media (min-width:1025px){
.id-brand .id-bnr::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(6,12,22,.72) 0%,rgba(6,12,22,.45) 42%,rgba(6,12,22,.10) 70%,rgba(6,12,22,.35) 100%);pointer-events:none;z-index:0}
.id-brand .id-bnr > *:not(.id-bnr-cred){position:relative;z-index:1}
.id-brand .id-bnr-cred{z-index:2}
.id-brand .id-bnr-h1{font-size:64px !important;letter-spacing:-.02em;line-height:1.02;margin-bottom:12px}
.id-brand .id-bnr-copy{font-size:16.5px;line-height:1.6;max-width:520px}
.id-brand .id-bnr-media .id-yt{border-radius:14px;box-shadow:0 30px 60px rgba(0,0,0,.55),0 0 0 1px rgba(255,255,255,.18);overflow:hidden}
.id-brand .id-bnr-shop{transform:scale(1.06);transform-origin:left center}
.id-brand .id-bnr-awards--tiles{margin-top:22px}
.id-brand .id-bnr-awards--tiles > a,.id-brand .id-bnr-awards--tiles > span{box-shadow:0 8px 20px rgba(0,0,0,.35),0 0 0 1px rgba(255,255,255,.5) inset !important}
}
/* gallery: edge-to-edge strip of six tall tiles, no heading, no gaps, images are the point */
.id-brand .id-gal .id-sec-in{max-width:none !important;padding:0 !important}
.id-brand .id-gal .id-sec-kick,.id-brand .id-gal .id-sec-h{display:none}
.id-brand .id-gal-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:0}
.id-brand .id-gal-item,.id-brand .id-gal-big{aspect-ratio:auto;height:clamp(460px,24vw,640px);border-radius:0;box-shadow:none}
.id-brand .id-gal-item img{width:100%;height:100%;object-fit:cover;object-position:center}
.id-brand .id-gal-item:hover img{transform:scale(1.06)}
.id-brand .id-gal-cap{font-size:13px}
@media (max-width:1200px){.id-brand .id-gal-grid{grid-template-columns:repeat(3,1fr)}.id-brand .id-gal-item,.id-brand .id-gal-big{height:340px}}
@media (max-width:700px){.id-brand .id-gal-grid{grid-template-columns:repeat(2,1fr)}.id-brand .id-gal-item,.id-brand .id-gal-big{height:220px}}
/* faq rows stretch together and the closed cards are taller, so opening one does not jolt the grid */
.id-brand .id-faq-list{align-items:stretch;gap:14px 20px}
.id-brand .id-faq-i{min-height:76px;display:flex;flex-direction:column;justify-content:flex-start}
.id-brand .id-faq-i summary{padding:24px 60px 24px 26px;font-size:16px}
.id-brand .id-faq-i summary::after{right:20px}
.id-brand .id-faq-a{padding:0 26px 24px;font-size:15px}
/* two products per row on the ChompSaw hub only (Sehroz 2026-09-14): bigger cards for a four-product brand */
/* (two-per-row rule removed 2026-09-14, Sehroz: cards looked too big; theme default of four stays) */
/* glass tiles: see the hero photo through the badges, and a bigger 30K+ (Sehroz 2026-09-14) */
@media (min-width:1025px){
.id-brand .id-bnr-awards--tiles > a,.id-brand .id-bnr-awards--tiles > span{background:rgba(255,255,255,.14) !important;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);box-shadow:0 8px 20px rgba(0,0,0,.25),0 0 0 1px rgba(255,255,255,.28) inset !important}
.id-brand .id-bnr-awards--tiles a:hover{background:rgba(255,255,255,.24) !important}
.id-brand .id-bnr-awards--tiles .id-bnr-aw-fc{filter:brightness(0) invert(1) !important}
.id-brand .id-bnr-awards--tiles .id-bnr-aw-toty,.id-brand .id-bnr-awards--tiles .id-bnr-aw-time{filter:drop-shadow(0 2px 4px rgba(0,0,0,.35)) !important}
.id-brand .id-bnr-units strong{font-size:22px;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.4)}
.id-brand .id-bnr-units em{font-size:9px;color:rgba(255,255,255,.85);margin-top:3px}
}
@media (max-width:1024px){
.id-brand .id-bnr-awards--tiles > a,.id-brand .id-bnr-awards--tiles > span{background:rgba(255,255,255,.16) !important}
.id-brand .id-bnr-awards--tiles .id-bnr-aw-fc{filter:brightness(0) invert(1) !important}
.id-brand .id-bnr-units strong{color:#fff}.id-brand .id-bnr-units em{color:rgba(255,255,255,.85)}
}
/* awards sit under the video (Sehroz 2026-09-14), centred on the media column; hidden while the video is expanded */
.id-brand .id-bnr-media .id-bnr-awards--tiles{margin:16px 0 0;justify-content:center}
.id-brand .id-bnr-media--expanded .id-bnr-awards--tiles{display:none !important}
@media (min-width:1025px){
.id-brand .id-bnr-in{padding-top:118px !important;padding-bottom:84px !important}
.id-brand .id-bnr-media{align-self:center !important}
}
@media (max-width:1024px){.id-brand .id-bnr-media .id-bnr-awards--tiles{justify-content:flex-start}}
/* box-art lettering as a faint watermark behind the name (placeholder until Chompshop supplies a real wordmark) */
@media (min-width:1025px){
.id-brand .id-bnr-in{position:relative;isolation:isolate}
.id-brand .id-bnr-in::before{content:"";position:absolute;left:-30px;top:40px;width:560px;height:390px;background:var(--lh-img-wordmark) no-repeat left top/contain;opacity:.07;z-index:-1;pointer-events:none;transform:rotate(-6deg)}
}
/* product label beside the name (the real box-art mark), watermark dropped: it read as an accident */
.id-brand .id-bnr-in::before{content:none !important}
.id-brand .id-bnr-h1{display:flex;align-items:center;gap:18px;flex-wrap:nowrap}
.id-brand .id-bnr-mark{display:block;width:auto;height:74px;transform:rotate(-6deg);filter:drop-shadow(0 8px 14px rgba(0,0,0,.45));flex:0 0 auto;margin-top:-6px}
@media (max-width:782px){.id-brand .id-bnr-mark{height:48px;margin-top:0}.id-brand .id-bnr-h1{gap:12px}}
/* label goes left of the name (Sehroz) */
.id-brand .id-bnr-mark{order:-1;margin-top:0;transform:rotate(-5deg)}
.id-brand .id-bnr-h1{gap:20px}
/* reviews live inside the FAQ section, on the kraft ground, above the questions; FAQ cards are always open and centred */
.id-brand .id-faq .id-rev{margin:0 0 48px;border-radius:12px;width:auto;left:auto;max-width:none}
.id-brand .id-faq .id-sec-in{max-width:1280px}
.id-brand .id-faq-i summary{pointer-events:none;padding:26px 26px 6px;text-align:center}
.id-brand .id-faq-i summary::after{content:none !important}
.id-brand .id-faq-i{justify-content:center;text-align:center}
.id-brand .id-faq-a{padding:0 28px 26px;max-width:560px;margin:0 auto}
/* FAQ as a single-column accordion (Sehroz 2026-09-14): one question per row, closed by default, chevron, clean */
.id-brand .id-faq-list{display:block;max-width:860px;margin:0 auto}
.id-brand .id-faq-i{display:block;min-height:0;margin:0 0 10px;border-radius:10px;background:rgba(255,255,255,.96);box-shadow:0 2px 10px rgba(60,40,20,.10);text-align:left;overflow:hidden;transition:box-shadow .2s}
.id-brand .id-faq-i:hover{box-shadow:0 6px 18px rgba(60,40,20,.16)}
.id-brand .id-faq-i summary{pointer-events:auto;cursor:pointer;text-align:left;padding:20px 64px 20px 26px;font-size:16.5px;line-height:1.35;position:relative;color:#1b1b1b;list-style:none}
.id-brand .id-faq-i summary::-webkit-details-marker{display:none}
.id-brand .id-faq-i summary::after{content:"" !important;position:absolute;right:26px;top:50%;width:10px;height:10px;border-right:2px solid var(--lh-surface-accent,#7a4f22);border-bottom:2px solid var(--lh-surface-accent,#7a4f22);transform:translateY(-70%) rotate(45deg);transition:transform .25s;background:none;border-radius:0}
.id-brand .id-faq-i[open] summary::after{transform:translateY(-30%) rotate(225deg)}
.id-brand .id-faq-i[open] summary{color:var(--lh-surface-accent,#7a4f22)}
.id-brand .id-faq-a{padding:0 26px 22px;max-width:none;margin:0;text-align:left;font-size:15px;line-height:1.65;color:#333;animation:id-faq-in .28s ease}
@keyframes id-faq-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.id-brand .id-faq .id-sec-kick,.id-brand .id-faq .id-sec-h,.id-brand .id-faq-src{text-align:center;max-width:860px;margin-left:auto;margin-right:auto}
.id-brand .id-faq .id-sec-h{margin-bottom:10px}
.id-brand .id-faq-src{margin-bottom:28px}
/* reviews card inside the lesson bar, under a divider (Sehroz 2026-09-14); FAQ section keeps just the questions */
.id-brand .id-les-in{padding-bottom:26px}
.id-brand .id-les-div{position:relative;z-index:1;height:1px;background:rgba(80,52,24,.22);max-width:1200px;margin:0 auto 30px}
.id-brand .id-les .id-rev{position:relative;z-index:1;margin:0 auto 36px;max-width:1200px;width:auto;left:auto;border-radius:12px}
.id-brand .id-faq .id-sec-in{padding-top:56px}
@media (max-width:900px){.id-brand .id-les .id-rev{margin:0 16px 24px}.id-brand .id-les-div{margin:0 16px 22px}}
/* hero: pill closer to the name, subtle line under the rating (Sehroz 2026-09-14) */
@media (min-width:1025px){
.id-brand .id-bnr-kick{display:none}
.id-brand .id-bnr-in{padding-top:92px !important}
.id-brand .id-bnr-cred{top:34px}
}
.id-brand .id-bnr-rate{position:relative;padding-bottom:16px;margin-bottom:18px}
.id-brand .id-bnr-rate::after{content:"";position:absolute;left:0;bottom:0;width:240px;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.45),rgba(255,255,255,0))}
/* lesson strip, bigger and roomier so it is not missed (Sehroz 2026-09-14) */
.id-brand .id-les-in{padding:56px 40px 44px;gap:28px 40px}
.id-brand .id-les-k{font-size:12.5px;letter-spacing:.16em;margin-bottom:10px}
.id-brand .id-les-h{font-size:32px;line-height:1.12;margin-bottom:10px}
.id-brand .id-les-s{font-size:16.5px;line-height:1.55;max-width:720px}
.id-brand .id-les-pills span{font-size:12.5px;padding:8px 14px}
.id-brand .id-les .id-res-btn{font-size:15px;padding:16px 26px;box-shadow:0 10px 24px rgba(0,0,0,.18)}
.id-brand .id-les-div{margin-bottom:44px}
.id-brand .id-les .id-rev{margin-bottom:56px}
@media (max-width:900px){.id-brand .id-les-in{padding:36px 22px 30px}.id-brand .id-les-h{font-size:24px}.id-brand .id-les-s{font-size:15px}}
/* lesson heading on one line: text column takes the room, CTA column stays compact */
.id-brand .id-les-in{flex-wrap:nowrap;align-items:center}
.id-brand .id-les-txt{flex:1 1 auto;min-width:0}
.id-brand .id-les-cta{flex:0 0 auto}
.id-brand .id-les-h{font-size:29px;white-space:nowrap}
.id-brand .id-les-s{max-width:640px}
@media (max-width:1400px){.id-brand .id-les-h{font-size:26px}}
@media (max-width:1180px){.id-brand .id-les-in{flex-wrap:wrap}.id-brand .id-les-h{white-space:normal}}
/* lesson bar wider so the one-line heading never runs into the pills */
.id-brand .id-les-in{max-width:1280px}
.id-brand .id-les-h{font-size:27px}
.id-brand .id-les-cta{gap:12px 14px}
@media (max-width:1400px){.id-brand .id-les-h{font-size:25px}}
/* balanced sub copy under the lesson heading, more air before the pills */
.id-brand .id-les-in{gap:28px 64px}
.id-brand .id-les-s{max-width:540px;text-wrap:balance}
.id-brand .id-les-h{text-wrap:balance}
/* grade pills in brand gold on dark, with a "Grades" label (Sehroz 2026-09-14) */
.id-brand .id-les-pills{display:flex;align-items:center;gap:8px}
.id-brand .id-les-pills::before{content:var(--lh-pills-label,"Grades");font-size:11px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--lh-les-label,#7a4f22);margin-right:4px}
.id-brand .id-les-pills span{font-size:12.5px;font-weight:800;letter-spacing:.08em;padding:9px 14px;border-radius:999px;background:var(--lh-surface-chip,#1f160c);color:var(--lh-surface-hi,#f2c75c);box-shadow:0 4px 12px rgba(40,25,10,.25),0 0 0 1px rgba(242,199,92,.45) inset}
/* second video under the FAQ with the floating cutout badge; hero badge stays while the video plays (Sehroz 2026-09-14) */
.id-brand .id-faq-vid{max-width:860px;margin:52px auto 0;text-align:center}
.id-brand .id-faq-vid .id-sec-h{margin-bottom:22px}
.id-brand .id-faq-vid-in{position:relative;border-radius:14px;box-shadow:0 30px 60px rgba(40,25,10,.35);overflow:visible}
.id-brand .id-faq-vid-in .id-yt{display:block;border-radius:14px;overflow:hidden}
.id-brand .id-faq-cut{position:absolute;right:-70px;top:-44px;width:250px;z-index:4;pointer-events:none;display:flex;justify-content:flex-end}
.id-brand .id-faq-cut .id-bnr-cut{max-width:100%;filter:drop-shadow(0 22px 26px rgba(0,0,0,.45))}
@media (max-width:1024px){.id-brand .id-faq-cut{right:-8px;top:-20px;width:130px}}
@media (min-width:1025px){
.id-brand .id-bnr-media--expanded .id-bnr-cutwrap{display:flex;right:10px;top:-34px;width:220px}
}
/* room under the bottom video before the footer, cutout clear of the heading */
.id-brand .id-faq .id-sec-in{padding-bottom:72px}
.id-brand .id-faq-vid .id-sec-h{margin-bottom:30px}
@media (min-width:1025px){.id-brand .id-faq-cut{right:-96px;top:-26px;width:240px}}
/* trust bar sticks under the header (snippet: sticky trust bar) */
.id-brand-trust.id-trust--stuck{position:fixed;left:0;right:0;width:100%;z-index:900;box-shadow:0 8px 20px rgba(0,0,0,.18);border-radius:0}
/* sticky stack: fifth cell of the trust bar fades in while pinned, the shop toolbar pins under the bar */
.id-brand-trust .id-trust-brand{flex:0 0 0px;max-width:0;overflow:hidden;opacity:0;white-space:nowrap;display:flex;align-items:center;justify-content:center;gap:10px;padding:0;transition:max-width .4s ease,opacity .3s ease,flex-basis .4s ease}
.id-brand-trust.id-trust--stuck .id-trust-brand{flex:0 0 auto;max-width:var(--lh-trust-brand-max,360px);opacity:1;padding:0 34px 0 0}
.id-brand-trust .id-trust-mark{height:var(--lh-trust-mark-h,30px);width:auto;display:block;border-radius:var(--lh-trust-mark-radius,4px);box-shadow:var(--lh-trust-mark-shadow,0 2px 6px rgba(0,0,0,.3))}
.id-brand-trust .id-trust-stars{color:#ffd970;font-size:13px;letter-spacing:1px}
.id-brand-trust .id-trust-rate{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#fff}
.id-brand-trust.id-trust--stuck{transition:box-shadow .3s}
.main-products-loop .filter-wrap.id-stuck{position:fixed;z-index:890;background:#fff;box-shadow:0 8px 20px rgba(16,26,43,.14);padding:12px 16px;margin:0;box-sizing:border-box;border-radius:0 0 10px 10px}
.id-stick-ph{width:100%}
/* sticky stack: grid pins too, the sections below slide over it; fifth bar cell truly collapsed at rest */
.id-hero .id-brand-trust > .id-trust-brand{min-width:0;padding:0;border:0}
.id-hero .id-brand-trust > .id-trust-brand::before{content:none}
.id-hero .id-brand-trust.id-trust--stuck > .id-trust-brand{padding:0 34px 0 0}
.main-products-loop .products.id-stuck{position:fixed;z-index:5;margin-top:0;margin-bottom:0;background:#fff}
.term-description.id-below-loop{position:relative;z-index:10;background:#fff}
.main-products-loop .filter-wrap.id-stuck{z-index:890}
/* pinned grid above the page chrome, the sections after it still slide over (Sehroz: shop was going behind) */
.main-products-loop .products.id-stuck{z-index:120 !important}
.term-description.id-below-loop{z-index:130}
.main-products-loop .filter-wrap.id-stuck{z-index:890 !important}
.id-brand-trust.id-trust--stuck{z-index:900 !important}
.main-products-loop .products.id-stuck .product{z-index:auto}
/* pinned grid on top of the sections below (Sehroz): the strip, details and gallery scroll underneath it */
.main-products-loop .products.id-stuck{z-index:150 !important;box-shadow:0 18px 30px -10px rgba(16,26,43,.28);padding-bottom:6px}
.term-description.id-below-loop{z-index:100}
/* compact pinned grid: no filters row pinned any more, cards shrink to a slim strip while pinned; bar sits below the theme header (z 10000) */
.id-brand-trust.id-trust--stuck{z-index:5000 !important}
.main-products-loop .products.id-stuck{z-index:4900 !important;padding:6px 0 8px;background:#fff;align-items:flex-start}
.main-products-loop .products.id-stuck .product{padding-top:0;padding-bottom:0;margin-bottom:0}
.main-products-loop .products.id-stuck .product img{max-height:120px !important;width:auto !important;height:auto !important;object-fit:contain;margin:0 auto}
.main-products-loop .products.id-stuck .product .products-page-cats,.main-products-loop .products.id-stuck .product .sku_wrapper,.main-products-loop .products.id-stuck .product [class*="points"],.main-products-loop .products.id-stuck .product .quick-view,.main-products-loop .products.id-stuck .product .wishlist,.main-products-loop .products.id-stuck .product .stock,.main-products-loop .products.id-stuck .product .product-content-image .swatches,.main-products-loop .products.id-stuck .product .et_b_wishlist{display:none !important}
.main-products-loop .products.id-stuck .product .product-title{font-size:13px;line-height:1.25;margin:6px 0 2px}
.main-products-loop .products.id-stuck .product .price{font-size:15px;margin:0 0 4px}
.main-products-loop .products.id-stuck .product .price del{font-size:12px}
.main-products-loop .products.id-stuck .product .button{padding:7px 10px !important;font-size:11px !important;line-height:1.2 !important;margin-top:2px}
.main-products-loop .products.id-stuck .product .product-details,.main-products-loop .products.id-stuck .product .product-content{padding-top:0;padding-bottom:0}
/* pinned cards as image tiles: photo fills the card, title + price + Add to cart sit on a gradient at the bottom (Sehroz idea) */
.main-products-loop .products.id-stuck{padding:8px 0 10px}
.main-products-loop .products.id-stuck .product .content-product{position:relative;height:190px;overflow:hidden;border-radius:10px;background:#0f1a2b}
.main-products-loop .products.id-stuck .product .product-image-wrapper{position:absolute;inset:0;margin:0}
.main-products-loop .products.id-stuck .product .product-content-image,.main-products-loop .products.id-stuck .product .image-swap{display:block;height:100%}
.main-products-loop .products.id-stuck .product img{max-height:none !important;width:100% !important;height:100% !important;object-fit:cover;object-position:center 35%}
.main-products-loop .products.id-stuck .product .footer-product,.main-products-loop .products.id-stuck .product .xstore-wishlist,.main-products-loop .products.id-stuck .product .xstore-compare,.main-products-loop .products.id-stuck .product .sale-wrapper,.main-products-loop .products.id-stuck .product .products-page-brands,.main-products-loop .products.id-stuck .product .screen-reader-text{display:none !important}
.main-products-loop .products.id-stuck .product .product-details{position:absolute;left:0;right:0;bottom:0;z-index:2;margin:0;padding:34px 14px 12px;text-align:left;background:linear-gradient(180deg,rgba(8,14,26,0) 0%,rgba(8,14,26,.72) 45%,rgba(8,14,26,.92) 100%);display:grid;grid-template-columns:1fr auto;grid-template-areas:"title title" "price button";align-items:end;column-gap:10px}
.main-products-loop .products.id-stuck .product .product-title{grid-area:title;font-size:13.5px;line-height:1.25;margin:0 0 4px;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.5);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.main-products-loop .products.id-stuck .product .product-title a{color:#fff}
.main-products-loop .products.id-stuck .product .price{grid-area:price;margin:0;font-size:16px;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.5);line-height:1.1}
.main-products-loop .products.id-stuck .product .price ins{color:#ffd970;text-decoration:none}
.main-products-loop .products.id-stuck .product .price del{font-size:11px;color:rgba(255,255,255,.65)}
.main-products-loop .products.id-stuck .product .button{grid-area:button;margin:0;padding:8px 14px !important;font-size:11px !important;line-height:1.2 !important;white-space:nowrap}
/* site header always on top of the hub sections: the theme's fixed header lives inside .header-wrapper (z 5), which our pinned sections were beating */
body.lime-hub .header-wrapper{position:relative;z-index:10001}
/* tile layout forced: the theme collapsed the pinned cards to 1px, so heights and flex are explicit here */
.main-products-loop .products.id-stuck{display:flex !important;flex-wrap:nowrap !important;align-items:stretch !important;height:auto !important;min-height:0 !important;gap:12px;padding:8px 12px 10px !important;box-sizing:border-box}
.main-products-loop .products.id-stuck .product{flex:1 1 0 !important;width:auto !important;max-width:none !important;min-width:0 !important;height:190px !important;min-height:0 !important;display:block !important;padding:0 !important;margin:0 !important;border:0 !important;opacity:1 !important;transform:none !important;visibility:visible !important}
.main-products-loop .products.id-stuck .product .content-product{display:block !important;position:relative !important;height:190px !important;min-height:0 !important;overflow:hidden !important;border-radius:10px}
.main-products-loop .products.id-stuck .product .product-image-wrapper{position:absolute !important;top:0 !important;left:0 !important;right:0 !important;bottom:0 !important;height:100% !important;margin:0 !important;display:block !important}
.main-products-loop .products.id-stuck .product .product-content-image{display:block !important;height:100% !important;width:100% !important}
.main-products-loop .products.id-stuck .product .product-content-image img{display:block !important;width:100% !important;height:190px !important;max-height:none !important;object-fit:cover !important;object-position:center 35% !important}
.main-products-loop .products.id-stuck .product .image-swap{display:none !important}
.main-products-loop .products.id-stuck .product .product-details{display:grid !important;height:auto !important}
/* tile widths explicit (flex-basis 0 collapsed to 0 wide) and white text forced */
.main-products-loop .products.id-stuck .product{flex:0 0 calc(25% - 9px) !important;width:calc(25% - 9px) !important}
.main-products-loop .products.id-stuck .product .product-title,.main-products-loop .products.id-stuck .product .product-title a{color:#fff !important}
.main-products-loop .products.id-stuck .product .price,.main-products-loop .products.id-stuck .product .price span{color:#fff !important}
.main-products-loop .products.id-stuck .product .price ins,.main-products-loop .products.id-stuck .product .price ins span{color:#ffd970 !important}
/* cards live inside a wrapper under .products; size the wrapper as the flex row, cards as quarters */
.main-products-loop .products.id-stuck{display:block !important;padding:8px 12px 10px !important}
.main-products-loop .products.id-stuck > *{display:flex !important;flex-wrap:nowrap !important;gap:12px !important;width:100% !important;max-width:none !important;margin:0 !important;padding:0 !important;height:auto !important;min-height:0 !important;position:static !important;transform:none !important}
.main-products-loop .products.id-stuck > * > *:not(.product){display:none !important}
/* tile polish: identical tiles, one-line titles, white prices, nothing else in the overlay, no hover zoom, no stray white box */
.main-products-loop .products.id-stuck{background:#fff !important;padding:10px 12px 12px !important;border-radius:0 0 14px 14px;box-shadow:0 16px 30px -10px rgba(16,26,43,.32)}
.main-products-loop .products.id-stuck .product,.main-products-loop .products.id-stuck .product .content-product{height:200px !important;border-radius:10px !important;overflow:hidden !important}
.main-products-loop .products.id-stuck .product .content-product{background:#dfe6ee !important}
.main-products-loop .products.id-stuck .product .product-content-image img{height:200px !important;object-position:center 40% !important;transform:none !important;transition:none !important}
.main-products-loop .products.id-stuck .product:hover .product-content-image img,.main-products-loop .products.id-stuck .product:hover .content-product{transform:none !important;box-shadow:none !important}
.main-products-loop .products.id-stuck .product .product-details{padding:70px 16px 14px !important;grid-template-columns:1fr auto !important;grid-template-rows:auto auto !important;grid-template-areas:"title title" "price button" !important;row-gap:6px;column-gap:12px;background:linear-gradient(180deg,rgba(6,12,24,0) 0%,rgba(6,12,24,.55) 30%,rgba(6,12,24,.92) 100%) !important}
.main-products-loop .products.id-stuck .product .product-details > *:not(.product-title):not(.price):not(.button){display:none !important}
.main-products-loop .products.id-stuck .product .product-title{grid-area:title;font-size:14px !important;font-weight:700;line-height:1.2 !important;margin:0 !important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block !important;-webkit-line-clamp:unset}
.main-products-loop .products.id-stuck .product .product-title a{color:#fff !important}
.main-products-loop .products.id-stuck .product .price{grid-area:price;display:flex !important;align-items:baseline;gap:8px;margin:0 !important;padding:0 !important;border:0 !important;line-height:1 !important;font-size:20px !important;font-weight:800}
.main-products-loop .products.id-stuck .product .price,.main-products-loop .products.id-stuck .product .price *,.main-products-loop .products.id-stuck .product .price ins,.main-products-loop .products.id-stuck .product .price ins *{color:#fff !important;text-decoration:none !important;font-size:20px !important;font-weight:800 !important}
.main-products-loop .products.id-stuck .product .price del,.main-products-loop .products.id-stuck .product .price del *{color:rgba(255,255,255,.6) !important;font-size:12px !important;font-weight:500 !important;text-decoration:line-through !important}
.main-products-loop .products.id-stuck .product .price .screen-reader-text{display:none !important}
.main-products-loop .products.id-stuck .product .button{grid-area:button;justify-self:end;margin:0 !important;padding:9px 16px !important;font-size:11px !important;font-weight:700;line-height:1.2 !important;border-radius:4px;white-space:nowrap}
/* pinned strip redesign (Sehroz 2026-09-14): brand-blue tray, four white horizontal cards, square contained thumbnail left, title / price / Add to cart right */
.main-products-loop .products.id-stuck{background:var(--lh-loop-ring,#056DB7) !important;padding:10px 12px 12px !important;border-radius:0 0 14px 14px;box-shadow:0 16px 30px -10px rgba(5,40,80,.45)}
.main-products-loop .products.id-stuck > *{gap:12px !important}
.main-products-loop .products.id-stuck .product,.main-products-loop .products.id-stuck .product .content-product{height:132px !important;border-radius:10px !important;overflow:hidden !important;background:#fff !important}
.main-products-loop .products.id-stuck .product .content-product{display:flex !important;align-items:stretch !important;position:relative !important}
.main-products-loop .products.id-stuck .product .product-image-wrapper{position:relative !important;top:auto !important;left:auto !important;right:auto !important;bottom:auto !important;flex:0 0 132px !important;width:132px !important;height:132px !important;background:#eef3f8}
.main-products-loop .products.id-stuck .product .product-content-image{display:block !important;width:132px !important;height:132px !important}
.main-products-loop .products.id-stuck .product .product-content-image img{width:132px !important;height:132px !important;object-fit:contain !important;object-position:center !important;padding:8px;box-sizing:border-box;background:#eef3f8}
.main-products-loop .products.id-stuck .product .product-details{position:relative !important;top:auto !important;left:auto !important;right:auto !important;bottom:auto !important;flex:1 1 auto !important;min-width:0;display:flex !important;flex-direction:column !important;justify-content:center !important;align-items:flex-start !important;gap:7px !important;padding:10px 14px !important;background:none !important;text-align:left !important}
.main-products-loop .products.id-stuck .product .product-title{white-space:normal !important;display:-webkit-box !important;-webkit-line-clamp:2 !important;-webkit-box-orient:vertical !important;overflow:hidden !important;text-overflow:clip !important;font-size:13.5px !important;line-height:1.25 !important;font-weight:700 !important;text-shadow:none !important}
.main-products-loop .products.id-stuck .product .product-title a{color:#16213e !important}
.main-products-loop .products.id-stuck .product .price,.main-products-loop .products.id-stuck .product .price *,.main-products-loop .products.id-stuck .product .price ins,.main-products-loop .products.id-stuck .product .price ins *{color:#16213e !important;text-shadow:none !important;font-size:18px !important}
.main-products-loop .products.id-stuck .product .price del,.main-products-loop .products.id-stuck .product .price del *{color:#8a93a6 !important;font-size:12px !important}
.main-products-loop .products.id-stuck .product .button{align-self:flex-start !important;justify-self:auto !important;padding:8px 14px !important;font-size:11px !important}
/* cards share the row evenly so the fourth never spills out of the tray */
.main-products-loop .products.id-stuck > *{display:flex !important;width:auto !important;margin:0 !important;overflow:hidden}
.main-products-loop .products.id-stuck .product{flex:1 1 0 !important;width:auto !important;max-width:none !important;min-width:0 !important}
/* badges attached to the video bottom as one piece, square top corners, brand-blue glow behind the whole block (Sehroz 2026-09-14) */
@media (min-width:1025px){
.id-brand .id-bnr-media .id-yt{border-radius:14px 14px 0 0 !important;box-shadow:0 0 0 1px rgba(255,255,255,.16),0 30px 70px rgba(5,109,183,.55),0 10px 30px rgba(0,0,0,.35) !important}
.id-brand .id-bnr-media .id-bnr-awards--tiles{display:grid !important;grid-template-columns:repeat(4,1fr);gap:1px;margin:0 !important;width:100%;border-radius:0 0 14px 14px;overflow:hidden;background:rgba(255,255,255,.22);box-shadow:0 30px 70px rgba(5,109,183,.45),0 14px 30px rgba(0,0,0,.35)}
.id-brand .id-bnr-media .id-bnr-awards--tiles > a,.id-brand .id-bnr-media .id-bnr-awards--tiles > span{width:auto !important;height:64px !important;border-radius:0 !important;box-shadow:none !important;background:rgba(10,20,35,.72) !important;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);padding:6px !important}
.id-brand .id-bnr-media .id-bnr-awards--tiles > a:hover{background:rgba(10,20,35,.5) !important;transform:none}
/* --tiles-light: award marks usually may not be recoloured, and several (Good Design, reddot,
   CES) carry dark type that disappears on the default dark glass. This variant keeps each mark in
   its official colours on a light tile. Opt in per brand. */
.id-brand .id-bnr-media .id-bnr-awards--tiles-light{background:rgba(255,255,255,.34) !important}
.id-brand .id-bnr-media .id-bnr-awards--tiles-light > a,
.id-brand .id-bnr-media .id-bnr-awards--tiles-light > span{background:rgba(246,248,250,.94) !important}
.id-brand .id-bnr-media .id-bnr-awards--tiles-light > a:hover{background:#fff !important}
.id-brand .id-bnr-media .id-bnr-awards--tiles-light img{filter:none !important}

.id-brand .id-bnr-media .id-bnr-awards--tiles .id-bnr-aw-toty{width:50px;height:50px !important}
.id-brand .id-bnr-media .id-bnr-awards--tiles .id-bnr-aw-time{height:52px !important}
.id-brand .id-bnr-media .id-bnr-awards--tiles .id-bnr-aw-fc{width:64px;height:auto !important}
.id-brand .id-bnr-media .id-bnr-units strong{font-size:20px}
}
/* strip cards row direction (theme stacks content-product as a column, which pushed the text below the 132px card and clipped it); wrapper transparent so no white edge; 30K+ cell fills its column */
.main-products-loop .products.id-stuck .product .content-product{flex-direction:row !important;flex-wrap:nowrap !important}
.main-products-loop .products.id-stuck > *{background:transparent !important;border:0 !important;box-shadow:none !important}
.main-products-loop .products.id-stuck .product .product-details{color:#16213e !important}
@media (min-width:1025px){
.id-brand .id-bnr-media .id-bnr-awards--tiles > span{max-width:none !important;width:auto !important;justify-self:stretch;flex:none !important}
}
/* cards are direct children of .products (the only wrapper is the ajax loader): tray is the flex row, cards split it evenly, loader hidden */
.main-products-loop .products.id-stuck{display:flex !important;flex-wrap:nowrap !important;gap:12px !important;align-items:stretch !important}
.main-products-loop .products.id-stuck > *:not(.product){display:none !important}
.main-products-loop .products.id-stuck > .product{display:block !important;flex-grow:1 !important;flex-shrink:1 !important;flex-basis:0 !important;width:auto !important;max-width:none !important;min-width:0 !important}
/* aligned rows in every strip card: fixed 2-line title box, fixed price row, button on the same baseline; currency symbol back inline */
.main-products-loop .products.id-stuck .product .product-details{justify-content:flex-start !important;gap:0 !important;padding:12px 14px 10px !important}
.main-products-loop .products.id-stuck .product .product-title{height:34px !important;margin:0 0 6px !important;font-size:13px !important;line-height:17px !important}
.main-products-loop .products.id-stuck .product .price{height:22px !important;margin:0 0 8px !important;align-items:baseline !important}
.main-products-loop .products.id-stuck .product .price .woocommerce-Price-currencySymbol{position:static !important;display:inline !important;font-size:inherit !important;vertical-align:baseline !important;top:auto !important;color:inherit !important}
.main-products-loop .products.id-stuck .product .price ins .woocommerce-Price-currencySymbol,.main-products-loop .products.id-stuck .product .price ins{color:#16213e !important}
.main-products-loop .products.id-stuck .product .button{width:100% !important;text-align:center !important;padding:8px 10px !important}
/* strip cards click through to the product; no Add to cart in the pinned strip (Sehroz). The image link is stretched over the whole card. */
.main-products-loop .products.id-stuck .product .button{display:none !important}
.main-products-loop .products.id-stuck .product .content-product{position:relative !important;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease}
.main-products-loop .products.id-stuck .product .product-content-image::after{content:"";position:absolute;inset:0;z-index:3}
.main-products-loop .products.id-stuck .product:hover .content-product{transform:translateY(-2px);box-shadow:0 10px 22px rgba(5,40,80,.35)}
.main-products-loop .products.id-stuck .product .product-details{justify-content:center !important;padding:10px 14px !important}
.main-products-loop .products.id-stuck .product .product-title{margin:0 0 8px !important}
.main-products-loop .products.id-stuck .product .price{margin:0 !important}
/* wrapper restored: .products holds an ajax loader box AND a wrapper with the four cards; hide only the loader, lay the wrapper out as the row */
.main-products-loop .products.id-stuck{display:block !important}
.main-products-loop .products.id-stuck > *{display:flex !important;flex-wrap:nowrap !important;gap:12px !important;width:100% !important;max-width:none !important;margin:0 !important;padding:0 !important;background:transparent !important;border:0 !important;box-shadow:none !important;position:static !important;transform:none !important;height:auto !important;min-height:0 !important;overflow:hidden}
.main-products-loop .products.id-stuck > *:has(> svg),.main-products-loop .products.id-stuck > svg,.main-products-loop .products.id-stuck > .loader-circular{display:none !important}
.main-products-loop .products.id-stuck .product{display:block !important;flex-grow:1 !important;flex-shrink:1 !important;flex-basis:0 !important;width:auto !important;max-width:none !important;min-width:0 !important}
/* show only the child that holds the cards (both children carry an svg, so structure-based hiding blanked the strip); slide the pinned pieces in from the top */
.main-products-loop .products.id-stuck > *:not(:has(.product)){display:none !important}
.main-products-loop .products.id-stuck > *:has(.product){display:flex !important}
@keyframes id-slide-in{from{transform:translateY(-110%);opacity:0}to{transform:translateY(0);opacity:1}}
.main-products-loop .products.id-stuck{animation:id-slide-in .38s cubic-bezier(.2,.8,.2,1)}
.id-brand-trust.id-trust--stuck{animation:id-slide-in .3s cubic-bezier(.2,.8,.2,1)}
@media (prefers-reduced-motion:reduce){.main-products-loop .products.id-stuck,.id-brand-trust.id-trust--stuck{animation:none}}
/* card spacing via margins so flex sizing accounts for it and the fourth card stays inside the tray */
.main-products-loop .products.id-stuck > *:has(.product){gap:0 !important;column-gap:0 !important;padding:0 !important}
.main-products-loop .products.id-stuck .product{margin:0 6px !important;flex:1 1 0 !important;box-sizing:border-box !important}
.main-products-loop .products.id-stuck .product:first-child{margin-left:0 !important}
.main-products-loop .products.id-stuck .product:last-child{margin-right:0 !important}
/* tighter strip cards: 112px, no dead space above or below the text, nothing clipped */
.main-products-loop .products.id-stuck{padding:8px 12px 10px !important}
.main-products-loop .products.id-stuck .product,.main-products-loop .products.id-stuck .product .content-product{height:112px !important}
.main-products-loop .products.id-stuck .product .product-image-wrapper,.main-products-loop .products.id-stuck .product .product-content-image{flex-basis:112px !important;width:112px !important;height:112px !important}
.main-products-loop .products.id-stuck .product .product-content-image img{width:112px !important;height:112px !important;padding:6px}
.main-products-loop .products.id-stuck .product .product-details{padding:8px 12px !important;justify-content:center !important;overflow:hidden}
.main-products-loop .products.id-stuck .product .product-title{height:32px !important;font-size:12.5px !important;line-height:16px !important;margin:0 0 5px !important}
.main-products-loop .products.id-stuck .product .price,.main-products-loop .products.id-stuck .product .price *,.main-products-loop .products.id-stuck .product .price ins,.main-products-loop .products.id-stuck .product .price ins *{font-size:17px !important}
.main-products-loop .products.id-stuck .product .price del,.main-products-loop .products.id-stuck .product .price del *{font-size:11px !important}
.main-products-loop .products.id-stuck .product .price{height:20px !important}
/* pinned strip, sale price: old price + current price did not fit the single 20px row in a slim card, so the CURRENT price was clipped (xTool P2S, Sehroz 2026-09-21). The old price moves to its own small line above; cards without a sale are untouched. */
.main-products-loop .products.id-stuck .product .price:has(del){height:auto !important;min-height:20px;flex-wrap:wrap !important;row-gap:0 !important;column-gap:0 !important}
.main-products-loop .products.id-stuck .product .price:has(del) del{flex:0 0 100% !important;display:block !important;line-height:1.15 !important;margin:0 0 1px !important;text-decoration:line-through !important;opacity:1 !important}
.main-products-loop .products.id-stuck .product .price:has(del) del *{text-decoration:line-through !important}
.main-products-loop .products.id-stuck .product .price:has(del) ins{flex:0 0 100% !important;max-width:100% !important;min-width:0;margin:0 !important;padding:0 !important;background:none !important}
.id-brand-trust .id-trust-brand{gap:8px}
/* cap card width: a theme rule pins the cards to 25% regardless of margins, so cap them so four plus spacing fit the tray */
.main-products-loop .products.id-stuck .product{max-width:calc(25% - 9px) !important;width:calc(25% - 9px) !important}
/* narrow the wrapper by the three 12px gaps: the theme forces each card to 25% of it with priority we cannot beat, so the wrapper carries the spacing */
.main-products-loop .products.id-stuck > *:has(.product){width:calc(100% - 36px) !important;max-width:calc(100% - 36px) !important;margin:0 !important}
.main-products-loop .products.id-stuck .product{margin:0 12px 0 0 !important}
.main-products-loop .products.id-stuck .product:last-child{margin-right:0 !important}
/* outrank the theme column rule (body.lime-hub .products .product {width:25% !important}) with a longer selector, then let flex split the row */
body.lime-hub .main-products-loop .products.id-stuck > *:has(.product){width:100% !important;max-width:100% !important;gap:12px !important;column-gap:12px !important}
body.lime-hub .main-products-loop .products.id-stuck .product{width:auto !important;max-width:none !important;min-width:0 !important;flex:1 1 0 !important;flex-basis:0 !important;margin:0 !important}
body.lime-hub .main-products-loop .products.id-stuck .product:last-child{margin:0 !important}
/* mobile pass 2026-09-14: lesson CTA was running off the right edge, hero had a dead band under the pill, award cells uneven */
@media (max-width:900px){
.id-brand .id-les-in{flex-wrap:wrap !important;gap:18px !important}
.id-brand .id-les-txt{flex:1 1 100% !important}
.id-brand .id-les-cta{flex:1 1 100% !important;width:100%;flex-wrap:wrap !important;gap:12px !important}
.id-brand .id-les-pills{flex-wrap:wrap}
.id-brand .id-les .id-btn-wrap,.id-brand .id-les .id-res-btn{width:100% !important;box-sizing:border-box;text-align:center}
}
@media (max-width:1024px){
.id-brand .id-bnr-in{padding-top:72px !important}
.id-brand .id-bnr-kick{display:none}
.id-brand .id-bnr-media .id-bnr-awards--tiles{display:grid !important;grid-template-columns:repeat(4,1fr) !important;gap:1px !important;margin:0 !important;width:100% !important;border-radius:0 0 12px 12px;overflow:hidden;background:rgba(255,255,255,.22)}
.id-brand .id-bnr-media .id-bnr-awards--tiles > a,.id-brand .id-bnr-media .id-bnr-awards--tiles > span{width:auto !important;max-width:none !important;height:60px !important;border-radius:0 !important;background:rgba(10,20,35,.72) !important;padding:5px !important}
.id-brand .id-bnr-media .id-yt{border-radius:12px 12px 0 0 !important}
}
/* flash the card a pinned-strip click jumped back to */
@keyframes id-flash{0%{box-shadow:0 0 0 0 transparent}15%{box-shadow:0 0 0 4px color-mix(in srgb,var(--idb,#056db7) 95%,transparent),0 12px 30px color-mix(in srgb,var(--idb,#056db7) 35%,transparent)}70%{box-shadow:0 0 0 4px rgba(5,109,183,.95),0 12px 30px rgba(5,109,183,.35)}100%{box-shadow:0 0 0 0 rgba(5,109,183,0)}}
.main-products-loop .products:not(.id-stuck) .product.id-flash .content-product{animation:id-flash 2.2s ease-out;border-radius:10px}
.main-products-loop .products.id-stuck .product .product-content-image::after{cursor:pointer}
/* hero entrance (Sehroz 2026-09-14): pieces rise and fade in one after another instead of popping in together */
@keyframes id-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes id-pop{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
.id-brand .id-bnr-cred{animation:id-rise .55s cubic-bezier(.2,.8,.2,1) .05s both}
.id-brand .id-bnr-h1{animation:id-rise .6s cubic-bezier(.2,.8,.2,1) .15s both}
.id-brand .id-bnr-rate{animation:id-rise .6s cubic-bezier(.2,.8,.2,1) .25s both}
.id-brand .id-bnr-copy{animation:id-rise .6s cubic-bezier(.2,.8,.2,1) .33s both}
.id-brand .id-bnr-by{animation:id-rise .6s cubic-bezier(.2,.8,.2,1) .42s both}
.id-brand .id-bnr-media .id-yt{animation:id-rise .7s cubic-bezier(.2,.8,.2,1) .2s both}
.id-brand .id-bnr-media .id-bnr-awards--tiles{animation:id-rise .6s cubic-bezier(.2,.8,.2,1) .55s both}
.id-brand .id-bnr-media .id-bnr-awards--tiles > *{animation:id-pop .45s cubic-bezier(.2,.8,.2,1) both}
.id-brand .id-bnr-media .id-bnr-awards--tiles > *:nth-child(1){animation-delay:.65s}
.id-brand .id-bnr-media .id-bnr-awards--tiles > *:nth-child(2){animation-delay:.75s}
.id-brand .id-bnr-media .id-bnr-awards--tiles > *:nth-child(3){animation-delay:.85s}
.id-brand .id-bnr-media .id-bnr-awards--tiles > *:nth-child(4){animation-delay:.95s}
.id-brand .id-bnr-cutwrap{animation:id-pop .6s cubic-bezier(.2,.8,.2,1) .8s both}
/* trust bar does not animate on load (Sehroz): a fading bar showed white behind it */
@media (prefers-reduced-motion:reduce){.id-brand .id-bnr-cred,.id-brand .id-bnr-h1,.id-brand .id-bnr-rate,.id-brand .id-bnr-copy,.id-brand .id-bnr-by,.id-brand .id-bnr-media .id-yt,.id-brand .id-bnr-media .id-bnr-awards--tiles,.id-brand .id-bnr-media .id-bnr-awards--tiles > *,.id-brand .id-bnr-cutwrap,.id-brand .id-brand-trust{animation:none}}
/* mobile comparison table: compact so the columns fit without a sideways scroll */
@media (max-width:600px){
.id-brand .id-cmp table,.id-brand .id-cmp{font-size:12px}
.id-brand .id-cmp th,.id-brand .id-cmp td{padding:8px 6px !important}
.id-brand .id-cmp th:first-child,.id-brand .id-cmp td:first-child{width:46%;font-size:12px}
}
/* comparison table fits the phone: drop the min-width, let cells wrap */
@media (max-width:600px){.id-brand table.id-cmp{min-width:0 !important;width:100% !important;table-layout:fixed}.id-brand .id-cmp-scroll{overflow-x:visible !important}.id-brand table.id-cmp th,.id-brand table.id-cmp td{white-space:normal !important;word-break:break-word}.id-brand table.id-cmp th:first-child,.id-brand table.id-cmp td:first-child{width:40%}.id-brand .id-cmp-price{font-size:11px;display:block}}
/* lesson strip fades in from white at the top and darkens toward the bottom, same direction as the FAQ ground */
.id-brand .id-les::before{background:linear-gradient(180deg,#ffffff 0%,rgba(255,250,242,.6) 18%,rgba(255,250,242,.3) 55%,rgba(70,45,20,.28) 100%) !important}
.id-brand .id-les{margin-top:0 !important}
/* cutout in the lesson strip, between the copy and the CTA (Sehroz 2026-09-14) */
.id-brand .id-les-in{gap:24px 44px}
.id-brand .id-les-art{flex:0 0 210px;display:flex;justify-content:center;align-items:center;margin:-6px 0}
.id-brand .id-les-art .id-bnr-cut{max-width:100%;height:auto;transform:rotate(-4deg);filter:drop-shadow(0 18px 22px rgba(40,25,10,.35));animation:id-float 4.6s ease-in-out infinite}
.id-brand .id-les-h{white-space:normal !important;text-wrap:balance}
.id-brand .id-les-txt{flex:1 1 380px}
@media (max-width:1180px){.id-brand .id-les-art{flex:0 0 160px}}
@media (max-width:900px){.id-brand .id-les-art{flex:1 1 100%;order:-1;justify-content:flex-start;margin:0 0 -6px}.id-brand .id-les-art .id-bnr-cut{width:170px}}
@media (prefers-reduced-motion:reduce){.id-brand .id-les-art .id-bnr-cut{animation:none}}
/* CTA column stacks (pills over button) so the copy keeps its width next to the cutout */
@media (min-width:901px){.id-brand .id-les-cta{flex:0 0 auto;flex-direction:column;align-items:flex-end;gap:10px}.id-brand .id-les-txt{flex:1 1 460px}}
/* section headers on the kraft ground (FAQ + bottom video): label mark, small kicker, heavy title, short gold accent bar */
.id-brand .id-faq .id-sec-kick,.id-brand .id-faq-vid .id-sec-kick{font-size:11.5px;letter-spacing:.22em;color:var(--lh-surface-accent2,#8a5a26);margin:0 0 10px;display:flex;flex-direction:column;align-items:center;gap:14px}
.id-brand .id-faq > .id-sec-in > .id-sec-kick::before{content:"";width:86px;height:60px;background:var(--lh-img-label) center/contain no-repeat;filter:drop-shadow(0 6px 10px rgba(40,25,10,.3));transform:rotate(-4deg)}
.id-brand .id-faq .id-sec-h,.id-brand .id-faq-vid .id-sec-h{font-size:36px;font-weight:800;letter-spacing:-.015em;line-height:1.1;color:#1f160c;margin:0 0 14px;display:flex;flex-direction:column;align-items:center;gap:14px}
.id-brand .id-faq .id-sec-h::after,.id-brand .id-faq-vid .id-sec-h::after{content:"";width:48px;height:4px;border-radius:2px;background:linear-gradient(90deg,var(--lh-surface-hi,#f2c75c),var(--lh-surface-hi2,#c9903a))}
.id-brand .id-faq-src{font-size:14.5px;line-height:1.6;color:#4a3a28;opacity:1;max-width:620px;margin:0 auto 30px}
.id-brand .id-faq-src a{color:var(--lh-surface-accent2,#8a5a26);font-weight:600}
.id-brand .id-faq-vid .id-sec-h{font-size:28px}
@media (max-width:782px){.id-brand .id-faq .id-sec-h{font-size:28px}.id-brand .id-faq-vid .id-sec-h{font-size:22px}}
/* hover swaps the cutout for the angled view (Sehroz) */
.id-brand .id-les-art{position:relative}
.id-brand .id-les-art .id-les-art-alt{position:absolute;left:0;top:50%;transform:translateY(-50%) rotate(4deg) scale(.96);opacity:0;transition:opacity .35s ease,transform .35s ease}
.id-brand .id-les-art .id-les-art-main{transition:opacity .35s ease,transform .35s ease}
.id-brand .id-les:hover .id-les-art-main{opacity:0;transform:rotate(-4deg) scale(.96)}
.id-brand .id-les:hover .id-les-art-alt{opacity:1;transform:translateY(-50%) rotate(4deg) scale(1)}
.id-brand .id-les:hover .id-les-art .id-bnr-cut{animation-play-state:paused}
/* headers recentred: the new header rules had reset the auto side margins */
.id-brand .id-faq .id-sec-kick,.id-brand .id-faq .id-sec-h,.id-brand .id-faq-src,.id-brand .id-faq-vid .id-sec-kick,.id-brand .id-faq-vid .id-sec-h{margin-left:auto !important;margin-right:auto !important;width:100%;max-width:860px;text-align:center}
/* stickers down both sides of the FAQ: the two cutouts scattered like stickers, behind the questions; hover swap in the strip removed */
.id-brand .id-les:hover .id-les-art .id-bnr-cut{opacity:1;transform:rotate(-4deg);animation-play-state:running}
.id-brand .id-faq-stickers{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.id-brand .id-faq-stk{position:absolute;height:auto;filter:drop-shadow(0 16px 22px rgba(40,25,10,.35));opacity:.92}
.id-brand .id-faq-stk-1{width:250px;left:-70px;top:14%;transform:rotate(-12deg)}
.id-brand .id-faq-stk-2{width:230px;right:-60px;top:6%;transform:rotate(9deg)}
.id-brand .id-faq-stk-3{width:210px;left:-40px;top:64%;transform:rotate(7deg)}
.id-brand .id-faq-stk-4{width:260px;right:-80px;top:52%;transform:rotate(-8deg)}
.id-brand .id-faq > .id-sec-in{position:relative;z-index:1}
@media (max-width:1400px){.id-brand .id-faq-stk{opacity:.6}.id-brand .id-faq-stk-1,.id-brand .id-faq-stk-3{left:-110px}.id-brand .id-faq-stk-2,.id-brand .id-faq-stk-4{right:-110px}}
@media (max-width:1100px){.id-brand .id-faq-stickers{display:none}}
/* four more stickers tucked in close to the question column, peeking out from behind it */
.id-brand .id-faq-stk-5{width:180px;left:calc(50% - 600px);top:31%;transform:rotate(14deg);opacity:.85}
.id-brand .id-faq-stk-6{width:170px;right:calc(50% - 610px);top:23%;transform:rotate(-11deg);opacity:.85}
.id-brand .id-faq-stk-7{width:165px;left:calc(50% - 560px);top:83%;transform:rotate(-6deg);opacity:.85}
.id-brand .id-faq-stk-8{width:190px;right:calc(50% - 585px);top:67%;transform:rotate(12deg);opacity:.85}
@media (max-width:1400px){.id-brand .id-faq-stk-5,.id-brand .id-faq-stk-6,.id-brand .id-faq-stk-7,.id-brand .id-faq-stk-8{display:none}}
/* sticker 8 removed: it doubled up with the bottom video's own corner cutout */
.id-brand .id-faq-stk-8{display:none !important}
/* strip above the grid: full-bleed box sits between the trust bar and the filters; no top margin, room below before the toolbar */
.term-description.id-above-loop{position:relative;z-index:10;margin:0 0 28px}
.term-description.id-above-loop .id-les{margin-top:0 !important}
.term-description.id-above-loop .id-les::before{background:linear-gradient(180deg,rgba(255,250,242,.55) 0%,rgba(255,250,242,.3) 55%,rgba(70,45,20,.28) 100%) !important}
/* filters and toolbar hidden on the hub (Sehroz): four products need no sort, columns, per-page or filter widgets */
body.lime-hub .main-products-loop .filter-wrap,body.lime-hub .main-products-loop .shop-filters,body.lime-hub .main-products-loop .open-filters-btn,body.lime-hub .main-products-loop .woocommerce-result-count{display:none !important}
body.lime-hub .term-description.id-above-loop{margin:0 0 32px}
/* above-loop full bleed under the trust bar, then breathing room before the grid */
.term-description.id-above-loop{margin:0 0 36px !important;padding:0}
.term-description.id-above-loop .id-les{margin-top:0 !important;margin-bottom:0 !important;left:50%;margin-left:-50vw !important;width:100vw}
/* no gap between trust bar and strip: hero wrapper margins zeroed on the hub */
body.lime-hub .term-description{margin-bottom:0 !important;padding-bottom:0 !important}
body.lime-hub .id-hero,body.lime-hub .id-bnr,body.lime-hub .id-brand-trust{margin-bottom:0 !important}
body.lime-hub .term-description.id-above-loop{margin-top:0 !important}
/* strip gradient flipped: darker kraft at the top under the blue bar, fading to white at the bottom into the product grid; more room before the grid */
.term-description.id-above-loop .id-les::before{background:linear-gradient(180deg,rgba(70,45,20,.30) 0%,rgba(255,250,242,.28) 45%,rgba(255,250,242,.62) 80%,#ffffff 100%) !important}
body.lime-hub .term-description.id-above-loop{margin-bottom:0 !important}
body.lime-hub .main-products-loop .products{margin-top:44px !important}
/* pinned grid ignores the new top margin, so it sits flush under the bar again */
body.lime-hub .main-products-loop .products.id-stuck{margin-top:0 !important}
/* strip copy in white on the darker top of the kraft; gradient a touch deeper up top for contrast */
.term-description.id-above-loop .id-les::before{background:linear-gradient(180deg,color-mix(in srgb,var(--lh-surface-wash,#2d1c0c) var(--lh-wash-1,62%),transparent) 0%,color-mix(in srgb,var(--lh-surface-wash,#3c2610) var(--lh-wash-2,42%),transparent) var(--lh-wash-stop,32%),rgba(255,250,242,.35) var(--lh-wash-fade,62%),#ffffff 100%) !important}
.term-description.id-above-loop .id-les-k{color:var(--lh-surface-hi,#f2c75c) !important}
.term-description.id-above-loop .id-les-h{color:#fff !important;text-shadow:0 2px 10px rgba(0,0,0,.35)}
.term-description.id-above-loop .id-les-s{color:rgba(255,255,255,.88) !important;opacity:1 !important}
.term-description.id-above-loop .id-les-pills::before{color:var(--lh-surface-hi,#f2c75c) !important}
.term-description.id-above-loop .id-les-pills span{box-shadow:0 4px 12px rgba(0,0,0,.35),0 0 0 1px rgba(242,199,92,.6) inset}
.term-description.id-above-loop .id-les-div{background:rgba(255,255,255,.35)}
/* 2026-09-18: the band's fade was a % of its height. ChompSaw's band also holds the reviews
   carousel, so the fade landed behind the review card. A brand with no reviews has a band that
   is just the text row, and the same % landed on the text, worse the longer the copy. When the
   band has no .id-rev it now stays solid behind the content and fades only in a reserved strip
   below it. Automatic, nothing to set per brand; bands with reviews keep the original look. */
.term-description.id-above-loop .id-les:not(:has(.id-rev))::before{background:linear-gradient(180deg,color-mix(in srgb,var(--lh-surface-wash,#2d1c0c) var(--lh-wash-1,62%),transparent) 0,color-mix(in srgb,var(--lh-surface-wash,#2d1c0c) var(--lh-wash-1,62%),transparent) calc(100% - 110px),#ffffff 100%) !important}
.term-description.id-above-loop .id-les:not(:has(.id-rev)){padding-bottom:72px}
.term-description.id-above-loop .id-les:not(:has(.id-rev)) .id-les-div{display:none}

/* brand-blue frame on the product grid (Sehroz): a 3px ring all round, rounded, so the grid stands out; off while pinned */
body.lime-hub .main-products-loop .products:not(.id-stuck){box-shadow:0 0 0 3px var(--lh-loop-ring,#056DB7),0 14px 34px color-mix(in srgb,var(--lh-loop-ring,#056db7) 16%,transparent) !important;border-radius:12px;overflow:hidden;background:#fff}
/* thicker frame with inner padding so the cards do not touch the ring */
body.lime-hub .main-products-loop .products:not(.id-stuck){box-shadow:0 0 0 5px var(--lh-loop-ring,#056DB7),0 16px 36px color-mix(in srgb,var(--lh-loop-ring,#056db7) 18%,transparent) !important;padding:18px !important;border-radius:14px}
/* semantic hero: the name is now a real <h1> and the copy a <p>; neutralise theme heading/paragraph defaults */
.id-brand h1.id-bnr-h1{margin:0 0 12px !important;padding:0;color:#fff;font-weight:700;letter-spacing:-.02em;line-height:1.02;text-transform:none;text-shadow:0 2px 14px rgba(0,0,0,.45)}
.id-brand p.id-bnr-copy{margin:0 0 18px;padding:0;color:#fff}
/* semantic pass 2026-09-15: real headings, paragraphs, list and figures; neutralise theme defaults for the new tags */
.id-brand ul.id-brand-trust,.id-brand .id-brand-trust > li{list-style:none;margin:0}
.id-brand ul.id-brand-trust{padding-left:0;padding-right:0}
.id-brand h2.id-sec-h,.id-brand h2.id-les-h{margin-top:0;text-transform:none;letter-spacing:-.015em}
.id-brand p.id-sec-kick,.id-brand p.id-les-k,.id-brand p.id-les-s,.id-brand p.id-faq-src{margin-top:0}
.id-brand p.id-faq-a{margin:0}
.id-brand .id-brand-more-h h2{display:inline;font:inherit;color:inherit;margin:0;padding:0;letter-spacing:inherit;text-transform:none}
.id-brand .id-faq-i summary h3{display:inline;font:inherit;color:inherit;margin:0;padding:0;letter-spacing:inherit;text-transform:none}
.id-brand figure.id-gal-item{margin:0;padding:0}
.id-brand .id-sr{position:absolute !important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.id-brand .id-gal .id-sec-kick,.id-brand .id-gal .id-sec-h{display:block;position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:0}


/* polish v3: one surface system. white / light / one dark band. brand tokens --idb-* */
:root{--idb:#3b8ad9;--idb-d:#1f4f9a;--idb-x:#f5b400;--idp-navy:#16213e;--idp-ink:#1a1a1a;--idp-body:#555;--idp-light:#f5f9fd;--idp-line:#e3e9f2;--idp-shadow:0 14px 34px color-mix(in srgb,var(--idb-d,#1f4f9a) 10%,transparent)}
body.tax-brand .id-brand .id-about,body.tax-brand .id-brand .id-how,body.tax-brand .id-brand .id-pick,body.tax-brand .id-brand .id-ideas,body.tax-brand .id-brand .id-vs,body.tax-brand .id-brand .id-specs,body.tax-brand .id-brand .id-buy{border:0;border-radius:0;padding:80px 24px;margin:0;width:100vw;position:relative;left:50%;margin-left:-50vw;overflow:hidden;background:#fff}
body.tax-brand .id-brand .id-pick,body.tax-brand .id-brand .id-vs,body.tax-brand .id-brand .id-buy{background:var(--idp-light)}
body.tax-brand .id-brand .id-about .id-sec-in,body.tax-brand .id-brand .id-how .id-sec-in,body.tax-brand .id-brand .id-ideas .id-sec-in,body.tax-brand .id-brand .id-vs .id-sec-in,body.tax-brand .id-brand .id-specs .id-sec-in,body.tax-brand .id-brand .id-buy .id-sec-in{max-width:1200px;margin:0 auto;position:relative;z-index:1}
body.tax-brand .id-brand .id-pick .id-sec-in{max-width:1360px;margin:0 auto;position:relative;z-index:1}
/* kicker + heading */
body.tax-brand .id-brand .id-about .id-sec-kick,body.tax-brand .id-brand .id-how .id-sec-kick,body.tax-brand .id-brand .id-pick .id-sec-kick,body.tax-brand .id-brand .id-ideas .id-sec-kick,body.tax-brand .id-brand .id-vs .id-sec-kick,body.tax-brand .id-brand .id-specs .id-sec-kick,body.tax-brand .id-brand .id-buy .id-sec-kick{font:700 12px/1 'Open Sans',sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--idb);text-align:center;margin:0 0 14px}
body.tax-brand .id-brand .id-about .id-sec-h,body.tax-brand .id-brand .id-how .id-sec-h,body.tax-brand .id-brand .id-pick .id-sec-h,body.tax-brand .id-brand .id-ideas .id-sec-h,body.tax-brand .id-brand .id-vs .id-sec-h,body.tax-brand .id-brand .id-specs .id-sec-h,body.tax-brand .id-brand .id-buy .id-sec-h{font:700 42px/1.15 'Open Sans',sans-serif;color:var(--idp-ink);text-align:center;margin:0;letter-spacing:-.01em;position:relative;padding-bottom:22px}
body.tax-brand .id-brand .id-about .id-sec-h:after,body.tax-brand .id-brand .id-how .id-sec-h:after,body.tax-brand .id-brand .id-pick .id-sec-h:after,body.tax-brand .id-brand .id-ideas .id-sec-h:after,body.tax-brand .id-brand .id-vs .id-sec-h:after,body.tax-brand .id-brand .id-specs .id-sec-h:after,body.tax-brand .id-brand .id-buy .id-sec-h:after{content:'';position:absolute;left:50%;bottom:0;width:60px;height:4px;margin-left:-30px;background:linear-gradient(90deg,var(--idb),var(--idb-d))}
body.tax-brand .id-brand .id-how .id-sec-kick{color:var(--idb-x)}
body.tax-brand .id-brand .id-how .id-sec-h{color:#fff}
body.tax-brand .id-brand .id-how .id-sec-h:after{background:linear-gradient(90deg,var(--idb-x),#fff)}
body.tax-brand .id-brand .id-ideas .id-sec-sub{max-width:72ch;margin:18px auto 0;text-align:center;font-size:17px;line-height:1.65;color:var(--idp-body)}
/* ABOUT: photo card + text */
body.tax-brand .id-brand .id-about-grid{display:grid;grid-template-columns:440px 1fr;gap:64px;align-items:center;margin-top:48px}
body.tax-brand .id-brand .id-about-photo{position:relative;border-radius:10px;overflow:hidden;box-shadow:var(--idp-shadow);aspect-ratio:1/1}
body.tax-brand .id-brand .id-about-photo > img{width:100%;height:100%;object-fit:cover;display:block}
body.tax-brand .id-brand .id-about-logo{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(180deg,color-mix(in srgb,var(--lh-card-shade,#16213e) 0%,transparent),color-mix(in srgb,var(--lh-card-shade,#16213e) 90%,transparent));padding:60px 26px 22px;display:flex;align-items:flex-end;justify-content:flex-start;min-height:0;box-shadow:none;border-radius:0}
body.tax-brand .id-brand .id-about-logo img{max-width:170px;width:100%;height:auto;display:block}
body.tax-brand .id-brand .id-about-text p{font-size:17.5px;line-height:1.7;color:var(--idp-body);margin:0 0 18px}
body.tax-brand .id-brand .id-about-text p:last-child{margin-bottom:0}
/* HOW: the one dark band */
body.tax-brand .id-brand .id-how{background:var(--lh-sec-bg,var(--idp-navy))}
body.tax-brand .id-brand .id-steps{list-style:none;margin:48px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
body.tax-brand .id-brand .id-steps li{position:relative;margin:0;min-height:430px;border-radius:10px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;padding:28px 28px 30px;background:#000 center/cover no-repeat;box-shadow:0 20px 40px rgba(0,0,0,.3)}
body.tax-brand .id-brand .id-steps li:nth-child(1){background-image:var(--lh-img-use-1)}
body.tax-brand .id-brand .id-steps li:nth-child(2){background-image:var(--lh-img-use-2)}
body.tax-brand .id-brand .id-steps li:nth-child(3){background-image:var(--lh-img-use-3)}
body.tax-brand .id-brand .id-steps li:before{content:'';position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--idb-d,#1f4f9a) 10%,transparent) 0%,color-mix(in srgb,var(--lh-card-shade,#16213e) 50%,transparent) 45%,color-mix(in srgb,var(--lh-card-shade,#16213e) 96%,transparent) 100%)}
body.tax-brand .id-brand .id-step-n{position:absolute;top:8px;right:22px;font:800 120px/1 'Open Sans',sans-serif;color:rgba(255,255,255,.22);letter-spacing:-.04em;margin:0;width:auto;height:auto;background:none;box-shadow:none;border-radius:0;display:block}
body.tax-brand .id-brand .id-steps h3,body.tax-brand .id-brand .id-steps p{position:relative}
body.tax-brand .id-brand .id-steps h3{font:700 22px/1.25 'Open Sans',sans-serif;color:#fff;margin:0 0 10px;text-transform:none;letter-spacing:0;white-space:normal;overflow-wrap:break-word}
body.tax-brand .id-brand .id-steps h3:before{content:'';display:block;width:40px;height:4px;background:var(--idb-x);margin:0 0 14px}
body.tax-brand .id-brand .id-steps p{font-size:15.5px;line-height:1.6;color:rgba(255,255,255,.88);margin:0}
/* PICK: wide product cards */
body.tax-brand .id-brand .id-pick-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px;margin-top:48px}
/* six-item ranges read better 3-up than 4 + a ragged row of 2. Opt in per brand. */
body.tax-brand .id-brand .id-pick-grid--3{grid-template-columns:repeat(3,1fr)}
body.tax-brand .id-brand .id-pick-card{background:#fff;border-radius:10px;padding:0 0 28px;display:flex;flex-direction:column;margin:0;box-shadow:var(--idp-shadow);overflow:hidden;transition:transform .2s,box-shadow .2s}
body.tax-brand .id-brand .id-pick-card:hover{transform:translateY(-4px);box-shadow:0 22px 44px color-mix(in srgb,var(--idb-d,#1f4f9a) 16%,transparent)}
body.tax-brand .id-brand .id-pick-img{background:#fff;padding:26px 26px 6px;text-align:center}
body.tax-brand .id-brand .id-pick-img img{width:100%;max-width:260px;height:auto;aspect-ratio:1/1;object-fit:contain;display:inline-block}
body.tax-brand .id-brand .id-pick-card h3{font:700 21px/1.25 'Open Sans',sans-serif;color:var(--idp-ink);margin:10px 28px 12px;padding-bottom:12px;position:relative}
body.tax-brand .id-brand .id-pick-card h3:after{content:'';position:absolute;left:0;bottom:0;width:34px;height:3px;background:var(--idb)}
body.tax-brand .id-brand .id-pick-card p{font-size:15.5px;line-height:1.6;color:var(--idp-body);margin:0 28px 22px;flex:1 1 auto}
body.tax-brand .id-brand .id-pick-btn{display:inline-block;align-self:flex-start;margin:0 28px;background:var(--idb-d);color:#fff;font:700 12.5px/1 'Open Sans',sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:15px 22px;border-radius:4px;text-decoration:none;transition:background .15s}
body.tax-brand .id-brand .id-pick-btn:hover{color:#fff;background:var(--idb)}
/* IDEAS: linked tiles with icons */
body.tax-brand .id-brand .id-ideas-grid{list-style:none;margin:44px 0 0;padding:0;display:grid;grid-template-columns:repeat(5,1fr);gap:20px}
body.tax-brand .id-brand .id-ideas-grid li{margin:0;padding:0;display:block}
body.tax-brand .id-brand .id-idea{display:flex;flex-direction:column;gap:8px;height:100%;background:#fff;border:1px solid var(--idp-line);border-radius:10px;padding:24px 22px 20px;text-decoration:none !important;color:inherit;transition:transform .2s,box-shadow .2s,border-color .2s}
body.tax-brand .id-brand .id-idea:hover{transform:translateY(-4px);box-shadow:var(--idp-shadow);border-color:transparent}
body.tax-brand .id-brand .id-idea-ic{width:48px;height:48px;border-radius:12px;background-color:var(--idb-d);background-size:26px;background-position:center;background-repeat:no-repeat;margin-bottom:6px;flex:0 0 auto;box-shadow:0 6px 14px color-mix(in srgb,var(--idb-d,#1f4f9a) 25%,transparent)}
body.tax-brand .id-brand .id-idea strong{font:700 16px/1.3 'Open Sans',sans-serif;color:var(--idp-ink)}
body.tax-brand .id-brand .id-idea span:not(.id-idea-ic){font-size:14px;line-height:1.5;color:var(--idp-body);flex:1 1 auto}
body.tax-brand .id-brand .id-idea em{font:700 12px/1 'Open Sans',sans-serif;font-style:normal;color:var(--idb-d);letter-spacing:.04em;margin-top:6px;display:inline-flex;align-items:center;gap:6px}
body.tax-brand .id-brand .id-idea em:after{content:'';width:14px;height:14px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231f4f9a' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14M13 6l6 6-6 6'/%3E%3C/svg%3E") center/14px no-repeat;transition:transform .2s}
body.tax-brand .id-brand .id-idea:hover em:after{transform:translateX(4px)}
body.tax-brand .id-brand .id-idea-ic-1{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 21V9l2-2 2 2 2-2 2 2 2-2 2 2 2-2 2 2v12zM10 21v-5h4v5'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-idea-ic-2{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l8 4.5v9L12 21l-8-4.5v-9z'/%3E%3Cpath d='M4 7.5l8 4.5 8-4.5M12 12v9'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-idea-ic-3{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8c0 7 4 11 8 12 4-1 8-5 8-12-3 0-5-1-8-3-3 2-5 3-8 3z'/%3E%3Ccircle cx='9' cy='11' r='1'/%3E%3Ccircle cx='15' cy='11' r='1'/%3E%3Cpath d='M9 15c1.5 1.5 4.5 1.5 6 0'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-idea-ic-4{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3c3 2 5 6 5 10l-2 3H9l-2-3c0-4 2-8 5-10z'/%3E%3Ccircle cx='12' cy='10' r='1.6'/%3E%3Cpath d='M7 13l-3 3 3 1M17 13l3 3-3 1M10 16l-1 5h6l-1-5'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-idea-ic-5{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3l7 3v6c0 4-3 7-7 9-4-2-7-5-7-9V6z'/%3E%3Cpath d='M9 12h6M12 9v6'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-idea-ic-6{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 5h10l6 6-3 3M4 12h8l6 6'/%3E%3Ccircle cx='7' cy='8' r='1.4'/%3E%3Ccircle cx='15' cy='19' r='1.4'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-idea-ic-7{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='1'/%3E%3Cpath d='M3 15l5-4 4 3 3-2 6 3'/%3E%3Ccircle cx='16' cy='9' r='1.5'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-idea-ic-8{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='7' r='3'/%3E%3Cpath d='M8 21v-6a4 4 0 0 1 8 0v6M6 12l-3-3M18 12l3-3'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-idea-ic-9{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='8' width='14' height='11' rx='2'/%3E%3Cpath d='M12 8V4M9 4h6M9 19v2M15 19v2'/%3E%3Ccircle cx='9.5' cy='13' r='1'/%3E%3Ccircle cx='14.5' cy='13' r='1'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-idea-ic-10{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 16h20M4 16V9M20 16V9M4 9c4 4 12 4 16 0M8 16v-4M12 16v-6M16 16v-4'/%3E%3C/svg%3E")}

/* VS: scorecard */
body.tax-brand .id-brand .id-vs .id-tbl-wrap{overflow-x:auto;margin:44px auto 0;max-width:1060px;background:#fff;box-shadow:var(--idp-shadow);border-radius:12px}
body.tax-brand .id-brand .id-vs-t{width:100%;border-collapse:separate;border-spacing:0;font-size:15.5px;min-width:720px}
body.tax-brand .id-brand .id-vs-t th,body.tax-brand .id-brand .id-vs-t td{padding:18px 22px;border:0;border-bottom:1px solid var(--idp-line);text-align:left;vertical-align:middle;line-height:1.45;color:var(--idp-body)}
body.tax-brand .id-brand .id-vs-t tbody tr:last-child td,body.tax-brand .id-brand .id-vs-t tbody tr:last-child th{border-bottom:0}
body.tax-brand .id-brand .id-vs-t thead th{background:#fff;vertical-align:bottom;padding:26px 22px 18px;border-bottom:2px solid var(--idp-line)}
body.tax-brand .id-brand .id-vs-t thead th:first-child{font:700 11.5px/1.3 'Open Sans',sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#8a93a5}
body.tax-brand .id-brand .id-vs-t thead th span{display:block;font:700 19px/1.2 'Open Sans',sans-serif;color:var(--idp-ink)}
body.tax-brand .id-brand .id-vs-t thead th small{display:block;font-size:13px;color:#8a93a5;margin-top:4px}
body.tax-brand .id-brand .id-vs-t thead th.id-vs-hero{background:var(--idp-light);border-radius:12px 12px 0 0;position:relative}
body.tax-brand .id-brand .id-vs-t thead th.id-vs-hero img{width:64px;height:64px;object-fit:contain;display:block;margin:0 0 8px;border-radius:8px;background:#fff}
body.tax-brand .id-brand .id-vs-t thead th.id-vs-hero span{color:var(--idb-d)}
body.tax-brand .id-brand .id-vs-t tbody th{font:700 15px/1.4 'Open Sans',sans-serif;color:var(--idp-ink);width:30%}
body.tax-brand .id-brand .id-vs-t td:nth-child(2){background:var(--idp-light);font-weight:700;color:var(--idp-ink)}
body.tax-brand .id-brand .id-vs-t tbody tr:last-child td:nth-child(2){border-radius:0 0 0 0}
body.tax-brand .id-brand .id-vs-t td span{display:inline-flex;align-items:center;gap:10px}
body.tax-brand .id-brand .id-vs-t td.id-y span:before,body.tax-brand .id-brand .id-vs-t td.id-n span:before{content:'';flex:0 0 22px;width:22px;height:22px;border-radius:50%;background-position:center;background-repeat:no-repeat;background-size:12px}
body.tax-brand .id-brand .id-vs-t td.id-y span:before{background-color:#1f9d55;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3L12.5 5' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-vs-t td.id-n span:before{background-color:#e4e8ef;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 4.5l7 7M11.5 4.5l-7 7' fill='none' stroke='%236b7280' stroke-width='2.4' stroke-linecap='round'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-vs-t td.id-y span{color:var(--idp-ink)}
body.tax-brand .id-brand .id-vs-t td.id-n span{color:#6b7280}
/* SPECS: two-column spec sheet */
body.tax-brand .id-brand .id-specs .id-tbl-wrap{overflow:hidden;margin:44px auto 0;max-width:1100px;background:#fff;box-shadow:var(--idp-shadow);border:1px solid var(--idp-line);border-radius:12px}
body.tax-brand .id-brand .id-specs-t{width:100%;border-collapse:collapse;font-size:15.5px}
body.tax-brand .id-brand .id-specs-t tbody{display:grid;grid-template-columns:1fr 1fr}
body.tax-brand .id-brand .id-specs-t tr{display:flex;flex-direction:column;gap:6px;padding:22px 28px;border-bottom:1px solid var(--idp-line)}
body.tax-brand .id-brand .id-specs-t tr:nth-child(odd){border-right:1px solid var(--idp-line)}
body.tax-brand .id-brand .id-specs-t tr:nth-last-child(-n+2){border-bottom:0}
body.tax-brand .id-brand .id-specs-t th,body.tax-brand .id-brand .id-specs-t td{padding:0;border:0;background:none;text-align:left;width:auto;line-height:1.5}
body.tax-brand .id-brand .id-specs-t th{font:700 11.5px/1 'Open Sans',sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--idb)}
body.tax-brand .id-brand .id-specs-t td{color:var(--idp-ink);font-size:15.5px}
/* BUY: brand band, glass cards (reused on every brand page) */
body.tax-brand .id-brand .id-buy{background:var(--idb-d) var(--lh-img-use-5) center/cover no-repeat;background-attachment:fixed}
body.tax-brand .id-brand .id-buy:before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,color-mix(in srgb,var(--lh-band-a,var(--idb-d,#1f4f9a)) 94%,transparent),color-mix(in srgb,var(--lh-band-b,var(--idb,#3b8ad9)) 82%,transparent))}
body.tax-brand .id-brand .id-buy .id-sec-kick{color:var(--idb-x)}
body.tax-brand .id-brand .id-buy .id-sec-h{color:#fff}
body.tax-brand .id-brand .id-buy .id-sec-h:after{background:linear-gradient(90deg,var(--idb-x),#fff)}
body.tax-brand .id-brand .id-buy-grid{list-style:none;margin:48px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:22px}
body.tax-brand .id-brand .id-buy-grid li{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:12px;padding:30px 28px 28px;margin:0;display:flex;flex-direction:column;gap:10px;color:#fff;box-shadow:0 18px 40px rgba(0,0,0,.18);transition:transform .2s,background .2s}
body.tax-brand .id-brand .id-buy-grid li:hover{transform:translateY(-4px);background:rgba(255,255,255,.16)}
body.tax-brand .id-brand .id-buy-grid li:before{content:'';width:56px;height:56px;border-radius:50%;background-color:var(--idb-x);background-position:center;background-repeat:no-repeat;background-size:28px;margin-bottom:8px;box-shadow:0 8px 18px rgba(0,0,0,.2)}
body.tax-brand .id-brand .id-buy-grid li:nth-child(1):before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316213e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M14.5 9.5c-.4-1-1.4-1.5-2.5-1.5-1.4 0-2.5.8-2.5 2 0 2.6 5 1.4 5 4 0 1.2-1.1 2-2.5 2-1.1 0-2.1-.5-2.5-1.5M12 6.5v11'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-buy-grid li:nth-child(2):before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316213e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 7h11v9H3zM14 10h4l3 3v3h-7z'/%3E%3Ccircle cx='7' cy='18' r='2'/%3E%3Ccircle cx='17' cy='18' r='2'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-buy-grid li:nth-child(3):before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316213e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 21h18M5 21V9l7-5 7 5v12M9 21v-6h6v6M12 9v3'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-buy-grid li:nth-child(4):before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316213e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 10h11a5 5 0 0 1 0 10H8'/%3E%3Cpath d='M8 6l-4 4 4 4'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-buy-grid strong{font:700 18px/1.3 'Open Sans',sans-serif;color:#fff}
body.tax-brand .id-brand .id-buy-grid span{font-size:15px;line-height:1.6;color:rgba(255,255,255,.9)}
body.tax-brand .id-brand .id-buy-grid a{color:var(--idb-x);font-weight:700;text-decoration:underline}
/* no gap between the buy band and the photo strip */
body.tax-brand .id-brand .id-buy + .id-gal{margin-top:0}
/* parallax on the dark band too */
body.tax-brand .id-brand .id-how{background:var(--lh-sec-bg,var(--idp-navy)) var(--lh-img-kraft) center/600px repeat;background-attachment:fixed}
body.tax-brand .id-brand .id-how:before{content:'';position:absolute;inset:0;background:color-mix(in srgb,var(--lh-card-shade,#16213e) var(--lh-how-wash,93%),transparent)}
@media(max-width:1024px){ body.tax-brand .id-brand .id-buy,body.tax-brand .id-brand .id-how{background-attachment:scroll} }
/* TOC: fixed side rail (eufyMake pattern), brand colour */
body.lime-hub .id-toc{position:fixed;top:50%;right:0;transform:translate(calc(100% - 18px),-50%);z-index:90;display:flex;align-items:stretch;transition:transform .4s cubic-bezier(.2,.7,.2,1);border-radius:14px 0 0 14px;background:linear-gradient(180deg,var(--idb) 0%,var(--idb-d) 100%);box-shadow:-8px 0 28px -8px rgba(0,0,0,.5),0 0 0 1px rgba(0,0,0,.18),0 0 0 1px rgba(255,255,255,.1) inset;opacity:0;pointer-events:none;margin:0;padding:0;width:auto;left:auto;margin-left:0}
body.lime-hub .id-toc.is-ready{opacity:1;pointer-events:auto}
body.lime-hub .id-toc:hover,body.lime-hub .id-toc:focus-within,body.lime-hub .id-toc.is-open{transform:translate(0,-50%)}
body.lime-hub .id-toc-h{flex:0 0 18px;width:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-right:1px solid rgba(0,0,0,.12)}
body.lime-hub .id-toc-h svg{width:10px;height:10px;color:rgba(255,255,255,.75);transition:transform .35s ease}
body.lime-hub .id-toc:hover .id-toc-h svg,body.lime-hub .id-toc:focus-within .id-toc-h svg{transform:rotate(180deg)}
body.lime-hub .id-toc-p{padding:14px 14px 14px 12px;min-width:200px}
body.lime-hub .id-toc-p ul,body.lime-hub .id-toc-p li{list-style:none;margin:0;padding:0}
body.lime-hub .id-toc-p ul{display:flex;flex-direction:column;gap:1px}
body.lime-hub .id-toc-p a{position:relative;display:block;padding:9px 14px 9px 16px;color:#fff;text-decoration:none !important;font:600 13px/1.2 'Open Sans',sans-serif;letter-spacing:.01em;white-space:nowrap;text-shadow:0 1px 1px rgba(0,0,0,.18);border-radius:8px;transition:background .2s ease}
body.lime-hub .id-toc-p a:before{content:'';position:absolute;left:6px;top:50%;width:3px;height:0;background:rgba(255,255,255,.95);border-radius:2px;transform:translateY(-50%);transition:height .25s ease,opacity .2s ease;opacity:0}
body.lime-hub .id-toc-p a:hover{background:rgba(0,0,0,.12)}
body.lime-hub .id-toc-p a:hover:before{height:14px;opacity:.7}
body.lime-hub .id-toc-p a.is-active{background:rgba(0,0,0,.22)}
body.lime-hub .id-toc-p a.is-active:before{height:18px;opacity:1;box-shadow:0 0 8px rgba(255,255,255,.5)}
@media(max-width:1024px){body.lime-hub .id-toc{display:none}}
@media(prefers-reduced-motion:reduce){body.lime-hub .id-toc,body.lime-hub .id-toc-h svg,body.lime-hub .id-toc-p a,body.lime-hub .id-toc-p a:before{transition:none}}
/* responsive */
@media(max-width:1200px){ body.tax-brand .id-brand .id-pick-grid{grid-template-columns:repeat(2,1fr)} }
@media(max-width:1024px){ body.tax-brand .id-brand .id-buy-grid{grid-template-columns:repeat(2,1fr)} body.tax-brand .id-brand .id-ideas-grid{grid-template-columns:repeat(3,1fr)} body.tax-brand .id-brand .id-about-grid{grid-template-columns:320px 1fr;gap:36px} body.tax-brand .id-brand .id-steps li{min-height:360px} }
@media(max-width:820px){ body.tax-brand .id-brand .id-about,body.tax-brand .id-brand .id-how,body.tax-brand .id-brand .id-pick,body.tax-brand .id-brand .id-ideas,body.tax-brand .id-brand .id-vs,body.tax-brand .id-brand .id-specs,body.tax-brand .id-brand .id-buy{padding:56px 18px} body.tax-brand .id-brand .id-about .id-sec-h,body.tax-brand .id-brand .id-how .id-sec-h,body.tax-brand .id-brand .id-pick .id-sec-h,body.tax-brand .id-brand .id-ideas .id-sec-h,body.tax-brand .id-brand .id-vs .id-sec-h,body.tax-brand .id-brand .id-specs .id-sec-h,body.tax-brand .id-brand .id-buy .id-sec-h{font-size:30px} body.tax-brand .id-brand .id-steps{grid-template-columns:1fr;gap:16px} body.tax-brand .id-brand .id-steps li{min-height:300px} body.tax-brand .id-brand .id-step-n{font-size:90px} body.tax-brand .id-brand .id-ideas-grid{grid-template-columns:repeat(2,1fr)} body.tax-brand .id-brand .id-about-grid{grid-template-columns:1fr;gap:24px} body.tax-brand .id-brand .id-about-photo{aspect-ratio:4/3} body.tax-brand .id-brand .id-specs-t tbody{grid-template-columns:1fr} body.tax-brand .id-brand .id-specs-t tr:nth-child(odd){border-right:0} body.tax-brand .id-brand .id-specs-t tr:nth-last-child(-n+2){border-bottom:1px solid var(--idp-line)} body.tax-brand .id-brand .id-specs-t tr:last-child{border-bottom:0} }
@media(max-width:560px){ body.tax-brand .id-brand .id-pick-grid,body.tax-brand .id-brand .id-buy-grid,body.tax-brand .id-brand .id-ideas-grid{grid-template-columns:1fr} body.tax-brand .id-brand .id-about .id-sec-h,body.tax-brand .id-brand .id-how .id-sec-h,body.tax-brand .id-brand .id-pick .id-sec-h,body.tax-brand .id-brand .id-ideas .id-sec-h,body.tax-brand .id-brand .id-vs .id-sec-h,body.tax-brand .id-brand .id-specs .id-sec-h,body.tax-brand .id-brand .id-buy .id-sec-h{font-size:26px} }

/* polish v4: setup width, ideas list, comparison header band */
body.tax-brand .id-brand .id-pick .id-sec-in{max-width:1480px}
body.tax-brand .id-brand .id-pick-grid{gap:30px;margin-top:52px}
body.tax-brand .id-brand .id-pick-img{padding:30px 30px 8px}
body.tax-brand .id-brand .id-pick-img img{max-width:300px}
body.tax-brand .id-brand .id-pick-card h3{font-size:23px;margin:12px 30px 12px}
body.tax-brand .id-brand .id-pick-card p{font-size:16px;margin:0 30px 24px}
body.tax-brand .id-brand .id-pick-btn{margin:0 30px;padding:16px 24px;font-size:13px}
/* ideas as a two-column list */
body.tax-brand .id-brand .id-ideas .id-sec-in{max-width:1100px}
body.tax-brand .id-brand .id-ideas-list{display:grid;grid-template-columns:1fr 1fr;gap:0 56px;margin-top:40px}
body.tax-brand .id-brand .id-ideas-list li{border-bottom:1px solid var(--idp-line)}
body.tax-brand .id-brand .id-ideas-list .id-idea{display:grid;grid-template-columns:44px 1fr auto;grid-template-rows:auto auto;column-gap:16px;row-gap:2px;align-items:center;padding:18px 4px;border:0;border-radius:0;background:none;box-shadow:none;transform:none;transition:background .15s}
body.tax-brand .id-brand .id-ideas-list .id-idea:hover{background:var(--idp-light);transform:none;box-shadow:none}
body.tax-brand .id-brand .id-ideas-list .id-idea-ic{grid-row:1/3;width:44px;height:44px;border-radius:10px;background-color:#e9f1fb;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231f4f9a' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h6'/%3E%3C/svg%3E") !important;background-size:22px;box-shadow:none;margin:0}
body.tax-brand .id-brand .id-ideas-list .id-idea strong{grid-column:2;grid-row:1;font-size:16.5px}
body.tax-brand .id-brand .id-ideas-list .id-idea span:not(.id-idea-ic){grid-column:2;grid-row:2;font-size:14.5px;flex:none}
body.tax-brand .id-brand .id-ideas-list .id-idea em{grid-column:3;grid-row:1/3;margin:0;font-size:12px;white-space:nowrap}
/* comparison: header band, big product image, no wraps */
body.tax-brand .id-brand .id-vs .id-tbl-wrap{max-width:1200px;border-radius:14px}
body.tax-brand .id-brand .id-vs-t{min-width:860px;table-layout:fixed}
body.tax-brand .id-brand .id-vs-t col.id-c1{width:26%}
body.tax-brand .id-brand .id-vs-t thead th{background:var(--idp-light);vertical-align:bottom;padding:28px 24px 20px;border-bottom:0;text-align:center}
body.tax-brand .id-brand .id-vs-t thead th:first-child{text-align:left;vertical-align:bottom}
body.tax-brand .id-brand .id-vs-t thead th .id-vs-lbl{display:block;font:700 11.5px/1.4 'Open Sans',sans-serif;letter-spacing:.16em;text-transform:uppercase;color:#8a93a5}
body.tax-brand .id-brand .id-vs-t thead th span{font-size:20px}
body.tax-brand .id-brand .id-vs-t thead th small{margin-top:4px}
body.tax-brand .id-brand .id-vs-t thead th.id-vs-hero{background:var(--idb-d);border-radius:12px 12px 0 0;color:#fff;padding-top:18px}
body.tax-brand .id-brand .id-vs-t thead th.id-vs-hero img{width:100%;max-width:230px;height:auto;object-fit:contain;display:block;margin:0 auto 10px;border-radius:0;background:none;filter:drop-shadow(0 12px 18px rgba(0,0,0,.35))}
body.tax-brand .id-brand .id-vs-t thead th.id-vs-hero span{color:#fff}
body.tax-brand .id-brand .id-vs-t thead th.id-vs-hero small{color:rgba(255,255,255,.75)}
body.tax-brand .id-brand .id-vs-t th,body.tax-brand .id-brand .id-vs-t td{padding:20px 24px;white-space:nowrap}
body.tax-brand .id-brand .id-vs-t tbody th{width:auto;font-size:15.5px}
body.tax-brand .id-brand .id-vs-t td{text-align:center}
body.tax-brand .id-brand .id-vs-t td span{display:inline-flex;align-items:center;gap:10px;vertical-align:middle}
body.tax-brand .id-brand .id-vs-t td:nth-child(2){background:color-mix(in srgb,var(--idb,#3b8ad9) 8%,transparent)}
body.tax-brand .id-brand .id-vs-t tbody tr:last-child td:nth-child(2){border-radius:0 0 12px 12px}
/* The highlighted body column is hardcoded to the first data cell, which is right when the hero
   product is the first column (ChompSaw vs alternatives) and wrong for a range compared in order.
   --hero-col moves the tint to match the th carrying .id-vs-hero. Child index counts the row header,
   so the third product is nth-child(4). */
body.tax-brand .id-brand .id-vs-t--hero3 td:nth-child(2){background:none;font-weight:inherit;color:inherit}
body.tax-brand .id-brand .id-vs-t--hero3 tbody tr:last-child td:nth-child(2){border-radius:0}
body.tax-brand .id-brand .id-vs-t--hero3 td:nth-child(4){background:color-mix(in srgb,var(--idb,#3b8ad9) 8%,transparent);font-weight:700;color:var(--idp-ink)}
body.tax-brand .id-brand .id-vs-t--hero3 tbody tr:last-child td:nth-child(4){border-radius:0 0 12px 12px}

@media(max-width:1024px){ body.tax-brand .id-brand .id-ideas-list{grid-template-columns:1fr;gap:0} }
@media(max-width:820px){ body.tax-brand .id-brand .id-ideas-list .id-idea{grid-template-columns:40px 1fr;padding:14px 2px} body.tax-brand .id-brand .id-ideas-list .id-idea em{grid-column:2;grid-row:3;margin-top:4px} body.tax-brand .id-brand .id-ideas-list .id-idea-ic{grid-row:1/4} }

/* polish v5: spec sheet with product panel */
body.tax-brand .id-brand .id-specs .id-sec-in{max-width:1240px}
body.tax-brand .id-brand .id-specs .id-specs-wrap{display:grid;grid-template-columns:320px 1fr;max-width:none;overflow:hidden;border-radius:14px;border:0}
body.tax-brand .id-brand .id-specs-side{background:var(--idb-d);color:#fff;padding:40px 30px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:8px;position:relative;overflow:hidden}
body.tax-brand .id-brand .id-specs-side:before{content:'';position:absolute;inset:0;background:radial-gradient(120% 80% at 100% 0%,rgba(255,255,255,.14),transparent 60%)}
body.tax-brand .id-brand .id-specs-side img{position:relative;width:110%;max-width:none;margin-left:-5%;height:auto;display:block;margin-bottom:26px;filter:drop-shadow(0 16px 22px rgba(0,0,0,.4))}
body.tax-brand .id-brand .id-specs-name{position:relative;font:700 26px/1.1 'Open Sans',sans-serif;margin:0;color:#fff}
body.tax-brand .id-brand .id-specs-sub{position:relative;font-size:14px;line-height:1.5;color:rgba(255,255,255,.8);margin:0 0 6px}
body.tax-brand .id-brand .id-specs-price{position:relative;font:700 24px/1 'Open Sans',sans-serif;color:var(--idb-x);margin:6px 0 14px}
body.tax-brand .id-brand .id-specs-price span{font:600 12px/1 'Open Sans',sans-serif;color:rgba(255,255,255,.75);letter-spacing:.06em;text-transform:uppercase;margin-left:6px}
body.tax-brand .id-brand .id-specs-btn{position:relative;display:block;width:100%;text-align:center;background:var(--idb-x);color:var(--idp-navy);font:700 12.5px/1 'Open Sans',sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:15px 18px;border-radius:4px;text-decoration:none !important;margin-top:4px}
body.tax-brand .id-brand .id-specs-btn:hover{color:var(--idp-navy);filter:brightness(1.05)}
body.tax-brand .id-brand .id-specs-btn--ghost{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.3)}
body.tax-brand .id-brand .id-specs-btn--ghost:hover{color:#fff;background:rgba(255,255,255,.2)}
body.tax-brand .id-brand .id-specs-t tbody{grid-auto-rows:1fr}
body.tax-brand .id-brand .id-specs-t tr{padding:24px 30px;justify-content:center}
body.tax-brand .id-brand .id-specs-t th{font-size:11px}
body.tax-brand .id-brand .id-specs-t td{font-size:15.5px;line-height:1.55}
@media(max-width:1024px){ body.tax-brand .id-brand .id-specs .id-specs-wrap{grid-template-columns:260px 1fr} }
@media(max-width:820px){ body.tax-brand .id-brand .id-specs .id-specs-wrap{grid-template-columns:1fr} body.tax-brand .id-brand .id-specs-side{padding:28px 24px} body.tax-brand .id-brand .id-specs-side img{max-width:320px;margin:0 auto 18px} }

/* polish v6: aligned step cards, left-aligned comparison, sticky spec panel */
body.tax-brand .id-brand .id-steps li{min-height:460px;padding:28px 28px 44px;justify-content:flex-end}
body.tax-brand .id-brand .id-steps li:before{background:linear-gradient(180deg,color-mix(in srgb,var(--idb-d,#1f4f9a) 8%,transparent) 0%,color-mix(in srgb,var(--lh-card-shade,#16213e) 45%,transparent) 40%,color-mix(in srgb,var(--lh-card-shade,#16213e) 97%,transparent) 78%)}
body.tax-brand .id-brand .id-steps h3{font-size:24px;min-height:2.5em;display:flex;flex-direction:column;justify-content:flex-end;margin-bottom:12px}
body.tax-brand .id-brand .id-steps h3:before{margin-bottom:12px}
body.tax-brand .id-brand .id-steps p{min-height:6.6em}
body.tax-brand .id-brand .id-vs-t td{text-align:left;padding-left:28px}
body.tax-brand .id-brand .id-vs-t thead th{text-align:left;padding-left:28px}
body.tax-brand .id-brand .id-vs-t thead th.id-vs-hero{text-align:center}
body.tax-brand .id-brand .id-specs{overflow:visible}
body.tax-brand .id-brand .id-specs .id-specs-wrap{overflow:visible;align-items:start;background:linear-gradient(90deg,var(--idb-d) 0,var(--idb-d) 320px,#fff 320px);border-radius:14px}
body.tax-brand .id-brand .id-specs-side{position:sticky;top:150px;align-self:start;justify-content:flex-start;border-radius:14px 0 0 14px;min-height:0;padding:34px 30px 40px}
body.tax-brand .id-brand .id-specs-t{border-radius:0 14px 14px 0;overflow:hidden}
body.tax-brand .id-brand .id-specs-t tbody{grid-auto-rows:auto}
@media(max-width:1024px){ body.tax-brand .id-brand .id-specs .id-specs-wrap{background:linear-gradient(90deg,var(--idb-d) 0,var(--idb-d) 260px,#fff 260px)} }
@media(max-width:820px){ body.tax-brand .id-brand .id-specs .id-specs-wrap{background:#fff;overflow:hidden} body.tax-brand .id-brand .id-specs-side{position:static;border-radius:0} body.tax-brand .id-brand .id-steps li{min-height:340px} body.tax-brand .id-brand .id-steps p{min-height:0} body.tax-brand .id-brand .id-steps h3{min-height:0} }

/* sticky fix: XStore .template-container{overflow:hidden} makes it a scroll container and kills position:sticky. overflow:clip still clips the full-bleed bands but lets sticky work. Scoped to the hub only. */
body.lime-hub .template-container{overflow:clip}

/* polish v7: step card text block */
body.tax-brand .id-brand .id-steps li{min-height:470px;padding:28px 30px 40px}
body.tax-brand .id-brand .id-steps li:before{background:linear-gradient(180deg,color-mix(in srgb,var(--lh-card-shade,#16213e) 0%,transparent) 0%,color-mix(in srgb,var(--lh-card-shade,#16213e) 35%,transparent) 38%,color-mix(in srgb,var(--lh-card-shade,#16213e) 92%,transparent) 62%,color-mix(in srgb,var(--lh-card-shade,#16213e) 98%,transparent) 100%)}
body.tax-brand .id-brand .id-steps h3{font-size:23px;line-height:1.2;min-height:0;display:block;margin:0 0 12px;white-space:nowrap}
body.tax-brand .id-brand .id-steps h3:before{width:44px;margin-bottom:14px}
body.tax-brand .id-brand .id-steps p{font-size:15.5px;line-height:1.62;min-height:6.5em;max-width:34ch;color:rgba(255,255,255,.9)}
@media(max-width:820px){ body.tax-brand .id-brand .id-steps h3{white-space:normal;font-size:21px} body.tax-brand .id-brand .id-steps p{max-width:none} }

/* polish v8: step paragraphs reserve 6 lines so titles align across cards */
body.tax-brand .id-brand .id-steps p{min-height:9.8em}
@media(max-width:820px){body.tax-brand .id-brand .id-steps p{min-height:0}}
/* ===== END BRAND HUB BANNER ===== */

/* semantic pass 3 (2026-09-15): these were divs, now p/cite. Keep the same box. */
body.lime-hub p.id-rev-who,body.lime-hub p.id-sub-t,body.lime-hub p.id-modal-t{margin:0}
body.lime-hub p.id-lesson-h{margin-top:0}
body.lime-hub .id-rev-who cite,body.lime-hub cite{font-style:normal}

/* audit fixes 2026-09-15 */
body.lime-hub #products{scroll-margin-top:150px}
body.lime-hub .id-rev-src{font-size:13px;color:rgba(255,255,255,.75);margin:0 0 14px;text-align:center}
body.lime-hub .id-cmp caption.id-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* H1 second line (2026-09-15): the search term inside the heading, small under the big name */
body.lime-hub .id-bnr-h1{display:flex;flex-wrap:wrap;align-items:center}
body.lime-hub .id-bnr-h1 > span:first-child{order:1}
body.lime-hub .id-bnr-h1 .id-bnr-mark{order:0}
body.lime-hub .id-bnr-h1-sub{order:2;flex:0 0 100%;display:block;font:600 17px/1.3 'Open Sans',sans-serif;letter-spacing:.01em;color:rgba(255,255,255,.85);margin:6px 0 0;text-transform:none}
@media(max-width:820px){body.lime-hub .id-bnr-h1-sub{font-size:14px}}

/* video loops (2026-09-15): desktop only, JS adds html.lh-video-on when it will play them */
body.lime-hub video.id-loop{display:none}
html.lh-video-on body.lime-hub video.id-loop{display:block;position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;z-index:0}
html.lh-video-on body.lime-hub .id-bnr{position:relative;overflow:hidden}
html.lh-video-on body.lime-hub .id-loop-hero{opacity:1;filter:saturate(.85) brightness(.9)}
html.lh-video-on body.lime-hub .id-loop-card{opacity:1}
/* when a loop is playing, the still image behind it goes away so the two never fight */
html.lh-video-on body.lime-hub .id-bnr.has-live-video{--id-bg:none}
html.lh-video-on body.tax-brand .id-brand .id-steps li.has-live-video{background-image:none !important}
html.lh-video-on body.tax-brand .id-brand .id-buy.has-live-video{background-image:none;background-attachment:scroll}
/* Which setup: a faint loop under the section with grain, barely there */
html.lh-video-on body.tax-brand .id-brand .id-pick{position:relative}
html.lh-video-on body.lime-hub .id-loop-pick{opacity:.14;filter:blur(2px) grayscale(.3)}
html.lh-video-on body.tax-brand .id-brand .id-pick:after{display:none}
/* Which setup: quiet kraft texture under the cards, no motion */
body.tax-brand .id-brand .id-pick{position:relative}
body.tax-brand .id-brand .id-pick{background:var(--idp-light) var(--lh-img-use-4) center/cover no-repeat;background-attachment:fixed}
body.tax-brand .id-brand .id-pick:before{content:'';position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(180deg,rgba(245,249,253,.94) 0%,rgba(245,249,253,.86) 50%,rgba(245,249,253,.94) 100%)}
@media (max-width:1024px){body.tax-brand .id-brand .id-pick{background-attachment:scroll}}
body.tax-brand .id-brand .id-pick-unused:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.12;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:220px 220px}
html.lh-video-on body.lime-hub .id-bnr > *:not(.id-loop):not(.id-bnr-cred):not(.id-bnr-tint){position:relative;z-index:1}
html.lh-video-on body.lime-hub .id-brand .id-hero .id-bnr-cred{position:absolute;z-index:3}
/* hero readability over video: brand tint + grain on the video layer itself */
html.lh-video-on body.lime-hub .id-loop-hero{filter:saturate(.8) brightness(.62) contrast(1.05)}
html.lh-video-on body.lime-hub .id-bnr .id-bnr-tint{position:absolute !important;inset:0;z-index:0 !important;pointer-events:none;background:linear-gradient(90deg,color-mix(in srgb,var(--idb-d,#1f4f9a) 45%,#050a14) 0%,color-mix(in srgb,var(--idb-d,#1f4f9a) 45%,#050a14) 30%,color-mix(in srgb,var(--idb-d,#1f4f9a) 45%,transparent) 50%,color-mix(in srgb,var(--idb,#3b8ad9) 30%,transparent) 68%,color-mix(in srgb,var(--idb,#3b8ad9) 10%,transparent) 100%);opacity:.92;mix-blend-mode:normal}
html.lh-video-on body.lime-hub .id-bnr .id-bnr-tint:after{content:'';position:absolute;inset:0;opacity:.22;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:220px 220px}
html.lh-video-on body.lime-hub .id-steps li{position:relative}
html.lh-video-on body.lime-hub .id-steps li:before{z-index:1}
html.lh-video-on body.lime-hub .id-steps h3,html.lh-video-on body.lime-hub .id-steps p,html.lh-video-on body.lime-hub .id-step-n{z-index:2}
html.lh-video-on body.lime-hub .id-about-logo{z-index:2}
html.lh-video-on body.lime-hub .id-loop-buy{opacity:.7;filter:blur(3px) saturate(.9) brightness(.8);transform:scale(1.06)}
html.lh-video-on body.lime-hub .id-buy:before{z-index:1}
/* film grain over every loop */
html.lh-video-on body.lime-hub .id-steps li:after,html.lh-video-on body.lime-hub .id-buy:after{content:'';position:absolute;inset:0;pointer-events:none;z-index:1;opacity:.16;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:220px 220px}
html.lh-video-on body.lime-hub .id-about-photo{position:relative}

/* hero badge breathing room (2026-09-16): badge sits 80px down, copy block starts lower so the H1 clears it */
body.lime-hub .id-brand .id-hero .id-bnr-cred{top:50px}
/* mobile pass (2026-09-16) */
@media (max-width:782px){
  body.lime-hub .id-brand .id-hero .id-bnr-cred{position:static;top:auto;left:auto;margin:0 0 14px;display:inline-block}
  body.lime-hub .id-brand .id-hero .id-bnr-in{padding-top:28px}
  /* 2026-09-18: the score used to be dropped on phones so the line would fit. It is the part people read,
     so the line now wraps instead and keeps both halves. */
  body.lime-hub .id-brand .id-bnr-rating{flex-wrap:wrap;row-gap:1px}
  body.lime-hub .id-brand .id-bnr-rating-t{display:inline}
  body.lime-hub .id-brand .id-bnr-rating-n{white-space:normal;border-left:0;padding-left:0;margin-left:9px;font-size:12px}
  body.lime-hub .id-brand .id-bnr-rate a{display:flex;align-items:center;flex-wrap:nowrap}
  body.lime-hub .id-brand .id-bnr-h1-sub{font-size:15px}
  body.lime-hub .id-hero .id-brand-trust{display:grid;grid-template-columns:1fr 1fr}
  body.lime-hub .id-hero .id-brand-trust > li{padding:11px 14px;font-size:.68rem;gap:8px;min-width:0}
  body.lime-hub .id-hero .id-brand-trust > li.id-trust-brand{display:none}
  body.lime-hub .id-brand .id-rev-src{display:none}
  body.lime-hub .id-brand .id-cmp{min-width:560px !important;table-layout:auto !important}
  body.lime-hub .id-brand .id-cmp thead th{white-space:nowrap;font-size:11px}
  body.lime-hub .id-brand .id-cmp-price{white-space:nowrap}
  body.lime-hub .id-brand .id-vs-t thead th:first-child{white-space:normal;min-width:130px}
  body.lime-hub .id-brand .id-vs-t th,body.lime-hub .id-brand .id-vs-t td{padding:14px 14px}
}

/* mobile word trims (Sehroz 2026-09-16): hide secondary lines on phones, keep sections, bigger titles */
@media (max-width:782px){
  body.lime-hub .id-brand .id-les-s,body.lime-hub .id-brand .id-ideas .id-sec-sub,body.lime-hub .id-brand .id-faq-src,body.lime-hub .id-brand .id-cmp-note,body.lime-hub .id-brand .id-specs-price span,body.lime-hub .id-brand .id-specs-sub{display:none}
  body.lime-hub .id-brand .id-bnr-copy{font-size:15px;line-height:1.55}
  body.lime-hub .id-brand .id-about .id-sec-h,body.lime-hub .id-brand .id-how .id-sec-h,body.lime-hub .id-brand .id-pick .id-sec-h,body.lime-hub .id-brand .id-ideas .id-sec-h,body.lime-hub .id-brand .id-vs .id-sec-h,body.lime-hub .id-brand .id-specs .id-sec-h,body.lime-hub .id-brand .id-buy .id-sec-h,body.lime-hub .id-brand .id-gal .id-sec-h,body.lime-hub .id-brand .id-faq .id-sec-h{font-size:32px;line-height:1.1;letter-spacing:-.02em}
  body.lime-hub .id-brand .id-sec-kick{font-size:11px}
  body.lime-hub .id-brand .id-les-h{font-size:26px}
  body.lime-hub .id-brand .id-about-text p,body.lime-hub .id-brand .id-pick-card p,body.lime-hub .id-brand .id-buy-grid span,body.lime-hub .id-brand .id-steps p{font-size:15px;line-height:1.55}
  body.lime-hub .id-brand .id-pick-card h3,body.lime-hub .id-brand .id-buy-grid strong{font-size:20px}
  body.lime-hub .id-brand .id-steps h3{font-size:22px;white-space:normal}
  body.lime-hub .id-brand .id-ideas-list .id-idea span:not(.id-idea-ic){display:none}
  body.lime-hub .id-brand .id-ideas-list .id-idea{padding:12px 2px}
  body.lime-hub .id-brand .id-faq-i summary h3{font-size:16px}
  body.lime-hub .id-brand .id-faq-a{font-size:15px}
}

/* mobile hero: badge row at the top, copy directly under it (2026-09-16) */
@media (max-width:782px){
  body.lime-hub .id-brand .id-hero .id-bnr{align-content:flex-start;align-items:flex-start}
  body.lime-hub .id-brand .id-hero .id-bnr-cred{flex:0 0 100%;margin:0 0 0 22px;padding-top:18px}
  body.lime-hub .id-brand .id-hero .id-bnr .id-bnr-in{padding-top:14px !important}
  body.lime-hub .id-brand .id-about .id-sec-h,body.lime-hub .id-brand .id-how .id-sec-h,body.lime-hub .id-brand .id-pick .id-sec-h,body.lime-hub .id-brand .id-ideas .id-sec-h,body.lime-hub .id-brand .id-vs .id-sec-h,body.lime-hub .id-brand .id-specs .id-sec-h,body.lime-hub .id-brand .id-buy .id-sec-h,body.lime-hub .id-brand .id-gal .id-sec-h,body.lime-hub .id-brand .id-faq .id-sec-h{font-size:28px;line-height:1.12}
}

/* loops fade in only once they are actually playing; the still stays underneath until then */
html.lh-video-on body.lime-hub video.id-loop{opacity:0 !important;transition:opacity 1.2s ease}
html.lh-video-on body.lime-hub video.id-loop.is-live.id-loop-hero,html.lh-video-on body.lime-hub video.id-loop.is-live.id-loop-card{opacity:1 !important}
html.lh-video-on body.lime-hub video.id-loop.is-live.id-loop-buy{opacity:.7 !important}
html.lh-video-on body.lime-hub video.id-loop.is-live.id-loop-pick{opacity:.14 !important}
/* reveal on scroll: JS marks below-fold elements lh-pre, then is-in when they enter (or after 6s no matter what) */
body.lime-hub .lh-pre{transition:opacity .65s ease var(--lh-d,0ms),transform .65s cubic-bezier(.2,.8,.2,1) var(--lh-d,0ms) !important;animation:none !important}
body.lime-hub .lh-pre:not(.is-in){opacity:0 !important;transform:translateY(14px) !important}
body.lime-hub .lh-pre.is-in{opacity:1;transform:none}

/* ---- section title rhythm (2026-09-16). Only Project ideas uses a side title; the rest stay centred (Sehroz: lone left titles looked worse). Desktop only. ---- */
@media (min-width:1025px){
  body.lime-hub.tax-brand .id-brand .id-ideas .id-sec-in{display:grid;grid-template-columns:minmax(340px,.9fr) 1.5fr;column-gap:64px;align-items:start}
  body.lime-hub.tax-brand .id-brand .id-ideas .id-sec-kick{grid-column:1;text-align:left;margin:0 0 14px}
  body.lime-hub.tax-brand .id-brand .id-ideas .id-sec-h{grid-column:1;text-align:left;font-size:44px;line-height:1.08;letter-spacing:-.02em;max-width:12ch;margin:0;background:none}
  body.lime-hub.tax-brand .id-brand .id-ideas .id-sec-h:after{left:0;margin-left:0;width:80px}
  body.lime-hub.tax-brand .id-brand .id-ideas .id-sec-sub{grid-column:1;text-align:left;margin:22px 0 0;max-width:none}
  body.lime-hub.tax-brand .id-brand .id-ideas .id-sec-sub:after{content:'';display:block;margin-top:28px;aspect-ratio:4/3;border-radius:14px;background:var(--lh-img-use-3) center/cover no-repeat;box-shadow:0 18px 40px color-mix(in srgb,var(--lh-card-shade,#16213e) 14%,transparent)}
  body.lime-hub.tax-brand .id-brand .id-ideas .id-ideas-list{grid-column:2;grid-row:1/span 3;margin-top:0;grid-template-columns:1fr;gap:0}
}

/* ================= HERO B (2026-09-16, rev 2) =================
   Full-height hero after the Chaos V-Ray trial pages: video fills the frame, centred lockup,
   video card and its summary side by side, glowing text CTA. Active only on body.lime-hero-b
   (config `hero`:"b" or ?lhhero=b). Hero A untouched. */
body.lime-hero-b .id-brand .id-hero .id-bnr{
  min-height:100svh !important; max-height:none !important;
  display:grid !important;
  grid-template-columns:minmax(0,1.02fr) minmax(0,1fr);
  grid-template-areas:"title title" "rate rate" "badge badge" "video copy" "awards copy" "by by";
  align-content:center; justify-items:center;
  column-gap:clamp(24px,3.2vw,56px); row-gap:clamp(4px,.7vh,10px);
  padding:clamp(14px,2.2vh,32px) clamp(20px,4vw,56px) !important;
  animation:none !important; background-position:center !important;
}
body.lime-hero-b .id-brand .id-bnr-in,body.lime-hero-b .id-brand .id-bnr-media{display:contents !important}
body.lime-hero-b .id-brand .id-bnr-playwrap{display:none !important}

/* badge centred at the top */
body.lime-hero-b .id-brand .id-hero .id-bnr-cred{
  position:static !important; grid-area:badge; inset:auto !important; transform:none !important;
  display:flex !important; justify-content:center !important; animation:none !important;
  width:auto !important; margin:clamp(4px,.8vh,10px) 0 clamp(24px,3.6vh,44px) !important; z-index:4;
}

/* title lockup: mark sits beside the word, subtitle on its own line under both */
body.lime-hero-b .id-brand .id-bnr-h1,body.lime-hero-b .id-brand .id-bnr-h1 > span,body.lime-hero-b .id-brand .id-bnr-h1-sub{background:none !important;background-image:none !important;-webkit-background-clip:border-box !important;background-clip:border-box !important;-webkit-text-fill-color:#fff !important;color:#fff !important}
body.lime-hero-b .id-brand .id-bnr-h1{
  grid-area:title; display:flex; flex-flow:column; align-items:center; justify-content:center;
  row-gap:clamp(6px,1vh,14px); text-align:center;
  max-width:none; margin:0 auto !important; padding:0 !important;
  text-shadow:0 2px 24px rgba(4,10,20,.55);
}
body.lime-hero-b .id-brand .id-bnr-h1 > span:first-child{order:2;margin:0;color:#fff !important;-webkit-text-fill-color:#fff;background:none !important;font-size:clamp(38px,4.6vw,64px);line-height:1;letter-spacing:-.02em}
body.lime-hero-b .id-brand .id-bnr-mark{order:1;position:static !important;margin:0 auto !important;width:auto;height:clamp(54px,6vh,88px);filter:drop-shadow(0 10px 26px rgba(0,0,0,.55))}
body.lime-hero-b .id-brand .id-bnr-h1-sub{order:3;color:#fff !important;-webkit-text-fill-color:#fff;font-size:clamp(15px,1.3vw,20px);opacity:.95;white-space:nowrap;margin:2px auto 0}
/* --markonly: for brands whose mark IS the wordmark (xTool, and any future brand with a
   wide logotype rather than a compact badge). The brand word is left in the H1 for SEO and
   screen readers but hidden with .id-sr, so the descriptor line has to carry the lockup and
   needs headline weight. Reusable, not brand-scoped. */
body.lime-hero-b .id-brand .id-bnr-h1--markonly .id-bnr-h1-sub{font-size:clamp(19px,1.9vw,29px);font-weight:600;opacity:1;margin-top:clamp(16px,2.2vh,30px)}
/* A logotype must be sized by WIDTH. The base rule sizes the mark by height, which is right for
   a compact badge but renders a wide wordmark ~900px across. It also tilts the mark -5deg, which
   reads as playful on a badge and as a mistake on a logotype. Both overridden here; the !important
   is required because the responsive height rule further down carries one. */
/* the copy spans the video + awards rows, so without this it hangs from the top of the pair
   and reads as misaligned beside the video card. */
body.lime-hero-b .id-brand .id-bnr-copy{align-self:center}
body.lime-hero-b .id-brand .id-bnr-h1--markonly .id-bnr-mark{height:auto !important;width:clamp(200px,24vw,400px) !important;max-width:86vw;transform:none !important;margin:0 auto !important}
/* CTA lockup: brands supplying a wide logotype get it inline in the shop button. */
body.lime-hero-b .id-brand .id-bnr-shop .id-bnr-logo{height:1.05em;width:auto;display:inline-block;vertical-align:-0.12em;margin-right:.55em}
@media(max-width:820px){body.lime-hero-b .id-brand .id-bnr-h1--markonly .id-bnr-h1-sub{font-size:clamp(16px,4.4vw,21px)}}

/* rating, gold */
body.lime-hero-b .id-brand .id-bnr-rate{grid-area:rate;justify-content:center;display:flex;margin:2px 0 clamp(8px,1.4vh,16px)}
body.lime-hero-b .id-brand .id-bnr-rating{justify-content:center}
body.lime-hero-b .id-brand .id-bnr-rating-stars{color:#ffc83d !important;filter:drop-shadow(0 1px 6px rgba(255,200,61,.45))}
body.lime-hero-b .id-brand .id-bnr-rating-t{color:#fff}
body.lime-hero-b .id-brand .id-bnr-rating-n{color:rgba(255,255,255,.78)}

/* video card, with the product cutout pinned to its top left corner */
/* Every hero-B video rule below is scoped to .id-bnr. Unscoped they matched EVERY
   .id-yt on the page, including the FAQ video at the bottom of the brand page.
   The fatal one was `width:var(--lh-vidw)!important`: that variable is set by JS
   for the hero only, so the FAQ video computed to 0 width and vanished, leaving a
   bare heading. Found 2026-09-17. Any new .id-yt outside the hero needs this. */
body.lime-hero-b .id-brand .id-bnr .id-yt{grid-area:video;width:100%;max-width:min(440px,35vw);justify-self:end;margin:0;border-radius:14px;overflow:hidden;box-shadow:0 26px 60px rgba(0,0,0,.45);transition:max-width .45s cubic-bezier(.16,1,.3,1)}
body.lime-hero-b .id-brand .id-bnr-cutwrap{
  display:block !important; grid-area:video; justify-self:end !important; align-self:start !important;
  width:min(440px,35vw) !important; max-width:none !important; height:0 !important;
  position:relative !important; z-index:4 !important; margin:0 !important; padding:0 !important; overflow:visible !important;
  inset:auto !important;
}
body.lime-hero-b .id-brand .id-bnr-cut{
  position:absolute !important; left:-30px !important; right:auto !important; top:-46px !important; bottom:auto !important;
  width:clamp(110px,11vw,168px) !important; height:auto !important; max-width:none !important; margin:0 !important;
  filter:drop-shadow(0 18px 32px rgba(0,0,0,.6)); animation:lhTilt 5.6s ease-in-out infinite; transform-origin:60% 80%;
}

/* awards directly under the video, matching its width */
body.lime-hero-b .id-brand .id-bnr-awards{grid-area:awards;justify-self:end;width:min(440px,35vw);margin:calc(-1 * clamp(4px,.7vh,10px)) 0 0 !important;justify-content:center;opacity:.92;background:rgba(5,11,20,.34);backdrop-filter:blur(6px);border-radius:0 0 14px 14px}

/* summary beside the video, hairline divider that fades at both ends */
body.lime-hero-b .id-brand .id-bnr-copy{
  grid-area:copy; position:relative; align-self:center; justify-self:start; text-align:left;
  max-width:42ch; margin:0 !important; padding-left:clamp(22px,2.6vw,40px);
  font-size:clamp(14.5px,1.05vw,17px); line-height:1.7; color:#fff;
  text-shadow:0 1px 3px rgba(4,10,20,.75),0 2px 22px rgba(4,10,20,.65);
  transition:opacity .35s ease,transform .35s ease;
}
body.lime-hero-b .id-brand .id-bnr-copy::before{
  content:""; position:absolute; left:0; top:6%; bottom:6%; width:1px;
  background:linear-gradient(180deg,transparent,rgba(255,255,255,.34) 22%,rgba(255,255,255,.34) 78%,transparent);
}

/* CTA: plain text, hairline between the logo and the label, gentle float */
body.lime-hero-b .id-brand .id-bnr-by{
  grid-area:by; justify-self:center !important; width:auto !important; max-width:none;
  margin:clamp(26px,4.2vh,52px) auto 0 !important; display:flex; justify-content:center; align-items:center; gap:14px;
  position:relative; padding:11px 28px; border-radius:999px;
  background:rgba(255,255,255,.12); backdrop-filter:blur(8px);
  box-shadow:0 0 3rem rgba(255,255,255,.34), 0 12px 34px rgba(0,0,0,.34), inset 0 0 0 1px rgba(255,255,255,.24);
  transition:box-shadow .5s ease;
  animation:lhFloatPulse 3.4s ease-in-out infinite; will-change:transform;
}
body.lime-hero-b .id-brand .id-bnr-by:hover{box-shadow:0 0 7rem rgba(255,255,255,.6), 0 12px 34px rgba(0,0,0,.34), inset 0 0 0 1px rgba(255,255,255,.44)}
body.lime-hero-b .id-brand .id-bnr-by > span{color:rgba(255,255,255,.68);font-size:12px;letter-spacing:.14em;text-transform:uppercase}
body.lime-hero-b .id-brand .id-bnr-shop{
  background:none !important; box-shadow:none !important; border:0 !important;
  padding:2px !important; color:#fff !important; display:inline-flex; align-items:center; gap:14px;
}
body.lime-hero-b .id-brand .id-bnr-shop::after{display:none !important}
body.lime-hero-b .id-brand .id-bnr-logo{padding-right:0;background-image:none;filter:brightness(0) invert(1)}
body.lime-hero-b .id-brand .id-bnr-shop-t{
  background:none !important; color:#fff !important; padding:0 !important;
  font-weight:700; letter-spacing:.11em; text-transform:uppercase; font-size:13px;
  background:var(--idb,#3b8ad9) !important; color:#fff !important;
  padding:10px 20px !important; border-radius:999px; text-shadow:none;
  box-shadow:0 6px 18px color-mix(in srgb, var(--idb,#3b8ad9) 55%, transparent);
}
@keyframes lhFloatPulse{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-6px) scale(1.035)}}
@keyframes lhTilt{0%,100%{transform:rotate(var(--lh-cut-tilt,-13deg)) translateY(0)}50%{transform:rotate(var(--lh-cut-tilt,-13deg)) translateY(-9px)}}

/* playing or previewing: summary, cutout and awards step aside, the video takes the width.
   !important throughout because the load-in animation uses fill-mode both, which otherwise wins. */
body.lime-hero-b .id-brand .id-hero .id-bnr:has(.id-bnr-media--expanded),
body.lime-hero-b .id-brand .id-hero .id-bnr:has(.id-yt-previewing){grid-template-areas:"title title" "rate rate" "badge badge" "video video" "awards awards" "by by" !important}
body.lime-hero-b .id-brand .id-bnr:has(.id-bnr-media--expanded) .id-bnr-copy,
body.lime-hero-b .id-brand .id-bnr:has(.id-yt-previewing) .id-bnr-copy{opacity:0 !important;transform:translateY(8px) !important;pointer-events:none}
body.lime-hero-b .id-brand .id-bnr:has(.id-bnr-media--expanded) .id-bnr-cutwrap,
body.lime-hero-b .id-brand .id-bnr:has(.id-yt-previewing) .id-bnr-cutwrap{opacity:0 !important;pointer-events:none;transition:opacity .3s ease}
body.lime-hero-b .id-brand .id-bnr:has(.id-bnr-media--expanded) .id-bnr-awards,
body.lime-hero-b .id-brand .id-bnr:has(.id-yt-previewing) .id-bnr-awards{opacity:0 !important;height:0 !important;margin:0 !important;overflow:hidden;grid-column:1 / -1 !important}
body.lime-hero-b .id-brand .id-bnr:has(.id-bnr-media--expanded) .id-bnr-cutwrap,
body.lime-hero-b .id-brand .id-bnr:has(.id-yt-previewing) .id-bnr-cutwrap{grid-column:1 / -1 !important;width:min(900px,66vw) !important;justify-self:center !important}
/* the summary column collapses so the video really is centred on the page */
body.lime-hero-b .id-brand .id-bnr:has(.id-bnr-media--expanded) .id-bnr-copy,
body.lime-hero-b .id-brand .id-bnr:has(.id-yt-previewing) .id-bnr-copy{grid-column:1 / -1 !important;height:0 !important;margin:0 !important;padding:0 !important;overflow:hidden}
body.lime-hero-b .id-brand .id-bnr:has(.id-bnr-media--expanded) .id-yt,
body.lime-hero-b .id-brand .id-bnr:has(.id-yt-previewing) .id-yt{
  grid-column:1 / -1 !important;
  max-width:min(900px,66vw) !important; width:min(900px,66vw) !important;
  justify-self:center !important; margin-left:auto !important; margin-right:auto !important;
}

/* load-in */
body.lime-hero-b .id-brand .id-bnr-h1,body.lime-hero-b .id-brand .id-bnr-rate,body.lime-hero-b .id-brand .id-bnr-awards{animation:lhHeroRise .7s cubic-bezier(.2,.8,.2,1) both}
body.lime-hero-b .id-brand .id-bnr-by{animation:lhHeroRise .7s cubic-bezier(.2,.8,.2,1) .3s both, lhFloatPulse 3.4s ease-in-out 1s infinite !important}
body.lime-hero-b .id-brand .id-bnr-rate{animation-delay:.08s}
body.lime-hero-b .id-brand .id-bnr .id-yt{animation-delay:.16s}
body.lime-hero-b .id-brand .id-bnr-copy{animation-delay:.22s}
body.lime-hero-b .id-brand .id-bnr-by{animation-delay:.3s}
body.lime-hero-b .id-brand .id-bnr-awards{animation-delay:.38s}
@keyframes lhHeroRise{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}

/* scrim: dark through the middle where the content sits, edges left clear */
html.lh-video-on body.lime-hero-b .id-bnr .id-bnr-tint{
  background:
    linear-gradient(180deg, rgba(4,10,18,.04) 0%, transparent 18%, transparent 88%, rgba(4,10,18,.30) 100%),
    color-mix(in srgb, var(--idb-d,#1f4f9a) 22%, rgba(8,18,34,.20)) !important;
  opacity:1 !important;
}
html.lh-video-on body.lime-hero-b .id-loop-hero{filter:brightness(1.24) saturate(1.12) contrast(1.04)}

/* tablets and phones: one column, video first */
@media (max-width:900px){
  body.lime-hero-b .id-brand .id-hero .id-bnr{grid-template-columns:minmax(0,1fr);grid-template-areas:"title" "rate" "video" "awards" "copy" "by";min-height:auto !important}
  body.lime-hero-b .id-brand .id-bnr .id-yt,body.lime-hero-b .id-brand .id-bnr-cutwrap,body.lime-hero-b .id-brand .id-bnr-awards{justify-self:center;max-width:min(560px,92vw);width:min(560px,92vw)}
  body.lime-hero-b .id-brand .id-bnr-copy{justify-self:center;text-align:center;padding:18px 0 0;max-width:56ch}
  body.lime-hero-b .id-brand .id-bnr-copy::before{left:50%;right:auto;top:0;bottom:auto;width:120px;height:1px;transform:translateX(-50%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.34),transparent)}
  body.lime-hero-b .id-brand .id-bnr-h1-sub{white-space:normal}
}
@media (prefers-reduced-motion:reduce){
  body.lime-hero-b .id-brand .id-bnr-shop,body.lime-hero-b .id-brand .id-bnr-cut,
  body.lime-hero-b .id-brand .id-bnr-h1,body.lime-hero-b .id-brand .id-bnr-rate,body.lime-hero-b .id-brand .id-bnr .id-yt,
  body.lime-hero-b .id-brand .id-bnr-copy,body.lime-hero-b .id-brand .id-bnr-by,body.lime-hero-b .id-brand .id-bnr-awards{animation:none}
}
/* keep the video card clean: no inherited overlays or dimming */
body.lime-hero-b .id-brand .id-bnr .id-yt::before,body.lime-hero-b .id-brand .id-bnr .id-yt::after{display:none !important}
body.lime-hero-b .id-brand .id-bnr .id-yt .id-yt-btn img{position:absolute !important;inset:0 !important;width:100% !important;height:100% !important;max-width:none !important;object-fit:cover !important;opacity:1 !important;filter:none !important;margin:0 !important;border-radius:0 !important}
body.lime-hero-b .id-brand .id-bnr .id-yt{border:0 !important;background:#0b1320}
/* V-Ray glow: a wide soft halo that opens up on hover */
body.lime-hero-b .id-brand .id-bnr .id-yt{transition:box-shadow .5s ease, max-width .45s cubic-bezier(.16,1,.3,1)}
body.lime-hero-b .id-brand .id-bnr .id-yt{box-shadow:0 0 4.5rem rgba(255,255,255,.34), 0 0 11rem color-mix(in srgb,var(--idb,#3b8ad9) 78%, transparent), 0 20px 48px rgba(0,0,0,.4) !important}
body.lime-hero-b .id-brand .id-bnr .id-yt:hover{box-shadow:0 0 8rem rgba(255,255,255,.55), 0 0 15rem color-mix(in srgb,var(--idb,#3b8ad9) 92%, transparent), 0 20px 48px rgba(0,0,0,.4) !important}
/* Hero B keeps version A's bright banner photo as the base and blends the loop over it,
   because the loop footage on its own is dark, soft and low contrast. */
html.lh-video-on body.lime-hero-b .id-brand .id-hero .id-bnr.has-live-video{--id-bg:var(--lh-hero-bg, none)}
html.lh-video-on body.lime-hero-b .id-loop-hero{opacity:.62 !important;filter:brightness(1.18) saturate(1.1) contrast(1.02)}
html.lh-video-on body.lime-hero-b .id-bnr .id-bnr-tint{
  background:
    linear-gradient(180deg, rgba(4,10,18,.04) 0%, transparent 18%, transparent 88%, rgba(4,10,18,.28) 100%),
    color-mix(in srgb, var(--idb-d,#1f4f9a) 24%, rgba(8,18,34,.16)) !important;
}
/* the banner photo returns without hero A's heavy left-weighted gradient, which was the real source
   of the darkness once --id-bg came back; one light even wash instead, the tint layer does the rest */
body.lime-hero-b .id-brand .id-hero .id-bnr{
  background-image:linear-gradient(0deg, rgba(8,18,34,.36), rgba(8,18,34,.36)), var(--id-bg, none) !important;
  background-size:cover, cover !important; background-position:center, center !important; background-repeat:no-repeat, no-repeat !important;
}
html.lh-video-on body.lime-hero-b .id-loop-hero{opacity:.55 !important;filter:brightness(1.15) saturate(1.08) contrast(1.02)}
html.lh-video-on body.lime-hero-b .id-bnr .id-bnr-tint{
  /* 2026-09-17: the middle band was fully transparent (22% to 84%), which is exactly
     where the headline and copy sit, so text fought the video behind it. Carry a light
     wash right through the middle instead of dropping to zero, and lift the flat brand
     wash 22 -> 28. Deliberately gentle: enough to settle the type, not enough to dull
     the footage. */
  background:
    linear-gradient(180deg, rgba(4,10,18,.30) 0%, rgba(4,10,18,.14) 28%, rgba(4,10,18,.14) 72%, rgba(4,10,18,.38) 100%),
    color-mix(in srgb, var(--idb-d,#1f4f9a) 28%, transparent) !important;
}
/* Content must sit above the tint. .id-bnr-tint is absolutely positioned with a z-index, so it paints
   above static grid items; that veil was what made the video card, copy, awards and CTA look hazy while
   the title, badge and cutout (which carry their own z-index) stayed crisp. */
body.lime-hero-b .id-brand .id-bnr-h1,
body.lime-hero-b .id-brand .id-bnr-rate,
body.lime-hero-b .id-brand .id-bnr-copy,
body.lime-hero-b .id-brand .id-bnr .id-yt,
body.lime-hero-b .id-brand .id-bnr-awards,
body.lime-hero-b .id-brand .id-bnr-by{position:relative;z-index:2}
body.lime-hero-b .id-brand .id-bnr-cutwrap{z-index:4}
body.lime-hero-b .id-brand .id-hero .id-bnr-cred{z-index:4}
/* Scale the hero with the viewport, not just its width: on tall or large displays the block was
   floating small inside a big frame. One variable drives the video, the cutout and the awards row. */
body.lime-hero-b .id-brand .id-hero .id-bnr{--lh-vidw:clamp(340px, min(40vw, 46vh), 660px)}
body.lime-hero-b .id-brand .id-bnr .id-yt{max-width:var(--lh-vidw) !important;width:var(--lh-vidw) !important}
body.lime-hero-b .id-brand .id-bnr-cutwrap{width:var(--lh-vidw) !important}
body.lime-hero-b .id-brand .id-bnr-awards{width:var(--lh-vidw) !important}
body.lime-hero-b .id-brand .id-bnr-h1 > span:first-child{font-size:clamp(34px, max(3.9vw, 4.2vh), 76px) !important}
body.lime-hero-b .id-brand .id-bnr-mark{height:clamp(54px, max(4.1vw, 5.9vh), 134px) !important}
body.lime-hero-b .id-brand .id-bnr-h1-sub{font-size:clamp(15px, max(1.2vw, 1.4vh), 24px) !important}
body.lime-hero-b .id-brand .id-bnr-copy{font-size:clamp(14.5px, max(1.02vw, 1.15vh), 20px) !important;max-width:44ch}
body.lime-hero-b .id-brand .id-bnr-cut{width:clamp(104px, max(10vw, 11vh), 230px) !important}
@media (max-width:900px){
  body.lime-hero-b .id-brand .id-hero .id-bnr{--lh-vidw:min(560px,92vw)}
  body.lime-hero-b .id-brand .id-bnr .id-yt,body.lime-hero-b .id-brand .id-bnr-cutwrap,body.lime-hero-b .id-brand .id-bnr-awards{width:var(--lh-vidw) !important;max-width:var(--lh-vidw) !important}
}
/* hero B video controls: close button, and the cutout moves to the top right while it plays */
body.lime-hero-b .id-brand .lh-yt-close{
  position:absolute;top:10px;right:10px;z-index:6;width:38px;height:38px;border:0;border-radius:50%;
  background:rgba(8,16,28,.62);color:#fff;font-size:22px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;backdrop-filter:blur(6px);
  box-shadow:0 6px 18px rgba(0,0,0,.4), inset 0 0 0 1px rgba(255,255,255,.28);transition:background .2s,transform .2s;
}
body.lime-hero-b .id-brand .lh-yt-close:hover{background:rgba(8,16,28,.86);transform:scale(1.06)}
body.lime-hero-b .id-brand .lh-yt-close[hidden]{display:none}
body.lime-hero-b .id-brand .id-bnr:has(.id-bnr-media--expanded) .id-bnr-cutwrap,
body.lime-hero-b .id-brand .id-bnr:has(.id-yt-previewing) .id-bnr-cutwrap{opacity:1 !important;pointer-events:none}

@keyframes lhTiltR{0%,100%{transform:rotate(13deg) translateY(0)}50%{transform:rotate(13deg) translateY(-9px)}}

/* hero B preview: the sticky product bar floats at the bottom instead of locking to the top,
   with space beneath it, rounded on every corner, and it fades up as it appears */
body.lime-hero-b .main-products-loop .products.id-stuck{
  top:auto !important; bottom:26px !important;
  left:50% !important; right:auto !important;
  width:min(1480px, calc(100vw - 56px)) !important;
  margin:0 !important; border-radius:18px !important; overflow:hidden;
  box-shadow:0 22px 56px rgba(8,16,30,.38), inset 0 0 0 1px rgba(255,255,255,.6);
  animation:lhStickIn .38s cubic-bezier(.2,.8,.2,1) both;
}
@keyframes lhStickIn{from{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%,0)}}

/* load choreography: the video card arrives in the centre of the hero, settles, then slides left into
   its column while the summary slides out from behind it to the right and fades in */
body.lime-hero-b .id-brand .id-bnr .id-yt{
  animation:lhVidLand 1.65s cubic-bezier(.22,.9,.25,1) both !important; z-index:3;
}
body.lime-hero-b .id-brand .id-bnr-copy{
  animation:lhCopyOut 1.65s cubic-bezier(.22,.9,.25,1) both !important; z-index:1;
}
body.lime-hero-b .id-brand .id-bnr-cutwrap{animation:lhVidLand 1.65s cubic-bezier(.22,.9,.25,1) both !important}
body.lime-hero-b .id-brand .id-bnr-awards{animation:lhVidLand 1.65s cubic-bezier(.22,.9,.25,1) both !important}
@keyframes lhVidLand{
  0%{opacity:0;transform:translateX(calc(var(--lh-vidw,440px) / 2 + 1.9vw)) scale(.965)}
  18%{opacity:1}
  46%{opacity:1;transform:translateX(calc(var(--lh-vidw,440px) / 2 + 1.9vw)) scale(1)}
  100%{opacity:1;transform:translateX(0) scale(1)}
}
@keyframes lhCopyOut{
  0%,46%{opacity:0;transform:translateX(-38%)}
  70%{opacity:.35}
  100%{opacity:1;transform:translateX(0)}
}
/* once the player is open the choreography must not fight the expand */
body.lime-hero-b .id-brand .id-bnr:has(.id-bnr-media--expanded) .id-yt,
body.lime-hero-b .id-brand .id-bnr:has(.id-yt-previewing) .id-yt,
body.lime-hero-b .id-brand .id-bnr:has(.id-bnr-media--expanded) .id-bnr-cutwrap,
body.lime-hero-b .id-brand .id-bnr:has(.id-yt-previewing) .id-bnr-cutwrap,
body.lime-hero-b .id-brand .id-bnr:has(.id-bnr-media--expanded) .id-bnr-awards,
body.lime-hero-b .id-brand .id-bnr:has(.id-yt-previewing) .id-bnr-awards{animation:none !important;transform:none !important}
@media (prefers-reduced-motion:reduce){
  body.lime-hero-b .id-brand .id-bnr .id-yt,body.lime-hero-b .id-brand .id-bnr-copy,
  body.lime-hero-b .id-brand .id-bnr-cutwrap{animation:none !important;transform:none !important;opacity:1 !important}
}

/* hero B: the theme's hover-preview rules make the player click-through and paint a "Click for sound"
   overlay. Hero B runs one real player with YouTube's own controls, so both must be off. */
body.lime-hero-b .id-brand .id-bnr .id-yt.id-yt-previewing iframe,
body.lime-hero-b .id-brand .id-bnr .id-yt iframe{pointer-events:auto !important;z-index:4}
body.lime-hero-b .id-brand .id-bnr .id-yt.id-yt-previewing:not(.id-yt-expanded)::after{display:none !important;content:none !important}
body.lime-hero-b .id-brand .id-bnr .id-yt.id-yt-previewing:not(.id-yt-expanded){cursor:default}
body.lime-hero-b .id-brand .id-bnr .id-yt .id-yt-btn{pointer-events:none}
body.lime-hero-b .id-brand .lh-yt-close{z-index:7}

/* ===== HERO B, PHONES AND TABLETS =====
   Appended last so it wins over the desktop choreography, which translates items horizontally and
   pushed the summary, rating and cutout off a narrow screen. Also restores the badge to the flow:
   the earlier mobile grid omitted its area name, so it was auto-placed at the very bottom. */
@media (max-width:900px){
  body.lime-hero-b .id-brand .id-hero .id-bnr{
    grid-template-columns:minmax(0,1fr) !important;
    grid-template-areas:"title" "rate" "badge" "video" "awards" "copy" "by" !important;
    min-height:auto !important; row-gap:10px !important;
    padding:26px 16px 34px !important; justify-items:center !important;
    --lh-vidw:min(560px, 100%);
  }
  body.lime-hero-b .id-brand .id-bnr-h1,
  body.lime-hero-b .id-brand .id-bnr-rate,
  body.lime-hero-b .id-brand .id-hero .id-bnr-cred,
  body.lime-hero-b .id-brand .id-bnr .id-yt,
  body.lime-hero-b .id-brand .id-bnr-cutwrap,
  body.lime-hero-b .id-brand .id-bnr-awards,
  body.lime-hero-b .id-brand .id-bnr-copy,
  body.lime-hero-b .id-brand .id-bnr-by{
    animation:none !important; transform:none !important; opacity:1 !important;
    justify-self:center !important; margin-left:auto !important; margin-right:auto !important;
  }
  body.lime-hero-b .id-brand .id-bnr .id-yt,
  body.lime-hero-b .id-brand .id-bnr-cutwrap,
  body.lime-hero-b .id-brand .id-bnr-awards{width:100% !important;max-width:100% !important}
  body.lime-hero-b .id-brand .id-bnr-copy{
    width:100% !important; max-width:52ch !important; text-align:center;
    padding:18px 0 0 !important; font-size:15px !important; line-height:1.65;
  }
  body.lime-hero-b .id-brand .id-bnr-copy::before{
    left:50%; right:auto; top:0; bottom:auto; width:110px; height:1px; transform:translateX(-50%);
    background:linear-gradient(90deg,transparent,rgba(255,255,255,.34),transparent);
  }
  /* bigger, shorter on a phone */
  body.lime-hero-b .id-brand .id-bnr-h1 > span:first-child{font-size:clamp(34px,9.4vw,46px) !important}
  body.lime-hero-b .id-brand .id-bnr-mark{height:clamp(50px,15vw,74px) !important}
  body.lime-hero-b .id-brand .id-bnr-h1-sub{white-space:nowrap !important;font-size:clamp(13px,3.9vw,16px) !important;max-width:none}
  body.lime-hero-b .id-brand .id-bnr-cut{
    animation:lhTilt 5.6s ease-in-out infinite !important;
    left:2px !important; right:auto !important; top:-26px !important;
    width:clamp(80px,21vw,110px) !important;
  }
  body.lime-hero-b .id-brand .id-bnr-by{padding:9px 20px !important;gap:10px}
  body.lime-hero-b .id-brand .id-bnr-shop-t{font-size:12px;padding:9px 16px !important}
  body.lime-hero-b .id-brand .lh-yt-close{width:34px;height:34px;font-size:19px}
}
/* 2026-09-18: the plugin's output filter strips inline <svg>, so the section-menu handle lost its arrow on every brand.
   Drawn here as a mask instead; if an svg ever survives, it wins. */
body.lime-hub .id-toc-h:not(:has(svg))::before{content:"";display:block;width:10px;height:10px;background:rgba(255,255,255,.75);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 18 9 12 15 6'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='15 18 9 12 15 6'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .35s ease}
body.lime-hub .id-toc:hover .id-toc-h::before,body.lime-hub .id-toc:focus-within .id-toc-h::before{transform:rotate(180deg)}
@media(prefers-reduced-motion:reduce){body.lime-hub .id-toc-h::before{transition:none}}
/* 2026-09-18 About card as a video card: optional loops.about plays over the photo on desktop (the photo stays the still on
   phones), .id-about-play opens the brand film in the lightbox, and the shade under the logo follows the brand. */
body.tax-brand .id-brand .id-about-logo{background:linear-gradient(180deg,color-mix(in srgb,var(--lh-about-shade,#16213e) 0%,transparent),color-mix(in srgb,var(--lh-about-shade,#16213e) 90%,transparent))}
html.lh-video-on body.lime-hub video.id-loop.is-live.id-loop-about{opacity:1 !important}
.id-brand .id-about-play{position:absolute;right:18px;bottom:22px;z-index:3;display:inline-flex;align-items:center;gap:9px;padding:8px 14px 8px 8px;border-radius:99px;background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.5);color:#fff !important;text-decoration:none !important;font-size:12.5px;line-height:1.2;font-weight:700;letter-spacing:.03em;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:background .2s,border-color .2s}
.id-brand .id-about-play::before{content:"";flex:0 0 24px;width:24px;height:24px;border-radius:50%;background:var(--id-accent,#056db7) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 12'%3E%3Cpath d='M1 1l8 5-8 5z' fill='%23fff'/%3E%3C/svg%3E") 55% 50%/9px no-repeat}
.id-brand .id-about-play:hover{background:rgba(255,255,255,.26);border-color:#fff}
.id-brand .id-about-play em{font-style:normal;font-weight:500;opacity:.8}
@media (max-width:1024px){.id-brand .id-about-play{right:auto;bottom:auto;left:14px;top:14px}}

/* 2026-09-18: the theme forces headings onto one line, which clipped the longer xTool step titles
   (ChompSaw's are short, so it never showed). Card headings wrap. */
body.lime-hub .id-brand .id-steps h3,body.lime-hub .id-brand .id-pick-card h3,body.lime-hub .id-brand .id-ideas h3,body.lime-hub .id-brand .id-buy-grid h3{white-space:normal !important;overflow-wrap:break-word}

/* ===== 2026-09-21 phone pass (Sehroz review, both brands). Phones only, nothing above 767px changes. ===== */
@media (max-width:767px){
/* 1. hero copy sat on a flat 36% wash and was hard to read: soft brand-dark panel behind the paragraph */
body.lime-hub .id-brand p.id-bnr-copy{font-size:15.5px;line-height:1.62;padding:16px 14px !important;border-radius:14px;background:color-mix(in srgb,var(--lh-card-shade,#16213e) 64%,transparent) !important;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);box-shadow:0 10px 30px rgba(0,0,0,.25)}
/* 1b. a 4px sliver showed between the hero video and the award tiles: the grid row gap was only partly cancelled */
body.lime-hub .id-brand .id-bnr .id-bnr-awards{margin-top:-10.5px !important;position:relative;z-index:1}
/* 2. trust bar: icon over label, centred in each cell, so the 2x2 reads as a grid and not a left-stuck list */
body.lime-hub .id-hero .id-brand-trust{padding:6px 10px}
body.lime-hub .id-hero .id-brand-trust > li[data-ico]{flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:6px;padding:12px 6px;font-size:10.5px;line-height:1.3;letter-spacing:.05em}
body.lime-hub .id-hero .id-brand-trust > li[data-ico]::before{margin:0}
/* 3. value band: the floating cutout touched the top edge */
body.lime-hub .id-brand .id-les-in{padding-top:60px}
body.lime-hub .id-brand .id-les-art{min-height:22px;margin:0 0 12px}
/* 4. product grid: two per row on phones */
body.lime-hub.tax-brand .main-products-loop .products.products-grid .ajax-content{display:flex !important;flex-wrap:wrap;width:100%}
body.lime-hub.tax-brand .main-products-loop .products.products-grid .ajax-content > .product{width:50% !important;max-width:50% !important;flex:0 0 50% !important;float:none}
body.lime-hub .main-products-loop .products:not(.id-stuck){padding:10px !important}
body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .product-content-image,body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .product-content-image img{height:auto !important;min-height:0 !important;aspect-ratio:1/1;object-fit:contain;width:100%}
body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .product-details{padding:0 8px 12px}
body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .price,body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .price .amount,body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .price ins{font-size:19px !important;line-height:1.2}
body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .price bdi{white-space:nowrap}
body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .price del bdi::after{content:none}
body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .price{padding-top:8px;display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 6px}
body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .price::after,body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .price .woocommerce-price-suffix{font-size:10px !important;margin:0}
body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .price del{font-size:13px}
body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .button{white-space:nowrap;padding:10px 6px !important;font-size:10.5px !important;letter-spacing:0}
body.lime-hub .main-products-loop .products > .product .product-title,body.lime-hub .main-products-loop .products > .product .product-title a{font-size:13.5px;line-height:1.3}
body.lime-hub .main-products-loop .products > .product .button{font-size:11px;padding:9px 6px}
/* 5. image strip: the desktop fade hides the right half (text sits there on desktop); phones get an even fade, edge to edge */
body.lime-hub .id-brand .id-tick{-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%);mask-image:linear-gradient(90deg,transparent 0,#000 7%,#000 93%,transparent 100%)}
/* 6. tabs: a tidy 2x2 instead of three and a stray one */
body.lime-hub .id-brand .id-tabbar{display:grid;grid-template-columns:1fr 1fr;gap:8px}
body.lime-hub .id-brand .id-tabbar{align-items:stretch}
body.lime-hub .id-brand .id-tabbar .id-btn-wrap{width:100%;display:flex}
body.lime-hub .id-brand .id-tabbar .id-tab{height:100%;display:flex;align-items:center;justify-content:center}
body.lime-hub .id-brand .id-tabbar .id-tab{width:100%;text-align:center;padding:13px 4px;font-size:12.5px;line-height:1.25;letter-spacing:-.01em;white-space:nowrap}
/* 7. comparison tables were wider than the screen with scrolling off, so the last column was unreachable */
body.lime-hub .id-brand .id-tabpanel,body.lime-hub .id-brand .id-cmp-scroll,body.lime-hub .id-brand .id-tbl-wrap{overflow-x:auto !important;-webkit-overflow-scrolling:touch;max-width:100%}


/* 2b. trust bar as a slim ticker (class added by hub.js on phones); replaces the 2x2 block */
body.lime-hub .id-hero{overflow-x:clip}
body.lime-hub .id-hero .id-brand-trust.id-trust--ticker{display:flex !important;flex-wrap:nowrap;width:max-content;max-width:none;padding:0;gap:0;animation:lhTrustTick 26s linear infinite}
body.lime-hub .id-hero .id-brand-trust.id-trust--ticker > li[data-ico]{flex:0 0 auto;flex-direction:row;gap:9px;padding:13px 22px;font-size:11px;letter-spacing:.07em;white-space:nowrap;border:0}
body.lime-hub .id-hero .id-brand-trust.id-trust--ticker > li[data-ico] + li[data-ico]{box-shadow:-1px 0 0 rgba(255,255,255,.22)}
body.lime-hub .id-hero .id-brand-trust.id-trust--swipe{animation:none;width:auto;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
@keyframes lhTrustTick{from{transform:translateX(0)}to{transform:translateX(-50%)}}
/* 3b. value band centred on phones: cutout sits above the text as its own element */
body.lime-hub .id-brand .id-les-in{padding-top:34px;text-align:center;align-items:center}
body.lime-hub .id-brand .id-les-art{min-height:0;margin:0 0 6px;justify-content:center;width:100%}
body.lime-hub .id-brand .id-les-art .id-bnr-cut{position:static !important;width:170px !important;max-width:none;height:auto}
body.lime-hub .id-brand .id-les-art .id-les-art-alt{display:none}
body.lime-hub .id-brand .id-les-txt{width:100%}
body.lime-hub .id-brand .id-les-s{margin-left:auto;margin-right:auto}
body.lime-hub .id-brand .id-les-cta{width:100%;align-items:center}
body.lime-hub .id-brand .id-les-pills{justify-content:center}

/* 7b. bundle comparison tables fit the phone instead of scrolling: fixed layout, tighter type, no swipe hint (Sehroz: the hint looked cheap) */
body.lime-hub .id-brand .id-tabpanel{padding:12px 8px}
body.lime-hub .id-brand table.id-cmp{width:100% !important;min-width:0 !important;table-layout:fixed;border-collapse:collapse}
body.lime-hub .id-brand table.id-cmp th,body.lime-hub .id-brand table.id-cmp td{padding:10px 4px !important;font-size:12px !important;line-height:1.3;word-break:normal;overflow-wrap:normal;hyphens:auto;vertical-align:middle}
body.lime-hub .id-brand table.id-cmp thead th{font-size:8.5px !important;letter-spacing:0;line-height:1.25;vertical-align:bottom}
body.lime-hub .id-brand table.id-cmp thead th:first-child,body.lime-hub .id-brand table.id-cmp tbody th{width:40%;text-align:left;padding-left:8px !important;font-size:11.5px !important}
body.lime-hub .id-brand table.id-cmp .id-cmp-price{display:block;font-size:12.5px !important;letter-spacing:0;margin-top:3px;white-space:nowrap}
body.lime-hub .id-brand table.id-cmp .id-cmp-v{font-size:11px;line-height:1.25}

/* 7c. "vs" table on phones: stays a real table and scrolls sideways; the row-label column is pinned so the product column sits right beside it (Sehroz 2026-09-21) */
body.lime-hub .id-brand .id-tbl-wrap{overflow-x:auto !important;-webkit-overflow-scrolling:touch;max-width:100%;border-radius:12px;scrollbar-width:thin}
body.lime-hub .id-brand table.id-vs-t{min-width:0 !important;width:max-content !important;border-collapse:separate;border-spacing:0}
body.lime-hub .id-brand table.id-vs-t th,body.lime-hub .id-brand table.id-vs-t td{padding:12px 10px !important;font-size:13px !important;line-height:1.3}
body.lime-hub .id-brand table.id-vs-t thead th:first-child,body.lime-hub .id-brand table.id-vs-t tbody th{position:sticky;left:0;z-index:2;width:112px;min-width:112px;max-width:112px;white-space:normal;background:#fff;box-shadow:6px 0 10px -6px rgba(20,30,50,.18);font-size:12.5px !important}
body.lime-hub .id-brand table.id-vs-t thead th:first-child{background:#f4f7fc;z-index:3}
body.lime-hub .id-brand table.id-vs-t thead th:not(:first-child),body.lime-hub .id-brand table.id-vs-t tbody td{width:150px;min-width:150px;max-width:150px;white-space:normal}
body.lime-hub .id-brand table.id-vs-t thead th.id-vs-hero img{max-width:110px;height:auto}
body.lime-hub .id-brand table.id-vs-t thead th .id-vs-lbl{font-size:10px;letter-spacing:.08em}
}

/* Range comparison (Sehroz 2026-09-22): when every column is the brand's own product, hovering a column lights it in the
   brand colour, because the shop sells all of them, not only the highlighted one. Opt in per table with .id-vs-t--range;
   ChompSaw's table compares one product with scissors and a knife and must not get this. hub.js toggles .is-col. */
body.tax-brand .id-brand .id-vs-t--range th,body.tax-brand .id-brand .id-vs-t--range td{transition:background-color .18s ease,color .18s ease}
body.tax-brand .id-brand .id-vs-t--range td.is-col{background:color-mix(in srgb,var(--idb,#3b8ad9) 16%,transparent) !important;color:var(--idp-ink)}
body.tax-brand .id-brand .id-vs-t--range thead th.is-col:not(.id-vs-hero){background:var(--idb-d) !important;border-radius:12px 12px 0 0}
body.tax-brand .id-brand .id-vs-t--range thead th.is-col:not(.id-vs-hero) span{color:#fff}
body.tax-brand .id-brand .id-vs-t--range thead th.is-col:not(.id-vs-hero) small{color:rgba(255,255,255,.75)}
body.tax-brand .id-brand .id-vs-t--range tbody tr:last-child td.is-col{border-radius:0 0 12px 12px}
@media (hover:none){body.tax-brand .id-brand .id-vs-t--range td.is-col{background:inherit !important}body.tax-brand .id-brand .id-vs-t--range thead th.is-col:not(.id-vs-hero){background:var(--idp-light) !important}body.tax-brand .id-brand .id-vs-t--range thead th.is-col:not(.id-vs-hero) span{color:var(--idp-ink)}}

/* specs tab bar (xTool: three machines): one row on phones, three equal buttons; scoped to --specs so the More-about tabs keep their layout */
@media (max-width:767px){body.tax-brand .id-brand .id-tabbar--specs{display:flex !important;gap:6px;flex-wrap:nowrap}body.tax-brand .id-brand .id-tabbar--specs .id-btn-wrap{flex:1 1 0;min-width:0}body.tax-brand .id-brand .id-tabbar--specs .id-tab{width:100%;padding-inline:6px;white-space:nowrap;font-size:12.5px}}

/* range table polish (Sehroz 2026-09-22): every column carries its machine image; while another column is hovered the default hero column steps back so only one column is lit */
body.tax-brand .id-brand .id-vs-t--range thead th img{width:100%;max-width:230px;height:auto;display:block;margin:0 auto 10px;object-fit:contain;filter:drop-shadow(0 12px 18px rgba(0,0,0,.18))}
body.tax-brand .id-brand .id-vs-t--range thead th:not(.id-vs-hero) img{max-width:190px;opacity:.92}
body.tax-brand .id-brand .id-vs-t--range.is-hovering thead th.id-vs-hero:not(.is-col){background:var(--idp-light) !important;color:inherit}
body.tax-brand .id-brand .id-vs-t--range.is-hovering thead th.id-vs-hero:not(.is-col) span{color:var(--idp-ink)}
body.tax-brand .id-brand .id-vs-t--range.is-hovering thead th.id-vs-hero:not(.is-col) small{color:#8a93a5}
body.tax-brand .id-brand .id-vs-t--range.is-hovering td.id-vs-herocell:not(.is-col),body.tax-brand .id-brand .id-vs-t--range.is-hovering td:nth-child(2):not(.is-col){background:none !important;font-weight:inherit}
/* which-fits cards: buttons stack full width and sit on one baseline across the row */
body.tax-brand .id-brand .id-pick-card{display:flex;flex-direction:column}
body.tax-brand .id-brand .id-pick-btn{display:block;align-self:stretch;text-align:center;margin:0 28px 10px !important}
body.tax-brand .id-brand .id-pick-btn:last-child{margin-bottom:0 !important}
body.tax-brand .id-brand .id-pick-btn--ghost{background:#fff;color:var(--idb-d);box-shadow:inset 0 0 0 2px var(--idb-d)}
body.tax-brand .id-brand .id-pick-btn--ghost:hover{background:var(--idb-d);color:#fff}
/* specs tab bar: centred, breathing room above and below */
body.tax-brand .id-brand .id-tabbar--specs{justify-content:center;margin:28px auto 26px}

/* compare table: a Shop row so every column leads to its product page (Sehroz 2026-09-22) */
body.tax-brand .id-brand .id-vs-t .id-vs-btn{display:inline-block;background:var(--idb-d);color:#fff !important;font:700 12px/1 'Open Sans',sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:13px 18px;border-radius:8px;text-decoration:none;white-space:nowrap;transition:background .18s ease}
body.tax-brand .id-brand .id-vs-t .id-vs-btn:hover{background:var(--idb)}
body.tax-brand .id-brand .id-vs-t--range td.is-col .id-vs-btn,body.tax-brand .id-brand .id-vs-t--range:not(.is-hovering) td.id-vs-herocell .id-vs-btn{background:var(--idb)}

/* Help CTA band (Sehroz 2026-09-22, v3): full-width brand-dark bar, a support photo on each side with the fade baked into the PNG so it blends with any brand colour
   (left one mirrored so both faces look inward), copy and the two buttons centred between them. Values always visible with Copy buttons. Shared by every brand. */
body.tax-brand .id-brand .id-help{position:relative;min-height:clamp(300px,34vh,380px);background:var(--idb-d);color:#fff;overflow:hidden;isolation:isolate}
body.tax-brand .id-brand .id-help:before,body.tax-brand .id-brand .id-help:after{content:'';position:absolute;top:0;bottom:0;width:min(30vw,560px);background-repeat:no-repeat;background-size:auto 100%;z-index:0;pointer-events:none}
body.tax-brand .id-brand .id-help:before{left:0;background-image:var(--id-help-left);background-position:right center}
body.tax-brand .id-brand .id-help:after{right:0;background-image:var(--id-help-right);background-position:left center}
body.tax-brand .id-brand .id-help-in{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;text-align:center;gap:26px;padding-top:56px;padding-bottom:56px;max-width:900px}
body.tax-brand .id-brand .id-help-h strong{font-weight:800;color:#fff;display:block;margin-bottom:6px}
body.tax-brand .id-brand .id-help-h{font-weight:600}
body.tax-brand .id-brand .id-help-p{max-width:640px}
body.tax-brand .id-brand .id-help-h{font:700 clamp(24px,2.6vw,34px)/1.15 'Open Sans',sans-serif;color:#fff;margin:0 0 8px}
body.tax-brand .id-brand .id-help-p{font-size:15.5px;line-height:1.55;color:rgba(255,255,255,.85);max-width:560px;margin:0 auto}
body.tax-brand .id-brand .id-help-actions{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;align-items:flex-start}
body.tax-brand .id-brand .id-help-act{position:relative;display:flex;flex-direction:column;align-items:stretch;gap:8px}
body.tax-brand .id-brand .id-help-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;background:var(--idb);color:#fff !important;font:700 13px/1 'Open Sans',sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:16px 24px;border-radius:10px;text-decoration:none;min-width:190px;transition:background .18s ease,transform .18s ease}
body.tax-brand .id-brand .id-help-btn:hover{background:#fff;color:var(--idb-d) !important;transform:translateY(-1px)}
body.tax-brand .id-brand .id-help-btn--ghost{background:transparent;box-shadow:inset 0 0 0 2px rgba(255,255,255,.85)}
body.tax-brand .id-brand .id-help-ic{width:18px;height:18px;background:currentColor;-webkit-mask:center/contain no-repeat;mask:center/contain no-repeat}
body.tax-brand .id-brand .id-help-ic-mail{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 7l9 6 9-6'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-help-ic-phone{-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L15 13l5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2z'/%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 4h4l2 5-2.5 1.5a11 11 0 0 0 5 5L15 13l5 2v4a2 2 0 0 1-2 2A16 16 0 0 1 3 6a2 2 0 0 1 2-2z'/%3E%3C/svg%3E")}
body.tax-brand .id-brand .id-help-val{display:flex;align-items:center;justify-content:space-between;gap:10px;background:rgba(0,0,0,.35);border:1px solid rgba(255,255,255,.18);border-radius:8px;padding:8px 8px 8px 12px;font:600 13.5px/1 'Open Sans',sans-serif;color:#fff;white-space:nowrap}
body.tax-brand .id-brand .id-help-copy{background:#fff;color:var(--idb-d);border:0;border-radius:6px;font:700 11px/1 'Open Sans',sans-serif;letter-spacing:.06em;text-transform:uppercase;padding:7px 10px;cursor:pointer}
body.tax-brand .id-brand .id-help-copy:hover{background:var(--idb);color:#fff}
body.tax-brand .id-brand .id-help-copy.is-done{background:var(--idb);color:#fff}
@media (max-width:767px){body.tax-brand .id-brand .id-help{min-height:0}body.tax-brand .id-brand .id-help:before{display:none}body.tax-brand .id-brand .id-help:after{width:100%;opacity:.22;background-position:right center}body.tax-brand .id-brand .id-help-in{gap:18px}body.tax-brand .id-brand .id-help-actions{flex-direction:column;width:100%}body.tax-brand .id-brand .id-help-btn{width:100%}}

/* alternatives table with sentence-length cells (xTool laser vs blade cutter): wrap, and give the three product columns equal width */
body.tax-brand .id-brand .id-alt .id-vs-t th,body.tax-brand .id-brand .id-alt .id-vs-t td{white-space:normal;vertical-align:top;line-height:1.45}
body.tax-brand .id-brand .id-alt .id-vs-t td span{display:flex;align-items:flex-start}
body.tax-brand .id-brand .id-alt .id-vs-t td.id-y span:before,body.tax-brand .id-brand .id-alt .id-vs-t td.id-n span:before{margin-top:1px}
body.tax-brand .id-brand .id-alt .id-vs-t{table-layout:fixed}
body.tax-brand .id-brand .id-alt .id-vs-t thead th:first-child{width:19%}
@media (max-width:767px){body.tax-brand .id-brand .id-alt .id-vs-t{table-layout:auto}}

/* help band spacing (Sehroz 2026-09-22): no white gap above it; the section before it and after it lose most of their outer padding; the intro under a section heading is centred */
body.tax-brand .id-brand .id-help{margin-top:0 !important;margin-bottom:0 !important}
body.tax-brand .id-brand .id-sec:has(+ .id-help){padding-bottom:28px}
body.tax-brand .id-brand .id-help + .id-sec{padding-top:56px}
body.tax-brand .id-brand .id-sec-sub{text-align:center;margin-left:auto;margin-right:auto}

/* help band parallax: built and removed on 2026-09-22 (Sehroz: faces got cut off, looked odd). Do not re-add. */

/* hero recede / parallax: tried and removed 2026-09-22 (Sehroz: jumpy, slowed the scroll, no visible gain). Do not re-add scroll-linked effects to the hero. */

/* Hero scroll blur (.id-brand--herofade, CSS scroll timeline) removed 2026-09-22: rejected, and the extra opener class broke the plugin split on ChompSaw. Do not re-add scroll-linked hero effects. */

/* US stores (idesignsol.com). The opener carries id-brand--us, so none of this
   touches the Canadian pages. Same badge as Canada (icon panel, hairline, tick,
   then the wordmark on the brand colour) with a full-colour US flag in place of
   the maple leaf and navy in place of Canadian red. The flag is a colour image,
   not a mask, so it is painted with background-image and the mask is cleared.
   The trust strip gets a package icon for delivery in place of the leaf. */
.id-brand.id-brand--us .id-bnr-auth{background:linear-gradient(90deg,#3c3b6e 0 76px,var(--id-accent,#056db7) 76px)}
.id-brand.id-brand--us .id-bnr-auth::after{width:22px;height:12px;background:url(icons/id-ico-usflag.svg) center/contain no-repeat;
-webkit-mask:none;mask:none;border-radius:1px}
.id-brand.id-brand--us .id-hero .id-brand-trust > li[data-ico="units"]::before{-webkit-mask-image:url(icons/id-ico-units.svg);mask-image:url(icons/id-ico-units.svg)}

/* Help band on phones: the heading and text are centred but the two action
   rows were pinned left (align-items:flex-start), so the buttons and the
   email/phone chips sat off-centre. Centre the rows and give both the same
   width so Email and Call line up with each other (Sehroz, 2026-09-23). */
@media (max-width:782px){
body.tax-brand .id-brand .id-help-actions{align-items:center}
body.tax-brand .id-brand .id-help-act{width:100%;max-width:300px;align-items:stretch}
body.tax-brand .id-brand .id-help-act .id-help-btn,body.tax-brand .id-brand .id-help-act .id-help-val{justify-content:center}
}

/* Grid filter tabs (config grid_filter). A row of pill links above the grid that
   sticks while the grid is on screen. --lh-tabs-top is set by hub.js to the
   height of whatever is pinned above it (theme header, trust bar). */
.lh-gridtabs{position:sticky;top:var(--lh-tabs-top,0px);z-index:880;background:#fff;margin:0 0 18px;padding:10px 0;box-shadow:0 1px 0 rgba(16,26,43,.08)}
.lh-gridtabs-in{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.lh-gridtab{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;border-radius:99px;font-size:14px;font-weight:700;line-height:1;text-decoration:none;color:#10202a;background:#f1f4f3;border:1px solid rgba(16,26,43,.1);transition:background .2s,color .2s}
.lh-gridtab span{font-size:12px;font-weight:700;padding:3px 8px;border-radius:99px;background:rgba(16,26,43,.08)}
.lh-gridtab:hover{background:#e3ebe7;color:#10202a}
.lh-gridtab.is-on{background:var(--idb,var(--id-accent,#056db7));border-color:transparent;color:#fff}
.lh-gridtab.is-on span{background:rgba(255,255,255,.25)}
@media (max-width:782px){.lh-gridtabs{margin-bottom:12px;padding:8px 0}.lh-gridtabs-in{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;padding:0 12px;scrollbar-width:none}.lh-gridtabs-in::-webkit-scrollbar{display:none}.lh-gridtab{flex:0 0 auto;font-size:13px;padding:9px 14px}}
.lh-gridtabs.is-loading .lh-gridtab{pointer-events:none}
.main-products-loop .products{transition:opacity .15s}

/* Maker byline pill on phones: wide wordmarks (xTool is 7.8:1, Chompshop about 3:1)
   made the pill overflow and wrapped the button onto two lines. Cap the logo
   width and keep the button label on one line (Sehroz, 2026-09-24). */
@media (max-width:782px){
body.lime-hub .id-brand .id-bnr-shop .id-bnr-logo{max-width:92px;height:auto;max-height:23px;object-fit:contain}
body.lime-hub .id-brand .id-bnr-shop-t{white-space:nowrap}
body.lime-hub .id-brand .id-bnr-by{flex-wrap:nowrap;justify-content:center}
}

/* xTool hero on phones: the 16:9 P3 still was cropped by "cover" to a thin dark
   slice (mostly the laser beam on black). Show the whole machine across the top of
   the hero instead and fade to the photo's own black below, so the logo, rating and
   badge sit over the machine and the cards below sit on clean dark (2026-09-24). */
@media (max-width:782px){
body.lime-hub.term-xtool .id-brand .id-hero .id-bnr{
background-image:linear-gradient(180deg,rgba(5,7,6,.05) 0,rgba(5,7,6,.25) 18%,#050706 34%),var(--id-bg) !important;
background-size:100% 100%,118% auto !important;
background-position:center,50% 58px !important;
background-repeat:no-repeat,no-repeat !important;
background-color:#050706 !important}
}
/* phones: theme centres the grid image box with auto margins in a flex column, so it shrank to 0 and the lazy image never loaded (ChompSaw grid showed no photos) */
@media (max-width:767px){
body.lime-hub.tax-brand .main-products-loop .products:not(.id-stuck) .product .product-image-wrapper{width:100%}
}

/* Hero without an awards strip (Robolink, 2026-09-25). The copy spans the video and awards rows,
   and the hero is a fixed-height grid, so an empty awards row still stretched (84px) and pushed the
   copy ~45px below the middle of the video card. Only when there are no awards, the copy takes the
   video row alone. Every hub live on 2026-09-25 (xTool CA/US, ChompSaw) has awards, so none change.
   Desktop only: below 1025px the hero stacks and the areas differ. */
@media (min-width:1025px){
body.lime-hero-b .id-brand .id-bnr:not(:has(.id-bnr-awards)) .id-bnr-copy{grid-row:video-start / video-end}
}
/* Reseller badge text panel: optional per-brand colour. For a red brand (Robolink) the brand accent
   matched the Canadian-red icon panel and the leaf and tick disappeared into it. Unset, it falls
   back to --id-accent exactly as before. */
.id-brand .id-bnr-auth{background:linear-gradient(90deg,#d52b1e 0 69px,var(--lh-cred-bg,var(--id-accent,#056db7)) 69px)}

/* Aerial Drone Competition section (Robolink, 2026-09-25) reuses the buying-grid cards; the buying icons
   (coin, truck, school, return) are wrong for it, so #id-adc gets its own: award, team, calendar, target.
   Scoped to #id-adc, which no other hub uses. */
body.tax-brand .id-brand #id-adc .id-buy-grid li:nth-child(1):before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316213e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='9' r='6'/%3E%3Cpath d='M8.5 14 7 21l5-3 5 3-1.5-7'/%3E%3C/svg%3E")}
body.tax-brand .id-brand #id-adc .id-buy-grid li:nth-child(2):before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316213e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='9' cy='8' r='3'/%3E%3Cpath d='M3 20v-1a6 6 0 0 1 12 0v1'/%3E%3Ccircle cx='17' cy='9' r='2.5'/%3E%3Cpath d='M16 14a5 5 0 0 1 5 5v1'/%3E%3C/svg%3E")}
body.tax-brand .id-brand #id-adc .id-buy-grid li:nth-child(3):before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316213e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='16' rx='2'/%3E%3Cpath d='M3 10h18M8 3v4M16 3v4'/%3E%3C/svg%3E")}
body.tax-brand .id-brand #id-adc .id-buy-grid li:nth-child(4):before{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2316213e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Ccircle cx='12' cy='12' r='5'/%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3C/svg%3E")}
/* grid filter tabs step aside once the grid is scrolled past (class set by hub.js) */
.lh-gridtabs{transition:opacity .2s ease,visibility .2s}
.lh-gridtabs.lh-gridtabs--past{opacity:0;visibility:hidden;pointer-events:none}

/* Pinned grid strip shows only the config's `dock` products (plugin adds body.lh-dock-filter and .lh-dock-main). */
body.lh-dock-filter .main-products-loop .products.id-stuck .product:not(.lh-dock-main){display:none !important}

/* Band with no reviews under it (e.g. Robolink before its reviews arrive): the fade to white ran over 110px in a
   straight line and read as a hard divider (Sehroz 2026-09-25). Longer, eased fade that ends in solid white, and more
   room under the copy so no text sits in the fade. Bands with reviews are untouched. */
.term-description.id-above-loop .id-les:not(:has(.id-rev))::before{background:linear-gradient(180deg,
  color-mix(in srgb,var(--lh-surface-wash,#2d1c0c) var(--lh-wash-1,62%),transparent) 0,
  color-mix(in srgb,var(--lh-surface-wash,#2d1c0c) var(--lh-wash-1,62%),transparent) calc(100% - 240px),
  color-mix(in srgb,var(--lh-surface-wash,#2d1c0c) 74%,#fff) calc(100% - 185px),
  color-mix(in srgb,var(--lh-surface-wash,#2d1c0c) 48%,#fff) calc(100% - 125px),
  color-mix(in srgb,var(--lh-surface-wash,#2d1c0c) 24%,#fff) calc(100% - 70px),
  color-mix(in srgb,var(--lh-surface-wash,#2d1c0c) 8%,#fff) calc(100% - 30px),
  #fff 100%) !important}
.term-description.id-above-loop .id-les:not(:has(.id-rev)) .id-les-in{padding-bottom:190px}
/* review cards with a 4-star rating (Robolink, iDesign customer reviews 2026-09-25); unmarked cards keep five */
.id-brand .id-rev-stars[data-stars="4"]::before{content:"\2605\2605\2605\2605\2606"}


/* ---- 2026-09-28 Robolink-scoped fixes (Sehroz: fix on one hub, then roll to the rest). Scoped to body.term-robolink so
   xTool and ChompSaw are byte-identical until he says go. ---- */
/* hero tiles: solid white so the pink hero does not tint them (xTool's dark hero hides the .94 alpha) */
body.term-robolink .id-brand .id-bnr-media .id-bnr-awards--tiles-light > a{background:#fff !important;backdrop-filter:none;-webkit-backdrop-filter:none}
body.term-robolink .id-brand .id-bnr-media .id-bnr-units strong{color:#0b1320;text-shadow:none;font-size:20px}
body.term-robolink .id-brand .id-bnr-media .id-bnr-units em{color:#5d6b7c}
/* review card overlaps the band fade on every width (Sehroz: "above the gradient a bit"); phones tighter below */
body.term-robolink .term-description.id-above-loop .id-les:not(:has(.id-rev)) .id-les-in{padding-bottom:130px}
body.term-robolink .id-brand .id-rev{margin-top:-96px !important;position:relative;z-index:2}
/* a gap between the review card and the grid filter tabs (they touched) */
body.term-robolink .lh-gridtabs{margin-top:22px}
/* Zumi section: CES 2019 badge line + buttons row under the copy */
body.term-robolink .id-brand .id-zumi-award{display:flex;align-items:center;gap:16px;margin:22px 0 0;font-size:13.5px;line-height:1.45;color:var(--idp-body)}
body.term-robolink .id-brand .id-zumi-award img{display:block;flex:0 0 auto;width:74px !important;height:74px !important;max-width:none;object-fit:contain;padding:8px;border-radius:12px;background:#fff;box-shadow:0 6px 16px rgba(0,0,0,.14),0 0 0 1px var(--idp-line) inset}
body.term-robolink .id-brand .id-zumi-btns{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0 0}
body.term-robolink .id-brand .id-zumi-btns .id-pick-btn{margin:0;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:52px;padding:0 24px;border-radius:6px}
@media (max-width:900px){
  /* phones: the band reserved a 190px fade strip because the review card sits after the band; pull the card up so it
     overlaps the fade instead of floating below a gap (Sehroz 2026-09-28) */
  body.term-robolink .term-description.id-above-loop .id-les:not(:has(.id-rev)) .id-les-in{padding-bottom:120px}
  body.term-robolink .id-brand .id-rev{margin-top:-72px !important;position:relative;z-index:2}
  /* product grid sat 15px right of centre: the theme row keeps its side margins inside the padded frame */
  body.term-robolink.lime-hub .main-products-loop .products.products-grid .ajax-content{margin-left:0 !important;margin-right:0 !important;width:auto !important}
}
/* 2026-09-29 rollout to xTool and ChompSaw (Sehroz): phones only, the product grid sat 15px right of centre (theme row margins
   inside the padded frame). Their reviews card lives inside the band and they have no grid tabs, so only this fix applies. */
@media (max-width:900px){
  body.term-xtool.lime-hub .main-products-loop .products.products-grid .ajax-content,
  body.term-chompsaw.lime-hub .main-products-loop .products.products-grid .ajax-content{margin-left:0 !important;margin-right:0 !important;width:auto !important}
}

/* 2026-09-30 FAQ video becomes a player + playlist (Sehroz: the separate carousel stuck out). Thumbs swap the player (hub.js). */
body.lime-hub .id-brand .id-faq-vid:has(.id-vplay){max-width:960px}
body.lime-hub .id-brand .id-vplay{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:14px;margin:22px 0 0;text-align:left}
body.lime-hub .id-brand .id-vplay-i{display:flex;flex-direction:column;gap:8px;background:none;border:0;padding:0;margin:0;cursor:pointer;text-align:left;font:inherit;color:inherit}
body.lime-hub .id-brand .id-vplay-th{position:relative;display:block;aspect-ratio:16/9;border-radius:10px;overflow:hidden;background:#15072b;box-shadow:0 8px 20px rgba(40,25,10,.18);transition:transform .2s ease,box-shadow .2s ease}
body.lime-hub .id-brand .id-vplay-th img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
body.lime-hub .id-brand .id-vplay-pl{position:absolute;left:50%;top:50%;width:34px;height:24px;margin:-12px 0 0 -17px;border-radius:7px;background:rgba(16,16,20,.78)}
body.lime-hub .id-brand .id-vplay-pl::after{content:"";position:absolute;left:13px;top:6px;border-left:10px solid #fff;border-top:6px solid transparent;border-bottom:6px solid transparent}
body.lime-hub .id-brand .id-vplay-i:hover .id-vplay-th{transform:translateY(-2px);box-shadow:0 12px 26px rgba(40,25,10,.24)}
body.lime-hub .id-brand .id-vplay-i.is-on .id-vplay-th{box-shadow:0 0 0 3px #fff,0 0 0 6px var(--idb,#e3143c)}
body.lime-hub .id-brand .id-vplay-i.is-on .id-vplay-pl{background:var(--idb,#e3143c)}
body.lime-hub .id-brand .id-vplay-t{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:12.5px;line-height:1.35;font-weight:600;color:#1f160c}
body.lime-hub .id-brand .id-vplay-i:focus-visible{outline:3px solid var(--idb,#e3143c);outline-offset:4px;border-radius:10px}
@media (max-width:900px){
  body.lime-hub .id-brand .id-vplay{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;gap:12px;padding:8px 8px 12px;margin-left:-8px;margin-right:-8px}
  body.lime-hub .id-brand .id-vplay-i{flex:0 0 44%;scroll-snap-align:start}
}

/* 2026-09-30: links inside the buying cards (US hubs link the contact page and return policy) were dark accent on the dark band; white and underlined */
.id-brand .id-buy-grid li span a{color:#fff;text-decoration:underline;text-underline-offset:2px}
.id-brand .id-buy-grid li span a:hover{opacity:.85}

/* 2026-10-01 Horizon Educational hub (brand term 376). Scoped to body.term-horizon-educational so every other hub is unchanged. */
@media (max-width:900px){
  body.term-horizon-educational.lime-hub .main-products-loop .products.products-grid .ajax-content{margin-left:0 !important;margin-right:0 !important;width:auto !important}
}
body.term-horizon-educational .lh-gridtabs{margin-top:22px}
body.term-horizon-educational .id-brand .id-sk-btns{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0 0}
body.term-horizon-educational .id-brand .id-sk-btns .id-pick-btn{margin:0;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:52px;padding:0 24px;border-radius:6px}
/* 2026-10-01 Horizon reviews card overlaps the band fade, same as the Robolink hub (copied rules, Horizon scope) */
body.term-horizon-educational .term-description.id-above-loop .id-les:not(:has(.id-rev)) .id-les-in{padding-bottom:130px}
body.term-horizon-educational .id-brand .id-rev{margin-top:-96px !important;position:relative;z-index:2}
@media (max-width:900px){
  body.term-horizon-educational .term-description.id-above-loop .id-les:not(:has(.id-rev)) .id-les-in{padding-bottom:120px}
  body.term-horizon-educational .id-brand .id-rev{margin-top:-72px !important;position:relative;z-index:2}
}
/* 2026-10-01 Horizon: one quiet source line under the review cards instead of a source on every card (Sehroz) */
body.term-horizon-educational .id-brand .id-rev-src{text-align:left;margin:10px 0 0;font-size:12px;line-height:1.4;color:rgba(255,255,255,.62);letter-spacing:.02em}


/* shorts strip (reusable on any hub): a block inside a section, vertical cards, opens in the lightbox in 9:16 mode. --dark for teal/navy bands */
.id-brand .id-shorts{margin-top:48px;padding-top:36px;border-top:1px solid rgba(0,0,0,.08)}
.id-brand .id-shorts-hd{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}
.id-brand .id-shorts-h{margin:0;font-size:22px;font-weight:700;line-height:1.2;color:#1a1a1a}
.id-brand .id-shorts-sub{margin:4px 0 0;font-size:14px;line-height:1.4;color:rgba(0,0,0,.6)}
.id-brand .id-shorts-row{display:grid;grid-auto-flow:column;grid-auto-columns:calc((100% - 6*14px)/7);gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:4px 2px 6px}
.id-brand .id-shorts-row::-webkit-scrollbar{display:none}
.id-brand .id-short{position:relative;display:block;aspect-ratio:9/16;border-radius:12px;overflow:hidden;scroll-snap-align:start;background:#0b1a1f;border:1px solid rgba(0,0,0,.08);box-shadow:0 6px 18px rgba(0,0,0,.16);transition:transform .2s,box-shadow .2s;text-decoration:none}
.id-brand .id-short img{display:block;width:100%;height:100%;object-fit:cover;margin:0}
.id-brand .id-short:after{content:"";position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.82) 0,rgba(0,0,0,.4) 30%,rgba(0,0,0,0) 55%)}
.id-brand .id-short:before{content:"";position:absolute;z-index:2;top:50%;left:50%;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;background:rgba(255,255,255,.92) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 7v10l8-5z' fill='%23111'/%3E%3C/svg%3E") center/22px no-repeat;box-shadow:0 4px 14px rgba(0,0,0,.3);transition:transform .2s}
.id-brand .id-short:hover{transform:translateY(-3px);box-shadow:0 14px 28px rgba(0,0,0,.28)}
.id-brand .id-short:hover:before{transform:scale(1.08)}
.id-brand .id-short-t{position:absolute;z-index:2;left:10px;right:10px;bottom:10px;color:#fff;font-size:13px;font-weight:600;line-height:1.25}
.id-brand .id-shorts-nav{display:flex;gap:8px;flex:none}
.id-brand .id-shorts-nav[hidden]{display:none}
.id-brand .id-shorts-btn{width:36px;height:36px;padding:0;border-radius:50%;border:1px solid rgba(0,0,0,.15);background:#fff;color:#111;font-size:22px;line-height:1;cursor:pointer}
.id-brand .id-shorts-btn:disabled{opacity:.35;cursor:default}
.id-brand .id-shorts--dark{border-top-color:rgba(255,255,255,.16)}
.id-brand .id-shorts--dark .id-shorts-h{color:#fff}
.id-brand .id-shorts--dark .id-shorts-sub{color:rgba(255,255,255,.7)}
.id-brand .id-shorts--dark .id-short{border-color:rgba(255,255,255,.16)}
.id-brand .id-shorts--dark .id-shorts-btn{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.3);color:#fff}
.id-brand .id-shorts--dark .id-shorts-btn:hover:not(:disabled){background:rgba(255,255,255,.2)}
.id-brand .id-lb--v .id-lb-pic iframe{width:auto;height:min(80vh,760px);max-width:90vw;aspect-ratio:9/16}
.id-brand .id-lb--v .id-lb-card{max-width:none}
@media (max-width:1024px){.id-brand .id-shorts-row{grid-auto-columns:calc((100% - 3*14px)/4.3)}}
@media (max-width:767px){.id-brand .id-shorts{margin-top:32px;padding-top:26px}.id-brand .id-shorts-h{font-size:19px}.id-brand .id-shorts-row{grid-auto-columns:42%;gap:10px}.id-brand .id-shorts-nav{display:none}.id-brand .id-lb--v .id-lb-pic iframe{height:min(74vh,640px)}}
.id-brand .id-shorts-row.is-ticker{display:block;overflow:hidden;padding:6px 0 8px;-webkit-mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent);mask-image:linear-gradient(90deg,transparent,#000 6%,#000 94%,transparent)}
.id-brand .id-shorts-track{display:flex;width:max-content;animation:id-shorts-tick 60s linear infinite}
.id-brand .id-shorts-track .id-short{flex:0 0 150px;width:150px;margin-right:14px}
.id-brand .id-shorts-row.is-ticker:hover .id-shorts-track,.id-brand .id-shorts-row.is-ticker:focus-within .id-shorts-track,body.id-lb-open .id-brand .id-shorts-track{animation-play-state:paused}
@keyframes id-shorts-tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (max-width:767px){.id-brand .id-shorts-track .id-short{flex-basis:128px;width:128px;margin-right:10px}}
/* any open lightbox sits above the sticky header, trust bar and product dock */
body.id-lb-open .header-wrapper,body.id-lb-open .id-brand-trust,body.id-lb-open .main-products-loop .products{visibility:hidden;opacity:0!important;pointer-events:none}

/* 2026-10-02 eufyMake hub (brand term 2420): same layout fixes as Horizon (grid centring on phones, tabs spacing, ink buttons, reviews card overlapping the value band). Scoped to body.term-eufymake. */
@media (max-width:900px){
  body.term-eufymake.lime-hub .main-products-loop .products.products-grid .ajax-content{margin-left:0 !important;margin-right:0 !important;width:auto !important}
}
body.term-eufymake .lh-gridtabs{margin-top:22px}
body.term-eufymake .id-brand .id-sk-btns{display:flex;flex-wrap:wrap;gap:12px;margin:22px 0 0}
body.term-eufymake .id-brand .id-sk-btns .id-pick-btn{margin:0;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;height:52px;padding:0 24px;border-radius:6px}
/* reviews card overlaps the value band fade */
body.term-eufymake .term-description.id-above-loop .id-les:not(:has(.id-rev)) .id-les-in{padding-bottom:130px}
body.term-eufymake .id-brand .id-rev{margin-top:-96px !important;position:relative;z-index:2}
@media (max-width:900px){
  body.term-eufymake .term-description.id-above-loop .id-les:not(:has(.id-rev)) .id-les-in{padding-bottom:120px}
  body.term-eufymake .id-brand .id-rev{margin-top:-72px !important;position:relative;z-index:2}
}
/* 2026-10-02 eufyMake hero badge bar: white award marks at one height, quieter figures */
body.term-eufymake .id-brand .id-bnr-media .id-bnr-awards--tiles img{height:42px !important;max-height:42px;width:auto;max-width:86%}
body.term-eufymake .id-brand .id-bnr-media .id-bnr-units strong{font-size:17px;letter-spacing:0}
body.term-eufymake .id-brand .id-bnr-media .id-bnr-units em{font-size:8px;letter-spacing:.08em;color:rgba(255,255,255,.78)}
@media (max-width:900px){body.term-eufymake .id-brand .id-bnr-media .id-bnr-awards--tiles img{height:34px !important;max-height:34px}body.term-eufymake .id-brand .id-bnr-media .id-bnr-units strong{font-size:15px}}
/* 2026-10-02 eufyMake: FAQ video band is dark here, so the playlist titles go light (other hubs unchanged) */
body.term-eufymake .id-brand .id-vplay-t{color:rgba(255,255,255,.88) !important}
body.term-eufymake .id-brand .id-vplay-i.is-on .id-vplay-t{color:#fff !important}
/* 2026-10-02 hero copy in a glass panel tucked under the video card's right edge (desktop, every hero-b hub; shade per brand) */
@media (min-width:1025px){
  body.lime-hero-b .id-brand .id-bnr-media{position:relative;z-index:3}
  body.lime-hero-b .id-brand p.id-bnr-copy{position:relative;z-index:1;align-self:center;margin:0 0 0 -86px !important;padding:26px 30px 26px 104px !important;max-width:620px;
    border-radius:0 16px 16px 0;border:1px solid rgba(255,255,255,.09);border-left:0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-shadow:0 16px 40px rgba(0,0,0,.35);
    background:color-mix(in srgb,var(--lh-band-a,var(--lh-card-shade,#14203a)) 74%,transparent) !important}
  body.lime-hero-b .id-brand p.id-bnr-copy::before{content:none !important}
  body.term-eufymake .id-brand p.id-bnr-copy{background:rgba(16,40,56,.74) !important;border-color:rgba(0,169,224,.18) !important}
  body.term-horizon-educational .id-brand p.id-bnr-copy{background:rgba(6,58,68,.78) !important}
  body.term-robolink .id-brand p.id-bnr-copy{background:rgba(35,0,81,.72) !important}
  body.term-xtool .id-brand p.id-bnr-copy{background:rgba(5,74,44,.72) !important}
  body.term-chompsaw .id-brand p.id-bnr-copy{background:rgba(6,40,78,.72) !important}
}
/* 2026-10-02 all hubs: space between a comparison table and the note under it */
.id-brand .id-vs .id-faq-src{margin-top:30px !important}
/* 2026-10-02 all hubs: the getting-started list is shorter than the left column, so it stays in view while the left side scrolls (desktop) */
@media (min-width:1025px){.id-brand .id-ideas .id-sec-in > .id-ideas-list{position:sticky;top:120px;align-self:start}}
/* 2026-10-02 eufyMake + Horizon: ink / science-kit buttons line up with the text and sit further below it */
body.term-eufymake .id-brand .id-sk-btns,body.term-horizon-educational .id-brand .id-sk-btns{margin:30px 0 0 !important}
body.term-eufymake .id-brand .id-sk-btns .id-pick-btn,body.term-horizon-educational .id-brand .id-sk-btns .id-pick-btn{margin:0 !important}
/* 2026-10-02 eufyMake value band: eufy blue CTA and pill outlines (the charcoal button vanished into the band) */
body.term-eufymake .id-brand .id-les .id-res-btn{background:#00a9e0 !important;color:#06121a !important;border-color:#00a9e0 !important}
body.term-eufymake .id-brand .id-les .id-res-btn:hover{background:#33bdea !important}
body.term-eufymake .id-brand .id-les-pills span{color:#7fd6f2 !important;box-shadow:0 4px 12px rgba(0,0,0,.35),0 0 0 1px rgba(0,169,224,.55) inset !important}
/* 2026-10-02 eufyMake inks photo: product shot shown whole on a light card */
body.term-eufymake .id-brand #id-sk .id-about-photo{background:#eef0f3}
body.term-eufymake .id-brand #id-sk .id-about-photo > img{object-fit:contain !important;padding:28px 28px 70px;box-sizing:border-box}
/* 2026-10-02 eufyMake + Horizon: the hero text panel waits for the video card to settle, then slides out from under it (its tucked-in edge never shows on its own) */
@keyframes id-tuck{from{opacity:0;transform:translateX(-70px)}to{opacity:1;transform:none}}
@media (min-width:1025px){
  body.lime-hero-b .id-brand p.id-bnr-copy{animation:id-tuck .65s cubic-bezier(.2,.8,.2,1) 1s both !important}
}
@media (min-width:1025px) and (prefers-reduced-motion:reduce){
  body.lime-hero-b .id-brand p.id-bnr-copy{animation:none !important}
}

/* Range tables with sentence-length cells: opt in with .id-vs-t--wrap so text wraps inside its column (eufyMake US add-ons table, 2026-10-05) */
body.tax-brand .id-brand .id-vs-t--wrap th,body.tax-brand .id-brand .id-vs-t--wrap td{white-space:normal}
body.tax-brand .id-brand .id-vs-t--wrap tbody td{vertical-align:top;line-height:1.45}
body.tax-brand .id-brand .id-vs-t--wrap thead th span{white-space:normal;line-height:1.2}
