/**
 * Adapses Smart Widgets — Combined Production Stylesheet
 * Version 1.1.0
 *
 * Contains the shared widget shell first, followed by the five scenario-specific styles.
 * Designed for WordPress / Flatsome.
 */

/* =========================================================
   SHARED CORE v1.1
   ========================================================= */
/**
 * Adapses Smart Widget Shared Styles
 * Version 1.1.0
 *
 * Load this file BEFORE each scenario-specific widget CSS file.
 * Existing widget HTML class names are preserved; no HTML changes are required.
 */

/* =========================================================
   Shared design tokens + per-widget sizing variables
   ========================================================= */
.sbt3,.skc,.sca,.sha,.sbw2{
  --sw-navy:#0d1f3c;
  --sw-blue:#2166d1;
  --sw-soft:#edf5ff;
  --sw-border:#d9e5f3;
  --sw-text:#455a73;
  --sw-success:#168e56;
  --sw-warning:#b96800;
  --sw-danger:#c82d26;
  width:min(100%,1080px);
  margin:0 auto;
  font-family:Inter,Arial,sans-serif;
  color:var(--sw-navy);
  background:radial-gradient(circle at 50% 0%,rgba(65,143,228,.08),transparent 34%),linear-gradient(180deg,#fbfdff 0%,#f4f8fc 100%);
  border:1px solid #e0eaf5;
  border-radius:26px;
  padding:clamp(16px,1.8vw,26px);
  box-shadow:0 18px 48px rgba(22,49,84,.09);
  overflow:hidden;
  box-sizing:border-box;
}

/* Keep the variable names already used by the scenario animation CSS. */
.sbt3,.skc,.sca,.sha{
  --navy:var(--sw-navy);--blue:var(--sw-blue);--soft:var(--sw-soft);--border:var(--sw-border);--text:var(--sw-text);
  --success:var(--sw-success);--warning:var(--sw-warning);--danger:var(--sw-danger);
}
.sbw2{
  --sbw2-navy:var(--sw-navy);--sbw2-blue:var(--sw-blue);--sbw2-soft-blue:var(--sw-soft);--sbw2-border:var(--sw-border);--sbw2-text:var(--sw-text);
  --sbw2-success:var(--sw-success);--sbw2-warning:var(--sw-warning);--sbw2-danger:var(--sw-danger);
}

/* Exact layout values retained from the five current widget versions. */
.sbt3{
  --sw-intro-max:780px;--sw-intro-copy-max:760px;--sw-grid-cols:minmax(0,1.58fr) minmax(275px,.68fr);
  --sw-flow-cols:repeat(11,auto);--sw-flow-gap:5px;--sw-flow-padding:9px 10px 11px;--sw-flow-step-min:58px;--sw-flow-step-font:9.8px;--sw-flow-step-transition:color .25s ease,transform .25s ease;
  --sw-flow-icon-size:32px;--sw-flow-icon-font:15px;--sw-flow-icon-transition:background .25s ease,box-shadow .25s ease;--sw-flow-arrow-font:17px;
  --sw-status-gap:10px;--sw-status-height:56px;--sw-status-transition:border-color .25s ease,background .25s ease,transform .25s ease;--sw-status-icon-font:17px;
  --sw-copy-gap:4px;--sw-copy-strong:12.5px;--sw-copy-small:11.5px;--sw-copy-line:1.3;--sw-pill-font:11px;
  --sw-controls-cols:1fr .72fr;--sw-controls-gap:10px;--sw-button-gap:8px;--sw-button-transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease;--sw-secondary-grid:auto;
  --sw-notice-border:#f2d78a;--sw-notice-bg:#fff9e8;--sw-notice-color:#5e5130;--sw-notice-font:11px;--sw-notice-line:1.45;
}
.skc{
  --sw-intro-max:800px;--sw-intro-copy-max:800px;--sw-grid-cols:minmax(0,1.58fr) minmax(275px,.68fr);
  --sw-flow-cols:repeat(9,auto);--sw-flow-gap:7px;--sw-flow-padding:9px 13px 11px;--sw-flow-step-min:68px;--sw-flow-step-font:10.5px;--sw-flow-step-transition:.25s;
  --sw-flow-icon-size:34px;--sw-flow-icon-font:16px;--sw-flow-icon-transition:none;--sw-flow-arrow-font:20px;
  --sw-status-gap:11px;--sw-status-height:60px;--sw-status-transition:.25s;--sw-status-icon-font:18px;
  --sw-copy-gap:4px;--sw-copy-strong:13px;--sw-copy-small:11.5px;--sw-copy-line:1.35;--sw-pill-font:12px;
  --sw-controls-cols:1fr 1fr;--sw-controls-gap:9px;--sw-button-gap:8px;--sw-button-transition:.2s;--sw-secondary-grid:1/-1;
  --sw-notice-border:#f2d78a;--sw-notice-bg:#fff9e8;--sw-notice-color:#5e5130;--sw-notice-font:11px;--sw-notice-line:1.45;
}
.sca{
  --sw-intro-max:800px;--sw-intro-copy-max:800px;--sw-grid-cols:minmax(0,1.58fr) minmax(285px,.7fr);
  --sw-flow-cols:repeat(11,auto);--sw-flow-gap:5px;--sw-flow-padding:9px 13px 11px;--sw-flow-step-min:60px;--sw-flow-step-font:10.5px;--sw-flow-step-transition:.25s;
  --sw-flow-icon-size:34px;--sw-flow-icon-font:16px;--sw-flow-icon-transition:none;--sw-flow-arrow-font:18px;
  --sw-status-gap:9px;--sw-status-height:58px;--sw-status-transition:.25s;--sw-status-icon-font:18px;
  --sw-copy-gap:3px;--sw-copy-strong:13px;--sw-copy-small:11.3px;--sw-copy-line:1.33;--sw-pill-font:11.5px;
  --sw-controls-cols:1fr 1fr;--sw-controls-gap:9px;--sw-button-gap:8px;--sw-button-transition:.2s;--sw-secondary-grid:1/-1;
  --sw-notice-border:#cfe0f0;--sw-notice-bg:#f6faff;--sw-notice-color:#53677c;--sw-notice-font:10.8px;--sw-notice-line:1.4;
}
.sha{
  --sw-intro-max:820px;--sw-intro-copy-max:820px;--sw-grid-cols:minmax(0,1.58fr) minmax(285px,.7fr);
  --sw-flow-cols:repeat(11,auto);--sw-flow-gap:5px;--sw-flow-padding:9px 13px 11px;--sw-flow-step-min:60px;--sw-flow-step-font:10.5px;--sw-flow-step-transition:.25s;
  --sw-flow-icon-size:34px;--sw-flow-icon-font:16px;--sw-flow-icon-transition:none;--sw-flow-arrow-font:18px;
  --sw-status-gap:9px;--sw-status-height:58px;--sw-status-transition:.25s;--sw-status-icon-font:18px;
  --sw-copy-gap:3px;--sw-copy-strong:13px;--sw-copy-small:11.2px;--sw-copy-line:1.33;--sw-pill-font:11.5px;
  --sw-controls-cols:1fr 1fr;--sw-controls-gap:9px;--sw-button-gap:8px;--sw-button-transition:.2s;--sw-secondary-grid:1/-1;
  --sw-notice-border:#cfe0f0;--sw-notice-bg:#f6faff;--sw-notice-color:#53677c;--sw-notice-font:10.7px;--sw-notice-line:1.4;
}
.sbw2{
  --sw-intro-max:760px;--sw-intro-copy-max:760px;--sw-grid-cols:minmax(0,1.58fr) minmax(275px,.68fr);
  --sw-flow-cols:repeat(9,auto);--sw-flow-gap:7px;--sw-flow-padding:9px 13px 11px;--sw-flow-step-min:72px;--sw-flow-step-font:10.5px;--sw-flow-step-transition:color .25s ease,transform .25s ease;
  --sw-flow-icon-size:34px;--sw-flow-icon-font:16px;--sw-flow-icon-transition:background .25s ease,box-shadow .25s ease;--sw-flow-arrow-font:20px;
  --sw-status-gap:11px;--sw-status-height:60px;--sw-status-transition:border-color .25s ease,background .25s ease,transform .25s ease;--sw-status-icon-font:18px;
  --sw-copy-gap:4px;--sw-copy-strong:13px;--sw-copy-small:13px;--sw-copy-line:1.35;--sw-pill-font:12px;
  --sw-controls-cols:1fr .72fr;--sw-controls-gap:11px;--sw-button-gap:9px;--sw-button-transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease;--sw-secondary-grid:auto;
  --sw-notice-border:#f2d78a;--sw-notice-bg:#fff9e8;--sw-notice-color:#5e5130;--sw-notice-font:12.5px;--sw-notice-line:1.45;
}

.sbt3 *,.sbt3 *::before,.sbt3 *::after,
.skc *,.skc *::before,.skc *::after,
.sca *,.sca *::before,.sca *::after,
.sha *,.sha *::before,.sha *::after,
.sbw2 *,.sbw2 *::before,.sbw2 *::after{box-sizing:border-box}
.sbt3 button,.skc button,.sca button,.sha button,.sbw2 button{font:inherit}

/* WordPress / Flatsome isolation.
   Flatsome applies global button typography, margins, line-height and padding.
   These scoped resets keep the widgets identical to the standalone previews. */
.sbt3 button[class*="sbt3__"],
.skc button[class*="skc__"],
.sca button[class*="sca__"],
.sha button[class*="sha__"],
.sbw2 button[class*="sbw2__"]{
  margin:0;
  font-family:inherit;
  font-size:inherit;
  line-height:1.25;
  letter-spacing:normal;
  text-transform:none;
  text-shadow:none;
  text-decoration:none;
  vertical-align:middle;
  max-width:none;
}
.sbt3 .sbt3__button,.skc .skc__button,.sca .sca__button,.sha .sha__button,.sbw2 .sbw2__button{padding:6px 9px}
.sbt3 .sbt3__mobile-button,.skc .skc__mobile-button,.sca .sca__mobile-button,.sha .sha__mobile-button,.sbw2 .sbw2__mobile-button{padding:6px 9px}

/* Intro */
.sbt3__intro,.skc__intro,.sca__intro,.sha__intro,.sbw2__intro{max-width:var(--sw-intro-max);margin:0 auto 16px;text-align:center}
.sbt3__eyebrow,.skc__eyebrow,.sca__eyebrow,.sha__eyebrow,.sbw2__eyebrow{display:inline-block;margin-bottom:9px;color:var(--sw-blue);font-weight:800;font-size:11.5px;letter-spacing:.08em;text-transform:uppercase}
.sbt3__intro h2,.skc__intro h2,.sca__intro h2,.sha__intro h2,.sbw2__intro h2{margin:0;color:var(--sw-navy);font-family:Poppins,Inter,Arial,sans-serif;font-size:clamp(24px,2.7vw,34px);line-height:1.13}
.sbt3__intro p,.skc__intro p,.sca__intro p,.sha__intro p,.sbw2__intro p{max-width:var(--sw-intro-copy-max);margin:15px auto 0;color:var(--sw-text);font-size:clamp(14px,1.5vw,16px);line-height:1.65}

/* Main cards */
.sbt3__grid,.skc__grid,.sca__grid,.sha__grid,.sbw2__grid{display:grid;grid-template-columns:var(--sw-grid-cols);align-items:start;gap:16px;max-width:1020px;margin:0 auto}
.sbt3__visual-card,.sbt3__status-card,.skc__visual-card,.skc__status-card,.sca__visual-card,.sca__status-card,.sha__visual-card,.sha__status-card,.sbw2__visual-card,.sbw2__status-card{background:rgba(255,255,255,.97);border:1px solid var(--sw-border);border-radius:18px;box-shadow:0 15px 38px rgba(22,49,84,.08)}
.sbt3__visual-card,.skc__visual-card,.sca__visual-card,.sha__visual-card,.sbw2__visual-card{overflow:hidden}
.sbt3__visual-toolbar,.skc__visual-toolbar,.sca__visual-toolbar,.sha__visual-toolbar,.sbw2__visual-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:9px 12px;border-bottom:1px solid var(--sw-border);background:#f8fbff}
.sbt3__toolbar-button,.skc__toolbar-button,.sca__toolbar-button,.sha__toolbar-button,.sbw2__toolbar-button{display:inline-flex;align-items:center;gap:9px;border:0;border-radius:999px;padding:8px 12px;color:#fff;background:var(--sw-navy);font-weight:800;cursor:pointer;box-shadow:0 7px 18px rgba(13,31,60,.18)}
.sbt3__system-state,.skc__system-state,.sca__system-state,.sha__system-state,.sbw2__system-state{display:inline-flex;align-items:center;min-height:30px;padding:7px 12px;border-radius:999px;color:var(--sw-blue);background:var(--sw-soft);font-size:13px;font-weight:800}
.sbt3__scene,.skc__scene,.sca__scene,.sha__scene,.sbw2__scene{display:block;width:100%;height:auto;min-height:325px}

/* Sequence flow */
.sbt3__flow,.skc__flow,.sca__flow,.sha__flow,.sbw2__flow{display:grid;grid-template-columns:var(--sw-flow-cols);align-items:center;justify-content:space-between;gap:var(--sw-flow-gap);padding:var(--sw-flow-padding);border-top:1px solid var(--sw-border);background:#fff}
.sbt3__flow-step,.skc__flow-step,.sca__flow-step,.sha__flow-step,.sbw2__flow-step{display:grid;justify-items:center;gap:4px;min-width:var(--sw-flow-step-min);color:#64758a;font-size:var(--sw-flow-step-font);text-align:center;transition:var(--sw-flow-step-transition)}
.sbt3__flow-icon,.skc__flow-icon,.sca__flow-icon,.sha__flow-icon,.sbw2__flow-icon{display:grid;place-items:center;width:var(--sw-flow-icon-size);height:var(--sw-flow-icon-size);border-radius:50%;background:#eff5fb;font-size:var(--sw-flow-icon-font);transition:var(--sw-flow-icon-transition)}
.sbt3__flow-step.is-active,.skc__flow-step.is-active,.sca__flow-step.is-active,.sha__flow-step.is-active,.sbw2__flow-step.is-active{color:var(--sw-blue);transform:translateY(-2px)}
.sbt3__flow-step.is-active .sbt3__flow-icon,.skc__flow-step.is-active .skc__flow-icon,.sca__flow-step.is-active .sca__flow-icon,.sha__flow-step.is-active .sha__flow-icon,.sbw2__flow-step.is-active .sbw2__flow-icon{background:#dcecff;box-shadow:0 0 0 5px rgba(33,102,209,.1)}
.sbt3__flow-arrow,.skc__flow-arrow,.sca__flow-arrow,.sha__flow-arrow,.sbw2__flow-arrow{color:#91a2b6;font-size:var(--sw-flow-arrow-font)}

/* Status card */
.sbt3__status-card,.skc__status-card,.sca__status-card,.sha__status-card,.sbw2__status-card{align-self:stretch;padding:15px}
.sbt3__status-card h3,.skc__status-card h3,.sca__status-card h3,.sha__status-card h3,.sbw2__status-card h3{margin:0 0 11px;font-family:Poppins,Inter,Arial,sans-serif;font-size:19px}
.sbt3__status-row,.skc__status-row,.sca__status-row,.sha__status-row,.sbw2__status-row{display:grid;grid-template-columns:26px 32px 1fr auto;align-items:center;gap:var(--sw-status-gap);min-height:var(--sw-status-height);margin-bottom:7px;padding:8px;border:1px solid var(--sw-border);border-radius:16px;background:#fbfdff;transition:var(--sw-status-transition)}
.sbt3__status-number,.skc__status-number,.sca__status-number,.sha__status-number,.sbw2__status-number{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;color:var(--sw-blue);background:#dceaff;font-weight:800}
.sbt3__status-icon,.skc__status-icon,.sca__status-icon,.sha__status-icon,.sbw2__status-icon{display:grid;place-items:center;width:31px;height:31px;border-radius:11px;color:var(--sw-blue);background:#edf5ff;font-size:var(--sw-status-icon-font)}
.sbt3__status-copy,.skc__status-copy,.sca__status-copy,.sha__status-copy,.sbw2__status-copy{display:grid;gap:var(--sw-copy-gap);min-width:0}
.sbt3__status-copy strong,.skc__status-copy strong,.sca__status-copy strong,.sha__status-copy strong,.sbw2__status-copy strong{font-size:var(--sw-copy-strong)}
.sbt3__status-copy small,.skc__status-copy small,.sca__status-copy small,.sha__status-copy small,.sbw2__status-copy small{color:var(--sw-text);font-size:var(--sw-copy-small);line-height:var(--sw-copy-line)}
.sbt3__status-pill,.skc__status-pill,.sca__status-pill,.sha__status-pill,.sbw2__status-pill{padding:5px 8px;border-radius:999px;color:var(--sw-blue);background:#eaf2ff;font-size:var(--sw-pill-font);font-weight:800;white-space:nowrap}

.sbt3__status-row.is-active,.skc__status-row.is-active,.sca__status-row.is-active,.sha__status-row.is-active,.sbw2__status-row.is-active{border-color:#8dc2f1;background:#f0f8ff;transform:translateX(2px)}
.sbt3__status-row.is-success,.skc__status-row.is-success,.sca__status-row.is-success,.sha__status-row.is-success,.sbw2__status-row.is-success{border-color:#85d7ae;background:#effcf5}
.sbt3__status-row.is-success .sbt3__status-pill,.skc__status-row.is-success .skc__status-pill,.sca__status-row.is-success .sca__status-pill,.sha__status-row.is-success .sha__status-pill,.sbw2__status-row.is-success .sbw2__status-pill{color:#117847;background:#dff7ea}
.sbt3__status-row.is-warning,.skc__status-row.is-warning,.sca__status-row.is-warning,.sha__status-row.is-warning,.sbw2__status-row.is-warning{border-color:#f1c875;background:#fff9eb}
.sbt3__status-row.is-warning .sbt3__status-pill,.skc__status-row.is-warning .skc__status-pill,.sca__status-row.is-warning .sca__status-pill,.sha__status-row.is-warning .sha__status-pill,.sbw2__status-row.is-warning .sbw2__status-pill{color:#a65a00;background:#ffefc9}
.sbt3__status-row.is-danger,.skc__status-row.is-danger,.sca__status-row.is-danger,.sha__status-row.is-danger,.sbw2__status-row.is-danger{border-color:#f0a5a1;background:#fff2f1}
.sbt3__status-row.is-danger .sbt3__status-pill,.skc__status-row.is-danger .skc__status-pill,.sca__status-row.is-danger .sca__status-pill,.sha__status-row.is-danger .sha__status-pill,.sbw2__status-row.is-danger .sbw2__status-pill{color:#bd2721;background:#ffe1df}

/* Controls + notice */
.sbt3__controls,.skc__controls,.sca__controls,.sha__controls,.sbw2__controls{display:grid;grid-template-columns:var(--sw-controls-cols);gap:var(--sw-controls-gap);margin-top:12px}
.sbt3__button,.skc__button,.sca__button,.sha__button,.sbw2__button{display:inline-flex;align-items:center;justify-content:center;gap:var(--sw-button-gap);min-height:43px;border-radius:13px;font-weight:800;cursor:pointer;transition:var(--sw-button-transition)}
.sbt3__button--primary,.skc__button--primary,.sca__button--primary,.sha__button--primary,.sbw2__button--primary{border:1px solid var(--sw-blue);color:#fff;background:linear-gradient(135deg,#1f61cf,#398de9);box-shadow:0 10px 22px rgba(33,102,209,.2)}
.sbt3__button--secondary,.skc__button--secondary,.sca__button--secondary,.sha__button--secondary,.sbw2__button--secondary{grid-column:var(--sw-secondary-grid);border:1px solid #9db8d7;color:var(--sw-navy);background:#fff}
.sbt3__notice,.skc__notice,.sca__notice,.sha__notice,.sbw2__notice{display:grid;grid-template-columns:28px 1fr;gap:10px;margin-top:10px;padding:8px;border:1px solid var(--sw-notice-border);border-radius:14px;background:var(--sw-notice-bg)}
.sbt3__notice p,.skc__notice p,.sca__notice p,.sha__notice p,.sbw2__notice p{margin:0;color:var(--sw-notice-color);font-size:var(--sw-notice-font);line-height:var(--sw-notice-line)}
.sbt3__mobile-status,.sbt3__mobile-controls,.skc__mobile-status,.skc__mobile-controls,.sca__mobile-status,.sca__mobile-controls,.sha__mobile-status,.sha__mobile-controls,.sbw2__mobile-status,.sbw2__mobile-controls{display:none}

/* Shared responsive breakpoint */
@media(max-width:1050px){
  .sbt3__grid,.skc__grid,.sca__grid,.sha__grid,.sbw2__grid{grid-template-columns:1fr}
  .sbt3,.skc,.sca,.sha,.sbw2{width:min(100%,900px)}
}

/* The Cooking, Comfort/Safety and Home-Away widgets use the same compact mobile shell. */
.skc.skc--mobile,.sca.sca--mobile,.sha.sha--mobile{padding:14px;border-radius:19px}
.skc.skc--mobile .skc__intro,.sca.sca--mobile .sca__intro,.sha.sha--mobile .sha__intro{margin-bottom:10px}
.skc.skc--mobile .skc__intro h2,.sca.sca--mobile .sca__intro h2,.sha.sha--mobile .sha__intro h2{font-size:clamp(22px,7vw,29px)}
.skc.skc--mobile .skc__intro p,.sca.sca--mobile .sca__intro p,.sha.sha--mobile .sha__intro p{font-size:13px;line-height:1.5}
.skc.skc--mobile .skc__visual-toolbar,.skc.skc--mobile .skc__flow,.skc.skc--mobile .skc__status-card,
.sca.sca--mobile .sca__visual-toolbar,.sca.sca--mobile .sca__flow,.sca.sca--mobile .sca__status-card,
.sha.sha--mobile .sha__visual-toolbar,.sha.sha--mobile .sha__flow,.sha.sha--mobile .sha__status-card{display:none}
.skc.skc--mobile .skc__grid,.sca.sca--mobile .sca__grid,.sha.sha--mobile .sha__grid{display:block}
.skc.skc--mobile .skc__visual-card,.sca.sca--mobile .sca__visual-card,.sha.sha--mobile .sha__visual-card{border-radius:16px}
.skc.skc--mobile .skc__scene,.sca.sca--mobile .sca__scene,.sha.sha--mobile .sha__scene{min-height:0}
.skc.skc--mobile .skc__mobile-status,.sca.sca--mobile .sca__mobile-status,.sha.sha--mobile .sha__mobile-status{display:block;padding:10px 12px;border-top:1px solid var(--sw-border);background:#f8fbff;color:var(--sw-blue);font-size:13px;font-weight:800;text-align:center}
.skc.skc--mobile .skc__mobile-controls,.sca.sca--mobile .sca__mobile-controls,.sha.sha--mobile .sha__mobile-controls{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:10px;background:#fff}
.skc__mobile-button,.sca__mobile-button,.sha__mobile-button{min-height:42px;border-radius:12px;font-weight:800}
.skc__mobile-button--start,.sca__mobile-button--start,.sha__mobile-button--start{border:1px solid var(--sw-blue);color:#fff;background:linear-gradient(135deg,#1f61cf,#398de9)}
.skc__mobile-button--reset,.sca__mobile-button--reset,.sha__mobile-button--reset{grid-column:1/-1;border:1px solid #9db8d7;color:var(--sw-navy);background:#fff}
.skc__mobile-button:disabled,.sca__mobile-button:disabled,.sha__mobile-button:disabled{opacity:.5}

@media(prefers-reduced-motion:reduce){
  .sbt3 *,.sbt3 *::before,.sbt3 *::after,.skc *,.skc *::before,.skc *::after,.sca *,.sca *::before,.sca *::after,.sha *,.sha *::before,.sha *::after,.sbw2 *,.sbw2 *::before,.sbw2 *::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important
  }
}


/* =========================================================
   KITCHEN COOKING
   ========================================================= */
/**
 * Adapses scenario-specific widget styles: skc
 * Requires smart-widget-core.css loaded first.
 * Shared layout/card/status/mobile-shell rules were removed; animation and scenario rules are preserved.
 */

.skc__scene-wrap{background:#eaf2fb}
.skc__burner,.skc__cooktop-led,.skc__occupancy-core,.skc__occupancy-waves,.skc__sensor-led,.skc__heat-waves,.skc__smoke,.skc__phone-message,.skc__phone-idle,.skc__warning-rays,.skc__time-badge{transition:all .3s ease}
.skc.is-cooking .skc__burner{fill:url(#skc-burner);filter:url(#skc-orange-glow);animation:skc-burner-pulse 1.1s ease-in-out infinite alternate}
.skc.is-cooking .skc__cooktop-led{fill:#ff9d2f}
.skc.is-cooking .skc__heat-waves{opacity:.38;animation:skc-heat 1.5s ease-in-out infinite}
.skc.is-unoccupied .skc__occupancy-core{fill:#a7b2be}
.skc.is-unoccupied .skc__occupancy-waves{opacity:.22;stroke:#8a99a8}
.skc.is-unoccupied .skc__time-badge{opacity:1}
.skc.is-overheating .skc__heat-waves{opacity:1;stroke:#ff6f22;filter:url(#skc-orange-glow);animation:skc-heat .75s ease-in-out infinite}
.skc.is-smoking .skc__smoke{opacity:.54;animation:skc-smoke 2.2s ease-in-out infinite}
.skc.is-detected .skc__sensor{filter:url(#skc-red-glow)}
.skc.is-detected .skc__sensor-led{fill:#e83b34;animation:skc-flash .45s ease-in-out infinite alternate}
.skc.is-signaling .skc__signal{opacity:1;animation:skc-signal .72s linear infinite}
.skc.is-phone-alert .skc__phone-idle{opacity:0}
.skc.is-phone-alert .skc__phone-message{opacity:1}
.skc.is-phone-alert .skc__phone{animation:skc-phone .34s ease-in-out 3}
.skc.is-warning-light .skc__warning-light{filter:url(#skc-red-glow)}
.skc.is-warning-light .skc__warning-rays{opacity:1;animation:skc-flash .55s ease-in-out infinite alternate}
.skc.is-warning-light .skc__warning-core{animation:skc-flash .45s ease-in-out infinite alternate}
.skc.is-shutdown .skc__burner{animation:skc-burner-off 1.2s ease-out forwards}
.skc.is-shutdown .skc__heat-waves{animation:skc-heat-off 1.4s ease-out forwards}
.skc.is-shutdown .skc__cooktop-led{fill:#32c97b}
.skc__flow-step.is-active .skc__flow-icon{background:#dcecff;box-shadow:0 0 0 5px rgba(33,102,209,.1)}
.skc__status-row.is-success .skc__status-pill{color:#117847;background:#dff7ea}
.skc__status-row.is-warning .skc__status-pill{color:#a65a00;background:#ffefc9}
.skc__status-row.is-danger .skc__status-pill{color:#bd2721;background:#ffe1df}
.skc__button--warning{border:1px solid #e5a23b;color:#6c3a00;background:#fff5df}
.skc__button:disabled,.skc__toolbar-button:disabled{cursor:not-allowed;opacity:.52;transform:none}
@keyframes skc-burner-pulse{from{opacity:.82}to{opacity:1}}
@keyframes skc-heat{0%,100%{transform:translateY(3px);opacity:.45}50%{transform:translateY(-7px);opacity:1}}
@keyframes skc-smoke{0%,100%{transform:translate(0,3px) scale(.94)}50%{transform:translate(8px,-13px) scale(1.08)}}
@keyframes skc-flash{from{opacity:.28}to{opacity:1}}
@keyframes skc-signal{from{stroke-dashoffset:50}to{stroke-dashoffset:0}}
@keyframes skc-phone{0%,100%{transform:translate(850px,430px) rotate(0)}30%{transform:translate(846px,430px) rotate(-1deg)}70%{transform:translate(854px,430px) rotate(1deg)}}
@keyframes skc-burner-off{0%{opacity:1}45%{opacity:.55}100%{fill:#1a2633;filter:none;opacity:1}}
@keyframes skc-heat-off{from{opacity:1}to{opacity:0;transform:translateY(-12px)}}
.skc.skc--mobile .skc__labels{display:none}
.skc__mobile-button--leave{border:1px solid #e5a23b;color:#6c3a00;background:#fff5df}


/* =========================================================
   COMFORT & SAFETY
   ========================================================= */
/**
 * Adapses scenario-specific widget styles: sca
 * Requires smart-widget-core.css loaded first.
 * Shared layout/card/status/mobile-shell rules were removed; animation and scenario rules are preserved.
 */

.sca__toolbar-button:hover{transform:translateY(-1px)}
.sca__scene-wrap{background:#eaf2fb}
.sca__person,.sca__occupancy-core,.sca__occupancy-waves,.sca__blind-panel,.sca__blind-lines,.sca__blind-led,.sca__sun-rays,.sca__airflow,.sca__lamp-core,.sca__lamp-glow,.sca__thermostat-led,.sca__score-ring,.sca__signals{transition:all .55s ease}
.sca__blind-panel,.sca__blind-lines{transform-box:fill-box;transform-origin:center top;transform:scaleY(.12)}
.sca__sun-rays{transition:opacity 1.15s ease}
.sca__person{transform-box:fill-box;transform-origin:center bottom;transform:translateY(12px) scale(.96)}
.sca__score-ring{transition:stroke-dashoffset 1.35s cubic-bezier(.22,.78,.2,1),stroke .5s ease}
.sca__airflow{transition:opacity .45s ease}
.sca__signals{transition:opacity .3s ease}
.sca.is-occupied .sca__person{opacity:1;transform:translateY(0) scale(1)}
.sca.is-occupied .sca__occupancy-core{fill:#2b9df0;filter:url(#sca-blue-glow)}
.sca.is-occupied .sca__occupancy-waves{opacity:1;stroke:#2b9df0;animation:sca-sensor-pulse 1.15s ease-out infinite}
.sca.is-sensing .sca__signals{opacity:.95;animation:sca-signal 1s linear infinite}
.sca.is-glare .sca__sun-rays{opacity:1}
.sca.is-blinds-adjusting .sca__blind-panel,.sca.is-blinds-adjusting .sca__blind-lines,.sca.is-blinds-set .sca__blind-panel,.sca.is-blinds-set .sca__blind-lines{transform:scaleY(.58)}
.sca.is-blinds-adjusting .sca__blind-panel,.sca.is-blinds-adjusting .sca__blind-lines{transition-duration:1.1s}
.sca.is-blinds-adjusting .sca__blind-led,.sca.is-blinds-set .sca__blind-led{fill:#2b9df0}
.sca.is-blinds-set .sca__sun-rays{opacity:.18}
.sca.is-hvac-cooling .sca__airflow{opacity:.85;animation:sca-airflow 1.7s ease-in-out infinite}
.sca.is-hvac-cooling .sca__thermostat-led{fill:#2b9df0;filter:url(#sca-blue-glow)}
.sca.is-lighting .sca__lamp-core,.sca.is-comfort .sca__lamp-core{fill:#ffd665;filter:url(#sca-warm-glow)}
.sca.is-lighting .sca__lamp-glow,.sca.is-comfort .sca__lamp-glow{opacity:.72;animation:sca-lamp 1.3s ease-in-out infinite alternate}
.sca.is-comfort .sca__score-ring{stroke:#39b878;stroke-dashoffset:17;filter:url(#sca-green-glow)}
.sca.is-comfort .sca__air-led{filter:url(#sca-green-glow)}
.sca.is-comfort .sca__signals{opacity:0}
.sca.is-leaving .sca__person{opacity:0;transform:translateX(70px) translateY(8px) scale(.94)}
.sca.is-eco .sca__lamp-core{fill:#c9d2db;filter:none}
.sca.is-eco .sca__lamp-glow{opacity:.18;animation:none}
.sca.is-eco .sca__airflow{opacity:0;animation:none}
.sca.is-eco .sca__blind-panel,.sca.is-eco .sca__blind-lines{transform:scaleY(.25)}
.sca.is-eco .sca__score-ring{stroke:#a7b8c9;stroke-dashoffset:77;filter:none}
.sca.is-eco .sca__occupancy-core{fill:#9aabba;filter:none}
.sca.is-eco .sca__occupancy-waves{opacity:.28;stroke:#92a6b9;animation:none}
.sca__flow-step.is-active .sca__flow-icon{background:#dcecff;box-shadow:0 0 0 5px rgba(33,102,209,.1)}
.sca__status-row.is-success .sca__status-pill{color:#117847;background:#dff7ea}
.sca__status-row.is-warning .sca__status-pill{color:#a65a00;background:#ffefc9}
.sca__status-row.is-danger .sca__status-pill{color:#bd2721;background:#ffe1df}
.sca__button:hover:not(:disabled){transform:translateY(-1px)}
.sca__button--leave{border:1px solid #75b596;color:#146642;background:#effaf4}
.sca__button:disabled,.sca__toolbar-button:disabled{cursor:not-allowed;opacity:.5;transform:none}
@keyframes sca-sensor-pulse{0%{transform:scale(.72);opacity:.8}100%{transform:scale(1.12);opacity:.05}}
@keyframes sca-signal{from{stroke-dashoffset:48}to{stroke-dashoffset:0}}
@keyframes sca-airflow{0%,100%{stroke-dasharray:12 15;stroke-dashoffset:0;opacity:.55}50%{stroke-dasharray:18 11;stroke-dashoffset:-24;opacity:1}}
@keyframes sca-lamp{from{opacity:.48}to{opacity:.82}}
.sca.sca--mobile .sca__labels{display:none}
.sca__mobile-button--leave{border:1px solid #75b596;color:#146642;background:#effaf4}
/* V1.2 — reliable SVG occupant animation. JS owns the mover group's transform. */
.sca__person-mover{pointer-events:none}
.sca__person-stand,.sca__person-seat{transition:opacity .22s ease}
.sca__walk-arm,.sca__walk-leg{transform-box:fill-box;transform-origin:top center}
.sca.is-person-walking .sca__walk-leg--front{animation:sca-walk-front .44s ease-in-out infinite alternate}
.sca.is-person-walking .sca__walk-leg--back{animation:sca-walk-back .44s ease-in-out infinite alternate}
.sca.is-person-walking .sca__walk-arm--front{animation:sca-walk-back .44s ease-in-out infinite alternate}
.sca.is-person-walking .sca__walk-arm--back{animation:sca-walk-front .44s ease-in-out infinite alternate}
@keyframes sca-walk-front{from{transform:rotate(-12deg)}to{transform:rotate(15deg)}}
@keyframes sca-walk-back{from{transform:rotate(14deg)}to{transform:rotate(-13deg)}}
/* V1.3: slower, directional walk from the left side of the room */
.sca__person-mover{pointer-events:none}
.sca__person-stand,.sca__person-seat{transition:opacity .28s ease}
.sca__walk-arm,.sca__walk-leg{transform-box:fill-box;transform-origin:top center}
.sca.is-person-walking .sca__walk-leg--front{animation:sca-v13-step-front .68s ease-in-out infinite alternate}
.sca.is-person-walking .sca__walk-leg--back{animation:sca-v13-step-back .68s ease-in-out infinite alternate}
.sca.is-person-walking .sca__walk-arm--front{animation:sca-v13-step-back .68s ease-in-out infinite alternate}
.sca.is-person-walking .sca__walk-arm--back{animation:sca-v13-step-front .68s ease-in-out infinite alternate}
@keyframes sca-v13-step-front{from{transform:rotate(-17deg)}to{transform:rotate(18deg)}}
@keyframes sca-v13-step-back{from{transform:rotate(17deg)}to{transform:rotate(-18deg)}}
/* V1.4 natural gait — limb geometry is driven by JavaScript, not CSS rotation. */
.sca__walk-arm,.sca__gait-leg path,.sca__gait-leg circle{transition:none!important}
.sca.is-person-walking .sca__walk-arm,
.sca.is-person-walking .sca__gait-leg path,
.sca.is-person-walking .sca__gait-leg circle{animation:none!important}
/* V1.8 desktop-only device hover tooltips */
.sca__scene-wrap{position:relative}
.sca__tooltip-target{cursor:help}
.sca__device-tooltip{
  position:absolute;
  z-index:12;
  left:0;
  top:0;
  width:max-content;
  max-width:230px;
  padding:9px 11px;
  border:1px solid #cbdced;
  border-radius:12px;
  background:rgba(255,255,255,.98);
  box-shadow:0 10px 28px rgba(19,47,79,.16);
  color:var(--navy);
  pointer-events:none;
  opacity:0;
  transform:translate(-50%,-115%) scale(.96);
  transition:opacity .16s ease,transform .16s ease;
}
.sca__device-tooltip.is-visible{opacity:1;transform:translate(-50%,-120%) scale(1)}
.sca__device-tooltip strong{display:block;margin-bottom:3px;color:var(--navy);font-size:12.5px;line-height:1.2}
.sca__device-tooltip span{display:block;color:var(--text);font-size:11px;line-height:1.35}
.sca.sca--mobile .sca__device-tooltip{display:none!important}
.sca.sca--mobile .sca__tooltip-target{cursor:default}


/* =========================================================
   HOME AWAY
   ========================================================= */
/**
 * Adapses scenario-specific widget styles: sha
 * Requires smart-widget-core.css loaded first.
 * Shared layout/card/status/mobile-shell rules were removed; animation and scenario rules are preserved.
 */

.sha__toolbar-button:hover:not(:disabled){transform:translateY(-1px)}
.sha__scene-wrap{position:relative;background:#eaf2fb}
.sha__door-panel,.sha__lock-shackle,.sha__lock-led,.sha__lamp-core,.sha__lamp-glow,.sha__outlet-led,.sha__thermostat-led,.sha__porch-core,.sha__porch-glow,.sha__camera-led,.sha__camera-lens,.sha__motion-core,.sha__motion-waves,.sha__phone-idle,.sha__phone-away,.sha__phone-alert,.sha__activity-figure,.sha__activity-rings,.sha__security-signals,.sha__recording-badge{transition:all .45s ease}
.sha__door-closed,.sha__door-open{transition:opacity .32s ease}
.sha.is-door-open .sha__door-closed{opacity:0}
.sha.is-door-open .sha__door-open{opacity:1}
.sha.is-locked .sha__lock-led{fill:#39b878;filter:url(#sha-blue-glow)}
.sha.is-armed .sha__camera-led{fill:#39b878}
.sha.is-armed .sha__motion-core{fill:#39b878}
.sha.is-armed .sha__motion-waves{opacity:.65;stroke:#39b878}
.sha.is-eco .sha__lamp-core{fill:#c9d2db;filter:none}
.sha.is-eco .sha__lamp-glow{opacity:.12}
.sha.is-eco .sha__outlet-led{fill:#91a4b7}
.sha.is-eco .sha__thermostat-led{fill:#2b9df0}
.sha.is-away-phone .sha__phone-idle{opacity:0}
.sha.is-away-phone .sha__phone-away{opacity:1}
.sha.is-activity .sha__activity-figure{opacity:.8}
.sha.is-activity .sha__activity-body{animation:sha-activity-move 1.7s ease-in-out forwards}
.sha.is-activity .sha__activity-rings{opacity:1}
.sha.is-activity .sha__activity-rings circle{transform-box:fill-box;transform-origin:center;animation:sha-rings 1.2s ease-out infinite}
.sha.is-activity .sha__activity-rings circle:nth-child(2){animation-delay:.16s}
.sha.is-activity .sha__activity-rings circle:nth-child(3){animation-delay:.32s}
.sha.is-alert .sha__motion-core{fill:#ef4b43;filter:url(#sha-red-glow)}
.sha.is-alert .sha__motion-waves{opacity:1;stroke:#ef4b43;animation:sha-motion-pulse .8s ease-out infinite}
.sha.is-recording .sha__camera-led{fill:#ef4b43;filter:url(#sha-red-glow);animation:sha-camera-blink .65s ease-in-out infinite alternate}
.sha.is-recording .sha__camera-lens{fill:#f06b63}
.sha.is-recording .sha__recording-badge{opacity:1}
.sha.is-porch-light .sha__porch-core{fill:#ffd45b;filter:url(#sha-warm-glow)}
.sha.is-porch-light .sha__porch-glow{opacity:.72}
.sha.is-signaling .sha__security-signals{opacity:1;animation:sha-signal .8s linear infinite}
.sha.is-phone-alert .sha__phone-idle,.sha.is-phone-alert .sha__phone-away{opacity:0}
.sha.is-phone-alert .sha__phone-alert{opacity:1}
.sha.is-phone-alert .sha__phone-body{animation:sha-phone-shake .34s ease-in-out 3}
.sha__flow-step.is-active .sha__flow-icon{background:#dcecff;box-shadow:0 0 0 5px rgba(33,102,209,.1)}
.sha__status-row.is-success .sha__status-pill{color:#117847;background:#dff7ea}
.sha__status-row.is-warning .sha__status-pill{color:#a65a00;background:#ffefc9}
.sha__status-row.is-danger .sha__status-pill{color:#bd2721;background:#ffe1df}
.sha__button:hover:not(:disabled){transform:translateY(-1px)}
.sha__button--activity{border:1px solid #e4a29e;color:#a7332e;background:#fff3f2}
.sha__button:disabled,.sha__toolbar-button:disabled{cursor:not-allowed;opacity:.5;transform:none}
.sha__person{pointer-events:none}
.sha__gait-leg path,.sha__gait-leg circle{transition:none!important}
.sha__tooltip-target{cursor:help}
.sha__device-tooltip{position:absolute;z-index:12;left:0;top:0;width:max-content;max-width:235px;padding:9px 11px;border:1px solid #cbdced;border-radius:12px;background:rgba(255,255,255,.98);box-shadow:0 10px 28px rgba(19,47,79,.16);color:var(--navy);pointer-events:none;opacity:0;transform:translate(-50%,-115%) scale(.96);transition:opacity .16s ease,transform .16s ease}
.sha__device-tooltip.is-visible{opacity:1;transform:translate(-50%,-120%) scale(1)}
.sha__device-tooltip strong{display:block;margin-bottom:3px;color:var(--navy);font-size:12.5px;line-height:1.2}
.sha__device-tooltip span{display:block;color:var(--text);font-size:11px;line-height:1.35}
@keyframes sha-activity-move{0%{transform:translateX(55px);opacity:0}35%{opacity:.8}100%{transform:translateX(-45px);opacity:.8}}
@keyframes sha-rings{0%{transform:scale(.55);opacity:.9}100%{transform:scale(1.18);opacity:0}}
@keyframes sha-motion-pulse{0%{transform:scale(.72);opacity:.8}100%{transform:scale(1.25);opacity:.1}}
@keyframes sha-camera-blink{from{opacity:.35}to{opacity:1}}
@keyframes sha-signal{from{stroke-dashoffset:50}to{stroke-dashoffset:0}}
@keyframes sha-phone-shake{0%,100%{transform:translateX(0) rotate(0)}30%{transform:translateX(-4px) rotate(-1deg)}70%{transform:translateX(4px) rotate(1deg)}}
.sha.sha--mobile .sha__device-tooltip{display:none!important}
.sha.sha--mobile .sha__tooltip-target{cursor:default}
.sha__mobile-button--activity{border:1px solid #e4a29e;color:#a7332e;background:#fff3f2}
/* V1.2 doorway perspective */
.sha__person{transform-box:fill-box;transform-origin:center bottom}
.sha__threshold-depth{pointer-events:none}
/* V2 simplified entry */
.sha__threshold-depth{display:none}
/* V2.1 continuous doorway crossing */
.sha__door-device{cursor:help}
.sha__door-open,.sha__door-closed{pointer-events:none}
.sha__lock-module{pointer-events:none}
.sha__person{transform-box:fill-box;transform-origin:center bottom}
/* V2.8 continuous doorway crossing and exact indoor/outdoor level */
.sha__door-frame-back,.sha__door-frame-front{pointer-events:none}
.sha__door-device{isolation:isolate}
/* Person no longer fades at the doorway; occlusion is created only by the foreground right jamb. */
.sha__person{transition:none}
.sha__door-open,.sha__door-closed{will-change:opacity}


/* =========================================================
   BATHROOM TUB OVERFLOW
   ========================================================= */
/**
 * Adapses scenario-specific widget styles: sbt3
 * Requires smart-widget-core.css loaded first.
 * Shared layout/card/status/mobile-shell rules were removed; animation and scenario rules are preserved.
 */

.sbt3__toolbar-button:hover { transform:translateY(-1px); }
.sbt3__scene-wrap { background:#eaf2fb; }
.sbt3__faucet { cursor:pointer; outline:none; }
.sbt3__click-halo { transform-box:fill-box; transform-origin:center; animation:sbt3-ring 1.15s ease-out infinite; }
.sbt3.is-filling .sbt3__click-indicator,.sbt3.is-overflowing .sbt3__click-indicator,.sbt3.is-detected .sbt3__click-indicator,.sbt3.is-valve-closed .sbt3__click-indicator { opacity:0; }
.sbt3__fill-stream,.sbt3__overflow,.sbt3__phone-idle,.sbt3__phone-message { transition:opacity .45s ease; }
/* Continuous bathtub filling: one water layer moves from low level to the rim.
   There is no separate "full" overlay, so reaching the top cannot snap to another picture. */
.sbt3__water-volume { pointer-events:none; }
.sbt3__tub-water {
  transform-box:fill-box;
  transform-origin:center bottom;
  transform:translateY(154px);
  opacity:.20;
  transition:transform 4.2s cubic-bezier(.22,.61,.36,1),opacity .9s ease;
}
.sbt3__water-surface,.sbt3__water-ripples {
  transform-box:fill-box;
  transform-origin:center;
  transform:translateY(148px);
  opacity:.08;
  transition:transform 4.2s cubic-bezier(.22,.61,.36,1),opacity 1s ease;
}
.sbt3.is-filling .sbt3__tub-water { transform:translateY(0); opacity:.62; }
.sbt3.is-filling .sbt3__water-surface,
.sbt3.is-filling .sbt3__water-ripples { transform:translateY(0); opacity:.82; }
/* Faucet stream grows downward and JS keeps its lower end attached to the rising surface. */
.sbt3__fill-stream { opacity:0; }
.sbt3__fill-stream-main,.sbt3__fill-stream-highlight { stroke-dasharray:300; stroke-dashoffset:300; }
.sbt3__stream-contact { opacity:0; transition:opacity .3s ease; }
.sbt3.is-filling .sbt3__fill-stream { opacity:1; }
.sbt3.is-filling .sbt3__fill-stream-main,
.sbt3.is-filling .sbt3__fill-stream-highlight {
  animation:sbt3-stream-grow .6s ease-out forwards,sbt3-stream-shimmer .9s ease-in-out .6s infinite alternate;
}
.sbt3.is-filling .sbt3__stream-contact { opacity:1; }
.sbt3.is-filling .sbt3__stream-contact ellipse:first-child { animation:sbt3-contact-ripple 1.05s ease-out infinite; }
/* One continuous overflow animation. The same four narrow streams are drawn
   progressively from the rim to the floor. Opacity grows inside the SAME
   animation, eliminating the late jump to a second/heavier-looking state. */
.sbt3__overflow { opacity:0; }
.sbt3__overflow-sheet { stroke-dasharray:280; stroke-dashoffset:280; opacity:0; }
.sbt3__overflow-drops { opacity:0; transform-box:fill-box; transform-origin:center top; }
.sbt3.is-overflowing .sbt3__overflow { opacity:1; }
.sbt3.is-overflowing .sbt3__overflow-sheet { animation:sbt3-overflow-draw 2.05s cubic-bezier(.22,.64,.30,1) forwards; }
.sbt3.is-overflowing .sbt3__overflow-sheet--2 { animation-delay:.12s; }
.sbt3.is-overflowing .sbt3__overflow-sheet--3 { animation-delay:.24s; }
.sbt3.is-overflowing .sbt3__overflow-sheet--4 { animation-delay:.36s; }
.sbt3.is-overflowing .sbt3__overflow-drops { animation:sbt3-overflow-drops .75s ease-out 1.65s forwards,sbt3-drops-fall .78s linear 2.40s infinite; }
/* Floor water does not exist until the first overflow stream has actually
   reached the tile. It then spreads continuously toward the sensor. */
/* Floor-water geometry is animated frame-by-frame in JavaScript.
   Using SVG cx/rx/ry values avoids mobile-browser stepping that can occur
   when a large SVG ellipse is translated and scaled through several CSS keyframes. */
.sbt3__puddle { opacity:0; }
.sbt3__puddle--main { will-change: opacity; }
.sbt3.is-detected .sbt3__sensor { filter:url(#sbt3-red-glow); animation:sbt3-sensor-pulse .7s ease-in-out infinite alternate; }
.sbt3.is-detected .sbt3__sensor-led { fill:#e83b34; filter:url(#sbt3-red-glow); animation:sbt3-led .48s ease-in-out infinite alternate; }
.sbt3.is-signaling .sbt3__signal-path { opacity:1; animation:sbt3-signal .72s linear infinite; }
.sbt3.is-signaling .sbt3__signal-path--phone { animation-delay:.12s; }
.sbt3.is-signaling .sbt3__signal-rings { opacity:1; transform-box:fill-box; transform-origin:center; animation:sbt3-rings 1s ease-out infinite; }
.sbt3.is-valve-closing .sbt3__valve-handle { transform-box:fill-box; transform-origin:center; animation:sbt3-close-valve .9s ease-in-out forwards; }
.sbt3.is-valve-closed .sbt3__valve-handle { transform-box:fill-box; transform-origin:center; transform:rotate(90deg); }
.sbt3.is-valve-closed .sbt3__valve-led { fill:#31d17c; }
.sbt3.is-pressure-fading .sbt3__fill-stream { animation:sbt3-pressure-fade 1.35s ease-out forwards; }
.sbt3.is-valve-closed .sbt3__fill-stream { opacity:0; }
.sbt3.is-water-stopped .sbt3__overflow { animation:sbt3-overflow-stop 1.15s ease-out forwards; }
.sbt3.is-phone-alert .sbt3__phone-idle { opacity:0; }
.sbt3.is-phone-alert .sbt3__phone-message { opacity:1; }
.sbt3.is-phone-alert .sbt3__phone { animation:sbt3-phone-shake .34s ease-in-out 3; }
.sbt3.is-light-alert .sbt3__ceiling-light { filter:url(#sbt3-red-glow); }
.sbt3.is-light-alert .sbt3__ceiling-light-rays { opacity:1; animation:sbt3-alert-rays .7s ease-in-out infinite alternate; }
.sbt3.is-light-alert .sbt3__ceiling-light-core { animation:sbt3-light-flash .55s ease-in-out infinite alternate; }
.sbt3__flow-step.is-active .sbt3__flow-icon { background:#dcecff; box-shadow:0 0 0 5px rgba(33,102,209,.1); }
.sbt3__status-row.is-success .sbt3__status-pill { color:#117847; background:#dff7ea; }
.sbt3__status-row.is-warning .sbt3__status-pill { color:#a65a00; background:#ffefc9; }
.sbt3__status-row.is-danger .sbt3__status-pill { color:#bd2721; background:#ffe1df; }
.sbt3__button:hover { transform:translateY(-1px); }
.sbt3__button:disabled,.sbt3__toolbar-button:disabled { cursor:wait; opacity:.7; transform:none; }
@keyframes sbt3-ring { 0%{transform:scale(.82);opacity:.7} 100%{transform:scale(1.5);opacity:0} }
@keyframes sbt3-stream-grow { from{stroke-dashoffset:300} to{stroke-dashoffset:0} }
@keyframes sbt3-stream-shimmer { from{opacity:.76} to{opacity:1} }
@keyframes sbt3-contact-ripple { 0%{rx:7;ry:2;opacity:.82} 100%{rx:21;ry:5.5;opacity:.08} }
@keyframes sbt3-water-shimmer { from{opacity:.55} to{opacity:1} }
@keyframes sbt3-overflow-draw {
  0% { stroke-dashoffset:280; opacity:.04; }
  35% { opacity:.28; }
  72% { opacity:.50; }
  100% { stroke-dashoffset:0; opacity:.64; }
}
@keyframes sbt3-overflow-drops { from{opacity:0;transform:translateY(-8px) scale(.7)} to{opacity:1;transform:translateY(0) scale(1)} }
@keyframes sbt3-drops-fall { 0%{transform:translateY(-3px);opacity:.45} 60%{opacity:1} 100%{transform:translateY(12px);opacity:.25} }
@keyframes sbt3-sensor-pulse { from{opacity:.82} to{opacity:1} }
@keyframes sbt3-led { from{opacity:.35} to{opacity:1} }
@keyframes sbt3-signal { from{stroke-dashoffset:50} to{stroke-dashoffset:0} }
@keyframes sbt3-rings { 0%{opacity:.9;transform:scale(.42)} 100%{opacity:0;transform:scale(1.08)} }
@keyframes sbt3-close-valve { from{transform:rotate(0)} to{transform:rotate(90deg)} }
@keyframes sbt3-pressure-fade { from{opacity:1;transform:scaleX(1)} to{opacity:.18;transform:scaleX(.38)} }
@keyframes sbt3-overflow-stop { 0%{opacity:1} 100%{opacity:0} }
@keyframes sbt3-phone-shake { 0%,100%{transform:translate(906px,472px) rotate(0)} 30%{transform:translate(902px,472px) rotate(-1deg)} 70%{transform:translate(910px,472px) rotate(1deg)} }
@keyframes sbt3-alert-rays { from{opacity:.18} to{opacity:1} }
@keyframes sbt3-light-flash { from{opacity:.45} to{opacity:1} }
@media (min-width:1051px){.sbt3__scene{max-height:535px}}
/* Responsive mode is switched by JS using actual widget width, not viewport width. */
.sbt3.sbt3--mobile { padding:12px; border-radius:19px; }
.sbt3.sbt3--mobile .sbt3__intro { margin-bottom:10px; }
.sbt3.sbt3--mobile .sbt3__intro h2 { font-size:clamp(21px,6vw,27px); }
.sbt3.sbt3--mobile .sbt3__intro p { display:none; }
.sbt3.sbt3--mobile .sbt3__grid { display:block; }
.sbt3.sbt3--mobile .sbt3__status-card,.sbt3.sbt3--mobile .sbt3__visual-toolbar,.sbt3.sbt3--mobile .sbt3__flow,.sbt3.sbt3--mobile .sbt3__labels { display:none; }
.sbt3.sbt3--mobile .sbt3__visual-card { border-radius:15px; }
.sbt3.sbt3--mobile .sbt3__scene { min-height:0; width:118%; max-width:none; margin-left:-9%; }
.sbt3.sbt3--mobile .sbt3__mobile-status { display:block; margin:9px 10px 0; padding:9px 11px; border-radius:12px; color:var(--blue); background:var(--soft); text-align:center; font-size:12.5px; font-weight:800; }
.sbt3.sbt3--mobile .sbt3__mobile-controls { display:grid; grid-template-columns:1fr .58fr; gap:8px; padding:9px 10px 11px; }
.sbt3__mobile-button { min-height:40px; border-radius:12px; font-weight:800; cursor:pointer; }
.sbt3__mobile-button--start { border:1px solid var(--blue); color:#fff; background:linear-gradient(135deg,#1f61cf,#398de9); }
.sbt3__mobile-button--reset { border:1px solid #9db8d7; color:var(--navy); background:#fff; }
.sbt3__mobile-button:disabled { opacity:.65; cursor:wait; }


/* =========================================================
   BATHROOM LEAK / SINK
   ========================================================= */
/**
 * Adapses scenario-specific widget styles: sbw2
 * Requires smart-widget-core.css loaded first.
 * Shared layout/card/status/mobile-shell rules were removed; animation and scenario rules are preserved.
 */

.sbw2__toolbar-button:hover {
  transform: translateY(-1px);
}
.sbw2__scene-wrap {
  background: #eaf2fb;
}
.sbw2__faucet {
  cursor: pointer;
  outline: none;
}
.sbw2:not(.is-leaking):not(.is-detected):not(.is-valve-closed)
.sbw2__faucet:hover .sbw2__faucet-pulse,
.sbw2:not(.is-leaking):not(.is-detected):not(.is-valve-closed)
.sbw2__faucet:focus-visible .sbw2__faucet-pulse {
  opacity: 1;
  animation: sbw2-ring 1.1s infinite;
}
/* Hide the click prompt immediately after the simulation begins. */
.sbw2.is-faucet-open .sbw2__faucet-pulse,
.sbw2.is-faucet-flow .sbw2__faucet-pulse,
.sbw2.is-leaking .sbw2__faucet-pulse,
.sbw2.is-detected .sbw2__faucet-pulse,
.sbw2.is-signaling .sbw2__faucet-pulse,
.sbw2.is-valve-closed .sbw2__faucet-pulse,
.sbw2.is-light-alert .sbw2__faucet-pulse,
.sbw2.is-phone-alert .sbw2__faucet-pulse {
  opacity: 0;
  animation: none;
}
.sbw2__puddle {
  transform-box: fill-box;
  transform-origin: center;
  transform: translateX(0) scale(.08);
  opacity: 0;
}
.sbw2__drip-line,
.sbw2__drops,
.sbw2__phone-message,
.sbw2__phone-idle {
  transition: opacity .25s ease;
}
.sbw2__flow-step.is-active .sbw2__flow-icon {
  background: #dcecff;
  box-shadow: 0 0 0 5px rgba(33, 102, 209, .1);
}
.sbw2__status-row.is-success .sbw2__status-pill {
  color: #117847;
  background: #dff7ea;
}
.sbw2__status-row.is-warning .sbw2__status-pill {
  color: #a65a00;
  background: #ffefc9;
}
.sbw2__status-row.is-danger .sbw2__status-pill {
  color: #bd2721;
  background: #ffe1df;
}
.sbw2__button:hover {
  transform: translateY(-1px);
}
.sbw2__button:disabled,
.sbw2__toolbar-button:disabled {
  cursor: wait;
  opacity: .7;
  transform: none;
}
/* Animation states */
.sbw2.is-leaking .sbw2__drip-line,
.sbw2.is-leaking .sbw2__drops {
  opacity: 1;
}
.sbw2.is-leaking .sbw2__drops {
  animation: sbw2-drops .65s linear infinite;
}
.sbw2.is-leaking .sbw2__puddle {
  opacity: .66;
  animation: sbw2-puddle-grow 1.5s ease-out forwards;
}
.sbw2.is-detected .sbw2__sensor {
  filter: url(#sbw2-blue-glow);
  animation: sbw2-sensor-pulse .75s ease-in-out infinite alternate;
}
.sbw2.is-valve-closed .sbw2__valve-led {
  fill: #31d17c;
}
.sbw2.is-light-alert .sbw2__beacon,
.sbw2.is-light-alert .sbw2__ceiling-light {
  filter: url(#sbw2-red-glow);
}
.sbw2.is-light-alert .sbw2__beacon-rays,
.sbw2.is-light-alert .sbw2__ceiling-light-rays {
  opacity: 1;
  animation: sbw2-alert-rays .7s ease-in-out infinite alternate;
}
.sbw2.is-light-alert .sbw2__beacon-core,
.sbw2.is-light-alert .sbw2__ceiling-light-core {
  animation: sbw2-light-flash .55s ease-in-out infinite alternate;
}
.sbw2.is-phone-alert .sbw2__phone-idle {
  opacity: 0;
}
.sbw2.is-phone-alert .sbw2__phone-message {
  opacity: 1;
}
.sbw2.is-phone-alert .sbw2__phone {
  animation: sbw2-phone-shake .34s ease-in-out 3;
}
@keyframes sbw2-ring {
  0% { transform: scale(.85); opacity: .9; }
  100% { transform: scale(1.45); opacity: 0; }
}
@keyframes sbw2-drops {
  0% { transform: translateY(-4px); opacity: .25; }
  55% { opacity: 1; }
  100% { transform: translateY(17px); opacity: .1; }
}
@keyframes sbw2-puddle-grow {
  0% {
    transform: translateX(0) scale(.08);
  }
  55% {
    transform: translateX(-62px) scale(3.1, 2.1);
  }
  100% {
    transform: translateX(-115px) scale(5.25, 2.55);
  }
}
.sbw2.is-detected .sbw2__sensor-led {
  fill: #e83b34;
  filter: url(#sbw2-red-glow);
  animation: sbw2-sensor-led-flash .48s ease-in-out infinite alternate;
}
.sbw2.is-signaling .sbw2__signal-path {
  opacity: 1;
  animation: sbw2-signal-travel .72s linear infinite;
}
.sbw2.is-signaling .sbw2__signal-path--phone {
  animation-delay: .12s;
}
.sbw2.is-signaling .sbw2__signal-rings {
  opacity: 1;
  transform-box: fill-box;
  transform-origin: center;
  animation: sbw2-signal-rings 1s ease-out infinite;
}
@keyframes sbw2-sensor-led-flash {
  from { opacity: .35; }
  to { opacity: 1; }
}
@keyframes sbw2-signal-travel {
  from { stroke-dashoffset: 50; }
  to { stroke-dashoffset: 0; }
}
@keyframes sbw2-signal-rings {
  0% {
    opacity: .9;
    transform: scale(.42);
  }
  100% {
    opacity: 0;
    transform: scale(1.08);
  }
}
@keyframes sbw2-sensor-pulse {
  from { opacity: .86; }
  to { opacity: 1; }
}
@keyframes sbw2-close-valve {
  from { transform: rotate(0deg); }
  to { transform: rotate(90deg); }
}
@keyframes sbw2-alert-rays {
  from { opacity: .18; }
  to { opacity: 1; }
}
@keyframes sbw2-light-flash {
  from { opacity: .45; }
  to { opacity: 1; }
}
@keyframes sbw2-phone-shake {
  0%, 100% { transform: translate(825px, 486px) rotate(0); }
  30% { transform: translate(821px, 486px) rotate(-1deg); }
  70% { transform: translate(829px, 486px) rotate(1deg); }
}
@media (max-width: 720px){.sbw2 {
    padding: 26px 14px;
    border-radius: 19px;
  }.sbw2__visual-toolbar {
    align-items: stretch;
    flex-direction: column;
  }.sbw2__toolbar-button,
  .sbw2__system-state {
    justify-content: center;
  }.sbw2__scene {
    min-height: 0;
  }.sbw2__flow {
    grid-template-columns: 1fr;
    gap: 8px;
  }.sbw2__flow-step {
    grid-template-columns: 40px 1fr;
    justify-items: start;
    align-items: center;
    width: 100%;
    text-align: left;
  }.sbw2__flow-arrow {
    transform: rotate(90deg);
    justify-self: center;
  }.sbw2__status-card {
    padding: 17px;
  }.sbw2__status-row {
    grid-template-columns: 28px 34px 1fr;
  }.sbw2__status-pill {
    grid-column: 3;
    justify-self: start;
  }.sbw2__controls {
    grid-template-columns: 1fr;
  }}
/* Final compact desktop layout */
@media (min-width: 1051px){.sbw2__scene {
    max-height: 535px;
  }.sbw2__flow-step {
    font-size: 10.5px;
  }.sbw2__status-card h3 {
    font-size: 19px;
  }.sbw2__status-copy strong {
    font-size: 13px;
  }.sbw2__status-copy small {
    font-size: 11.5px;
  }.sbw2__notice {
    padding: 8px;
  }.sbw2__notice p {
    font-size: 11px;
  }}
/* Faucet opening and natural sink flow */
/*
 * The outer SVG group provides the fixed position at the faucet.
 * Only this inner rotor turns, so its translation cannot be overwritten.
 */
.sbw2__faucet-hinge {
  filter: drop-shadow(0 2px 2px rgba(20, 45, 70, .18));
}
.sbw2__faucet-water {
  pointer-events: none;
  transition: opacity .2s ease;
}
.sbw2__faucet-stream-main,
.sbw2__faucet-stream-highlight,
.sbw2__faucet-stream-edge {
  stroke-dasharray: 120;
  stroke-dashoffset: 120;
}
.sbw2__faucet-droplets,
.sbw2__sink-splashes,
.sbw2__sink-ripple {
  opacity: 0;
}
.sbw2.is-faucet-flow .sbw2__faucet-water {
  opacity: 1;
}
.sbw2.is-faucet-flow .sbw2__faucet-stream-main,
.sbw2.is-faucet-flow .sbw2__faucet-stream-highlight,
.sbw2.is-faucet-flow .sbw2__faucet-stream-edge {
  animation:
    sbw2-stream-grow .42s ease-out forwards,
    sbw2-stream-sway 1.05s ease-in-out .42s infinite alternate;
}
.sbw2.is-faucet-flow .sbw2__faucet-stream-highlight {
  animation-delay: .06s, .48s;
}
.sbw2.is-faucet-flow .sbw2__faucet-stream-edge {
  animation-delay: .1s, .52s;
}
.sbw2.is-faucet-flow .sbw2__faucet-droplets {
  opacity: 1;
  animation: sbw2-faucet-droplets .65s linear infinite;
}
.sbw2.is-faucet-flow .sbw2__sink-splashes {
  opacity: 1;
  transform-box: fill-box;
  transform-origin: center;
  animation: sbw2-sink-splash .55s ease-in-out infinite alternate;
}
.sbw2.is-faucet-flow .sbw2__sink-ripple {
  opacity: .75;
  transform-box: fill-box;
  transform-origin: center;
  animation: sbw2-sink-ripple .9s ease-out infinite;
}
@keyframes sbw2-stream-grow {
  from { stroke-dashoffset: 120; }
  to { stroke-dashoffset: 0; }
}
@keyframes sbw2-stream-sway {
  from { transform: translateX(-1px); }
  to { transform: translateX(1.5px); }
}
@keyframes sbw2-faucet-droplets {
  0% {
    opacity: 0;
    transform: translateY(-5px);
  }
  35% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    transform: translateY(15px);
  }
}
@keyframes sbw2-sink-splash {
  from {
    opacity: .35;
    transform: scale(.75);
  }
  to {
    opacity: 1;
    transform: scale(1.18);
  }
}
@keyframes sbw2-sink-ripple {
  from {
    opacity: .8;
    transform: scale(.65);
  }
  to {
    opacity: 0;
    transform: scale(2.6, 1.8);
  }
}
to {
    opacity: 1;
    transform: scale(1.15);
  }
}


  78%  { transform: rotate(-38deg); }
100% { transform: rotate(-34deg); }
}


/* Robust faucet handle state change: no SVG rotation calculations */
.sbw2__faucet-lever {
  transition: opacity .22s ease;
}
.sbw2__faucet-lever--closed {
  opacity: 1;
}
.sbw2__faucet-lever--open {
  opacity: 0;
}
.sbw2.is-faucet-open .sbw2__faucet-lever--closed {
  opacity: 0;
}
.sbw2.is-faucet-open .sbw2__faucet-lever--open {
  opacity: 1;
}
/* Version 3: purpose-built top-mounted faucet handle */
.sbw2__top-handle {
  filter: drop-shadow(0 3px 3px rgba(20, 45, 70, .16));
}
.sbw2__top-handle .sbw2__faucet-lever {
  transition:
    opacity .2s ease,
    filter .2s ease;
}
.sbw2__top-handle .sbw2__faucet-lever--closed {
  opacity: 1;
}
.sbw2__top-handle .sbw2__faucet-lever--open {
  opacity: 0;
}
.sbw2.is-faucet-open .sbw2__top-handle .sbw2__faucet-lever--closed {
  opacity: 0;
}
.sbw2.is-faucet-open .sbw2__top-handle .sbw2__faucet-lever--open {
  opacity: 1;
  filter: drop-shadow(0 2px 2px rgba(20, 45, 70, .18));
}
/* Make the handle click target more obvious before the demo starts. */
.sbw2:not(.is-faucet-open)
.sbw2__top-handle:hover .sbw2__faucet-lever--closed {
  filter: brightness(1.08);
}
.sbw2.is-detected .sbw2__sensor-led {
  fill: #e83b34;
  animation: sbw31-sensor-flash .42s ease-in-out infinite alternate;
}
.sbw2.is-signaling .sbw2__signal-path {
  opacity: 1;
  animation: sbw31-signal-flow .58s linear infinite;
}
.sbw2.is-signaling .sbw2__signal-rings {
  opacity: 1;
  transform-box: fill-box;
  transform-origin: center;
  animation: sbw31-signal-ring 1s ease-out infinite;
}
.sbw2__valve-handle {
  transform-box: fill-box;
  transform-origin: center;
}
.sbw2.is-valve-closing .sbw2__valve-handle {
  animation: sbw31-valve-close .85s cubic-bezier(.22,.82,.28,1) forwards;
}
.sbw2.is-valve-closed .sbw2__valve-handle {
  animation: none;
  transform: rotate(90deg);
}
.sbw2.is-pressure-fading .sbw2__pressurized-flow,
.sbw2.is-pressure-fading .sbw2__drip-line,
.sbw2.is-pressure-fading .sbw2__drops {
  animation: sbw31-pressure-fade .85s ease-out forwards !important;
}
@keyframes sbw31-sensor-flash {
  from {
    opacity: .35;
    filter: drop-shadow(0 0 1px #e83b34);
  }
  to {
    opacity: 1;
    filter: drop-shadow(0 0 9px #e83b34);
  }
}
@keyframes sbw31-signal-flow {
  from { stroke-dashoffset: 44; }
  to { stroke-dashoffset: 0; }
}
@keyframes sbw31-signal-ring {
  0% {
    opacity: .95;
    transform: scale(.42);
  }
  100% {
    opacity: 0;
    transform: scale(1.18);
  }
}
@keyframes sbw31-valve-close {
  0% { transform: rotate(0deg); }
  75% { transform: rotate(96deg); }
  100% { transform: rotate(90deg); }
}
@keyframes sbw31-pressure-fade {
  0% { opacity: 1; }
  55% { opacity: .45; }
  100% { opacity: 0; }
}
/* Version 3.2: the complete faucet is the interactive trigger */
.sbw2__faucet,
.sbw2__faucet-hit-area {
  cursor: pointer;
}
.sbw2__faucet-hit-area {
  pointer-events: all;
}
.sbw2:not(.is-faucet-flow):not(.is-leaking):not(.is-detected)
.sbw2__faucet:hover .sbw2__faucet-pulse,
.sbw2:not(.is-faucet-flow):not(.is-leaking):not(.is-detected)
.sbw2__faucet:focus-visible .sbw2__faucet-pulse {
  opacity: .82;
  animation: sbw32-faucet-pulse 1.15s ease-out infinite;
}
.sbw2.is-faucet-flow .sbw2__faucet-pulse,
.sbw2.is-leaking .sbw2__faucet-pulse,
.sbw2.is-detected .sbw2__faucet-pulse,
.sbw2.is-signaling .sbw2__faucet-pulse,
.sbw2.is-valve-closing .sbw2__faucet-pulse,
.sbw2.is-valve-closed .sbw2__faucet-pulse {
  opacity: 0;
  animation: none;
}
@keyframes sbw32-faucet-pulse {
  0% {
    transform: scale(.82);
    opacity: .82;
  }
  100% {
    transform: scale(1.25);
    opacity: 0;
  }
}
/* Version 3.3: fixed click indicator above the faucet */
.sbw2__faucet-click-indicator {
  pointer-events: none;
  transform-box: fill-box;
  transform-origin: center;
}
.sbw2__faucet-click-halo {
  transform-box: fill-box;
  transform-origin: center;
  animation: sbw33-click-halo 1.6s ease-in-out infinite;
}
.sbw2__faucet-click-button {
  filter: drop-shadow(0 3px 6px rgba(33, 102, 209, .2));
  animation: sbw33-click-button 1.6s ease-in-out infinite;
  transform-box: fill-box;
  transform-origin: center;
}
/* Keep the indicator in one fixed location; only scale and opacity change. */
@keyframes sbw33-click-halo {
  0%, 100% {
    opacity: .10;
    transform: scale(.92);
  }
  50% {
    opacity: .28;
    transform: scale(1.12);
  }
}
@keyframes sbw33-click-button {
  0%, 100% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.05);
  }
}
/* Hide the indicator immediately when the demo starts. */
.sbw2.is-faucet-flow .sbw2__faucet-click-indicator,
.sbw2.is-leaking .sbw2__faucet-click-indicator,
.sbw2.is-detected .sbw2__faucet-click-indicator,
.sbw2.is-signaling .sbw2__faucet-click-indicator,
.sbw2.is-valve-closing .sbw2__faucet-click-indicator,
.sbw2.is-valve-closed .sbw2__faucet-click-indicator,
.sbw2.is-phone-alert .sbw2__faucet-click-indicator,
.sbw2.is-light-alert .sbw2__faucet-click-indicator {
  opacity: 0;
  visibility: hidden;
}
/* Core preview V1.0.2: keep the smart valve visually prominent */
.sbw2.is-valve-closing .sbw2__valve,
.sbw2.is-valve-closed .sbw2__valve {
  filter: drop-shadow(0 0 10px rgba(33, 102, 209, .48));
}
.sbw2__valve-callout {
  pointer-events: none;
}
/* =========================================================
   SMART BATHROOM RESPONSIVE MOBILE MODE — V1.3
   Triggered by .sbw2--mobile based on the widget's OWN width,
   not the browser viewport.
   ========================================================= */
#smartBathroomWidgetV2.sbw2.sbw2--mobile {
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 auto !important;
  padding: 4px !important;
  border-radius: 14px !important;
  background: #f7fbff !important;
  box-shadow: 0 8px 22px rgba(22, 49, 84, .07) !important;
}
/* Functional demo only: remove desktop educational furniture. */
#smartBathroomWidgetV2.sbw2--mobile > .sbw2__intro,
#smartBathroomWidgetV2.sbw2--mobile .sbw2__status-card,
#smartBathroomWidgetV2.sbw2--mobile .sbw2__flow,
#smartBathroomWidgetV2.sbw2--mobile .sbw2__visual-toolbar,
#smartBathroomWidgetV2.sbw2--mobile .sbw2__labels {
  display: none !important;
}
#smartBathroomWidgetV2.sbw2--mobile .sbw2__grid {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
}
#smartBathroomWidgetV2.sbw2--mobile .sbw2__visual-card {
  display: block !important;
  width: 100% !important;
  max-width: 100% !important;
  margin: 0 !important;
  padding: 0 !important;
  border-radius: 12px !important;
  overflow: hidden !important;
}
#smartBathroomWidgetV2.sbw2--mobile .sbw2__scene-wrap {
  display: block !important;
  width: 100% !important;
  margin: 0 !important;
  overflow: hidden !important;
  background: #eaf2fb !important;
}
#smartBathroomWidgetV2.sbw2--mobile svg.sbw2__scene {
  display: block !important;
  width: 100% !important;
  height: auto !important;
  min-height: 0 !important;
  max-height: none !important;
  margin: 0 !important;
}
/* Subtle click hint; keep it from dominating a phone screen. */
#smartBathroomWidgetV2.sbw2--mobile .sbw2__faucet-click-indicator {
  transform-box: fill-box;
  transform-origin: center;
  transform: scale(.66);
}
/* Mobile live status line. */
#smartBathroomWidgetV2.sbw2--mobile .sbw2__mobile-status {
  display: flex !important;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  margin: 7px 6px 0;
  padding: 6px 9px;
  border: 1px solid #d8e6f5;
  border-radius: 9px;
  color: #315679;
  background: #f5f9fe;
  font-family: Inter, Arial, sans-serif;
  font-size: 11.5px;
  font-weight: 700;
  line-height: 1.35;
  text-align: center;
}
/* Mobile controls. */
#smartBathroomWidgetV2.sbw2--mobile .sbw2__mobile-controls {
  display: grid !important;
  grid-template-columns: minmax(0, 1fr) 88px;
  gap: 7px;
  padding: 7px 6px 5px;
}
#smartBathroomWidgetV2.sbw2--mobile .sbw2__mobile-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-height: 40px;
  padding: 8px 9px;
  border-radius: 10px;
  font-family: Inter, Arial, sans-serif;
  font-size: 12px;
  font-weight: 800;
  cursor: pointer;
}
#smartBathroomWidgetV2.sbw2--mobile .sbw2__mobile-button--start {
  border: 1px solid #0d1f3c;
  color: #fff;
  background: #0d1f3c;
  box-shadow: 0 5px 12px rgba(13, 31, 60, .16);
}
#smartBathroomWidgetV2.sbw2--mobile .sbw2__mobile-button--reset {
  border: 1px solid #d8e4f1;
  color: #25466a;
  background: #f3f7fb;
}
#smartBathroomWidgetV2.sbw2--mobile .sbw2__mobile-button:disabled {
  opacity: .55;
  cursor: wait;
}



/* ==========================================================
   Smart Kitchen Cooking V3.1 — device tooltips
   ========================================================== */
/* V3.1 — desktop-only device hover tooltips */
.skc__scene-wrap{position:relative}
.skc__tooltip-target{cursor:help}
.skc__device-tooltip{
  position:absolute;z-index:12;left:0;top:0;width:max-content;max-width:235px;
  padding:9px 11px;border:1px solid #cbdced;border-radius:12px;
  background:rgba(255,255,255,.98);box-shadow:0 10px 28px rgba(19,47,79,.16);
  color:var(--navy);pointer-events:none;opacity:0;
  transform:translate(-50%,-115%) scale(.96);
  transition:opacity .16s ease,transform .16s ease
}
.skc__device-tooltip.is-visible{opacity:1;transform:translate(-50%,-120%) scale(1)}
.skc__device-tooltip strong{display:block;margin-bottom:3px;color:var(--navy);font-size:12.5px;line-height:1.2}
.skc__device-tooltip span{display:block;color:var(--text);font-size:11px;line-height:1.35}
.skc.skc--mobile .skc__device-tooltip{display:none!important}
.skc.skc--mobile .skc__tooltip-target{cursor:default}

/* ============================================================
   Smart Bathroom Tub Overflow V1.5 — device tooltips
   ============================================================ */
/* V1.5 — desktop-only device hover tooltips */
.sbt3__scene-wrap{position:relative}
.sbt3__tooltip-target{cursor:help}
.sbt3__device-tooltip{
  position:absolute;z-index:12;left:0;top:0;width:max-content;max-width:235px;
  padding:9px 11px;border:1px solid #cbdced;border-radius:12px;
  background:rgba(255,255,255,.98);box-shadow:0 10px 28px rgba(19,47,79,.16);
  color:var(--navy);pointer-events:none;opacity:0;
  transform:translate(-50%,-115%) scale(.96);
  transition:opacity .16s ease,transform .16s ease
}
.sbt3__device-tooltip.is-visible{opacity:1;transform:translate(-50%,-120%) scale(1)}
.sbt3__device-tooltip strong{display:block;margin-bottom:3px;color:var(--navy);font-size:12.5px;line-height:1.2}
.sbt3__device-tooltip span{display:block;color:var(--text);font-size:11px;line-height:1.35}
.sbt3.sbt3--mobile .sbt3__device-tooltip{display:none!important}
.sbt3.sbt3--mobile .sbt3__tooltip-target{cursor:default}

/* ============================================================
   Comfort & Safety V1.9 — compact two-column layout
   ============================================================ */
.sca{box-sizing:border-box}
.sca__grid{align-items:start}
.sca__visual-card{align-self:start;height:auto}

