/* GENERATED by tools/build-css.sh from assets/css/src/. Do not edit this file; edit the sources. */

/* ===== ds/core.css ===== */
.ls-icon{flex:none;display:block}
/* Button */
.ls-btn{display:inline-flex;align-items:center;justify-content:center;gap:16px;height:56px;min-width:var(--target-min);padding:0 28px;border:1px solid transparent;border-radius:var(--radius-xs);font-family:var(--font-body);font-weight:var(--fw-medium);font-size:16px;line-height:1;letter-spacing:var(--ls-ui);text-decoration:none;white-space:nowrap;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard);-webkit-tap-highlight-color:transparent}
.ls-btn--sm{height:44px;padding:0 20px;font-size:15px;gap:12px}
.ls-btn--lg{height:64px;padding:0 32px;font-size:17px}
.ls-btn--full{width:100%;justify-content:space-between}
.ls-btn__icon{display:inline-flex;transition:transform var(--dur-fast) var(--ease-out)}
.ls-btn:hover .ls-btn__icon{transform:translateX(4px)}
.ls-btn:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}
.ls-btn--primary{background:var(--button-primary-bg);color:var(--button-primary-text)}
.ls-btn--primary:hover{background:var(--button-primary-bg-hover);color:var(--button-primary-text)}
.ls-btn--primary:active{background:var(--button-primary-bg-active);color:var(--button-primary-text)}
.ls-btn--secondary{background:transparent;color:var(--text-primary);border-color:var(--line-ink)}
.ls-btn--secondary:hover{background:var(--surface-dark);color:var(--text-inverse)}
.ls-btn--secondary:active{background:var(--neutral-800);color:var(--text-inverse)}
.ls-btn--tertiary{background:transparent;color:var(--text-primary);padding:0;height:auto;min-height:var(--target-min);border:0;border-bottom:1px solid currentColor;border-radius:0}
.ls-btn--tertiary:hover{color:var(--text-link)}
.ls-btn--on-dark.ls-btn--secondary{color:var(--text-inverse);border-color:var(--text-inverse)}
.ls-btn--on-dark.ls-btn--secondary:hover{background:var(--ls-white);color:var(--text-primary)}
.ls-btn--on-dark.ls-btn--tertiary{color:var(--text-inverse)}
.ls-btn--on-dark.ls-btn--tertiary:hover{color:var(--text-link-inverse)}
.ls-btn--on-dark:focus-visible{outline-color:var(--focus-ring-inverse)}
.ls-btn--icon-only{width:56px;padding:0}.ls-btn--sm.ls-btn--icon-only{width:44px}.ls-btn--lg.ls-btn--icon-only{width:64px}
.ls-btn--icon-only:hover .ls-btn__icon{transform:translateX(3px)}
.ls-btn:disabled,.ls-btn[aria-disabled="true"]{background:var(--neutral-100);color:var(--neutral-500);border-color:var(--neutral-100);cursor:not-allowed}
.ls-btn--on-dark:disabled{background:var(--neutral-800);color:var(--neutral-400);border-color:var(--neutral-800)}
.ls-btn:disabled .ls-btn__icon{transform:none}
.ls-btn.is-loading{cursor:progress}
.ls-btn.is-loading.ls-btn--primary{background:var(--button-primary-bg);color:var(--button-primary-text);border-color:transparent}
.ls-btn__spinner{width:18px;height:18px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:ls-spin .8s linear infinite}
@keyframes ls-spin{to{transform:rotate(360deg)}}
/* Text link */
.ls-link{display:inline-flex;align-items:center;gap:8px;color:var(--text-primary);font-family:var(--font-body);font-weight:var(--fw-medium);font-size:16px;line-height:1.3;text-decoration:none;min-height:32px}
.ls-link--sm{font-size:14px}.ls-link--lg{font-size:18px}
.ls-link__label{background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;padding-bottom:2px;transition:background-size var(--dur-base) var(--ease-out),color var(--dur-fast)}
.ls-link:hover{color:var(--text-link)}
.ls-link:hover .ls-link__label{background-size:0 1px;background-position:100% 100%}
.ls-link--icon .ls-icon{transition:transform var(--dur-fast) var(--ease-out)}
.ls-link--icon:hover .ls-icon{transform:translateX(4px)}
.ls-link--on-dark{color:var(--text-inverse)}.ls-link--on-dark:hover{color:var(--text-link-inverse)}
/* Eyebrow row */
.ls-eyebrow-row{display:flex;align-items:center;gap:12px;margin:0;color:var(--text-secondary)}
.ls-eyebrow-row__index{font-family:var(--font-body);font-weight:var(--fw-medium);font-size:12px;letter-spacing:.08em;color:var(--text-link);font-variant-numeric:tabular-nums}
.ls-eyebrow-row__rule{width:24px;height:1px;background:var(--brand-primary)}
.ls-eyebrow-row--on-dark{color:var(--text-inverse-secondary)}
.ls-eyebrow-row--on-dark .ls-eyebrow-row__index{color:var(--text-link-inverse)}
.ls-eyebrow-row--on-dark .ls-eyebrow-row__rule{background:var(--brand-accent)}
.ls-logo{display:block}.ls-logo-link{display:inline-flex}

/* v2 — softened, glass, icon-led */
.ls-btn{border-radius:var(--radius-sm)}.ls-btn--tertiary{border-radius:0}
.ls-icon-tile{flex:none;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:var(--radius-md);background:var(--brand-accent-tint);color:var(--brand-green-700)}
.ls-dark .ls-icon-tile,.ls-on-dark .ls-icon-tile,.ls-stat--on-dark .ls-icon-tile,.ls-card--on-dark .ls-icon-tile,.ls-features--on-dark .ls-icon-tile{background:rgba(143,201,98,.14);color:var(--brand-accent)}
.ls-eyebrow-row__rule{height:2px;border-radius:2px}
/* ===== ds/navigation.css ===== */
/* Header */
.ls-header{position:relative;z-index:var(--z-header);background:var(--surface-light);color:var(--text-primary);border-bottom:1px solid var(--line-light);transition:background-color var(--dur-base) var(--ease-standard),border-color var(--dur-base)}
.ls-header.is-sticky{position:sticky;top:0}
.ls-header--dark{background:var(--surface-dark);color:var(--text-inverse);border-color:var(--line-dark)}
.ls-header--transparent{background:transparent;color:var(--text-inverse);border-color:rgba(255,255,255,.16)}
.ls-header__bar{display:flex;align-items:center;gap:48px;height:var(--header-h);transition:height var(--dur-base) var(--ease-out)}
.ls-header.is-compact .ls-header__bar{height:var(--header-h-compact)}
.ls-header.is-compact{box-shadow:var(--shadow-header)}
.ls-header__nav{display:flex;gap:4px;flex:1}
.ls-header__link{display:inline-flex;align-items:center;gap:6px;height:44px;padding:0 14px;color:inherit;text-decoration:none;font-size:var(--fs-ui);font-weight:var(--fw-medium);position:relative}
.ls-header__link::after{content:"";position:absolute;left:14px;right:14px;bottom:6px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform var(--dur-base) var(--ease-out)}
.ls-header__link:hover{color:inherit}.ls-header__link:hover::after,.ls-header__link.is-active::after{transform:scaleX(1)}
.ls-header__link.is-active::after{background:var(--brand-primary);height:2px}
.ls-header__actions{display:flex;align-items:center;gap:24px;margin-left:auto}
.ls-header__phone{display:inline-flex;align-items:center;gap:8px;color:inherit;text-decoration:none;font-size:var(--fs-ui);font-weight:var(--fw-medium);font-variant-numeric:tabular-nums}
.ls-header__phone:hover{color:inherit;text-decoration:underline}
.ls-header__toggle{display:none;align-items:center;justify-content:center;width:44px;height:44px;margin-right:-10px;background:none;border:0;color:inherit;cursor:pointer}
.ls-header--campaign .ls-header__actions{gap:32px}
.ls-header--dark .ls-header__link:focus-visible,.ls-header--transparent .ls-header__link:focus-visible{outline-color:var(--focus-ring-inverse)}
@media (max-width:1180px){.ls-header__phone span{display:none}.ls-header__nav{gap:0}.ls-header__link{padding:0 10px}}
@media (max-width:1023px){.ls-header__nav,.ls-header__phone{display:none}.ls-header__toggle{display:inline-flex}.ls-header--campaign .ls-header__phone{display:inline-flex}.ls-header--campaign .ls-header__toggle--call{display:none}}
@media (max-width:767px){.ls-header:not(.ls-header--campaign) .ls-header__cta{display:none}.ls-header--campaign .ls-header__phone{display:none}.ls-header--campaign .ls-header__toggle--call{display:inline-flex}.ls-header--campaign .ls-header__actions{gap:8px}}
.ls-header.is-mobile .ls-header__nav,.ls-header.is-mobile .ls-header__phone{display:none}.ls-header.is-mobile:not(.ls-header--campaign) .ls-header__cta{display:none}.ls-header.is-mobile .ls-header__toggle{display:inline-flex}
.ls-header.is-mobile.ls-header--campaign .ls-header__toggle--call{display:inline-flex}.ls-header.is-mobile .ls-header__actions{gap:8px}
.ls-header.is-mobile .ls-header__bar{height:64px;padding-inline:20px}
/* Mobile nav */
.ls-mnav{position:fixed;inset:var(--header-h) 0 0 0;background:var(--surface-dark);color:var(--text-inverse);display:flex;flex-direction:column;justify-content:space-between;overflow-y:auto;padding:16px var(--page-margin) 32px;animation:ls-mnav-in var(--dur-base) var(--ease-out)}
.ls-header.is-mobile .ls-mnav{position:absolute;top:64px;inset-inline:0;bottom:auto;min-height:640px;padding-inline:20px}
@keyframes ls-mnav-in{from{opacity:0;transform:translateY(-8px)}}
.ls-mnav__group{border-bottom:1px solid var(--line-dark)}
.ls-mnav__link{display:flex;align-items:center;justify-content:space-between;width:100%;min-height:64px;padding:0;background:none;border:0;color:inherit;text-decoration:none;font-family:var(--font-display);font-weight:var(--fw-medium);font-size:28px;letter-spacing:-.01em;cursor:pointer;text-align:left}
.ls-mnav__link:hover{color:var(--text-link-inverse)}
.ls-mnav__sub{list-style:none;margin:0 0 16px;padding:0}
.ls-mnav__sub a{display:flex;align-items:center;min-height:44px;color:var(--text-inverse-secondary);text-decoration:none;font-size:17px}
.ls-mnav__sub a:hover{color:var(--text-inverse)}
.ls-mnav__foot{display:grid;gap:24px;padding-top:40px}
.ls-mnav__phone{display:grid;gap:6px;color:var(--text-inverse);text-decoration:none;font-family:var(--font-display);font-size:24px;font-weight:var(--fw-medium)}
.ls-mnav__phone .ls-eyebrow{color:var(--text-inverse-tertiary);font-family:var(--font-body)}
/* Footer */
.ls-footer{padding-top:var(--section-lg)}
.ls-footer__prop{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gutter);padding-bottom:var(--section-md);border-bottom:1px solid var(--line-dark)}
.ls-footer__title{grid-column:1/8;max-width:14ch}
.ls-footer__prop-side{grid-column:8/13;display:grid;gap:32px;align-content:end}
.ls-footer__prop-actions{display:flex;align-items:center;gap:32px;flex-wrap:wrap}
.ls-footer__tel{color:var(--text-inverse);font-family:var(--font-display);font-size:24px;font-weight:var(--fw-medium);text-decoration:none;font-variant-numeric:tabular-nums}
.ls-footer__tel:hover{color:var(--text-link-inverse)}
.ls-footer__main{display:grid;grid-template-columns:4fr 2fr 2fr 2fr;gap:var(--grid-gutter);padding-block:var(--space-8)}
.ls-footer__brand{display:grid;gap:32px;align-content:start}
.ls-footer__contact{display:grid;gap:12px;font-style:normal;font-size:var(--fs-body-sm);color:var(--text-inverse-secondary)}
.ls-footer__contact a,.ls-footer__contact span{display:inline-flex;align-items:center;gap:10px;color:inherit;text-decoration:none}
.ls-footer__contact a:hover{color:var(--text-inverse)}
.ls-footer__col-title{color:var(--text-inverse-tertiary);margin-bottom:20px}
.ls-footer__col ul,.ls-footer__legal ul{list-style:none;margin:0;padding:0}
.ls-footer__col li a{display:inline-flex;min-height:36px;align-items:center;color:var(--text-inverse);text-decoration:none;font-size:15px}
.ls-footer__col li a:hover{color:var(--text-link-inverse)}
.ls-footer__legal{display:flex;align-items:center;gap:32px;flex-wrap:wrap;padding-block:24px 32px;border-top:1px solid var(--line-dark);color:var(--text-inverse-tertiary)}
.ls-footer__legal-links,.ls-footer__social{display:flex;gap:24px;flex-wrap:wrap}
.ls-footer__social{margin-left:auto!important}
.ls-footer__legal a{color:var(--text-inverse-secondary);text-decoration:none;font-size:var(--fs-body-sm)}
.ls-footer__legal a:hover{color:var(--text-inverse);text-decoration:underline}
@media (max-width:1023px){.ls-footer__title,.ls-footer__prop-side{grid-column:1/-1}.ls-footer__prop{gap:32px}.ls-footer__main{grid-template-columns:1fr 1fr 1fr}.ls-footer__brand{grid-column:1/-1;padding-bottom:16px}}
@media (max-width:767px){.ls-footer__main{grid-template-columns:1fr 1fr;row-gap:40px}.ls-footer__col:last-child{grid-column:1/-1}.ls-footer__legal{flex-direction:column;align-items:flex-start;gap:16px}.ls-footer__social{margin-left:0!important}}

/* v2 — softened, glass, icon-led */
.ls-header--transparent{background:var(--glass-dark);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border-color:var(--glass-border-dark)}
.ls-header.is-compact.ls-header--light{background:rgba(255,255,255,.82);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}
.ls-header.is-compact.ls-header--dark{background:rgba(8,17,22,.82);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur)}
.ls-header__toggle{border-radius:var(--radius-md)}
/* ===== ds/forms.css ===== */
.ls-field{display:grid;gap:8px;min-width:0}
.ls-field__label{font-family:var(--font-body);font-weight:var(--fw-medium);font-size:15px;line-height:1.3;color:var(--text-primary);padding:0}
.ls-field__req{color:var(--error-text)}
.ls-field__opt{color:var(--text-tertiary);font-weight:var(--fw-regular)}
.ls-input{width:100%;height:var(--control-h);padding:0 16px;font:inherit;font-size:16px;color:var(--text-primary);background:var(--surface-light);border:1px solid var(--line-light-strong);border-radius:var(--radius-xs);outline:none;transition:border-color var(--dur-fast),box-shadow var(--dur-fast);appearance:none}
.ls-input::placeholder{color:var(--neutral-400)}
.ls-input:hover{border-color:var(--neutral-500)}
.ls-input:focus{border-color:var(--line-ink);box-shadow:inset 0 0 0 1px var(--line-ink),0 0 0 3px rgba(22,155,83,.28)}
.ls-input:disabled{background:var(--surface-muted);color:var(--neutral-400);border-color:var(--line-light);cursor:not-allowed}
.ls-input--area{height:auto;padding:16px;resize:vertical;min-height:120px;line-height:1.5}
.ls-select{position:relative}.ls-input--select{padding-right:48px;cursor:pointer}
.ls-select__chev{position:absolute;right:16px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--text-secondary)}
.ls-field.has-error .ls-input{border-color:var(--error);box-shadow:inset 0 0 0 1px var(--error)}
.ls-field.has-success .ls-input{border-color:var(--success)}
.ls-field__msg{display:flex;align-items:flex-start;gap:6px;margin:0;font-size:14px;line-height:1.4;color:var(--text-tertiary)}
.ls-field__msg .ls-icon{margin-top:1px}
.ls-field__msg--error{color:var(--error-text);font-weight:var(--fw-medium)}
.ls-field__msg--success{color:var(--success-text)}
/* dark */
.ls-field--on-dark .ls-field__label,.ls-choice--on-dark .ls-field__label,.ls-check--on-dark{color:var(--text-inverse)}
.ls-field--on-dark .ls-input{background:var(--surface-dark-raised);border-color:var(--line-dark-strong);color:var(--text-inverse)}
.ls-field--on-dark .ls-input:focus{border-color:var(--ls-white);box-shadow:inset 0 0 0 1px var(--ls-white),0 0 0 3px rgba(143,201,98,.35)}
.ls-field--on-dark .ls-field__msg,.ls-field--on-dark .ls-field__opt{color:var(--text-inverse-tertiary)}
.ls-field--on-dark .ls-field__msg--error,.ls-choice--on-dark .ls-field__msg--error{color:var(--error-on-dark)}
.ls-field--on-dark.has-error .ls-input{border-color:var(--error-on-dark);box-shadow:inset 0 0 0 1px var(--error-on-dark)}
.ls-field--on-dark .ls-field__req{color:var(--error-on-dark)}
/* checkbox */
.ls-check{display:grid;gap:8px}
.ls-check__input,.ls-choice__input{position:absolute;opacity:0;width:1px;height:1px}
.ls-check__label{display:flex;gap:12px;align-items:flex-start;font-size:15px;line-height:1.45;cursor:pointer;min-height:24px}
.ls-check__box,.ls-choice__mark{flex:none;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;margin-top:0;border:1px solid var(--neutral-500);border-radius:var(--radius-xs);background:var(--surface-light);color:transparent;transition:background-color var(--dur-fast),border-color var(--dur-fast)}
.ls-choice__mark--radio{border-radius:50%}
.ls-check__input:checked+.ls-check__label .ls-check__box,.ls-choice__input:checked+.ls-choice__label .ls-choice__mark--checkbox{background:var(--surface-dark);border-color:var(--surface-dark);color:var(--ls-white)}
.ls-choice__input:checked+.ls-choice__label .ls-choice__mark--radio{border:7px solid var(--surface-dark)}
.ls-check__input:focus-visible+.ls-check__label .ls-check__box,.ls-choice__input:focus-visible+.ls-choice__label .ls-choice__mark{outline:2px solid var(--focus-ring);outline-offset:2px}
.ls-check__input:disabled+.ls-check__label,.ls-choice__input:disabled+.ls-choice__label{opacity:.45;cursor:not-allowed}
.ls-check.has-error .ls-check__box{border-color:var(--error);box-shadow:inset 0 0 0 1px var(--error)}
.ls-check--on-dark .ls-check__box,.ls-choice--on-dark .ls-choice__mark{background:transparent;border-color:var(--neutral-300)}
.ls-check--on-dark .ls-check__input:checked+.ls-check__label .ls-check__box,.ls-choice--on-dark .ls-choice__input:checked+.ls-choice__label .ls-choice__mark--checkbox{background:var(--brand-accent);border-color:var(--brand-accent);color:var(--ls-midnight)}
.ls-choice--on-dark .ls-choice__input:checked+.ls-choice__label .ls-choice__mark--radio{border-color:var(--brand-accent)}
/* choice group */
.ls-choice{border:0;margin:0;padding:0;min-width:0;display:grid;gap:12px}
.ls-choice legend{margin-bottom:12px}
.ls-choice__opts{display:grid;gap:4px}
.ls-choice__label{display:flex;gap:12px;align-items:center;min-height:44px;font-size:16px;cursor:pointer}
.ls-choice__text{display:grid;gap:2px}
.ls-choice__detail{font-size:14px;color:var(--text-tertiary)}
.ls-choice--tiles .ls-choice__opts{grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:8px}
.ls-choice--tiles .ls-choice__label{height:100%;padding:14px 16px;border:1px solid var(--line-light-strong);border-radius:var(--radius-xs);transition:border-color var(--dur-fast),background-color var(--dur-fast)}
.ls-choice--tiles .ls-choice__label:hover{border-color:var(--neutral-500)}
.ls-choice--tiles .ls-choice__opt.is-on .ls-choice__label{border-color:var(--line-ink);box-shadow:inset 0 0 0 1px var(--line-ink);background:var(--surface-muted)}
.ls-choice--on-dark .ls-choice__label{color:var(--text-inverse)}
.ls-choice--on-dark.ls-choice--tiles .ls-choice__label{border-color:var(--line-dark-strong)}
.ls-choice--on-dark.ls-choice--tiles .ls-choice__opt.is-on .ls-choice__label{border-color:var(--brand-accent);box-shadow:inset 0 0 0 1px var(--brand-accent);background:var(--surface-dark-raised)}
.ls-choice.has-error .ls-choice__mark{border-color:var(--error)}
@media (max-width:767px){.ls-choice--tiles .ls-choice__opts{grid-template-columns:1fr 1fr}}
/* upload */
.ls-upload__zone{display:grid;justify-items:center;gap:8px;padding:32px 24px;text-align:center;border:1px solid var(--line-light-strong);background:var(--surface-muted);border-radius:var(--radius-xs);cursor:pointer;font-size:15px;transition:border-color var(--dur-fast),background-color var(--dur-fast)}
.ls-upload__zone:hover,.ls-upload.is-over .ls-upload__zone{border-color:var(--line-ink);background:var(--brand-green-50)}
.ls-upload__zone:focus-within{outline:2px solid var(--focus-ring);outline-offset:3px}
.ls-upload__hint{font-size:14px;color:var(--text-tertiary)}
.ls-upload.is-disabled .ls-upload__zone{opacity:.5;cursor:not-allowed}
.ls-upload.has-error .ls-upload__zone{border-color:var(--error)}
.ls-upload__list{list-style:none;margin:0;padding:0;display:grid}
.ls-upload__list li{display:flex;align-items:center;gap:12px;min-height:48px;border-bottom:1px solid var(--line-light);font-size:15px}
.ls-upload__name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ls-upload__size{color:var(--text-tertiary);font-variant-numeric:tabular-nums;font-size:14px}
.ls-upload__list button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-right:-12px;background:none;border:0;color:inherit;cursor:pointer}
.ls-field--on-dark .ls-upload__zone{background:var(--surface-dark-raised);border-color:var(--line-dark-strong);color:var(--text-inverse)}
.ls-field--on-dark .ls-upload__list li{border-color:var(--line-dark)}
/* form */
.ls-form{display:grid;gap:var(--form-gap);color:var(--text-primary)}
.ls-form--on-dark{color:var(--text-inverse)}.ls-form--on-dark .ls-muted{color:var(--text-inverse-secondary)}
.ls-form__head{display:grid;gap:12px;margin-bottom:8px}
.ls-form__grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--form-gap)}
.ls-form--ppc .ls-form__grid,.ls-form--short .ls-form__grid{grid-template-columns:1fr}
.ls-form--ppc{gap:20px}
.ls-form__submit{display:grid;gap:12px;margin-top:8px}
.ls-form--detailed .ls-form__submit{justify-items:start}
.ls-form__assure{display:flex;align-items:center;gap:8px;justify-content:center}
.ls-form__summary{display:flex;gap:12px;padding:16px 20px;background:var(--error-bg);color:var(--error-text);border-left:0;border-top:2px solid var(--error);font-size:15px}
.ls-form__summary ul{margin:6px 0 0;padding-left:18px}
.ls-form--on-dark .ls-form__summary{background:rgba(200,50,30,.14);color:var(--error-on-dark)}
.ls-form--success{gap:20px;padding:8px 0}
.ls-form__success-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:var(--brand-primary);color:var(--ls-midnight)}
.ls-form__next{list-style:none;margin:8px 0 0;padding:0;border-top:1px solid var(--line-light)}
.ls-form--on-dark .ls-form__next,.ls-form--on-dark .ls-form__next li{border-color:var(--line-dark)}
.ls-form__next li{display:flex;gap:16px;align-items:center;min-height:52px;border-bottom:1px solid var(--line-light);font-size:16px}
.ls-form__next span{color:var(--text-link);font-size:13px;font-weight:var(--fw-medium);font-variant-numeric:tabular-nums}
.ls-form--on-dark .ls-form__next span{color:var(--text-link-inverse)}
@media (max-width:767px){.ls-form__grid{grid-template-columns:1fr}.ls-form--detailed .ls-form__submit{justify-items:stretch}}

