.hero-photo{display:block;}.hero-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit;}
/* headless cloud EMS */
.hems .wrap{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:64px;align-items:center;padding-top:96px;padding-bottom:96px;}
.hphone{justify-self:center;width:310px;aspect-ratio:9/19.5;border-radius:48px;padding:9px;background:#0B1A11;box-shadow:0 40px 80px -30px rgba(4,33,15,.4);}
.hscr{height:100%;border-radius:40px;overflow:hidden;background:#F3F4F3;color:var(--ink);padding:44px 12px 12px;display:flex;flex-direction:column;gap:8px;position:relative;font-size:12px;}
.hscr::before{content:"";position:absolute;top:11px;left:50%;width:80px;height:22px;margin-left:-40px;border-radius:12px;background:#0B1A11;}
.hc{background:#fff;border-radius:14px;padding:12px 13px;}
.hk{display:flex;align-items:center;gap:7px;font-size:9.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink2);}
.hk svg,.hov svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;}
.hov{display:grid;grid-template-columns:repeat(4,1fr);margin-top:11px;text-align:center;}
.hov span{display:flex;flex-direction:column;align-items:center;gap:5px;font-size:11.5px;}
.hov svg{color:var(--g-deep);width:15px;height:15px;}
.hev .row{display:flex;gap:8px;align-items:baseline;margin-top:9px;font-size:13.5px;}
.hev .row small{color:var(--mute);font-size:12.5px;}
.hbar{position:relative;height:1.5px;background:var(--g);margin:16px 4px 6px;}
.hbar i{position:absolute;top:-4px;width:7px;height:7px;border-radius:50%;background:#fff;border:1.5px solid var(--g);}
.hbar i.now{left:var(--p,50%);margin-left:-4px;transition:left 1.2s var(--ease);}
.hbar i:first-child{left:-4px;}.hbar i:last-child{right:-4px;}
.hlab{display:flex;justify-content:space-between;font-size:10px;color:var(--mute);}
.hboost{margin-top:11px;padding:9px;border-radius:8px;background:var(--g);color:#fff;text-align:center;font-weight:500;font-size:12.5px;}
.hduo{display:grid;grid-template-columns:1.1fr 1fr;gap:8px;flex:1;min-height:0;}
.hmode{background:var(--g);color:#fff;border-radius:14px;padding:12px 13px;display:flex;flex-direction:column;gap:7px;}
.hmode .hk{color:#fff;}
.hmode b{font-size:20px;line-height:1.05;font-weight:700;letter-spacing:-.01em;}
.hmode p{margin:0;font-size:10.5px;line-height:1.45;}
.hsv{display:flex;flex-direction:column;gap:8px;}
.hsv .hc{flex:1;display:flex;flex-direction:column;justify-content:space-between;}
.hsv b{font-size:18px;font-weight:500;color:var(--ink2);}
.hsv small{font-size:10px;color:var(--mute);}
.hscr{padding:0 10px 10px;}
.hscr::before{z-index:3;}
.himg{position:relative;margin:0 -10px;height:232px;flex:none;overflow:hidden;border-radius:0 0 28px 28px;}
.himg img{width:100%;height:100%;object-fit:cover;object-position:38% 50%;}
.himg{background:radial-gradient(80% 70% at 60% 35%,#FFFFFF 0%,#EEF2EF 70%,#E6EBE7 100%);}
.home3d-cv{position:absolute;inset:0;width:100%;height:100%;display:block;}
.himg.is-3d img{display:none;}
.himg::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(255,255,255,.35) 0%,rgba(255,255,255,0) 30%,rgba(243,244,243,0) 78%,rgba(243,244,243,.85) 100%);}
.hglass{position:absolute;z-index:2;display:flex;flex-direction:column;gap:2px;padding:8px 11px;border-radius:14px;
  background:rgba(255,255,255,.62);backdrop-filter:blur(12px) saturate(1.4);-webkit-backdrop-filter:blur(12px) saturate(1.4);
  border:1px solid rgba(255,255,255,.75);box-shadow:0 8px 20px -12px rgba(4,33,15,.35);font-size:10px;color:var(--slate);white-space:nowrap;}
.hglass b{font-size:15px;font-weight:500;color:var(--ink);letter-spacing:-.01em;}
.hglass.g1{left:12px;top:44px;}
.hglass.g2{right:12px;top:44px;text-align:right;}
.hglass.g3{left:12px;bottom:18px;flex-direction:row;align-items:center;gap:7px;}
.hglass.g3 i{width:7px;height:7px;border-radius:50%;background:var(--g);animation:hpulse 2.4s ease-in-out infinite;}
.hglass.g3 b{font-size:12px;}
.hnav{position:absolute;z-index:4;left:50%;bottom:14px;transform:translateX(-50%);display:flex;gap:6px;padding:5px;border-radius:999px;
  background:rgba(255,255,255,.72);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.8);box-shadow:0 10px 24px -12px rgba(4,33,15,.35);}
.hnav span{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:var(--slate);}
.hnav span.on{background:var(--g);color:#fff;}
.hnav svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
.hduo{flex:none!important;margin-bottom:58px;}
.fam .phone{width:500px;}
.fam .chat-body{justify-content:flex-start;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;cursor:grab;touch-action:pan-y;user-select:none;}
.fam .chat-body::-webkit-scrollbar{display:none;}
.fam .chat-body.drag{cursor:grabbing;}
.fam .chat-body > :first-child{margin-top:auto;}
.chat-hint{position:absolute;z-index:3;left:50%;top:118px;transform:translateX(-50%);display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;
  background:rgba(255,255,255,.86);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 8px 20px -12px rgba(4,33,15,.35);
  font-size:11.5px;font-weight:500;color:var(--ink2);pointer-events:none;transition:opacity .4s;white-space:nowrap;opacity:0;}
.chat-hint.show{opacity:1;}
.chat-hint svg{width:12px;height:12px;animation:chint 1.6s ease-in-out infinite;}
.chat-hint.gone{opacity:0!important;}
@keyframes chint{0%,100%{transform:translateY(-2px)}50%{transform:translateY(2px)}}
@keyframes hpulse{0%,100%{opacity:1}50%{opacity:.35}}
.hrows{margin-top:28px;border-top:1px solid var(--line2);}
.hrow{display:grid;grid-template-columns:150px minmax(0,1fr);gap:24px;padding:22px 0;border-bottom:1px solid var(--line2);}
.hrow small{font-size:11.5px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--g-text);padding-top:5px;}
.hrow h3{margin:0;font-family:var(--display);font-weight:400;font-size:22px;letter-spacing:-.01em;}
.hrow p{margin:6px 0 0;font-size:15.5px;line-height:1.55;color:var(--slate);}
.hbrands{display:flex;flex-wrap:wrap;align-items:center;gap:18px 30px;margin-top:26px;}
.hbrands img{height:24px;width:auto;object-fit:contain;filter:grayscale(1);opacity:.7;transition:filter .25s,opacity .25s;}
.hbrands img:hover{filter:none;opacity:1;}
.hb-more{font-size:14px;color:var(--mute);}
.hb-all{font-size:14px;font-weight:500;color:var(--g-text);text-decoration:none;white-space:nowrap;}
.hb-all:hover{text-decoration:underline;}
@media (max-width:900px){.hems .wrap{grid-template-columns:1fr;gap:40px;}.hrow{grid-template-columns:1fr;gap:6px;}.hphone{width:260px;}}
@media (prefers-reduced-motion:reduce){.hdev i{animation:none;}}
.fde{display:flex;align-items:center;justify-content:space-between;gap:32px;margin-top:40px;padding:28px 32px;border-radius:28px;background:var(--panel);border:1px solid var(--line2);}
.fde2{display:flex;align-items:center;gap:18px;margin-top:34px;flex-wrap:wrap;}
.fde2 p{margin:0;flex:1;min-width:260px;font-size:17px;line-height:1.5;color:var(--ink2);max-width:52ch;}
.fde-ico{flex:none;display:grid;place-items:center;color:var(--g-deep);}
.fde-ico svg{width:44px;height:44px;}
.fde-body{flex:1;min-width:0;}
.fde-k{margin:0 0 8px;font-size:12px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--g-text);}
.fde h3{margin:0;font-family:var(--display);font-weight:400;font-size:24px;letter-spacing:-.01em;}
.fde p:last-child{margin:8px 0 0;font-size:15.5px;line-height:1.55;color:var(--slate);max-width:60ch;}
.fde .btn{flex:none;}
@media (max-width:800px){.fde{flex-direction:column;align-items:flex-start;padding:24px;}}

/* EMS app: energy flow over the house art */
.ems-art{position:relative;}
.ems-art > img{display:block;width:100%;height:100%;object-fit:cover;}
.hflow{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;}
.hfl path{fill:none;stroke:#22D45F;stroke-width:9;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:26 34;animation:hflow 1.4s linear infinite;filter:drop-shadow(0 0 6px rgba(34,212,95,.75));}
.hfl path:nth-child(2){animation-delay:-.3s}
.hfl path:nth-child(3){animation-delay:-.6s}
.hfl path:nth-child(4){animation-delay:-.9s}
.hfl path:nth-child(5){animation-delay:-.2s}
.hfl path:nth-child(6){animation-delay:-.7s}
.hbfill{transition:y .8s ease,height .8s ease;}
@keyframes hflow{to{stroke-dashoffset:-60}}
@media (prefers-reduced-motion:reduce){.hfl path{animation:none;stroke-dasharray:none;}}

/* Headless EMS: bento tiles */
.htiles{margin-top:28px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;}
.ht{position:relative;overflow:hidden;background:var(--panel);border:1px solid var(--line2);border-radius:22px;padding:20px 22px 22px;display:flex;flex-direction:column;gap:6px;
  transition:transform .35s var(--ease),box-shadow .35s var(--ease),border-color .35s var(--ease);}
.ht:hover{transform:translateY(-3px);border-color:rgba(20,203,98,.45);box-shadow:0 22px 44px -28px rgba(4,33,15,.35);}
.ht-wide{grid-column:1 / -1;}
.ht-wide2{display:flex;}
.ht-wide2 .ht-bars{margin-top:auto;padding-top:16px;display:flex;align-items:flex-end;gap:5px;height:84px;}
.ht-bars i{flex:1;border-radius:4px 4px 2px 2px;background:#CFEFDC;animation:hbar 3.2s ease-in-out infinite;transform-origin:bottom;}
.ht-bars i.f{background:var(--g);}
@keyframes hbar{0%,100%{transform:scaleY(.55)}50%{transform:scaleY(1)}}
.ht-tall{grid-row:auto;}
.ht-top{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.ht-ico{width:34px;height:34px;border-radius:11px;display:grid;place-items:center;background:#fff;color:var(--g-text);border:1px solid var(--line2);}
.ht-ico svg{width:18px;height:18px;}
.ht small{font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--g-text);}
.ht h3{margin:0;font-family:var(--display);font-weight:400;font-size:21px;line-height:1.2;letter-spacing:-.01em;}
.ht p{margin:4px 0 0;font-size:14.5px;line-height:1.55;color:var(--slate);}
.ht-g{background:radial-gradient(90% 120% at 100% 0%,rgba(20,203,98,.16),rgba(20,203,98,0) 60%),var(--panel);}
.ht-api{margin-top:14px;display:flex;justify-content:space-between;align-items:center;gap:10px;font:500 12.5px ui-monospace,Menlo,monospace;
  background:#fff;border:1px solid var(--line2);border-radius:12px;padding:9px 12px;color:var(--ink2);}
.ht-api b{font-weight:500;color:#fff;background:var(--g-deep);border-radius:6px;padding:2px 7px;animation:hblink 2.6s ease-in-out infinite;}
.ht-dark{background:radial-gradient(90% 70% at 0% 0%,rgba(20,203,98,.22),rgba(20,203,98,0) 60%),#0F1712;border-color:#0F1712;}
.ht-dark h3{color:#fff;}
.ht-dark p{color:rgba(255,255,255,.72);}
.ht-dark small{color:#8FE9B5;}
.ht-dark .ht-ico{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.12);color:#8FE9B5;}
.ht-tick{margin-top:auto;padding-top:18px;display:flex;flex-direction:column;gap:8px;}
.ht-tick span{display:flex;align-items:center;gap:9px;font-size:13px;color:rgba(255,255,255,.8);background:rgba(255,255,255,.06);border-radius:10px;padding:8px 11px;
  opacity:0;transform:translateY(6px);animation:htick 6s var(--ease) infinite;}
.ht-tick span:nth-child(2){animation-delay:.8s}
.ht-tick span:nth-child(3){animation-delay:1.6s}
.ht-tick i{width:7px;height:7px;border-radius:50%;background:#F2B84B;flex:none;}
.ht-tick span:nth-child(2) i{background:#8FE9B5;}
.ht-tick .ok{color:#fff;}
.ht-tick .ok i{background:var(--g);}
@keyframes htick{0%{opacity:0;transform:translateY(6px)}10%,80%{opacity:1;transform:none}92%,100%{opacity:0;transform:translateY(-4px)}}
@keyframes hblink{0%,100%{opacity:1}50%{opacity:.55}}

/* compact the tile stack so it never runs taller than the phone beside it */
.htiles{margin-top:18px;gap:10px;}
.ht{padding:15px 18px 16px;gap:4px;border-radius:20px;}
.ht-top{margin-bottom:4px;gap:9px;}
.ht-ico{width:28px;height:28px;border-radius:9px;}
.ht-ico svg{width:15px;height:15px;}
.ht h3{font-size:18px;}
.ht p{font-size:13.5px;line-height:1.5;}
.ht-api{margin-top:10px;padding:7px 11px;font-size:12px;}
.ht-tick{padding-top:12px;gap:6px;}
.ht-tick span{padding:6px 10px;font-size:12.5px;}
.ht-wide2 .ht-bars{padding-top:12px;height:56px;}

/* L2 status: one line that cycles in place instead of three stacked rows */
.ht-tick{display:grid;gap:0;}
.ht-tick span{grid-area:1 / 1;animation:htone 6s var(--ease) infinite;}
.ht-tick span:nth-child(2){animation-delay:2s}
.ht-tick span:nth-child(3){animation-delay:4s}
@keyframes htone{0%{opacity:0;transform:translateY(6px)}6%,30%{opacity:1;transform:none}36%,100%{opacity:0;transform:translateY(-6px)}}
.ht-wide2 .ht-bars{height:46px;}
@media (prefers-reduced-motion:reduce){.ht-tick span{opacity:0;}.ht-tick span.ok{opacity:1;}}
.ht-app{background:#fff;border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:8px;box-shadow:0 14px 30px -20px rgba(4,33,15,.35);}
.ha-top{display:flex;justify-content:space-between;align-items:center;padding-bottom:6px;border-bottom:1px solid var(--line2);}
.ha-logo{font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);background:repeating-linear-gradient(135deg,#F1F3F1 0 6px,#FAFBFA 6px 12px);border-radius:6px;padding:4px 8px;}
.ha-dot{width:8px;height:8px;border-radius:50%;background:var(--g);animation:hblink 2.6s ease-in-out infinite;}
.ha-row{display:flex;justify-content:space-between;font-size:13px;color:var(--slate);}
.ha-row b{font-weight:500;color:var(--ink);}
.ha-row b.g{color:var(--g-text);}
.ht-split{display:grid !important;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;gap:18px;}
.ht-split .hs-txt{display:flex;flex-direction:column;gap:4px;text-align:left;}
.ht-split .ht-api{margin-top:0;flex-direction:column;align-items:stretch;gap:8px;padding:12px;}
.ht-split .ht-api b{align-self:flex-start;}
@media (max-width:760px){.ht-split{grid-template-columns:minmax(0,1fr);}}
@media (max-width:600px){.htiles{grid-template-columns:minmax(0,1fr);}.ht-tall{grid-row:auto;}}
@media (prefers-reduced-motion:reduce){.ht-tick span{animation:none;opacity:1;transform:none;}.ht-api b,.ht-bars i{animation:none;}}
.m .s{margin-top:auto;padding-top:14px;font-size:12px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:#0A5A2C;}

/* light panel cards carry no outline, at rest or on hover */
.ht,.fde,.ht:hover,.fde:hover{border-color:transparent !important;}