/* v2 — softened, glass, icon-led */
.ls-input,.ls-choice--tiles .ls-choice__label,.ls-upload__zone{border-radius:var(--radius-sm)}
.ls-check__box{border-radius:4px}
.ls-form__summary{border-radius:var(--radius-md)}
.ls-choice--tiles .ls-choice__opt.is-on .ls-choice__label{background:var(--brand-accent-tint);border-color:var(--brand-green-700);box-shadow:inset 0 0 0 1px var(--brand-green-700)}
.ls-form__grid--1{grid-template-columns:1fr}
.ls-form__steps{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;font-size:12px;color:var(--text-tertiary);letter-spacing:.04em}
.ls-form__steps span{display:grid;gap:8px}
.ls-form__steps i{display:block;height:4px;border-radius:2px;background:var(--neutral-100)}
.ls-form__steps .is-done i{background:var(--brand-green-700)}.ls-form__steps .is-current i{background:var(--brand-primary)}.ls-form__steps .is-current{color:var(--text-primary);font-weight:500}
.ls-form--on-dark .ls-form__steps i{background:var(--neutral-700)}.ls-form--on-dark .ls-form__steps .is-current{color:var(--text-inverse)}.ls-form--on-dark .ls-form__steps .is-current i,.ls-form--on-dark .ls-form__steps .is-done i{background:var(--brand-accent)}
.ls-form__nav{display:flex;gap:12px;justify-content:space-between;margin-top:8px}.ls-form__nav .ls-btn:only-child{margin-left:auto}
@media (max-width:767px){.ls-form__steps{font-size:0}.ls-form__nav .ls-btn{flex:1}}
/* ===== ds/media.css ===== */
.ls-img{margin:0;min-width:0;display:grid;gap:12px}
.ls-img--fill,.ls-img--fill .ls-img__box{height:100%}
.ls-img__box{position:relative;overflow:hidden;background:var(--neutral-100);width:100%}
.ls-img__box>img,.ls-img__box>video,.ls-video__el{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ls-img__ph{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;padding:20px;background:var(--neutral-100);color:var(--neutral-600);background-image:linear-gradient(var(--line-light-strong),var(--line-light-strong)),linear-gradient(var(--line-light-strong),var(--line-light-strong));background-size:1px 100%,100% 1px;background-position:50% 0,0 50%;background-repeat:no-repeat}
.ls-img--dark .ls-img__ph{background-color:var(--neutral-800);color:var(--neutral-300);background-image:linear-gradient(var(--line-dark-strong),var(--line-dark-strong)),linear-gradient(var(--line-dark-strong),var(--line-dark-strong))}
.ls-img--dark .ls-img__box{background:var(--neutral-800)}
.ls-img__ph-label{font-size:12px;font-weight:var(--fw-medium);letter-spacing:.12em;text-transform:uppercase;max-width:32ch;line-height:1.4;position:relative;background-color:var(--neutral-100);align-self:flex-start;padding:2px 6px 2px 0}.ls-img--dark .ls-img__ph-label{background-color:var(--neutral-800)}
.ls-img__ph-ratio{align-self:flex-end;font-size:12px;font-variant-numeric:tabular-nums;letter-spacing:.06em}
.ls-img__cap{font-size:var(--fs-caption);line-height:1.45;color:var(--text-tertiary);margin:0;max-width:60ch}
.ls-dark .ls-img__cap{color:var(--text-inverse-tertiary)}
html.js .ls-img--reveal .ls-img__box{clip-path:inset(0 0 100% 0)}
html.js .ls-img--reveal .ls-img__box>*{transform:scale(1.08)}
html.js .ls-img--reveal.is-in .ls-img__box{clip-path:inset(0 0 0 0);transition:clip-path var(--dur-reveal) var(--ease-out)}
html.js .ls-img--reveal.is-in .ls-img__box>*{transform:scale(1);transition:transform calc(var(--dur-reveal)*1.6) var(--ease-out)}
/* video */
.ls-video{display:grid;gap:12px}
.ls-video__play{position:absolute;inset:0;display:flex;align-items:flex-end;gap:20px;padding:32px;background:linear-gradient(to top,rgba(8,17,22,.72),rgba(8,17,22,0) 55%);border:0;color:var(--ls-white);text-align:left;cursor:pointer;font:inherit}
.ls-video__play-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;background:var(--ls-white);color:var(--ls-midnight);transition:transform var(--dur-base) var(--ease-out),background-color var(--dur-fast)}
.ls-video__play:hover .ls-video__play-btn{transform:scale(1.06);background:var(--brand-primary)}
.ls-video__play:focus-visible{outline:2px solid var(--focus-ring-inverse);outline-offset:-6px}
.ls-video__meta{display:grid;gap:4px;font-family:var(--font-display);font-size:22px;font-weight:var(--fw-medium);line-height:1.2}
.ls-video__meta .ls-eyebrow{font-family:var(--font-body);color:var(--neutral-200)}
.ls-video__dur{font-family:var(--font-body);font-size:14px;color:var(--neutral-200);font-variant-numeric:tabular-nums}
.ls-video__ctl{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;border-radius:50%;background:rgba(8,17,22,.72);color:var(--ls-white);cursor:pointer}
.ls-video__ctl:hover{background:var(--ls-midnight)}
.ls-video__ctl--corner{position:absolute;right:20px;bottom:20px}
.ls-video__fake{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:center;gap:16px;padding:16px 20px;background:linear-gradient(to top,rgba(8,17,22,.8),transparent);color:var(--ls-white)}
.ls-video__bar{flex:1;height:2px;background:rgba(255,255,255,.3)}.ls-video__bar span{display:block;width:24%;height:100%;background:var(--brand-accent)}
@media (max-width:767px){.ls-video__play{padding:20px;gap:14px}.ls-video__play-btn{width:56px;height:56px}.ls-video__meta{font-size:18px}}

/* v2 — softened, glass, icon-led */
.ls-img__box{border-radius:var(--radius-md)}
html.js .ls-img--reveal .ls-img__box{clip-path:inset(0 0 100% 0 round var(--radius-md))}
html.js .ls-img--reveal.is-in .ls-img__box{clip-path:inset(0 0 0 0 round var(--radius-md))}
.ls-video__fake{border-radius:0 0 var(--radius-md) var(--radius-md)}
.ls-video__ctl--corner{background:var(--glass-dark);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border-dark)}
@media (max-width:767px){.ls-mt__media .ls-img__box,.ls-hero--service .ls-hero__img .ls-img__box,.ls-csf--overlay .ls-csf__img .ls-img__box{border-radius:0}}
/* ===== ds/heroes.css ===== */
.ls-hero{position:relative}
.ls-hero__title{max-width:14ch}
.ls-hero__actions{display:flex;gap:16px;flex-wrap:wrap}
.ls-hero__crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:24px 0 0;font-size:14px}
.ls-hero__crumbs li+li::before{content:"/";margin-right:8px;color:var(--text-tertiary)}
.ls-hero__crumbs a{color:var(--text-secondary);text-decoration:none}.ls-hero__crumbs a:hover{color:var(--text-primary);text-decoration:underline}
.ls-dark .ls-hero__crumbs a,.ls-dark .ls-hero__crumbs li{color:var(--text-inverse-secondary)}
/* brand */
.ls-hero--brand .ls-hero__inner{display:grid;gap:40px;padding-block:var(--space-10) var(--space-8)}
.ls-hero--brand .ls-hero__title{max-width:12ch}
.ls-hero--brand .ls-hero__lower{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:32px var(--grid-gutter);align-items:end}
.ls-hero--brand .ls-hero__intro{grid-column:1/6;color:var(--text-inverse-secondary)}
.ls-hero--brand .ls-hero__actions{grid-column:8/13;justify-content:flex-end}
.ls-hero--brand .ls-hero__media{width:100%}
.ls-hero__stats{padding-block:var(--space-8) var(--space-9)}
/* service */
.ls-hero--service{padding-bottom:var(--space-8)}
.ls-hero__split{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gutter);align-items:end;padding-top:var(--space-8)}
.ls-hero--service .ls-hero__copy{grid-column:1/7;display:grid;gap:32px;padding-bottom:var(--space-3)}
.ls-hero--service .ls-hero__img{grid-column:8/13}
.ls-hero__facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--grid-gutter);margin:var(--space-8) 0 0;padding:0}
.ls-hero__facts>div{border-top:1px solid var(--line-ink);padding-top:16px;display:grid;gap:8px}
.ls-hero__facts dt{color:var(--text-tertiary)}
.ls-hero__facts dd{margin:0;font-family:var(--font-display);font-weight:var(--fw-medium);font-size:22px;line-height:1.25;letter-spacing:-.01em}
/* sector */
.ls-hero--sector{min-height:min(88vh,860px);display:flex;flex-direction:column;overflow:hidden}
.ls-hero__bg{position:absolute!important;inset:0}
.ls-hero__scrim{position:absolute;inset:0;background:linear-gradient(to top,rgba(8,17,22,.92) 0%,rgba(8,17,22,.55) 45%,rgba(8,17,22,.15) 100%)}
.ls-hero--sector .ls-hero__inner{position:relative;flex:1;display:flex;flex-direction:column;justify-content:space-between;gap:120px;padding-bottom:var(--space-9)}
.ls-hero__sector-copy{display:grid;gap:32px}
.ls-hero--sector .ls-hero__lower{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:32px var(--grid-gutter);align-items:end}
.ls-hero--sector .ls-hero__intro{grid-column:1/7;color:var(--text-inverse-secondary)}
.ls-hero--sector .ls-hero__actions{grid-column:8/13;justify-content:flex-end}
/* campaign */
.ls-hero__campaign{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gutter);align-items:start;padding-block:var(--space-9)}
.ls-hero--campaign .ls-hero__copy{grid-column:1/7;display:grid;gap:32px;padding-top:var(--space-5)}
.ls-hero--campaign .ls-hero__title{font-size:clamp(40px,2rem + 3.2vw,76px);max-width:13ch}
.ls-hero--campaign .ls-hero__intro{color:var(--text-inverse-secondary);max-width:44ch}
.ls-hero__points{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.ls-hero__points li{display:flex;gap:14px;align-items:center;font-size:18px;font-weight:var(--fw-medium)}
.ls-hero__points .ls-icon{color:var(--brand-accent)}
.ls-hero__proof{padding-top:32px;border-top:1px solid var(--line-dark)}
.ls-hero__formcard{grid-column:8/13;background:var(--surface-light);color:var(--text-primary);padding:40px}
/* case */
.ls-hero--case .ls-hero__case-head{display:grid;gap:32px;padding-block:var(--space-8) var(--space-7)}
.ls-hero--case .ls-hero__title{max-width:18ch}
.ls-hero--case .ls-hero__intro{max-width:56ch}
.ls-hero__facts--case{grid-template-columns:repeat(5,minmax(0,1fr));margin:0 0 var(--space-7)}
.ls-hero__case-stats{padding-block:var(--space-8) 0}
@media (max-width:1023px){
.ls-hero--brand .ls-hero__intro,.ls-hero--brand .ls-hero__actions,.ls-hero--sector .ls-hero__intro,.ls-hero--sector .ls-hero__actions{grid-column:1/-1;justify-content:flex-start}
.ls-hero--service .ls-hero__copy{grid-column:1/-1}.ls-hero--service .ls-hero__img{grid-column:1/-1}
.ls-hero__facts,.ls-hero__facts--case{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:24px}
.ls-hero--campaign .ls-hero__copy,.ls-hero__formcard{grid-column:1/-1}}
@media (max-width:767px){
.ls-hero--brand .ls-hero__inner{padding-block:64px 48px;gap:28px}
.ls-hero--brand .ls-hero__media .ls-img__box{aspect-ratio:4/5!important}
.ls-hero__actions{flex-direction:column;align-items:stretch}.ls-hero__actions .ls-btn{justify-content:space-between}
.ls-hero--service .ls-hero__split{padding-top:40px;row-gap:40px}
.ls-hero--service .ls-hero__img{margin-inline:calc(-1*var(--page-margin))}
.ls-hero--service .ls-hero__img .ls-img__box{aspect-ratio:4/3!important}
.ls-hero__facts dd{font-size:18px}
.ls-hero--sector{min-height:640px}.ls-hero--sector .ls-hero__inner{gap:64px;padding-bottom:48px}
.ls-hero__campaign{padding-block:40px 0;row-gap:32px}.ls-hero--campaign .ls-hero__copy{padding-top:0;gap:24px}
.ls-hero__formcard{margin-inline:calc(-1*var(--page-margin));padding:32px 20px}
.ls-hero__points li{font-size:16px}
.ls-hero--case .ls-hero__case-head{padding-block:40px}
.ls-hero__case-media .ls-img__box{aspect-ratio:4/3!important}}

/* v2 — softened, glass, icon-led */
.ls-hero--brand .ls-hero__media{position:relative}
.ls-hero--brand .ls-hero__media .ls-img__box,.ls-hero__bg .ls-img__box,.ls-hero__case-media .ls-img__box{border-radius:0}
.ls-hero__glass-stats{position:absolute;left:0;right:0;bottom:32px;margin-inline:auto;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.ls-hero__gstat{padding:24px}
.ls-hero__gstat .ls-stat{gap:10px}.ls-hero__gstat .ls-stat__label{font-size:15px}
.ls-hero__gstat .ls-icon-tile{width:40px;height:40px}
.ls-hero--sector .ls-hero__lower.ls-glass{padding:32px;align-items:center}
.ls-hero__formcard{border-radius:var(--radius-lg);box-shadow:0 32px 64px -32px rgba(0,0,0,.5)}
.ls-hero__facts>div{border-top:0;padding:20px;background:var(--surface-muted);border-radius:var(--radius-md)}
@media (max-width:1023px){.ls-hero__glass-stats{position:static;grid-template-columns:1fr 1fr;padding-block:24px 48px}.ls-hero__gstat{background:var(--surface-dark-raised)}}
@media (max-width:767px){.ls-hero__glass-stats{gap:8px}.ls-hero__gstat{padding:16px}.ls-hero__formcard{border-radius:var(--radius-lg) var(--radius-lg) 0 0}.ls-hero--sector .ls-hero__lower.ls-glass{padding:20px}}
/* ===== ds/stats.css ===== */
.ls-stat{display:grid;gap:12px;align-content:start;min-width:0}
.ls-stat--rule{border-top:1px solid var(--line-ink);padding-top:24px}
.ls-stat--on-dark.ls-stat--rule{border-color:var(--line-dark-strong)}
.ls-stat--accent.ls-stat--rule{border-top:2px solid var(--brand-primary)}
.ls-stat__value{display:flex;align-items:baseline;gap:.12em;margin:0;font-family:var(--font-data);font-weight:var(--fw-semibold);font-size:var(--fs-data);line-height:var(--lh-data);letter-spacing:var(--ls-data);font-variant-numeric:tabular-nums lining-nums;white-space:nowrap}
.ls-stat--sm .ls-stat__value{font-size:var(--fs-data-sm)}
.ls-stat--lg .ls-stat__value{font-size:clamp(64px,3.2rem + 4vw,120px)}
.ls-stat--xl .ls-stat__value{font-size:var(--fs-data-xl)}
.ls-stat__unit{font-size:.38em;letter-spacing:-.01em;font-weight:var(--fw-medium)}
.ls-stat__label{margin:0;font-family:var(--font-body);font-weight:var(--fw-medium);font-size:var(--fs-h4);line-height:1.3;max-width:22ch}
.ls-stat--sm .ls-stat__label{font-size:17px}
.ls-stat__detail{margin:0;font-size:var(--fs-body-sm);line-height:1.5;color:var(--text-tertiary);max-width:32ch}
.ls-stat--on-dark{color:var(--text-inverse)}.ls-stat--on-dark .ls-stat__detail{color:var(--text-inverse-tertiary)}
.ls-stat--on-dark.ls-stat--accent .ls-stat__value{color:var(--brand-accent)}
.ls-statgroup--row{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:var(--grid-gutter)}
.ls-statgroup--lead{display:grid;grid-template-columns:7fr 5fr;gap:var(--grid-gutter);align-items:end}
.ls-statgroup__rest{display:grid;gap:40px}
@media (max-width:1023px){.ls-statgroup--row{grid-template-columns:repeat(min(var(--cols),2),minmax(0,1fr));row-gap:48px}.ls-statgroup--lead{grid-template-columns:1fr;gap:48px}.ls-statgroup__rest{grid-template-columns:1fr 1fr;gap:var(--grid-gutter)}}
@media (max-width:767px){.ls-statgroup--row{grid-template-columns:1fr;row-gap:40px}.ls-statgroup__rest{grid-template-columns:1fr;gap:32px}.ls-stat__label{max-width:none}}

/* v2 — softened, glass, icon-led */
.ls-stat--icon{gap:16px}
.ls-stat--icon .ls-icon-tile{margin-bottom:4px}
/* ===== ds/trust.css ===== */
.ls-logos{display:grid;gap:24px}
.ls-logos__title{color:var(--text-tertiary)}
.ls-logos ul{list-style:none;margin:0;padding:0}
.ls-logos__item{display:flex;align-items:center;justify-content:center;min-height:96px;padding:20px}
.ls-logos__item img{max-height:40px;max-width:140px;width:auto;filter:grayscale(1);opacity:.8;transition:opacity var(--dur-fast),filter var(--dur-fast)}
.ls-logos__item:hover img{filter:none;opacity:1}
.ls-logos__ph{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:20px;letter-spacing:-.02em;color:var(--neutral-400);text-transform:uppercase;white-space:nowrap}
.ls-logos--strip .ls-logos__list{display:flex;justify-content:space-between;gap:32px;flex-wrap:wrap;border-block:1px solid var(--line-light)}
.ls-logos--strip .ls-logos__item{padding:20px 0;min-height:88px}
.ls-logos--grid .ls-logos__list{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));border-top:1px solid var(--line-light);border-left:1px solid var(--line-light)}
.ls-logos--grid .ls-logos__item{border-right:1px solid var(--line-light);border-bottom:1px solid var(--line-light);min-height:128px}
.ls-logos--marquee{overflow:hidden;border-block:1px solid var(--line-light)}
.ls-logos__track{display:flex;width:max-content;animation:ls-marquee 40s linear infinite}
.ls-logos__track:hover{animation-play-state:paused}
.ls-logos__track ul{display:flex}.ls-logos--marquee .ls-logos__item{padding:20px 40px}
@keyframes ls-marquee{to{transform:translateX(-50%)}}
@media (prefers-reduced-motion:reduce){.ls-logos__track{animation:none;flex-wrap:wrap;width:auto}.ls-logos__track ul[aria-hidden]{display:none}}
.ls-logos--on-dark .ls-logos__list,.ls-logos--on-dark .ls-logos__item,.ls-logos--on-dark.ls-logos--marquee{border-color:var(--line-dark)!important}
.ls-logos--on-dark .ls-logos__ph{color:var(--neutral-500)}
.ls-logos--on-dark .ls-logos__item img{filter:grayscale(1) brightness(0) invert(1);opacity:.7}
@media (max-width:1023px){.ls-logos--grid .ls-logos__list{grid-template-columns:repeat(min(var(--cols),3),minmax(0,1fr))}}
@media (max-width:767px){.ls-logos--grid .ls-logos__list{grid-template-columns:1fr 1fr}.ls-logos--grid .ls-logos__item{min-height:96px}.ls-logos--strip .ls-logos__list{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}.ls-logos__ph{font-size:16px}}
/* accreditation */
.ls-accred{display:grid;gap:24px}
.ls-accred__title{color:var(--text-tertiary)}
.ls-accred__list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:16px 48px}
.ls-accred--grid .ls-accred__list{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0 var(--grid-gutter)}
.ls-accred--grid .ls-accred__item{border-top:1px solid var(--line-light);padding:20px 0}
.ls-accred__item{display:flex;align-items:center;gap:16px}
.ls-accred__badge{flex:none;display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border:1px solid var(--line-light-strong);font-size:10px;font-weight:var(--fw-semibold);letter-spacing:.1em;color:var(--neutral-500)}
.ls-accred__badge img{max-width:100%;max-height:100%}
.ls-accred__text{display:grid;gap:2px}
.ls-accred__name{font-weight:var(--fw-medium);font-size:15px;line-height:1.3}
.ls-accred__detail{font-size:13px;color:var(--text-tertiary)}
.ls-accred--on-dark{color:var(--text-inverse)}.ls-accred--on-dark .ls-accred__detail{color:var(--text-inverse-tertiary)}
.ls-accred--on-dark .ls-accred__badge{border-color:var(--line-dark-strong);color:var(--neutral-400)}
.ls-accred--on-dark.ls-accred--grid .ls-accred__item{border-color:var(--line-dark)}
@media (max-width:767px){.ls-accred--strip .ls-accred__list{display:grid;grid-template-columns:1fr 1fr;gap:20px 16px}.ls-accred__badge{width:44px;height:44px}}
/* testimonial */
.ls-quote{margin:0;display:grid;gap:var(--space-7)}
.ls-quote--portrait{grid-template-columns:4fr 7fr;align-items:end;gap:var(--grid-gutter) calc(var(--grid-gutter) + 8.33%)}
.ls-quote__body{display:grid;gap:24px;min-width:0}
.ls-quote__mark{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:120px;line-height:.6;height:48px;color:var(--brand-primary)}
.ls-quote__text{margin:0}
.ls-quote__text p{margin:0;font-family:var(--font-display);font-weight:var(--fw-medium);font-size:clamp(28px,1.4rem + 1.8vw,48px);line-height:1.12;letter-spacing:-.02em;text-wrap:balance;max-width:24ch}
.ls-quote--inline .ls-quote__text p{font-size:var(--fs-h3);max-width:32ch}
.ls-quote--inline .ls-quote__mark{font-size:80px;height:32px}
.ls-quote--inline{border-left:0;padding-top:32px;border-top:1px solid var(--line-ink)}
.ls-quote--card{padding:var(--card-pad);background:var(--surface-muted)}
.ls-quote--card .ls-quote__text p{font-family:var(--font-body);font-weight:var(--fw-regular);font-size:var(--fs-body-lg);line-height:1.5;letter-spacing:0}
.ls-quote--card .ls-quote__mark{font-size:64px;height:24px}
.ls-quote__cite{display:grid;gap:2px;font-size:15px}
.ls-quote__name{font-weight:var(--fw-medium)}
.ls-quote__role{color:var(--text-tertiary)}
.ls-quote__project{margin-top:8px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-link);font-weight:var(--fw-medium)}
.ls-quote--on-dark{color:var(--text-inverse)}.ls-quote--on-dark .ls-quote__role{color:var(--text-inverse-tertiary)}.ls-quote--on-dark .ls-quote__mark{color:var(--brand-accent)}.ls-quote--on-dark .ls-quote__project{color:var(--text-link-inverse)}
.ls-quote--on-dark.ls-quote--card{background:var(--surface-dark-raised)}.ls-quote--on-dark.ls-quote--inline{border-color:var(--line-dark-strong)}
@media (max-width:767px){.ls-quote--portrait{grid-template-columns:1fr;gap:32px}.ls-quote__img{max-width:240px}.ls-quote__mark{font-size:88px;height:36px}}

/* v2 — softened, glass, icon-led */
.ls-accred__badge{border-radius:var(--radius-md)}
.ls-quote--card{border-radius:var(--radius-md)}
.ls-logos--grid .ls-logos__list{border-radius:var(--radius-md);overflow:hidden}
/* ===== ds/cards.css ===== */
.ls-card{display:grid;gap:16px;align-content:start;min-width:0;color:var(--text-primary);text-decoration:none;position:relative}
a.ls-card:hover{color:var(--text-primary)}
.ls-card .ls-img__box>*{transition:transform var(--dur-reveal) var(--ease-out)}
a.ls-card:hover .ls-img__box>*{transform:scale(1.03)}
a.ls-card:focus-visible{outline-offset:6px}
.ls-card__title{text-wrap:balance}
.ls-card__body{color:var(--text-secondary)}
.ls-card__sub{color:var(--text-tertiary);margin:0}
.ls-card__arrow{transition:transform var(--dur-base) var(--ease-out),color var(--dur-fast)}
/* service */
.ls-card--service{border-top:1px solid var(--line-ink);padding-top:20px;gap:20px}
.ls-card--service::before{content:"";position:absolute;left:0;top:-1px;height:2px;width:100%;background:var(--brand-primary);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-base) var(--ease-out)}
.ls-card--service:hover::before{transform:scaleX(1)}
.ls-card__top{display:flex;justify-content:space-between;align-items:center;min-height:24px}
.ls-card__index{font-size:13px;font-weight:var(--fw-medium);letter-spacing:.08em;color:var(--text-link);font-variant-numeric:tabular-nums}
.ls-card--service:hover .ls-card__arrow{transform:translate(3px,-3px);color:var(--text-link)}
.ls-card--service .ls-card__title{margin-top:24px}
.ls-card--service .ls-img+.ls-card__title{margin-top:0}
/* project */
.ls-card__meta{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12px;font-weight:var(--fw-medium);letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);margin-top:4px}
.ls-card__meta span+span::before{content:"";display:inline-block;width:4px;height:4px;background:var(--brand-primary);margin:0 16px 2px 0;vertical-align:middle;margin-left:-0px}
.ls-card--project:hover .ls-card__title{text-decoration:underline;text-underline-offset:.18em;text-decoration-thickness:1px}
.ls-card__result{display:flex;align-items:baseline;gap:12px;margin:8px 0 0;padding-top:16px;border-top:1px solid var(--line-light)}
.ls-card__result strong{font-family:var(--font-data);font-weight:var(--fw-semibold);font-size:36px;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ls-card__result span{font-size:14px;color:var(--text-secondary)}
/* sector */
.ls-card--sector .ls-card__title{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:8px}
.ls-card--sector:hover .ls-card__arrow{transform:translateX(6px);color:var(--text-link)}
.ls-card__tags{list-style:none;margin:0;padding:12px 0 0;border-top:1px solid var(--line-light);display:flex;flex-wrap:wrap;gap:4px 20px;font-size:14px;color:var(--text-secondary)}
/* person */
.ls-card--person{gap:12px}.ls-card--person .ls-card__title{margin-top:8px}
/* download */
.ls-card--download{grid-template-columns:auto 1fr auto;align-items:center;gap:20px;padding:20px 0;border-bottom:1px solid var(--line-light-strong)}
.ls-card__file{color:var(--text-secondary)}
.ls-card__dl{display:grid;gap:2px}.ls-card--download .ls-card__title{font-weight:var(--fw-medium);font-size:17px;line-height:1.35}
.ls-card--download .ls-card__sub{font-size:13px;letter-spacing:.06em;text-transform:uppercase}
.ls-card__dl-action{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--line-ink);transition:background-color var(--dur-fast),color var(--dur-fast)}
.ls-card--download:hover .ls-card__dl-action{background:var(--surface-dark);color:var(--text-inverse)}
/* dark */
.ls-card--on-dark,a.ls-card--on-dark:hover{color:var(--text-inverse)}
.ls-card--on-dark .ls-card__body{color:var(--text-inverse-secondary)}.ls-card--on-dark .ls-card__sub,.ls-card--on-dark .ls-card__meta{color:var(--text-inverse-tertiary)}
.ls-card--on-dark.ls-card--service{border-color:var(--line-dark-strong)}.ls-card--on-dark .ls-card__index{color:var(--text-link-inverse)}.ls-card--on-dark.ls-card--service::before{background:var(--brand-accent)}
.ls-card--on-dark .ls-card__result,.ls-card--on-dark .ls-card__tags,.ls-card--on-dark.ls-card--download{border-color:var(--line-dark)}
.ls-card--on-dark .ls-card__result span,.ls-card--on-dark .ls-card__tags{color:var(--text-inverse-secondary)}
.ls-card--on-dark .ls-card__dl-action{border-color:var(--line-dark-strong)}.ls-card--on-dark.ls-card--download:hover .ls-card__dl-action{background:var(--ls-white);color:var(--ls-midnight)}
.ls-card--on-dark:hover .ls-card__arrow{color:var(--text-link-inverse)!important}
/* grid */
.ls-cardgrid{display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:64px var(--grid-gutter)}
@media (max-width:1023px){.ls-cardgrid{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:48px}}
@media (max-width:767px){.ls-cardgrid--m-stack{grid-template-columns:1fr;row-gap:40px}
.ls-cardgrid--m-swipe{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:16px;margin-inline:calc(-1*var(--page-margin));padding-inline:var(--page-margin);scroll-padding-inline:var(--page-margin);scrollbar-width:none}
.ls-cardgrid--m-swipe>*{flex:0 0 82%;scroll-snap-align:start}}

/* v2 — softened, glass, icon-led */
.ls-card--service{border-top:0;padding:32px;gap:16px;background:var(--surface-muted);border-radius:var(--radius-md);transition:background-color var(--dur-base) var(--ease-standard)}
.ls-card--service::before{display:none}
a.ls-card--service:hover{background:var(--brand-accent-tint)}
.ls-card--service .ls-card__title{margin-top:32px}
.ls-card--on-dark.ls-card--service{background:var(--surface-dark-raised)}
a.ls-card--on-dark.ls-card--service:hover{background:var(--neutral-800)}
.ls-card__dl-action{border-radius:var(--radius-md)}
.ls-card__meta span+span::before{border-radius:50%}
@media (max-width:767px){.ls-card--service{padding:24px}.ls-card--service .ls-card__title{margin-top:20px}}
/* ===== ds/content.css ===== */
/* Section header */
.ls-sechead{display:grid;gap:var(--stack-lg)}
.ls-sechead__main{display:grid;gap:24px;min-width:0}
.ls-sechead__side{display:grid;gap:24px;align-content:end;justify-items:start}
.ls-sechead--split{grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gutter);align-items:end}
.ls-sechead--split .ls-sechead__main{grid-column:1/8}.ls-sechead--split .ls-sechead__side{grid-column:8/13}
.ls-sechead--split .ls-sechead__title{max-width:16ch}
.ls-sechead--stacked .ls-sechead__title{max-width:20ch}
.ls-sechead--centered{justify-items:center;text-align:center}.ls-sechead--centered .ls-sechead__main,.ls-sechead--centered .ls-sechead__side{justify-items:center}.ls-sechead--centered .ls-eyebrow-row{justify-content:center}.ls-sechead--centered .ls-sechead__title{max-width:20ch}
.ls-sechead--on-dark{color:var(--text-inverse)}
@media (max-width:1023px){.ls-sechead--split{grid-template-columns:1fr;row-gap:24px}.ls-sechead--split .ls-sechead__main,.ls-sechead--split .ls-sechead__side{grid-column:1/-1}}
/* Media text */
.ls-mt{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gutter);align-items:center}
.ls-mt__copy{display:grid;gap:24px;align-content:center;min-width:0}
.ls-mt__title{max-width:16ch}
.ls-mt--media-right .ls-mt__media{grid-column:7/13;grid-row:1}.ls-mt--media-right .ls-mt__copy{grid-column:1/6;grid-row:1}
.ls-mt--media-left .ls-mt__media{grid-column:1/7;grid-row:1}.ls-mt--media-left .ls-mt__copy{grid-column:8/13;grid-row:1}
.ls-mt--bleed.ls-mt--media-right .ls-mt__media{margin-right:calc(-1*var(--page-margin))}.ls-mt--bleed.ls-mt--media-left .ls-mt__media{margin-left:calc(-1*var(--page-margin))}
.ls-mt--sticky{align-items:start}
.ls-mt--sticky .ls-mt__media{position:sticky;top:calc(var(--header-h-compact) + 32px)}
.ls-mt--sticky .ls-mt__copy{padding-block:var(--space-8)}
.ls-mt__points{list-style:none;margin:0;padding:0;border-top:1px solid var(--line-light)}
.ls-mt__points li{display:flex;gap:12px;align-items:flex-start;padding:14px 0;border-bottom:1px solid var(--line-light);font-size:16px;line-height:1.45}
.ls-mt__points .ls-icon{color:var(--brand-primary);margin-top:2px}
.ls-mt__actions{display:flex;gap:24px;align-items:center;flex-wrap:wrap;margin-top:8px}
.ls-mt--on-dark{color:var(--text-inverse)}.ls-mt--on-dark .ls-mt__points,.ls-mt--on-dark .ls-mt__points li{border-color:var(--line-dark)}.ls-mt--on-dark .ls-mt__points .ls-icon{color:var(--brand-accent)}
@media (max-width:1023px){.ls-mt--media-right .ls-mt__media,.ls-mt--media-left .ls-mt__media{grid-column:5/9}.ls-mt--media-right .ls-mt__copy,.ls-mt--media-left .ls-mt__copy{grid-column:1/5}}
@media (max-width:767px){.ls-mt{grid-template-columns:1fr;row-gap:32px}.ls-mt .ls-mt__media,.ls-mt .ls-mt__copy{grid-column:1/-1!important;grid-row:auto!important}.ls-mt__media{margin-inline:calc(-1*var(--page-margin))!important}.ls-mt--sticky .ls-mt__media{position:static}.ls-mt--sticky .ls-mt__copy{padding-block:0}}
/* Statement */
.ls-statement{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gutter);row-gap:48px;align-items:end}
.ls-statement__main{grid-column:1/12;display:grid;gap:32px}
.ls-statement--with-stat .ls-statement__main{grid-column:1/9}
.ls-statement__stat{grid-column:9/13}
.ls-statement__text{margin:0;font-family:var(--font-display);font-weight:var(--fw-medium);font-size:clamp(34px,1.6rem + 3vw,72px);line-height:1.04;letter-spacing:-.025em;text-wrap:balance;max-width:22ch}
.ls-statement--md .ls-statement__text{font-size:var(--fs-h2);max-width:26ch}
.ls-statement__hl{color:var(--text-link)}
.ls-statement--center{justify-items:center;text-align:center}.ls-statement--center .ls-statement__main{grid-column:2/12;justify-items:center}.ls-statement--center .ls-eyebrow-row{justify-content:center}
.ls-statement__body{max-width:52ch}
.ls-statement--on-dark{color:var(--text-inverse)}.ls-statement--on-dark .ls-statement__hl{color:var(--brand-accent)}
@media (max-width:1023px){.ls-statement__main,.ls-statement--with-stat .ls-statement__main,.ls-statement__stat{grid-column:1/-1}}
/* CTA */
.ls-cta--closing,.ls-cta--dark{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gutter);row-gap:48px;align-items:end;padding:var(--section-lg) var(--page-margin)}
.ls-cta--dark{padding:var(--space-9) var(--space-8)}
.ls-cta--closing .ls-cta__copy{grid-column:1/9;display:grid;gap:32px}.ls-cta--closing .ls-cta__side{grid-column:9/13}
.ls-cta--dark .ls-cta__copy{grid-column:1/8;display:grid;gap:24px}.ls-cta--dark .ls-cta__side{grid-column:8/13}
.ls-cta__title{max-width:14ch}
.ls-cta__side{display:grid;gap:32px}
.ls-cta__actions{display:flex;gap:24px 32px;align-items:center;flex-wrap:wrap}
.ls-cta__tel{display:grid;gap:4px;color:var(--text-inverse);text-decoration:none;font-family:var(--font-display);font-size:24px;font-weight:var(--fw-medium);font-variant-numeric:tabular-nums}
.ls-cta__tel .ls-eyebrow{font-family:var(--font-body);color:var(--text-inverse-tertiary)}
.ls-cta__tel:hover{color:var(--text-link-inverse)}
.ls-cta--inline{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:24px 0;border-block:1px solid var(--line-ink)}
.ls-cta__inline-copy{display:grid;gap:4px}
.ls-cta--consultation{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gutter);align-items:center;background:var(--surface-muted)}
.ls-cta--consultation>.ls-img{grid-column:1/7}
.ls-cta--consultation .ls-cta__copy{grid-column:7/13;display:grid;gap:24px;padding:48px 64px 48px 24px}
.ls-cta__points{list-style:none;margin:0;padding:0;display:grid;gap:10px}.ls-cta__points li{display:flex;gap:10px;align-items:center;font-size:16px}.ls-cta__points .ls-icon{color:var(--brand-primary)}
.ls-cta--contact{display:grid;grid-template-columns:5fr 7fr;gap:var(--grid-gutter);align-items:start}
.ls-cta__head{display:grid;gap:24px}
.ls-cta__channels{display:grid;border-top:1px solid var(--line-ink)}
.ls-cta__channel{display:grid;grid-template-columns:120px 1fr auto;align-items:center;gap:24px;min-height:96px;border-bottom:1px solid var(--line-light-strong);color:var(--text-primary);text-decoration:none;transition:padding var(--dur-base) var(--ease-out),color var(--dur-fast)}
.ls-cta__channel .ls-eyebrow{color:var(--text-tertiary)}
.ls-cta__channel-val{font-family:var(--font-display);font-size:clamp(22px,1rem + 1vw,32px);font-weight:var(--fw-medium);letter-spacing:-.01em;overflow-wrap:anywhere}
.ls-cta__channel:hover{color:var(--text-link);padding-left:12px}
@media (max-width:1023px){.ls-cta--closing .ls-cta__copy,.ls-cta--closing .ls-cta__side,.ls-cta--dark .ls-cta__copy,.ls-cta--dark .ls-cta__side{grid-column:1/-1}.ls-cta--consultation>.ls-img,.ls-cta--consultation .ls-cta__copy{grid-column:1/-1}.ls-cta--consultation .ls-cta__copy{padding:40px}.ls-cta--contact{grid-template-columns:1fr;gap:40px}}
@media (max-width:767px){.ls-cta--dark{padding:64px 24px}.ls-cta--closing{padding-inline:var(--page-margin)}.ls-cta--inline{flex-direction:column;align-items:flex-start}.ls-cta--consultation .ls-cta__copy{padding:32px 20px}.ls-cta__channel{grid-template-columns:1fr auto;gap:4px 16px;padding-block:16px}.ls-cta__channel .ls-eyebrow{grid-column:1/-1}.ls-cta__actions .ls-btn{width:100%;justify-content:space-between}}

/* v2 — softened, glass, icon-led */
.ls-cta--dark{border-radius:var(--radius-lg);overflow:hidden}
.ls-cta--consultation{border-radius:var(--radius-lg);overflow:hidden}
.ls-cta--consultation>.ls-img .ls-img__box{border-radius:0}
.ls-cta__channel:hover{padding-left:12px}
@media (max-width:767px){.ls-cta--dark{border-radius:var(--radius-md)}}
/* ===== ds/technical.css ===== */
/* spec */
.ls-spec{display:grid;gap:24px}
.ls-spec__sets{display:grid;gap:40px}
.ls-spec--two .ls-spec__sets{grid-template-columns:1fr 1fr;column-gap:var(--grid-gutter)}
.ls-spec__set{margin:0;border-top:1px solid var(--line-ink)}
.ls-spec__group{padding:16px 0 8px;color:var(--text-link)}
.ls-spec__row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;align-items:baseline;padding:16px 0;border-bottom:1px solid var(--line-light)}
.ls-spec__row dt{font-size:16px;color:var(--text-secondary);display:grid;gap:2px}
.ls-spec__note{font-size:13px;color:var(--text-tertiary)}
.ls-spec__row dd{margin:0;text-align:right;white-space:nowrap}
.ls-spec__val{font-family:var(--font-data);font-weight:var(--fw-semibold);font-size:20px;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.ls-spec__unit{margin-left:6px;font-size:14px;color:var(--text-tertiary)}
.ls-spec__foot{color:var(--text-tertiary)}
.ls-spec--on-dark{color:var(--text-inverse)}.ls-spec--on-dark .ls-spec__set{border-color:var(--line-dark-strong)}.ls-spec--on-dark .ls-spec__row{border-color:var(--line-dark)}.ls-spec--on-dark .ls-spec__row dt{color:var(--text-inverse-secondary)}.ls-spec--on-dark .ls-spec__group{color:var(--text-link-inverse)}
@media (max-width:767px){.ls-spec--two .ls-spec__sets{grid-template-columns:1fr}.ls-spec__val{font-size:18px}}
/* accordion */
.ls-acc{border-top:1px solid var(--line-ink)}
.ls-acc__item{border-bottom:1px solid var(--line-light-strong)}
.ls-acc__h{margin:0}
.ls-acc__btn{display:flex;align-items:center;gap:24px;width:100%;min-height:80px;padding:20px 0;background:none;border:0;color:inherit;text-align:left;cursor:pointer;font-family:var(--font-display);font-weight:var(--fw-medium);font-size:var(--fs-h4);line-height:1.3;letter-spacing:-.005em}
.ls-acc--lg .ls-acc__btn{font-size:var(--fs-h3);min-height:96px}
.ls-acc__title{flex:1}
.ls-acc__num{font-family:var(--font-body);font-size:13px;color:var(--text-link);font-variant-numeric:tabular-nums;letter-spacing:.08em;width:32px}
.ls-acc__icon{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--line-light-strong);transition:background-color var(--dur-fast),border-color var(--dur-fast),color var(--dur-fast)}
.ls-acc__btn:hover .ls-acc__icon{border-color:var(--line-ink)}
.ls-acc__item.is-open .ls-acc__icon{background:var(--surface-dark);border-color:var(--surface-dark);color:var(--text-inverse)}
.ls-acc__btn:focus-visible{outline-offset:-2px}
.ls-acc__content{padding:0 68px 32px 0;color:var(--text-secondary);font-size:var(--fs-body);line-height:var(--lh-body);max-width:72ch;animation:ls-acc-in var(--dur-base) var(--ease-out)}
.ls-acc__content p{margin:0 0 12px}.ls-acc__content p:last-child{margin:0}
@keyframes ls-acc-in{from{opacity:0;transform:translateY(-4px)}}
.ls-acc--on-dark{border-color:var(--line-dark-strong);color:var(--text-inverse)}.ls-acc--on-dark .ls-acc__item{border-color:var(--line-dark)}.ls-acc--on-dark .ls-acc__icon{border-color:var(--line-dark-strong)}.ls-acc--on-dark .ls-acc__item.is-open .ls-acc__icon{background:var(--ls-white);color:var(--ls-midnight)}.ls-acc--on-dark .ls-acc__content{color:var(--text-inverse-secondary)}.ls-acc--on-dark .ls-acc__num{color:var(--text-link-inverse)}
@media (max-width:767px){.ls-acc__btn{gap:16px;min-height:72px}.ls-acc__content{padding-right:0}}
/* comparison */
.ls-cmp{overflow-x:auto;-webkit-overflow-scrolling:touch}
.ls-cmp:focus-visible{outline-offset:2px}
.ls-cmp table{width:100%;min-width:640px;border-collapse:collapse;font-size:16px}
.ls-cmp th,.ls-cmp td{padding:18px 20px;text-align:left;border-bottom:1px solid var(--line-light);vertical-align:middle}
.ls-cmp thead th{border-bottom:1px solid var(--line-ink);font-family:var(--font-display);font-weight:var(--fw-semibold);font-size:20px;vertical-align:bottom;padding-top:12px}
.ls-cmp tbody th{font-weight:var(--fw-regular);color:var(--text-secondary);position:sticky;left:0;background:var(--surface-light);min-width:200px}
.ls-cmp td{font-variant-numeric:tabular-nums}
.ls-cmp .is-hl{background:var(--brand-green-50)}
.ls-cmp thead .is-hl{border-top:2px solid var(--brand-primary)}
.ls-cmp__flag{display:block;font-family:var(--font-body);font-size:11px;font-weight:var(--fw-medium);letter-spacing:.14em;text-transform:uppercase;color:var(--text-link);margin-bottom:6px}
.ls-cmp td .ls-icon{color:var(--brand-green-700)}
.ls-cmp__no{color:var(--neutral-300)}
.ls-cmp--on-dark{color:var(--text-inverse)}.ls-cmp--on-dark th,.ls-cmp--on-dark td{border-color:var(--line-dark)}.ls-cmp--on-dark thead th{border-color:var(--line-dark-strong)}.ls-cmp--on-dark tbody th{background:var(--surface-dark);color:var(--text-inverse-secondary)}.ls-cmp--on-dark .is-hl{background:var(--surface-dark-raised)}.ls-cmp--on-dark td .ls-icon{color:var(--brand-accent)}
/* process */
.ls-process{list-style:none;margin:0;padding:0}
.ls-process--horizontal{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:0}
.ls-process__marker{display:flex;align-items:center;gap:16px}
.ls-process__num{flex:none;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border:1px solid var(--line-ink);font-size:14px;font-weight:var(--fw-medium);font-variant-numeric:tabular-nums;background:var(--surface-light);transition:background-color var(--dur-base),color var(--dur-base)}
.ls-process__line{flex:1;height:1px;background:var(--line-light-strong)}
.ls-process--horizontal .ls-process__step:last-child .ls-process__line{background:transparent}
.ls-process__copy{display:grid;gap:10px;padding:24px 24px 0 0}
.ls-process__body{color:var(--text-secondary);max-width:30ch}
.ls-process__dur{margin:4px 0 0;font-size:12px;font-weight:var(--fw-medium);letter-spacing:.12em;text-transform:uppercase;color:var(--text-link)}
.ls-process__step.is-current .ls-process__num{background:var(--brand-primary);border-color:var(--brand-primary);color:var(--ls-midnight)}
.ls-process__step.is-done .ls-process__num{background:var(--surface-dark);color:var(--text-inverse)}
.ls-process__step.is-done .ls-process__line{background:var(--line-ink)}
.ls-process--vertical .ls-process__step{display:grid;grid-template-columns:48px 1fr;column-gap:32px}
.ls-process--vertical .ls-process__marker{flex-direction:column;align-items:center;gap:0}
.ls-process--vertical .ls-process__line{width:1px;height:auto;min-height:32px}
.ls-process--vertical .ls-process__copy{padding:10px 0 48px}
.ls-process--vertical .ls-process__step:last-child .ls-process__line{background:transparent}
.ls-process--on-dark{color:var(--text-inverse)}.ls-process--on-dark .ls-process__num{background:var(--surface-dark);border-color:var(--line-dark-strong)}.ls-process--on-dark .ls-process__line{background:var(--line-dark-strong)}.ls-process--on-dark .ls-process__body{color:var(--text-inverse-secondary)}.ls-process--on-dark .ls-process__dur{color:var(--text-link-inverse)}
@media (max-width:1023px){.ls-process--horizontal{grid-template-columns:1fr}.ls-process--horizontal .ls-process__step{display:grid;grid-template-columns:48px 1fr;column-gap:24px}.ls-process--horizontal .ls-process__marker{flex-direction:column;align-items:center;gap:0}.ls-process--horizontal .ls-process__line{width:1px;height:auto;min-height:24px}.ls-process--horizontal .ls-process__copy{padding:10px 0 40px}}
/* features */
.ls-features{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(var(--cols),minmax(0,1fr));gap:56px var(--grid-gutter)}
.ls-features__item{display:grid;gap:12px;align-content:start;padding-top:24px;border-top:1px solid var(--line-light-strong)}
.ls-features__mark{color:var(--text-link);font-size:13px;font-weight:var(--fw-medium);letter-spacing:.08em;font-variant-numeric:tabular-nums;margin-bottom:12px}
.ls-features__metric{font-family:var(--font-data);font-weight:var(--fw-semibold);font-size:40px;line-height:1;letter-spacing:-.03em;margin-bottom:8px}
.ls-features__body{color:var(--text-secondary);max-width:36ch}
.ls-features--on-dark{color:var(--text-inverse)}.ls-features--on-dark .ls-features__item{border-color:var(--line-dark-strong)}.ls-features--on-dark .ls-features__body{color:var(--text-inverse-secondary)}.ls-features--on-dark .ls-features__mark{color:var(--text-link-inverse)}
@media (max-width:1023px){.ls-features{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:767px){.ls-features{grid-template-columns:1fr;row-gap:32px}}

/* v2 — softened, glass, icon-led */
.ls-acc__icon{border-radius:var(--radius-md)}
.ls-process__num{border-radius:var(--radius-md)}
.ls-process__step.is-current .ls-process__num{box-shadow:0 0 0 6px var(--brand-accent-tint)}
.ls-process--on-dark .ls-process__step.is-current .ls-process__num{background:var(--brand-accent);border-color:var(--brand-accent);box-shadow:0 0 0 6px rgba(143,201,98,.16)}
.ls-features .ls-icon-tile{margin-bottom:12px}
.ls-cmp{border-radius:var(--radius-md)}
/* ===== ds/casestudy.css ===== */
/* featured */
.ls-csf{position:relative;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gutter)}
.ls-csf--overlay .ls-csf__img{grid-column:1/-1;grid-row:1}
.ls-csf--overlay .ls-csf__panel{grid-column:7/13;grid-row:1;align-self:end;margin-bottom:-64px;background:var(--surface-light);color:var(--text-primary);padding:48px;position:relative}
.ls-csf--overlay{margin-bottom:64px}
.ls-csf--split{align-items:center}
.ls-csf--split .ls-csf__img{grid-column:1/8}.ls-csf--split .ls-csf__panel{grid-column:9/13}
.ls-csf__panel{display:grid;gap:20px;align-content:start}
.ls-csf__title{font-size:clamp(28px,1.4rem + 1.4vw,44px);max-width:18ch}
.ls-csf__client{color:var(--text-tertiary);margin:0}
.ls-csf__summary{color:var(--text-secondary)}
.ls-csf__metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--grid-gutter);margin:8px 0;padding:20px 0 0;border-top:1px solid var(--line-light-strong)}
.ls-csf__metrics div{display:flex;flex-direction:column-reverse;gap:6px}
.ls-csf__metrics dt{font-size:14px;color:var(--text-secondary);line-height:1.35}
.ls-csf__metrics dd{margin:0;font-family:var(--font-data);font-weight:var(--fw-semibold);font-size:44px;line-height:.95;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ls-csf--on-dark.ls-csf--split{color:var(--text-inverse)}
.ls-csf--on-dark.ls-csf--split .ls-csf__summary,.ls-csf--on-dark.ls-csf--split .ls-csf__metrics dt{color:var(--text-inverse-secondary)}
.ls-csf--on-dark.ls-csf--split .ls-csf__metrics{border-color:var(--line-dark)}
@media (max-width:1023px){.ls-csf--overlay .ls-csf__panel{grid-column:3/-1;padding:40px}.ls-csf--split .ls-csf__img,.ls-csf--split .ls-csf__panel{grid-column:1/-1}.ls-csf--split{row-gap:32px}}
@media (max-width:767px){.ls-csf--overlay{margin-bottom:0}.ls-csf--overlay .ls-csf__img{margin-inline:calc(-1*var(--page-margin))}.ls-csf--overlay .ls-csf__panel{grid-column:1/-1;grid-row:2;margin:0;padding:32px 0 0;background:transparent}.ls-csf__metrics dd{font-size:36px}}
/* narrative */
.ls-narr{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:var(--grid-gutter);row-gap:24px;padding-top:32px;border-top:1px solid var(--line-ink);align-items:start}
.ls-narr__label{grid-column:1/4;display:flex;gap:16px;align-items:baseline;position:sticky;top:calc(var(--header-h-compact) + 24px)}
.ls-narr__index{font-size:13px;font-weight:var(--fw-medium);color:var(--text-link);font-variant-numeric:tabular-nums}
.ls-narr__body{grid-column:4/11;display:grid;gap:20px}
.ls-narr__body .ls-body{color:var(--text-secondary)}
.ls-narr__body .ls-body:first-of-type{color:var(--text-primary);font-size:var(--fs-body-lg);line-height:var(--lh-body-lg)}
.ls-narr__title{max-width:24ch}
.ls-narr__aside{grid-column:11/13}
.ls-narr--on-dark{color:var(--text-inverse);border-color:var(--line-dark-strong)}.ls-narr--on-dark .ls-narr__body .ls-body{color:var(--text-inverse-secondary)}.ls-narr--on-dark .ls-narr__body .ls-body:first-of-type{color:var(--text-inverse)}.ls-narr--on-dark .ls-narr__index{color:var(--text-link-inverse)}
@media (max-width:1023px){.ls-narr__label{grid-column:1/-1;position:static}.ls-narr__body{grid-column:1/-1}.ls-narr__aside{grid-column:1/-1}}
/* gallery */
.ls-gallery--mosaic{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--grid-gutter);align-items:start}
.ls-gallery__m--1{grid-column:1/9}.ls-gallery__m--2{grid-column:9/13;padding-top:25%}
.ls-gallery__m--3{grid-column:1/5}.ls-gallery__m--4{grid-column:5/9;padding-top:20%}.ls-gallery__m--5{grid-column:9/13;align-self:end}
.ls-gallery--carousel{display:grid;gap:24px}
.ls-gallery__track{display:flex;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-right:var(--page-margin)}
.ls-gallery__track::-webkit-scrollbar{display:none}
.ls-gallery__slide{flex:0 0 min(72%,880px);scroll-snap-align:start}
.ls-gallery__ctl{display:flex;align-items:center;gap:8px}
.ls-gallery__progress{flex:1;height:1px;background:var(--line-light-strong);margin-right:24px;position:relative}
.ls-gallery__progress span{position:absolute;left:0;top:-.5px;height:2px;background:var(--line-ink);transition:width var(--dur-base) var(--ease-out)}
.ls-gallery__ctl button{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;border:1px solid var(--line-ink);background:transparent;color:inherit;cursor:pointer;transition:background-color var(--dur-fast),color var(--dur-fast)}
.ls-gallery__ctl button:hover{background:var(--surface-dark);color:var(--text-inverse)}
.ls-gallery--on-dark .ls-gallery__ctl button{border-color:var(--line-dark-strong);color:var(--text-inverse)}.ls-gallery--on-dark .ls-gallery__ctl button:hover{background:var(--ls-white);color:var(--ls-midnight)}.ls-gallery--on-dark .ls-gallery__progress{background:var(--line-dark-strong)}.ls-gallery--on-dark .ls-gallery__progress span{background:var(--ls-white)}
@media (max-width:767px){.ls-gallery--mosaic{grid-template-columns:1fr 1fr;gap:12px}.ls-gallery__m--1,.ls-gallery__m--5{grid-column:1/-1}.ls-gallery__m--2,.ls-gallery__m--3,.ls-gallery__m--4{grid-column:auto;padding-top:0}.ls-gallery__m--4{display:none}.ls-gallery__slide{flex-basis:86%}.ls-gallery__ctl button{display:none}.ls-gallery__progress{margin:0}}

/* v2 — softened, glass, icon-led */
.ls-csf--overlay .ls-csf__panel{background:var(--glass-light);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-glass)}
.ls-gallery__ctl button{border-radius:var(--radius-md)}
@media (max-width:767px){.ls-csf--overlay .ls-csf__panel{background:transparent;border:0;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:0}}
/* ===== ds/energy.css ===== */
/* Energy flow */
.ls-flow{margin:0;display:grid;gap:20px;padding:32px;border-radius:var(--radius-lg)}
.ls-flow--on-dark{background:radial-gradient(70% 60% at 50% 0%,var(--glow-volt),transparent 70%),var(--surface-dark);color:var(--text-inverse)}
.ls-flow--light{background:var(--surface-muted);color:var(--text-primary)}
.ls-flow__title{color:var(--text-inverse-tertiary)}.ls-flow--light .ls-flow__title{color:var(--text-tertiary)}
.ls-flow__grid{display:grid;grid-template-columns:minmax(0,1fr) 48px minmax(0,1fr) 48px minmax(0,1fr);grid-template-rows:auto 40px auto 40px auto;align-items:stretch}
.ls-flow__node{display:grid;gap:4px;align-content:start;padding:16px;border-radius:var(--radius-md);background:var(--glass-dark);border:1px solid var(--glass-border-dark);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);min-width:0}
.ls-flow--light .ls-flow__node{background:var(--surface-light);border-color:var(--line-light)}
.ls-flow__node .ls-icon-tile{width:40px;height:40px;margin-bottom:8px}
.ls-flow__node--solar{grid-area:1/3}.ls-flow__line--a{grid-area:2/3}
.ls-flow__node--battery{grid-area:3/1}.ls-flow__line--b{grid-area:3/2}
.ls-flow__node--building{grid-area:3/3;border-color:var(--brand-accent);box-shadow:0 0 0 4px rgba(143,201,98,.12)}
.ls-flow--light .ls-flow__node--building{border-color:var(--brand-primary);box-shadow:0 0 0 4px var(--brand-accent-tint)}
.ls-flow__line--c{grid-area:3/4}.ls-flow__node--ev{grid-area:3/5}
.ls-flow__line--d{grid-area:4/3}.ls-flow__node--grid{grid-area:5/3}
.ls-flow__label{font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-inverse-tertiary)}
.ls-flow--light .ls-flow__label{color:var(--text-tertiary)}
.ls-flow__value{font-family:var(--font-data);font-weight:600;font-size:clamp(22px,1.2rem + .8vw,32px);line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums;white-space:nowrap}
.ls-flow__value small{font-size:.5em;font-weight:500;letter-spacing:0}
.ls-flow__sub{font-size:13px;color:var(--text-inverse-secondary)}.ls-flow--light .ls-flow__sub{color:var(--text-secondary)}
.ls-flow__soc{display:block;height:4px;border-radius:2px;background:rgba(255,255,255,.14);margin-top:6px;overflow:hidden}
.ls-flow__soc i{display:block;height:100%;background:var(--brand-accent);transition:width 600ms var(--ease-out)}
.ls-flow--light .ls-flow__soc{background:var(--neutral-100)}.ls-flow--light .ls-flow__soc i{background:var(--brand-primary)}
.ls-flow__line{position:relative;align-self:center;justify-self:center}
.ls-flow__line--v{width:2px;height:100%}.ls-flow__line--h{height:2px;width:100%}
.ls-flow__line::before{content:"";position:absolute;inset:0;background:rgba(255,255,255,.14)}
.ls-flow--light .ls-flow__line::before{background:var(--line-light-strong)}
.ls-flow__line::after{content:"";position:absolute;inset:0;background-repeat:repeat;animation:ls-flow-x 900ms linear infinite}
.ls-flow__line--h::after{background-image:linear-gradient(90deg,var(--brand-accent) 0 6px,transparent 6px 14px);background-size:14px 2px}
.ls-flow__line--v::after{background-image:linear-gradient(180deg,var(--brand-accent) 0 6px,transparent 6px 14px);background-size:2px 14px;animation-name:ls-flow-y}
.ls-flow--light .ls-flow__line--h::after{background-image:linear-gradient(90deg,var(--brand-primary) 0 6px,transparent 6px 14px)}
.ls-flow--light .ls-flow__line--v::after{background-image:linear-gradient(180deg,var(--brand-primary) 0 6px,transparent 6px 14px)}
.ls-flow__line[data-dir="rev"]::after{animation-direction:reverse}
@keyframes ls-flow-x{from{background-position:0 0}to{background-position:14px 0}}
@keyframes ls-flow-y{from{background-position:0 0}to{background-position:0 14px}}
.ls-flow__caption{display:flex;align-items:center;gap:8px;margin:0;font-size:13px;color:var(--text-inverse-tertiary)}.ls-flow--light .ls-flow__caption{color:var(--text-tertiary)}
.ls-flow__dot,.ls-now__live i{width:8px;height:8px;border-radius:50%;background:var(--brand-accent);box-shadow:0 0 0 0 rgba(143,201,98,.6);animation:ls-live 2s infinite}
@keyframes ls-live{0%{box-shadow:0 0 0 0 rgba(143,201,98,.6)}70%{box-shadow:0 0 0 8px rgba(143,201,98,0)}100%{box-shadow:0 0 0 0 rgba(143,201,98,0)}}
@media (prefers-reduced-motion:reduce){.ls-flow__line::after{animation:none}.ls-flow__dot,.ls-now__live i{animation:none}}
@media (max-width:767px){.ls-flow{padding:16px}.ls-flow__grid{grid-template-columns:minmax(0,1fr) 12px minmax(0,1fr) 12px minmax(0,1fr);grid-template-rows:auto 28px auto 28px auto}.ls-flow__node{padding:10px}.ls-flow__node .ls-icon-tile{width:32px;height:32px;margin-bottom:4px}.ls-flow__label{font-size:10px;letter-spacing:.06em}.ls-flow__value{font-size:18px}.ls-flow__sub{font-size:11px}}
/* Energy day */
.ls-day{display:grid;gap:24px;padding:32px;border-radius:var(--radius-lg)}
.ls-day--on-dark{background:var(--surface-dark-raised);color:var(--text-inverse)}
.ls-day--light{background:var(--surface-muted);color:var(--text-primary)}
.ls-day__top{display:flex;gap:24px;align-items:center;flex-wrap:wrap}
.ls-day__time{display:flex;align-items:center;gap:12px}
.ls-day__sun{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;background:rgba(255,255,255,.08);color:var(--neutral-300);transition:background-color var(--dur-base),color var(--dur-base)}
.ls-day__sun.is-up{background:var(--brand-accent);color:var(--ls-midnight);box-shadow:0 0 24px var(--glow-volt)}
.ls-day--light .ls-day__sun{background:var(--neutral-100);color:var(--neutral-500)}.ls-day--light .ls-day__sun.is-up{background:var(--brand-primary);color:var(--ls-midnight)}
.ls-day__clock{font-family:var(--font-data);font-weight:600;font-size:44px;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ls-day__phase{display:grid;gap:2px;flex:1;min-width:220px}
.ls-day__phase strong{font-weight:500;font-size:18px}
.ls-day__phase span{font-size:14px;color:var(--text-inverse-secondary)}.ls-day--light .ls-day__phase span{color:var(--text-secondary)}
.ls-day__chart{position:relative;padding-bottom:24px}
.ls-day__chart svg{display:block;width:100%;height:160px;overflow:visible}
.ls-day__solar{fill:rgba(143,201,98,.28);stroke:var(--brand-accent);stroke-width:2;vector-effect:non-scaling-stroke}
.ls-day__load{fill:none;stroke:var(--ls-white);stroke-width:2;vector-effect:non-scaling-stroke}
.ls-day__soc{fill:none;stroke:var(--brand-primary);stroke-width:2;stroke-dasharray:6 4;vector-effect:non-scaling-stroke}
.ls-day__cursor{stroke:var(--ls-white);stroke-width:1;vector-effect:non-scaling-stroke;opacity:.6}
.ls-day--light .ls-day__solar{fill:rgba(22,155,83,.16);stroke:var(--brand-primary)}.ls-day--light .ls-day__load,.ls-day--light .ls-day__cursor{stroke:var(--ls-midnight)}.ls-day--light .ls-day__soc{stroke:var(--brand-green-700)}
.ls-day__axis{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:space-between;font-size:12px;color:var(--text-inverse-tertiary);font-variant-numeric:tabular-nums}.ls-day--light .ls-day__axis{color:var(--text-tertiary)}
.ls-day__range{position:absolute;left:0;right:0;top:0;height:160px;width:100%;margin:0;opacity:0;cursor:ew-resize}
.ls-day__range:focus-visible{opacity:.001}
.ls-day__chart:has(.ls-day__range:focus-visible){outline:2px solid var(--focus-ring-inverse);outline-offset:6px;border-radius:4px}
.ls-day__legend{display:flex;gap:20px;flex-wrap:wrap;font-size:13px;color:var(--text-inverse-secondary);margin-top:-8px}.ls-day--light .ls-day__legend{color:var(--text-secondary)}
.ls-day__legend span{display:inline-flex;align-items:center;gap:8px}
.ls-day__legend i{width:16px;height:3px;border-radius:2px}
.ls-day__legend .is-solar{background:var(--brand-accent)}.ls-day__legend .is-load{background:var(--ls-white)}.ls-day__legend .is-soc{background:var(--brand-primary)}
.ls-day--light .ls-day__legend .is-solar{background:var(--brand-primary)}.ls-day--light .ls-day__legend .is-load{background:var(--ls-midnight)}.ls-day--light .ls-day__legend .is-soc{background:var(--brand-green-700)}
.ls-day__reads{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.ls-day__read{display:grid;gap:4px;padding:16px;border-radius:var(--radius-md);background:rgba(255,255,255,.05);border:1px solid var(--line-dark)}
.ls-day--light .ls-day__read{background:var(--surface-light);border-color:var(--line-light)}
.ls-day__rlabel{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-inverse-tertiary)}.ls-day--light .ls-day__rlabel{color:var(--text-tertiary)}
.ls-day__rval{font-family:var(--font-data);font-weight:600;font-size:28px;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ls-day__rval small{font-size:.5em;font-weight:500;letter-spacing:0}
.ls-day__rnote{font-size:13px;color:var(--text-inverse-secondary)}.ls-day--light .ls-day__rnote{color:var(--text-secondary)}
.ls-day__read.is-batt .ls-day__rval{color:var(--brand-accent)}.ls-day--light .ls-day__read.is-batt .ls-day__rval{color:var(--brand-green-700)}
.ls-day__controls{display:flex;gap:16px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.ls-day__play,.ls-day__presets button{display:inline-flex;align-items:center;gap:8px;height:44px;padding:0 16px;border-radius:var(--radius-sm);border:1px solid var(--line-dark-strong);background:transparent;color:inherit;font:500 14px var(--font-body);cursor:pointer;font-variant-numeric:tabular-nums;transition:background-color var(--dur-fast),border-color var(--dur-fast),color var(--dur-fast)}
.ls-day--light .ls-day__play,.ls-day--light .ls-day__presets button{border-color:var(--line-light-strong)}
.ls-day__play:hover,.ls-day__presets button:hover{border-color:var(--brand-accent)}
.ls-day__presets{display:flex;gap:8px;flex-wrap:wrap}
.ls-day__presets button[aria-pressed="true"]{background:var(--brand-accent);border-color:var(--brand-accent);color:var(--ls-midnight)}
.ls-day--light .ls-day__presets button[aria-pressed="true"]{background:var(--ls-midnight);border-color:var(--ls-midnight);color:var(--text-inverse)}
.ls-day__caption{margin:0;font-size:13px;color:var(--text-inverse-tertiary)}.ls-day--light .ls-day__caption{color:var(--text-tertiary)}
@media (max-width:767px){.ls-day{padding:20px}.ls-day__reads{grid-template-columns:1fr 1fr}.ls-day__clock{font-size:36px}.ls-day__chart svg,.ls-day__range{height:120px}}
/* EV dial */
.ls-dial{margin:0;display:grid;gap:20px;justify-items:center;padding:32px;border-radius:var(--radius-lg)}
.ls-dial--on-dark{background:radial-gradient(60% 50% at 50% 30%,var(--glow-volt),transparent 70%),var(--surface-dark);color:var(--text-inverse)}
.ls-dial--light{background:var(--surface-muted);color:var(--text-primary)}
.ls-dial__ring{position:relative;width:min(100%,260px);aspect-ratio:1}
.ls-dial__ring svg{width:100%;height:100%;display:block}
.ls-dial__track{fill:none;stroke:rgba(255,255,255,.1);stroke-width:12}
.ls-dial--light .ls-dial__track{stroke:var(--neutral-100)}
.ls-dial__fill{fill:none;stroke:var(--brand-accent);stroke-width:12;stroke-linecap:round;filter:drop-shadow(0 0 8px rgba(143,201,98,.5))}
.ls-dial--light .ls-dial__fill{stroke:var(--brand-primary);filter:none}
.ls-dial__tick{stroke:rgba(255,255,255,.22);stroke-width:1}.ls-dial--light .ls-dial__tick{stroke:var(--neutral-300)}
.ls-dial__center{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:6px;text-align:center}
.ls-dial__status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--brand-accent)}.ls-dial--light .ls-dial__status{color:var(--text-link)}
.ls-dial__value{font-family:var(--font-data);font-weight:600;font-size:48px;line-height:1;letter-spacing:-.04em;font-variant-numeric:tabular-nums}
.ls-dial__value small{font-size:.38em;font-weight:500;letter-spacing:0}
.ls-dial__pct{font-size:13px;color:var(--text-inverse-tertiary)}.ls-dial--light .ls-dial__pct{color:var(--text-tertiary)}
.ls-dial__facts{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:0;width:100%}
.ls-dial__facts div{display:grid;gap:4px;padding:14px 16px;border-radius:var(--radius-md);background:var(--glass-dark);border:1px solid var(--glass-border-dark)}
.ls-dial--light .ls-dial__facts div{background:var(--surface-light);border-color:var(--line-light)}
.ls-dial__facts dt{font-size:12px;color:var(--text-inverse-tertiary)}.ls-dial--light .ls-dial__facts dt{color:var(--text-tertiary)}
.ls-dial__facts dd{margin:0;font-family:var(--font-data);font-weight:600;font-size:28px;letter-spacing:-.03em;line-height:1}
.ls-dial__caption{font-size:13px;color:var(--text-inverse-tertiary)}.ls-dial--light .ls-dial__caption{color:var(--text-tertiary)}
/* Solar now */
.ls-now{display:grid;grid-template-columns:auto auto minmax(0,1fr);grid-template-areas:"head gauge copy" "note note note";gap:16px 40px;align-items:center;padding:28px 32px;border-radius:var(--radius-lg)}
.ls-now--on-dark{background:radial-gradient(50% 120% at 15% 50%,var(--glow-volt),transparent 70%),var(--surface-dark-raised);color:var(--text-inverse)}
.ls-now--light{background:var(--brand-accent-tint);color:var(--text-primary)}
.ls-now.is-night.ls-now--on-dark{background:var(--surface-dark-raised)}
.ls-now__head{grid-area:head;display:grid;gap:6px}
.ls-now__live{display:inline-flex;align-items:center;gap:10px;font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--brand-accent)}.ls-now--light .ls-now__live{color:var(--text-link)}
.ls-now__time{font-family:var(--font-data);font-weight:600;font-size:44px;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ls-now__gauge{grid-area:gauge;position:relative;width:140px;display:grid;justify-items:center}
.ls-now__gauge svg{width:140px;height:auto;display:block}
.ls-now__track{fill:none;stroke:rgba(255,255,255,.12);stroke-width:8;stroke-linecap:round}.ls-now--light .ls-now__track{stroke:rgba(8,17,22,.1)}
.ls-now__fill{fill:none;stroke:var(--brand-accent);stroke-width:8;stroke-linecap:round;transition:stroke-dashoffset var(--dur-reveal) var(--ease-out)}.ls-now--light .ls-now__fill{stroke:var(--brand-primary)}
.ls-now__gv{position:absolute;top:30px;display:flex;align-items:center;gap:4px;font-family:var(--font-data);font-weight:600;font-size:26px;letter-spacing:-.03em}
.ls-now__gv small{font-size:.55em}.ls-now__gv .ls-icon{color:var(--brand-accent)}.ls-now--light .ls-now__gv .ls-icon{color:var(--brand-green-700)}
.ls-now__cond{font-size:12px;color:var(--text-inverse-tertiary);margin-top:4px}.ls-now--light .ls-now__cond{color:var(--text-secondary)}
.ls-now__copy{grid-area:copy;display:grid;gap:8px;justify-items:start}
.ls-now__big{margin:0;font-family:var(--font-display);font-weight:500;font-size:clamp(20px,1rem + .9vw,28px);line-height:1.2;letter-spacing:-.015em;text-wrap:balance}
.ls-now__big strong{font-weight:600;color:var(--brand-accent)}.ls-now--light .ls-now__big strong{color:var(--brand-green-700)}
.ls-now__sub{margin:0;font-size:15px;color:var(--text-inverse-secondary)}.ls-now--light .ls-now__sub{color:var(--text-secondary)}
.ls-now--on-dark .ls-now__cta{color:var(--text-inverse)}.ls-now--on-dark .ls-now__cta:hover{color:var(--text-link-inverse)}
.ls-now__note{grid-area:note;margin:0;padding-top:12px;border-top:1px solid var(--line-dark);font-size:12px;color:var(--text-inverse-tertiary)}
.ls-now--light .ls-now__note{border-color:rgba(8,17,22,.1);color:var(--text-tertiary)}
@media (max-width:1023px){.ls-now{grid-template-columns:auto 1fr;grid-template-areas:"head gauge" "copy copy" "note note"}.ls-now__gauge{justify-self:end}}
@media (max-width:767px){.ls-now{padding:20px;gap:16px}.ls-now__time{font-size:34px}.ls-now__gauge,.ls-now__gauge svg{width:112px}.ls-now__gv{top:22px;font-size:22px}}

/* ===== ds/leadgen.css ===== */
/* Charge bar */
.ls-chargebar{display:grid;gap:10px}
.ls-chargebar__meta{display:flex;justify-content:space-between;align-items:flex-end}
.ls-chargebar__status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-link)}
.ls-chargebar__pct{font-family:var(--font-data);font-weight:600;font-size:32px;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.ls-chargebar__pct small{font-size:.5em;font-weight:500;margin-left:2px}
.ls-chargebar__battery{display:flex;align-items:center;gap:4px}
.ls-chargebar__body{position:relative;flex:1;height:36px;padding:4px;border:2px solid var(--line-ink);border-radius:8px;overflow:hidden}
.ls-chargebar__fill{position:relative;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--ls-electric-green),var(--ls-verde-volt));transition:width 600ms var(--ease-out);min-width:0;overflow:hidden}
.ls-chargebar__sheen{position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,rgba(255,255,255,.55) 50%,transparent 70%);background-size:200% 100%;animation:ls-sheen 2.2s linear infinite}
.ls-chargebar__cells{position:absolute;inset:4px;display:flex;justify-content:space-evenly;pointer-events:none}
.ls-chargebar__cells i{width:2px;background:var(--surface-light)}
.ls-chargebar__nub{width:6px;height:14px;border-radius:0 3px 3px 0;background:var(--line-ink)}
.ls-chargebar__label{margin:0;font-size:14px;color:var(--text-secondary)}
.ls-chargebar.is-loading .ls-chargebar__fill{transition:none}
.ls-chargebar.is-full .ls-chargebar__body{border-color:var(--brand-primary);box-shadow:0 0 0 4px var(--brand-accent-tint),0 0 32px var(--glow-volt)}
.ls-chargebar.is-full .ls-chargebar__nub{background:var(--brand-primary)}
.ls-chargebar.is-full .ls-chargebar__status{color:var(--brand-green-700)}
.ls-chargebar.is-full .ls-chargebar__fill{animation:ls-full-pulse 1.6s var(--ease-out) 1}
.ls-chargebar--on-dark .ls-chargebar__body{border-color:var(--ls-white)}.ls-chargebar--on-dark .ls-chargebar__nub{background:var(--ls-white)}
.ls-chargebar--on-dark .ls-chargebar__cells i{background:var(--surface-dark)}
.ls-chargebar--on-dark .ls-chargebar__status{color:var(--brand-accent)}.ls-chargebar--on-dark .ls-chargebar__label{color:var(--text-inverse-secondary)}
.ls-chargebar--on-dark.is-full .ls-chargebar__body{border-color:var(--brand-accent);box-shadow:0 0 0 4px rgba(143,201,98,.16),0 0 40px var(--glow-volt)}
.ls-chargebar--on-dark.is-full .ls-chargebar__nub{background:var(--brand-accent)}
.ls-chargebar--on-dark.is-full .ls-chargebar__status{color:var(--brand-accent)}
@keyframes ls-sheen{from{background-position:200% 0}to{background-position:-200% 0}}
@keyframes ls-full-pulse{0%{filter:brightness(1)}30%{filter:brightness(1.35)}100%{filter:brightness(1)}}
@media (prefers-reduced-motion:reduce){.ls-chargebar__sheen{animation:none;display:none}}
/* Charge form */
.ls-chargeform{display:grid;gap:28px;color:var(--text-primary)}
.ls-chargeform--on-dark{color:var(--text-inverse)}.ls-chargeform--on-dark .ls-muted{color:var(--text-inverse-secondary)}
.ls-chargeform__head{display:grid;gap:10px}
.ls-chargeform__step{animation:ls-step-in var(--dur-base) var(--ease-out)}
@keyframes ls-step-in{from{opacity:0;transform:translateX(12px)}}
.ls-chargeform__fields{display:grid;gap:20px}
.ls-chargeform__fields--2{grid-template-columns:1fr 1fr}
.ls-chargeform__wide{grid-column:1/-1}
.ls-chargeform__nav{display:flex;gap:12px;justify-content:space-between}
.ls-chargeform__nav .ls-btn:only-child{margin-left:auto}
.ls-chargeform__done{display:grid;gap:16px;animation:ls-step-in var(--dur-slow) var(--ease-out)}
.ls-chargeform__next{list-style:none;margin:8px 0 0;padding:0;border-top:1px solid var(--line-light)}
.ls-chargeform__next li{display:flex;gap:16px;align-items:center;min-height:52px;border-bottom:1px solid var(--line-light);font-size:16px}
.ls-chargeform__next span{color:var(--text-link);font-size:13px;font-weight:500;font-variant-numeric:tabular-nums}
.ls-chargeform--on-dark .ls-chargeform__next,.ls-chargeform--on-dark .ls-chargeform__next li{border-color:var(--line-dark)}
.ls-chargeform--on-dark .ls-chargeform__next span{color:var(--text-link-inverse)}
@media (max-width:767px){.ls-chargeform__fields--2{grid-template-columns:1fr}.ls-chargeform__nav .ls-btn{flex:1}.ls-chargebar__pct{font-size:26px}.ls-chargebar__body{height:30px}}

/* ===== site/00-layout.css ===== */
/* Site layout helpers that replace the design's repeated inline styles (one definition each). */

/* Vertical stack inside a section container: header → content gap. */
.lsx-stack{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--group-gap)}

/* Image beside copy (media_text, hub sections): two columns from 2×420px, otherwise stacked. */
.lsx-split{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:clamp(48px,7vw,96px);align-items:center}
.lsx-split__media{order:0;min-width:0}
.lsx-split__copy{display:grid;gap:var(--space-4);max-width:520px;order:1;min-width:0}
.lsx-split--media-right .lsx-split__media{order:1}
.lsx-split--media-right .lsx-split__copy{order:0}
.lsx-split__copy > *{margin:0}
.lsx-split__copy .ls-h2{text-wrap:balance}

/* Check list with green ticks. */
.lsx-checklist{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.lsx-checklist li{display:flex;gap:12px;align-items:flex-start}
.lsx-checklist__icon{display:inline-flex;color:var(--brand-green-700);flex:none;margin-top:2px}
.ls-dark .lsx-checklist__icon{color:var(--brand-accent)}

/* Service cards on a muted band sit on white (design page style [data-services]). */
.lsx-services .ls-card--service{background:var(--surface-light)}
.lsx-services a.ls-card--service:hover{background:var(--brand-accent-tint)}

/* Row lists (Accreditations: schemes, policies): ink rule on top, hairline between rows. */
.lsx-rowlist{display:grid;border-top:var(--border-hair) solid var(--line-ink)}
.lsx-rowlist__item{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:var(--space-4) clamp(32px,5vw,80px);align-items:center;padding:40px 0;border-bottom:var(--border-hair) solid var(--line-light)}
.lsx-rowlist__item > *{margin:0}
.lsx-scheme__logo{display:grid;place-items:center;height:160px;background:var(--surface-muted);border-radius:var(--radius-md);padding:var(--space-4)}
.lsx-scheme__img{width:100%;height:100%;max-width:240px;object-fit:contain;mix-blend-mode:multiply}
.lsx-scheme__copy{display:grid;gap:12px;max-width:640px}
.lsx-scheme__copy > *{margin:0}
.lsx-scheme__head{display:grid;gap:6px}
.lsx-scheme__head .ls-h3{line-height:1.1;text-wrap:balance}
.lsx-scheme__ref{font-family:var(--font-data);font-variant-numeric:tabular-nums;font-size:15px;color:var(--brand-green-700)}
.lsx-policy{align-items:start;gap:var(--space-3) clamp(32px,5vw,80px);scroll-margin-top:96px}
.lsx-policy .ls-h3{line-height:1.1;text-wrap:balance}
.lsx-policy__copy{display:grid;gap:var(--space-3);max-width:640px}
.lsx-policy__copy > *{margin:0}
.lsx-policy__links{display:flex;flex-wrap:wrap;gap:12px 32px}

/* Contact tiles. */
.lsx-contact-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:var(--space-5)}
.lsx-contact-tile{display:grid;gap:12px;align-content:start;height:100%;padding:var(--space-5);background:var(--surface-muted);border-radius:var(--radius-md);color:var(--text-primary);text-decoration:none}
.lsx-contact-tile:hover{color:var(--text-primary);background:var(--brand-accent-tint)}
.lsx-contact-tile__label{display:flex;align-items:center;gap:10px;color:var(--brand-green-700)}
.lsx-contact-tile__label .ls-eyebrow{color:var(--text-secondary)}
.lsx-contact-tile .ls-h4{margin:0}

/* Listing header with filter (Projects). */
.lsx-listhead{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-5);align-items:end;justify-content:space-between}
.lsx-listhead .ls-h2{margin:0}
.lsx-filter__list{display:flex;flex-wrap:wrap;gap:var(--space-1);padding:var(--space-1);margin:0;list-style:none;background:var(--surface-muted);border-radius:var(--radius-md)}
.lsx-filter__item{display:inline-flex;align-items:center;height:var(--target-min);padding:0 20px;border-radius:6px;font-weight:var(--fw-medium);font-size:var(--fs-ui);color:var(--text-secondary);text-decoration:none}
.lsx-filter__item:hover{color:var(--text-primary)}
.lsx-filter__item[aria-current="page"]{background:var(--button-primary-bg);color:var(--button-primary-text)}

/* Status note (sample copy flags on case studies and articles). */
.lsx-note{justify-self:start;padding:10px 14px;border-radius:var(--radius-md);background:var(--brand-accent-tint);color:var(--text-primary);font-size:var(--fs-body-sm)}
/* Case study facts. */
.lsx-facts{margin:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:var(--space-4) var(--space-5)}
.lsx-facts__item{display:grid;gap:6px;border-top:var(--border-hair) solid var(--line-ink);padding-top:var(--space-3)}
.lsx-facts__item dt{font-size:var(--fs-body-sm);color:var(--text-secondary)}
.lsx-facts__item dd{margin:0}
/* Article layout (rich text section). */
.lsx-article{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:var(--space-6) clamp(48px,7vw,120px);align-items:start}
/* 404 links. */
.lsx-404-links{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:var(--space-4)}
/* Scroll rows contain their positioned children (e.g. the screen-reader "opens in a new tab" text on review author
   links), so nothing escapes the row and widens the whole page. */
.lsx-reviews__track,.ls-cardgrid--m-swipe,.ls-gallery__track,.ls-cmp,.lsx-prose table{position:relative}

/* ===== site/01-overrides.css ===== */
/* Design QA overrides (design-source site-overrides.css), loaded after the design system, token-bound.
   Button colours and the section rhythm are in tokens.css (Tier 3 / Tier 2). */

/* Selected enquiry tab matches the primary button. */
[role="tablist"] [role="tab"][aria-selected="true"]{background:var(--button-primary-bg);color:var(--button-primary-text)}

/* Mobile swipe card rows. */
@media (max-width:767px){.ls-cardgrid--m-swipe .ls-card{flex:0 0 82%;min-width:0;scroll-snap-align:start}}

/* Closing CTA straight into the footer: the footer drops its top padding. */
.ls-footer.lsx-after-cta{padding-top:0}
.ls-footer{padding-top:0}
.ls-footer__main{padding-block:var(--section-lg)}

/* Hero headlines: open the tight display setting so lines never touch. */
.ls-hero .ls-display{line-height:.9;letter-spacing:-.02em}

/* Service cards: icon tile steps to deep green with a white icon on hover/focus. */
.ls-card--service .ls-icon-tile{transition:background-color var(--dur-base) var(--ease-standard),color var(--dur-base) var(--ease-standard)}
a.ls-card--service:hover .ls-icon-tile,a.ls-card--service:focus-visible .ls-icon-tile{background:var(--brand-green-700);color:var(--text-inverse)}

/* Closing CTA lines up with the container on wide screens. */
.ls-cta--closing{padding-inline:max(var(--page-margin),calc((100% - var(--container-max)) / 2))}
/* Reflow (WCAG 1.4.10, 320px = 400% zoom): long button labels wrap instead of pushing the page sideways. */
@media (max-width:359px){.ls-btn{height:auto;min-height:56px;padding-block:var(--space-2);white-space:normal;text-align:left}.ls-btn__label{white-space:normal}}

/* ===== site/circuit.css ===== */
/* Circuit decoration (components/circuit). Geometry is set by circuit.js; colours and glows are tokens here. */
.lsx-circuit{position:absolute;inset:0;z-index:4;overflow:hidden;pointer-events:none}
.lsx-circuit>div,.lsx-circuit div{position:absolute}
.lsx-circuit__bus{left:0;width:100%;height:1px;background:var(--alpha-volt-40);overflow:visible}
.lsx-circuit__bus-pulse{top:-1px;left:-12%;width:12%;height:3px;background:linear-gradient(to right,transparent,var(--circuit-glow) 80%,var(--ls-white));box-shadow:0 0 12px 2px var(--alpha-volt-70);opacity:0}
.lsx-circuit__track{width:1px;background:var(--circuit-track)}
.lsx-circuit__fill{width:1px;background:var(--circuit-line);box-shadow:0 0 8px var(--alpha-volt-70);overflow:hidden}
.lsx-circuit__spine{left:0;top:-80px;width:1px;height:80px;background:linear-gradient(to bottom,transparent,var(--ls-white));opacity:0}
.lsx-circuit__head{display:none;width:3px;height:56px;background:linear-gradient(to bottom,transparent,var(--circuit-glow) 70%,var(--ls-white));box-shadow:0 0 16px 3px var(--alpha-volt-70)}
.lsx-circuit__branch{height:1px;background:linear-gradient(to right,var(--circuit-line),var(--alpha-green-12));transform:scaleX(0);transform-origin:left center;transition:transform var(--dur-reveal) var(--ease-out)}
.lsx-circuit__branch.is-on{transform:scaleX(1)}
.lsx-circuit__spark{top:-1px;left:0;width:140px;height:3px;margin-left:-140px;opacity:0;background:linear-gradient(to right,transparent,var(--circuit-glow) 75%,var(--ls-white));box-shadow:0 0 14px 2px var(--alpha-volt-70)}
.lsx-circuit__node{width:9px;height:9px;box-sizing:border-box;border:1px solid var(--circuit-line);background:transparent;transition:background var(--dur-base),box-shadow var(--dur-base)}
.lsx-circuit__node.is-on{background:var(--circuit-glow);box-shadow:0 0 12px 2px var(--alpha-volt-70)}
.lsx-circuit--static .lsx-circuit__branch{transition:none}
@media print{.lsx-circuit{display:none}}

/* ===== site/energy.css ===== */
/* Energy widgets: page-level styles from Energy Now.dc.html, the Homepage/service-page <helmet> blocks and
   residential-soft.css. The component CSS itself is ds/energy.css. */

/* Energy Now: the two states share one wrapper; only one is visible. */
.lsx-now [hidden]{display:none!important}
.ls-en-ic{display:inline-flex;flex:none;width:var(--s);height:var(--s)}
.ls-en-ic svg{width:100%!important;height:100%!important}
.lsx-now__ic{--s:18px;color:var(--brand-accent)}
.lsx-now__flow .lsx-now__ic{--s:16px}
.ls-now--light .lsx-now__ic{color:var(--brand-green-700)}
.ls-now__gv svg.ls-icon,.ls-now__gv .ls-icon svg{width:18px!important;height:18px!important}
.ls-now__gauge{padding-bottom:4px}
.lsx-now__flow{display:flex;align-items:center;gap:12px;width:100%;max-width:420px}
.lsx-now__node{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--text-inverse-secondary)}
.ls-now--light .lsx-now__node{color:var(--text-secondary)}
.lsx-now__line{flex:1;height:3px;border-radius:2px;background-image:radial-gradient(circle,var(--brand-accent) 1.5px,transparent 2px);background-size:14px 3px;background-repeat:repeat-x;animation:ls-en-flow 900ms linear infinite,ls-en-glow 2.4s ease-in-out infinite}
@keyframes ls-en-flow{from{background-position:0 0}to{background-position:28px 0}}
@keyframes ls-en-glow{0%,100%{opacity:.55}50%{opacity:1}}
@media (prefers-reduced-motion:reduce){.ls-en-anim{animation:none!important}}

/* Energy Now under the EnergyDay timeline (Homepage): a rule and group gap above it. */
.lsx-energy-now-rule{border-top:1px solid var(--line-dark);padding-top:var(--group-gap)}
.lsx-soft-band .lsx-energy-now-rule{border-top-color:var(--line-light)}

/* EnergyDay: icon swaps the React version did by re-rendering. */
.ls-day__sun .lsx-day__moon-ic,.ls-day__sun.is-up .lsx-day__sun-ic{display:inline-block}
.ls-day__sun .lsx-day__sun-ic,.ls-day__sun.is-up .lsx-day__moon-ic{display:none}
.ls-day__play .lsx-day__pause-ic,.ls-day__play.is-playing .lsx-day__play-ic{display:none}
.ls-day__play.is-playing .lsx-day__pause-ic{display:inline-block}
.ls-day__range:focus-visible{outline:none}

/* ChargeDial (all pages: status icon size) and the homepage's large dial (Homepage.dc.html helmet). */
.ls-dial__status svg,.ls-dial__status .ls-icon{width:14px!important;height:14px!important;flex:none}
.lsx-dial--feature .ls-dial__fill{filter:none}
.lsx-dial--feature .ls-dial__ring{width:min(100%,280px)}
.lsx-dial--feature .ls-dial__center{gap:8px;inset:22%}
.lsx-dial--feature .ls-dial__value{font-size:50px;display:flex;align-items:baseline;gap:4px;justify-content:center}
.lsx-dial--feature .ls-dial__value small{font-size:16px}
.lsx-dial--feature .ls-dial__pct{font-size:14px;color:var(--text-inverse-secondary)}

/* Copy column beside a widget (energy_flow / charge_dial sections). */
.lsx-energy-copy{gap:var(--space-5)}
.lsx-energy-copy > p{text-wrap:pretty}
.lsx-energy-copy--wide{max-width:560px}
.lsx-energy-copy__action{display:flex}

/* Residential tone (residential-soft.css). Token overrides live in tokens.css ([data-tone="home"]). */
[data-tone="home"] .ls-display{font-weight:var(--fw-semibold)}
[data-tone="home"] .ls-h1,[data-tone="home"] .ls-h2{font-weight:var(--fw-medium)}
[data-tone="home"] .ls-btn:not(.ls-btn--tertiary){border-radius:var(--radius-round)}
[data-tone="home"] #hero-form{border-radius:var(--radius-lg)}
[data-tone="home"] .ls-glass--light{background:var(--glass-light-home);box-shadow:var(--shadow-glass-home)}
.lsx-soft-band{background:var(--surface-muted)}
.lsx-soft-band .ls-day{background:var(--surface-light)}
[data-tone="home"] .ls-muted-surface + .lsx-soft-band,
[data-tone="home"] .lsx-soft-band + .ls-muted-surface{padding-top:0}

/* ===== site/footer.css ===== */
/* Site footer additions (design site-links.js + site-overrides.css). Base styles are in ds/navigation.css. */

/* Section rhythm: the footer's own top row carries the padding (site-overrides.css). */
.ls-footer{padding-top:0}
.ls-footer__main{padding-block:var(--section-lg);grid-template-columns:3fr 2fr 2fr 2fr 2fr}
.lsx-footer__logo{height:28px;width:auto}
.ls-footer__contact a{overflow-wrap:anywhere}

/* Socials as icon buttons in the brand column */
.ls-footer__brand .lsx-social{display:flex;justify-self:start;justify-content:flex-start;gap:var(--space-2);margin:-8px 0 0;padding:0;list-style:none;width:auto}
.lsx-social li{margin:0}
.lsx-social a{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line-dark);border-radius:var(--radius-sm);color:var(--text-inverse-secondary);text-decoration:none;background:none;transition:color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out)}
.lsx-social a:hover{color:var(--brand-accent);border-color:var(--brand-accent)}

/* Sister company */
.lsx-sister{display:grid;gap:12px;justify-items:start}
.lsx-sister__label{font-size:12px;font-weight:var(--fw-medium);letter-spacing:.12em;text-transform:uppercase;color:var(--text-inverse-tertiary)}
.lsx-sister a{display:inline-flex;opacity:.85;transition:opacity var(--dur-fast) var(--ease-out)}
.lsx-sister a:hover,.lsx-sister a:focus-visible{opacity:1}
.lsx-sister img{display:block;height:28px;width:auto}

/* Legal bar: cookie settings button styled as a legal link; CODER credit at the end */
.lsx-cookie-settings{padding:0;background:none;border:0;font:inherit;font-size:var(--fs-body-sm);color:var(--text-inverse-secondary);cursor:pointer}
.lsx-cookie-settings:hover{color:var(--text-inverse);text-decoration:underline}
.lsx-credit{margin-left:auto;display:inline-flex;align-items:center;gap:var(--space-2);color:inherit;opacity:.8;transition:opacity var(--dur-fast) var(--ease-out)}
.ls-footer__legal a.lsx-credit{color:inherit;text-decoration:none}
.lsx-credit:hover{opacity:1}
.lsx-credit img{display:block;height:14px;width:auto}
.ls-footer__social + .lsx-credit{margin-left:0}

@media (max-width:1023px){.ls-footer__main{grid-template-columns:repeat(4,1fr)}.ls-footer__brand{grid-column:1/-1}}
@media (max-width:767px){.ls-footer__main{grid-template-columns:1fr 1fr}}

/* ===== site/forms.css ===== */
/* Enquiry forms: progressive enhancement, form switch, hero card (inc/forms.php, charge-form, enquiry-form, form-switch). */

/* Enhancement states. Without JS: one long form, steps UI hidden. With JS (.is-enhanced, set inline before paint):
   only the current step shows. JS manages [hidden]; the classes cover the moment before it runs. */
.lsx-form [hidden],.ls-upload__list[hidden]{display:none!important}
.lsx-form:not(.is-enhanced) .lsx-only-js{display:none!important}
.lsx-form.is-enhanced .lsx-hide-js{display:none!important}
.lsx-form.is-enhanced .lsx-step:not(.is-current){display:none}
.lsx-form:not(.is-enhanced) .ls-chargeform__step{display:grid;gap:var(--space-5)}
.lsx-form:not(.is-enhanced) .ls-chargeform__step,.lsx-form:not(.is-enhanced) .lsx-step{animation:none}
.ls-chargeform__nav [data-ls-next],.ls-chargeform__nav [data-ls-submit],.ls-form__nav [data-ls-next],.ls-form__nav [data-ls-submit]{margin-left:auto}
.lsx-step .ls-field__label[tabindex="-1"]:focus{outline:none}
.lsx-form__general{margin:0}

/* Honeypot: off-screen, never focusable. */
.lsx-hp{position:absolute!important;left:-10000px;top:auto;width:1px;height:1px;overflow:hidden}

/* Consent link. */
.ls-check__label a{color:var(--text-link);text-decoration:underline;text-underline-offset:2px}
.ls-check--on-dark .ls-check__label a{color:var(--text-link-inverse)}

/* Hero form card (design: #hero-form inline style). */
.lsx-formcard{background:var(--surface-light);color:var(--text-primary);border-radius:var(--radius-lg);padding:clamp(24px,3vw,40px);box-shadow:var(--shadow-glass);scroll-margin-top:96px}

/* Commercial / Residential switch (Homepage, Contact). */
.lsx-formswitch__tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin-bottom:28px;background:var(--surface-muted);border-radius:var(--radius-md)}
.lsx-formswitch__tab{display:flex;align-items:center;justify-content:center;height:44px;border:0;border-radius:calc(var(--radius-md) - 2px);font:inherit;font-weight:var(--fw-medium);font-size:15px;color:var(--text-secondary);background:transparent;text-decoration:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}
.lsx-formswitch__tab[aria-selected="true"]{background:var(--brand-primary);color:var(--ls-midnight)}
.lsx-formswitch__tab:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}

/* Every designed page hides the charge bar status icon (page <helmet> style on all 21 form pages). */
.ls-chargebar__status .ls-icon{display:none}
/* Fieldsets default to min-inline-size:min-content, which stops tile groups shrinking at 320px (WCAG 1.4.10 reflow). */
.ls-choice,fieldset.ls-choice{min-inline-size:0;min-width:0}

/* ===== site/header.css ===== */
/* Site header: fixed positioning, logo swap, mega panels (design mega-menu.js), mobile menu and compact CTA
   (design site-links.js). Component base styles are in ds/navigation.css. */

/* The header is fixed so compacting on scroll never moves the page; the slot keeps its height in the flow.
   Over a dark hero the slot is pulled under the header by the hero itself (hero.css), as the design's margin-top:-73px. */
.ls-page{position:relative}
.lsx-header-slot{height:calc(var(--header-h) + 1px)}
.ls-header{position:fixed;top:0;left:0;right:0}
.admin-bar .ls-header{top:var(--wp-admin--admin-bar--height)}
.ls-header:not(.is-compact) .ls-logo{height:30px;width:auto}
.ls-header.is-compact .ls-logo{height:24px;width:auto}
.ls-logo-link{display:inline-flex;flex:0 1 auto;min-width:0}
.ls-logo-link .ls-logo{max-width:100%;object-fit:contain;object-position:left center}
/* Phones: the bar must fit logo + CTA + call/menu button in 350px; the logo scales down (never distorts). */
@media (max-width:767px){.ls-header__bar{gap:var(--space-3)}}
.ls-header .lsx-logo--on-light{display:none}
.ls-header--light .lsx-logo--on-dark{display:none}
.ls-header--light .lsx-logo--on-light{display:block}
.ls-header__toggle .lsx-toggle-close,.ls-header__toggle[aria-expanded="true"] .lsx-toggle-open{display:none}
.ls-header__toggle[aria-expanded="true"] .lsx-toggle-close{display:block}
.ls-header__link svg{transition:transform var(--dur-fast) var(--ease-out)}
.ls-header__link[aria-expanded="true"]::after{transform:scaleX(1)}
.ls-header__link[aria-expanded="true"] svg{transform:rotate(180deg)}

/* Mega panel */
.ls-mega{position:absolute;left:0;right:0;top:100%;z-index:90;background:var(--surface-light);color:var(--text-primary);border-top:1px solid var(--line-light);box-shadow:0 24px 48px var(--alpha-midnight-24);border-radius:0 0 var(--radius-lg) var(--radius-lg);opacity:0;transform:translateY(-6px);pointer-events:none;visibility:hidden;transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-base) var(--ease-out),visibility 0s var(--dur-base)}
.ls-mega.is-open{opacity:1;transform:none;pointer-events:auto;visibility:visible;transition:opacity var(--dur-fast) var(--ease-out),transform var(--dur-base) var(--ease-out)}
.ls-mega__in{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,6fr) minmax(0,3fr);gap:var(--space-6);padding-block:40px var(--space-6);margin-inline:auto}
.ls-mega__intro{display:grid;gap:20px;align-content:start;padding-right:var(--space-4);border-right:1px solid var(--line-light)}
.ls-mega__intro .ls-mega__title{margin:0;font-family:var(--font-display);font-weight:var(--fw-semibold);font-size:28px;line-height:1;letter-spacing:-.02em;color:var(--text-primary)}
.ls-mega__intro p:not(.ls-mega__title){margin:0;font-size:16px;line-height:1.5;color:var(--text-secondary)}
.ls-mega__all{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--brand-green-700);font-weight:var(--fw-medium);text-decoration:none;font-size:var(--fs-ui)}
.ls-mega__all:hover{color:var(--text-primary)}
.ls-mega__all svg,.ls-mega__link svg{transition:transform var(--dur-fast) var(--ease-out)}
.ls-mega__all:hover svg,.ls-mega__link:hover svg{transform:translateX(4px)}
.ls-mega__links{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);align-content:start}
.ls-mega__link{display:grid;grid-template-columns:1fr auto;gap:4px var(--space-3);padding:20px;border-radius:var(--radius-md);color:inherit;text-decoration:none;transition:background-color var(--dur-fast) var(--ease-out)}
.ls-mega__link:hover,.ls-mega__link:focus-visible,.ls-mega__link.is-on{background:var(--surface-muted);color:inherit}
.ls-mega__link b{font-weight:var(--fw-medium);font-size:17px}
.ls-mega__link span{grid-column:1;font-size:var(--fs-body-sm);line-height:1.45;color:var(--text-secondary)}
.ls-mega__link svg{grid-row:1;grid-column:2;align-self:center;color:var(--brand-green-700)}
.ls-mega__feature{position:relative;display:block;border-radius:var(--radius-md);overflow:hidden;min-height:220px;text-decoration:none}
.ls-mega__feature,.ls-mega__feature:hover,.ls-mega__feature:focus-visible{color:var(--text-inverse)}
.ls-mega__feature img{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;transition:transform var(--dur-reveal) var(--ease-out),opacity var(--dur-base) var(--ease-out)}
.ls-mega__feature:hover img{transform:scale(1.03)}
.ls-mega__feature::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,transparent 40%,var(--alpha-midnight-86) 100%);transition:opacity var(--dur-base) var(--ease-out)}
.ls-mega__feature::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,var(--alpha-midnight-08) 0%,var(--alpha-midnight-86) 100%);opacity:0;transition:opacity var(--dur-base) var(--ease-out)}
.ls-mega__feature:hover::before,.ls-mega__feature:focus-visible::before{opacity:1}
.ls-mega__feature span{position:absolute;z-index:2;left:20px;right:20px;bottom:18px;display:flex;align-items:center;justify-content:space-between;font-weight:var(--fw-medium);font-size:17px}
.ls-mega__feature span svg{flex:none;box-sizing:content-box;padding:var(--space-2);border-radius:var(--radius-round);background:var(--alpha-white-16);transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}
.ls-mega__feature:hover span svg,.ls-mega__feature:focus-visible span svg{background:var(--brand-accent);color:var(--text-primary);transform:translateX(4px)}
.ls-mega__feature:hover span,.ls-mega__feature:focus-visible span{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
.ls-mega__feature:focus-visible{outline:2px solid var(--brand-accent);outline-offset:3px}
.ls-header.has-mega{-webkit-backdrop-filter:none;backdrop-filter:none}
.ls-header--transparent.has-mega,.ls-header--dark.has-mega{background:var(--surface-dark)}
.ls-header--light.has-mega{background:var(--surface-light)}
@media (max-width:1023px){.ls-mega{display:none}}
@media (prefers-reduced-motion:reduce){.ls-mega,.ls-mega *{transition:none}}

/* Mobile menu. The header's glass backdrop-filter would trap the fixed menu inside the bar: drop it while open. */
.ls-header.is-menu-open{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--surface-dark);color:var(--text-inverse);border-color:var(--line-dark)}
.ls-header.is-menu-open .lsx-logo--on-dark{display:block}
.ls-header.is-menu-open .lsx-logo--on-light{display:none}
.ls-header .ls-mnav{position:fixed;inset:var(--header-h) 0 0 0;z-index:100;overflow-y:auto}
.ls-header.is-compact .ls-mnav{top:var(--header-h-compact)}
.admin-bar .ls-header .ls-mnav{top:calc(var(--header-h) + var(--wp-admin--admin-bar--height))}
.admin-bar .ls-header.is-compact .ls-mnav{top:calc(var(--header-h-compact) + var(--wp-admin--admin-bar--height))}
.ls-mnav[hidden]{display:none}
.ls-mnav__link[aria-expanded="true"]{color:var(--text-link-inverse)}
.ls-mnav__link .lsx-mnav-minus,.ls-mnav__link[aria-expanded="true"] .lsx-mnav-plus{display:none}
.ls-mnav__link[aria-expanded="true"] .lsx-mnav-minus{display:block}
.ls-mnav__sub[hidden]{display:none}
html.lsx-menu-open{overflow:hidden}
@media (min-width:1024px){.ls-header .ls-mnav{display:none}}

/* Compact mobile CTA after scrolling past the hero: phones only, never beside the full header CTA (BD-16). */
.lsx-mcta{display:none;height:40px;padding:0 14px;font-size:var(--fs-body-sm);white-space:nowrap}
@media (max-width:767px){body.lsx-scrolled .ls-header:not(.ls-header--campaign):not(.is-menu-open) .lsx-mcta{display:inline-flex;align-items:center}}

/* ===== site/hero.css ===== */
/* Page heroes (template-parts/components/hero.php): the design's inline hero styles as classes. */
.lsx-hero{position:relative;overflow:hidden;display:flex;flex-direction:column;background:var(--surface-dark);margin-top:calc(-1 * (var(--header-h) + 1px))}
.lsx-hero--h-full{min-height:100vh}
.lsx-hero--h-tall{min-height:72vh}
.lsx-hero--h-short{min-height:56vh}
.lsx-hero__media{position:absolute;inset:0;z-index:0}
.lsx-hero__media .ls-video,.lsx-hero__media .ls-img,.lsx-hero__media .ls-img__box{height:100%;margin:0}
.lsx-hero__media .ls-img__box{border-radius:0;background:var(--surface-dark)}
.lsx-hero__media .ls-img__box img,.lsx-hero__media .ls-img__box video{width:100%;height:100%;object-fit:cover}
.lsx-hero__media .ls-video__ctl--corner{z-index:3;bottom:var(--space-4);right:var(--space-4)}
.lsx-hero__scrim{position:absolute;inset:0;z-index:1;pointer-events:none;background:var(--hero-scrim)}
.lsx-hero__scrim--hub{background:var(--hero-scrim-hub)}
.lsx-hero__scrim--home{background:var(--hero-scrim-home)}
.lsx-hero__grid{position:relative;z-index:2;flex:1;width:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr));gap:clamp(40px,6vw,96px);align-items:center;padding-block:calc(var(--header-h) + 1px + var(--space-7)) var(--space-8)}
.lsx-hero--align-end .lsx-hero__grid{align-items:end}
.lsx-hero__copy{display:grid;gap:28px;align-content:center;max-width:620px;min-width:0;container-type:inline-size}

/* Breadcrumb */
.lsx-hero__crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-2);font-size:var(--fs-body-sm);color:var(--text-inverse-secondary)}
.lsx-hero__crumbs li{display:flex;gap:var(--space-2)}
.lsx-hero .lsx-hero__crumbs a{color:inherit}
.lsx-hero .lsx-hero__crumbs a:hover{color:var(--text-inverse)}
.lsx-hero__crumbs [aria-current]{color:var(--text-inverse)}

/* Title (site-overrides: line-height .9, tracking -.02em on every page hero) */
.lsx-hero .lsx-hero__title{margin:0;max-width:13ch;font-size:clamp(44px,14.5cqi,112px);hyphens:manual;line-height:.9;padding-block:.04em;letter-spacing:-.02em;text-wrap:balance}
.lsx-hero--ppc .lsx-hero__title{max-width:14ch;font-size:clamp(40px,12cqi,96px)}
.lsx-hero__meta{margin:0;font-size:var(--fs-body-sm);color:var(--text-inverse-secondary)}
.lsx-hero__body{margin:0;color:var(--text-inverse-secondary);text-wrap:pretty}
.lsx-hero__bullets{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.lsx-hero__bullets li{display:flex;gap:12px;align-items:flex-start;color:var(--text-inverse)}
.lsx-hero__bullet-icon{display:inline-flex;flex:none;margin-top:3px;color:var(--brand-accent)}
.lsx-hero__jumps{display:flex;flex-wrap:wrap;gap:var(--space-4)}

/* Right column panel (form) */
.lsx-hero__aside{background:var(--surface-light);color:var(--text-primary);border-radius:var(--radius-lg);padding:clamp(24px,3vw,40px);box-shadow:var(--shadow-glass);scroll-margin-top:96px;min-width:0}
.lsx-hero__aside .ls-muted{color:var(--text-secondary)}
.lsx-hero__aside:focus{outline:none}

/* Google review badge (component review-badge) */
.lsx-rbadge{justify-self:start;position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:12px;padding:10px var(--space-3);border-radius:var(--radius-md);color:var(--text-inverse);text-decoration:none;animation:ls-badge-in var(--dur-slow) var(--ease-out) 300ms both}
a.lsx-rbadge:hover{color:var(--text-inverse);border-color:var(--alpha-white-60)}
.lsx-rbadge__g{flex:none}
.lsx-g-red{fill:var(--google-red)}.lsx-g-blue{fill:var(--google-blue)}.lsx-g-yellow{fill:var(--google-yellow)}.lsx-g-green{fill:var(--google-green)}
.lsx-rbadge__score{font-family:var(--font-data);font-weight:var(--fw-semibold);font-size:20px;line-height:1}
.lsx-rbadge__stars{display:inline-flex;gap:2px;color:var(--brand-accent);font-size:15px;line-height:1}
.lsx-rbadge__stars .ls-rstar{display:inline-block;animation:ls-star-pop 520ms var(--ease-out) 600ms both}
.lsx-rbadge__stars .ls-rstar:nth-child(2){animation-delay:690ms}
.lsx-rbadge__stars .ls-rstar:nth-child(3){animation-delay:780ms}
.lsx-rbadge__stars .ls-rstar:nth-child(4){animation-delay:870ms}
.lsx-rbadge__stars .ls-rstar:nth-child(5){animation-delay:960ms}
.lsx-rbadge__count{font-size:var(--fs-body-sm);color:var(--text-inverse-secondary)}
.lsx-rbadge .ls-rshine{position:absolute;top:0;bottom:0;left:-40%;width:40%;pointer-events:none;background:linear-gradient(100deg,transparent,var(--alpha-white-16),transparent);animation:ls-shine 1100ms var(--ease-out) 1250ms both}
.lsx-rbadge--light{color:var(--text-primary)}
.lsx-rbadge--light .lsx-rbadge__count{color:var(--text-secondary)}
@keyframes ls-badge-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes ls-star-pop{0%{opacity:0;transform:scale(.4)}70%{opacity:1;transform:scale(1.2)}100%{opacity:1;transform:scale(1)}}
@keyframes ls-shine{from{transform:translateX(0)}to{transform:translateX(360%)}}
@media (prefers-reduced-motion:reduce){.lsx-rbadge,.lsx-rbadge .ls-rstar,.lsx-rbadge .ls-rshine{animation:none}.lsx-rbadge .ls-rshine{display:none}}

/* Video frame controls (background): play/pause icon swap */
.ls-video__ctl .lsx-video-pause,.ls-video.is-playing .ls-video__ctl .lsx-video-play{display:none}
.ls-video.is-playing .ls-video__ctl .lsx-video-pause{display:block}
.ls-video__ctl[hidden]{display:none}
/* Residential pages (design residential-soft.css): softer, smaller display heading. */
[data-tone="home"] .lsx-hero .lsx-hero__title{font-size:clamp(40px,11cqi,84px);line-height:1.02;letter-spacing:-.02em}

/* ===== site/prose.css ===== */
/* Editorial body text (.lsx-prose): legal pages (Privacy, Cookies, Terms, Terms of Business) and articles. Ported from
   the legal design pages' inline styles: 240px sticky contents beside a 720px column from 1000px. */

/* Legal layout */
.lsx-legal{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--space-6) clamp(48px,7vw,120px);align-items:start}
@media (min-width:1000px){.lsx-legal{grid-template-columns:240px minmax(0,720px)}.lsx-legal__aside{position:sticky;top:104px}}
.lsx-legal__aside{display:grid;gap:var(--space-3);align-self:start}
.lsx-legal__updated{font-size:var(--fs-body-sm);color:var(--text-secondary)}
.lsx-legal__toc{display:grid;gap:10px;border-top:1px solid var(--line-ink);padding-top:var(--space-3)}
.lsx-legal__toc--long{max-height:calc(100vh - 200px);overflow-y:auto}
.lsx-legal__toc a{color:var(--text-primary);text-decoration:none;font-size:15px}
.lsx-legal__toc a:hover{color:var(--text-link);text-decoration:underline}

/* Column */
.lsx-prose{display:grid;gap:var(--space-6);max-width:720px;min-width:0}
.lsx-prose > *,.lsx-prose__section > *{margin:0}
.lsx-prose__section{display:grid;gap:var(--space-3);scroll-margin-top:104px}
.lsx-prose h2{font-family:var(--font-display);font-weight:var(--fw-medium);font-size:var(--fs-h3);line-height:1.1;letter-spacing:var(--ls-h3);text-wrap:balance}
.lsx-prose h3{font-family:var(--font-body);font-weight:var(--fw-medium);font-size:var(--fs-h4);line-height:var(--lh-h4);letter-spacing:var(--ls-h4);margin:var(--space-2) 0 0}
.lsx-prose p,.lsx-prose li{font-size:var(--fs-body);line-height:var(--lh-body);max-width:var(--measure-body);text-wrap:pretty}
.lsx-prose ul,.lsx-prose ol{padding-left:20px;display:grid;gap:var(--space-2)}
.lsx-prose a{color:var(--text-link)}
.lsx-prose a:hover{color:var(--text-primary)}
.lsx-prose strong{font-weight:var(--fw-semibold)}
/* Numbered clause: number in its own 48px column. */
.lsx-prose__clause{display:grid;grid-template-columns:48px minmax(0,1fr);gap:var(--space-2)}
.lsx-prose__num{color:var(--text-secondary);font-variant-numeric:tabular-nums}
/* Links above the text ("View as PDF"). */
.lsx-prose__links{display:flex;flex-wrap:wrap;gap:12px var(--space-5)}
.lsx-prose__links a{display:inline-flex;align-items:center;gap:var(--space-2);color:var(--brand-green-700);font-weight:var(--fw-medium)}
/* Tables (none designed; kept plain and readable, scroll on small screens). */
.lsx-prose table{width:100%;border-collapse:collapse;font-size:var(--fs-body-sm);line-height:var(--lh-body-sm);display:block;overflow-x:auto}
.lsx-prose th,.lsx-prose td{padding:12px var(--space-3) 12px 0;border-bottom:1px solid var(--line-light-strong);text-align:left;vertical-align:top}
.lsx-prose thead th{border-bottom-color:var(--line-ink);font-weight:var(--fw-medium)}
.lsx-prose blockquote{border-left:2px solid var(--brand-primary);padding-left:var(--space-4)}

/* Article style (rich text section). */
.lsx-article{display:grid}
.lsx-prose--article{gap:20px}
.lsx-prose--article p,.lsx-prose--article li{font-size:var(--fs-body-lg);line-height:var(--lh-body-lg)}
.lsx-prose--article h2{margin-top:var(--space-4)}
.lsx-prose--article h2[id]{scroll-margin-top:104px}
/* Numbered clauses: hanging number column (design legal pages: 48px | text, 8px gap). */
.lsx-prose .lsx-clause{display:grid;grid-template-columns:var(--space-6) minmax(0,1fr);gap:var(--space-2)}
.lsx-clause__no{color:var(--text-secondary);font-variant-numeric:tabular-nums}

/* ===== site/reviews.css ===== */
/* Google reviews (Google Reviews.dc.html), the hero rating badge and the accreditation carousel
   (Accreditation Carousel.dc.html): the design's inline styles as classes. */

/* Google "G" mark: Google brand colours are required for attribution. */
.lsx-g{flex:none}
.lsx-g__r{fill:var(--google-red)}.lsx-g__b{fill:var(--google-blue)}.lsx-g__y{fill:var(--google-yellow)}.lsx-g__g{fill:var(--google-green)}


/* Reviews */
.lsx-reviews{display:grid;gap:40px;min-width:0}
.lsx-reviews__head{display:flex;flex-wrap:wrap;gap:24px 48px;align-items:end;justify-content:space-between}
.lsx-reviews__intro{display:grid;gap:16px}
.lsx-reviews__title{margin:0;line-height:1.05;text-wrap:balance}
.lsx-reviews__summary{display:flex;flex-wrap:wrap;align-items:center;gap:12px 16px}
.lsx-reviews__rating{font-family:var(--font-data);font-weight:var(--fw-semibold);font-size:40px;line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.lsx-reviews__stars{display:flex;gap:2px;color:var(--review-star);font-size:22px;line-height:1}
.lsx-reviews__count{text-decoration:none}
.lsx-reviews__count:hover{color:var(--text-primary);text-decoration:underline;text-underline-offset:4px}
.lsx-reviews__nav{display:flex;align-items:center;gap:12px}
.lsx-reviews__track{display:grid;grid-auto-flow:column;grid-auto-columns:min(100%,400px);align-items:stretch;gap:24px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding-bottom:4px}
.lsx-reviews__track::-webkit-scrollbar{display:none}
.lsx-review{scroll-snap-align:start;display:flex;flex-direction:column;gap:20px;padding:32px;background:var(--surface-muted);border-radius:var(--radius-md)}
.lsx-review__who{display:flex;align-items:center;gap:14px}
.lsx-review__avatar{flex:none;width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--ls-midnight);color:var(--ls-white);font-weight:var(--fw-semibold);font-size:17px;overflow:hidden}
.lsx-review__meta{display:grid;gap:2px;min-width:0}
.lsx-review__name{margin:0;font-size:17px;color:inherit;text-decoration:none}
a.lsx-review__name:hover{text-decoration:underline;text-underline-offset:4px}
.lsx-review__when{font-size:13px;color:var(--text-secondary)}
.lsx-review__rate{display:flex;align-items:center;justify-content:space-between;gap:12px}
.lsx-review__stars{color:var(--review-star);font-size:18px;letter-spacing:2px;line-height:1}
.lsx-review__text{margin:0;white-space:pre-line;text-wrap:pretty}
.lsx-review__text [hidden]{display:none}
.lsx-review__toggle{align-self:flex-start;padding:0;border:0;background:none;font:inherit;font-weight:var(--fw-medium);color:var(--brand-green-700);cursor:pointer;text-decoration:underline;text-underline-offset:4px;min-height:24px}
.lsx-review__toggle:hover{color:var(--text-primary)}
.lsx-review__toggle:focus-visible{outline:var(--border-focus) solid var(--focus-ring);outline-offset:2px}

/* Hero rating badge (Homepage.dc.html) */
.lsx-rbadge{justify-self:start;position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:12px;padding:10px 16px;border-radius:var(--radius-md);color:var(--text-inverse);text-decoration:none;animation:ls-badge-in 560ms var(--ease-out) 300ms both}
.lsx-rbadge:hover{color:var(--text-inverse)}
.lsx-rbadge__rating{font-family:var(--font-data);font-weight:var(--fw-semibold);font-size:20px;line-height:1}
.lsx-rbadge__stars{display:inline-flex;gap:2px;color:var(--brand-accent);font-size:15px;line-height:1}
.lsx-rbadge__stars .ls-rstar{display:inline-block;animation:ls-star-pop 520ms var(--ease-out) both}
.lsx-rbadge__stars .ls-rstar:nth-child(1){animation-delay:600ms}.lsx-rbadge__stars .ls-rstar:nth-child(2){animation-delay:690ms}.lsx-rbadge__stars .ls-rstar:nth-child(3){animation-delay:780ms}.lsx-rbadge__stars .ls-rstar:nth-child(4){animation-delay:870ms}.lsx-rbadge__stars .ls-rstar:nth-child(5){animation-delay:960ms}
.lsx-rbadge__count{font-size:14px;color:var(--text-inverse-secondary)}
.lsx-rbadge .ls-rshine{position:absolute;top:0;bottom:0;left:-40%;width:40%;pointer-events:none;background:linear-gradient(100deg,transparent,var(--alpha-white-16),transparent);animation:ls-shine 1100ms var(--ease-out) 1250ms both}
@keyframes ls-badge-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes ls-star-pop{0%{opacity:0;transform:scale(.4)}70%{opacity:1;transform:scale(1.2)}100%{opacity:1;transform:scale(1)}}
@keyframes ls-shine{from{transform:translateX(0)}to{transform:translateX(360%)}}
@media (prefers-reduced-motion:reduce){.lsx-rbadge,.lsx-rbadge .ls-rstar{animation:none}.lsx-rbadge .ls-rshine{display:none}}

/* Accreditation carousel */
.lsx-acc{display:grid;gap:32px;min-width:0}
.lsx-acc__head{display:flex;flex-wrap:wrap;gap:12px 32px;align-items:baseline;justify-content:space-between}
.lsx-acc__title{margin:0}
.ls-acc-merged .lsx-acc__title{display:none}
.lsx-acc__viewport{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,var(--ls-midnight) 6%,var(--ls-midnight) 94%,transparent);mask-image:linear-gradient(90deg,transparent,var(--ls-midnight) 6%,var(--ls-midnight) 94%,transparent)}
.lsx-acc__track{display:flex;gap:16px;width:max-content;animation:ls-acc-scroll 40s linear infinite}
.lsx-acc__viewport:hover .lsx-acc__track,.lsx-acc__viewport:focus-within .lsx-acc__track{animation-play-state:paused}
@keyframes ls-acc-scroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.lsx-acc__item{position:relative;flex:none;width:220px;display:grid;grid-template-rows:96px auto;gap:16px;padding:24px;background:var(--surface-light);border-radius:var(--radius-md)}
.lsx-acc__logo{display:grid;place-items:center;min-width:0}
.lsx-acc__img{display:block;width:100%;height:88px;object-fit:contain}
.lsx-acc__mark{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:40px;letter-spacing:-.03em;line-height:1;color:var(--ls-midnight)}
.lsx-acc__link{position:absolute;inset:0;z-index:1;border-radius:inherit}
.lsx-acc__link:focus-visible{outline:var(--border-focus) solid var(--focus-ring);outline-offset:2px}
.lsx-acc__text{display:grid;gap:2px;text-align:center;border-top:1px solid var(--neutral-100);padding-top:14px}
.lsx-acc__name{font-weight:var(--fw-medium);font-size:15px;color:var(--text-primary)}
.lsx-acc__detail{font-size:13px;color:var(--text-secondary)}
@media (prefers-reduced-motion:reduce){.lsx-acc__track{animation:none;flex-wrap:wrap;width:auto}.lsx-acc__item.ls-acc-dup{display:none}}

/* ===== site/sections.css ===== */
/* Content sections (feature_list, process, trust_band, faq, cta_block, stat_image, related_project, gallery, …):
   the design pages' repeated inline styles and the site-overrides.css rules for these components, as classes. */

/* Two photographs under a feature list (About "How we work"). */
.lsx-photo-pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:var(--grid-gutter)}

/* Heading row with a text link on the right ("Related project", "More projects"). */
.lsx-headrow{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:var(--space-3) var(--space-5)}
.lsx-headrow .ls-h2{margin:0;text-wrap:balance}

/* Photo band (trust band): photograph fills the section, light glass panel on top. */
.lsx-band{position:relative;overflow:hidden}
.lsx-band__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lsx-band__in{position:relative}
.lsx-band__panel{padding:clamp(32px,5vw,64px);display:grid;gap:var(--group-gap)}
/* Accreditation logos merged into the panel: the panel's section header replaces the carousel heading. */
.ls-acc-merged{min-width:0}
.ls-acc-merged h2{display:none}

/* FAQ: stacked header beside the accordion, two columns from 2 × 360px. */
.lsx-faq{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));gap:40px clamp(48px,7vw,120px);align-items:start}

/* Accordion icon: plus when closed, minus when open (both rendered; the design swaps one icon). */
.ls-acc__item:not(.is-open) .lsx-acc-minus,.ls-acc__item.is-open .lsx-acc-plus{display:none}

/* Figures beside a photo (homepage): two stats per row so values never collide. */
.lsx-trust{min-width:0}
.lsx-trust .ls-statgroup--row{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:40px}
@media (max-width:767px){.lsx-trust .ls-statgroup--row{grid-template-columns:1fr}}
.lsx-stat-image--media-left .lsx-split__media{order:-1}

/* Closing CTA lines up with the content column on screens wider than the container (site-overrides 5 Nov 2026). */
.ls-cta--closing{padding-inline:max(var(--page-margin),calc((100% - var(--container-max)) / 2))}

/* Spec tables: space between a value and its unit ("TBC kWh"). */
.ls-spec__unit{margin-left:.25em}

/* Section rhythm (site-overrides 4 Nov 2026): a section on the same light or muted surface as the one before drops
   its top padding, so content blocks sit one section-space apart. Photo bands and dark / tinted bands keep theirs. */
:is(.ls-section,.ls-section--md):not(.ls-dark):not(.ls-muted-surface):not(.lsx-soft-band):not(.lsx-band)
  + :is(.ls-section,.ls-section--md):not(.ls-dark):not(.ls-muted-surface):not(.lsx-soft-band):not(.lsx-band),
:is(.ls-section,.ls-section--md).ls-muted-surface + :is(.ls-section,.ls-section--md).ls-muted-surface{padding-top:0}
/* Homepage closing CTA stacks (design Homepage page style): copy and actions full width, actions capped at the text column. */
.home .ls-cta--closing{row-gap:calc(var(--space-5) + var(--space-2))}
.home .ls-cta--closing .ls-cta__copy,.home .ls-cta--closing .ls-cta__side{grid-column:1/-1}
.home .ls-cta--closing .ls-cta__title{max-width:none;text-wrap:balance}
.home .ls-cta--closing .ls-cta__side{max-width:var(--container-text)}

/* ===== site/slideshow.css ===== */
/* Homepage hero slideshow (Homepage.dc.html hero): the design's inline styles as classes, plus the slide controls the
   design computed but never drew (Pause/Play + slide buttons, design clarification BD-08). */

.lsx-hero-slides{position:relative;overflow:hidden;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;background:var(--surface-dark)}
.lsx-hero-slides--under-header{margin-top:calc(-1 * var(--header-h))}
.lsx-hero-slides__bg{position:absolute;inset:0;z-index:0}
.lsx-hero-slides__img{position:absolute;inset:0;opacity:0;transform:scale(1.06);transition:opacity var(--dur-reveal) var(--ease-out),transform 7600ms var(--ease-out)}
.lsx-hero-slides__img.is-active{opacity:1;transform:scale(1)}
.lsx-hero-slides__img img,.lsx-hero-slides__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lsx-hero-slides__video{z-index:1}
.lsx-hero-slides__scrim{position:absolute;inset:0;z-index:1;pointer-events:none;background:var(--hero-scrim)}
.lsx-hero-slides__inner{position:relative;z-index:2;flex:1;box-sizing:border-box;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr));gap:clamp(40px,6vw,96px);align-items:center;padding-block:calc(var(--header-h) + 64px) 80px}
.lsx-hero-slides:not(.lsx-hero-slides--under-header) .lsx-hero-slides__inner{padding-block:64px 80px}
.lsx-hero-slides__copy{display:grid;gap:28px;align-content:center;max-width:620px;min-width:0;container-type:inline-size}
.lsx-hero-slides__stack{display:grid}
.lsx-hero-slides__slide{grid-area:1/1;display:grid;gap:28px;align-content:center;opacity:0;transform:translateY(12px);visibility:hidden;transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out),visibility 0s linear var(--dur-slow)}
.lsx-hero-slides__slide.is-active{opacity:1;transform:none;visibility:visible;transition-delay:0s}
.lsx-hero-slides__title{margin:0;max-width:13ch;font-size:clamp(44px,13.5cqi,104px);hyphens:manual;line-height:.9;padding-block:.06em;letter-spacing:-.02em;text-wrap:balance}
.lsx-hero-slides__body{margin:0;color:var(--text-inverse-secondary);text-wrap:pretty}

/* Controls: Pause/Play + one bar per slide (progress fills over the interval) + the current slide's name. */
.lsx-hero-slides__controls{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.lsx-hero-slides__pause{display:inline-grid;place-items:center;width:var(--target-min);height:var(--target-min);padding:0;border:1px solid var(--glass-border-dark);border-radius:50%;background:var(--glass-dark);-webkit-backdrop-filter:var(--glass-blur);backdrop-filter:var(--glass-blur);color:var(--text-inverse);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-standard)}
.lsx-hero-slides__pause:hover{border-color:var(--brand-accent)}
.lsx-hero-slides__pause .lsx-hero-slides__ic-play,.lsx-hero-slides__pause.is-paused .lsx-hero-slides__ic-pause{display:none}
.lsx-hero-slides__pause.is-paused .lsx-hero-slides__ic-play{display:block}
.lsx-hero-slides__tabs{display:flex;gap:4px}
.lsx-hero-slides__tab{display:grid;align-items:center;width:44px;height:var(--target-min);padding:0;border:0;background:none;cursor:pointer}
.lsx-hero-slides__bar{display:block;height:3px;border-radius:2px;background:var(--alpha-white-16);overflow:hidden}
.lsx-hero-slides__bar i{display:block;height:100%;width:0;background:var(--brand-accent)}
.lsx-hero-slides__tab[aria-current="true"] .lsx-hero-slides__bar{background:var(--glass-border-light)}
.lsx-hero-slides__tab:hover .lsx-hero-slides__bar{background:var(--glass-border-light)}
.lsx-hero-slides__pause:focus-visible,.lsx-hero-slides__tab:focus-visible{outline:var(--border-focus) solid var(--focus-ring-inverse);outline-offset:2px;border-radius:var(--radius-sm)}
.lsx-hero-slides__pause:focus-visible{border-radius:50%}
.lsx-hero-slides__tag{font-size:var(--fs-caption);font-weight:var(--fw-medium);letter-spacing:.12em;text-transform:uppercase;color:var(--text-inverse-secondary)}

/* Enquiry panel slot (the form itself is the lead-gen component). */
.lsx-hero-slides__form{background:var(--surface-light);color:var(--text-primary);border-radius:var(--radius-lg);padding:clamp(24px,3vw,40px);box-shadow:var(--shadow-glass);scroll-margin-top:96px;min-width:0}

@media (prefers-reduced-motion:reduce){.lsx-hero-slides__img,.lsx-hero-slides__slide{transition:none}.lsx-hero-slides__img{transform:none}}
/* The slideshow form wrapper is the white card (design): the form switch inside it is not a second card, and muted text uses the light-surface colour. */
.lsx-hero-slides__form .lsx-formcard,.lsx-hero__aside .lsx-formcard{background:none;border-radius:0;padding:0;box-shadow:none}
.lsx-hero-slides__form .ls-muted{color:var(--text-secondary)}
