/* Campo interactions and the final art direction. */
.site-header:after{content:'';position:absolute;left:0;bottom:-1px;width:100%;height:2px;background:linear-gradient(90deg,#007afc,#85f0ca);transform:scaleX(var(--page-progress,0));transform-origin:left;box-shadow:0 0 12px #68d9c57a;pointer-events:none}
.hero-carousel{width:min(100%,1080px);margin:72px auto 0;text-align:left}
.hero-viewport{position:relative;height:clamp(390px,44vw,565px);overflow:hidden;border:1px solid var(--steel);border-radius:24px;background:#111820;isolation:isolate}
.hero-slide{position:absolute;inset:0;visibility:hidden;opacity:0;transform:translateX(26px) scale(.985);transition:opacity .65s ease,transform .8s cubic-bezier(.16,1,.3,1),visibility .65s}
.hero-slide.is-active{visibility:visible;opacity:1;transform:none;z-index:2}
.hero-carousel .overview-stage{width:100%;height:100%;margin:0;border:0;border-radius:0;animation:none}
.hero-slide-reports,.hero-slide-mobile{background:radial-gradient(circle at 70% 45%,#1d3940 0,#10171c 48%,#0b1014 100%)}
.hero-slide-copy{position:absolute;z-index:3;left:6%;top:28%;max-width:37%;color:#fff}
.hero-slide-copy>span{display:block;margin-bottom:17px;color:#9db4c1;font-size:10px;font-weight:700;letter-spacing:.12em}
.hero-slide-copy>strong{display:block;font-size:clamp(29px,3.2vw,47px);line-height:1.14;letter-spacing:-.04em}
.hero-slide-copy p{max-width:320px;margin:18px 0 0;color:#bbc7d1;font-size:14px}
.hero-slide-reports .hero-slide-copy{max-width:32%}
.hero-slide-reports>img{position:absolute;right:-3%;bottom:-10%;width:58%;height:90%;object-fit:cover;object-position:left top;border:1px solid #61768066;border-radius:15px;box-shadow:0 35px 70px #0009}
.hero-slide-mobile .hero-phone{position:absolute;right:15%;top:7%;width:25%;height:104%;overflow:hidden;border:9px solid #2a363e;border-radius:38px;background:#fff;box-shadow:0 30px 80px #000a;transform:rotate(6deg)}
.hero-slide-mobile .hero-phone img{width:100%;height:100%;object-fit:cover;object-position:top}
.hero-slide-mobile .hero-slide-copy{top:33%;max-width:46%}
.hero-carousel-controls{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:18px}
.hero-carousel-controls>button{display:grid;place-items:center;width:36px;height:36px;flex:0 0 36px;padding:0;border:1px solid var(--pewter);border-radius:50%;background:transparent;color:#d1dce5;font-size:16px}
.hero-carousel-controls>button:hover{border-color:#d1dce5;background:var(--raised)}
.hero-carousel-controls>[data-hero-pause]{margin-left:16px;border-radius:7px;font-size:12px}
.hero-carousel-tabs{display:flex;align-items:center;gap:4px}
.hero-carousel-tabs button{min-width:88px;padding:8px 10px;border:0;border-bottom:2px solid #3b4851;background:transparent;color:#8896a3;font-size:11px;font-weight:700}
.hero-carousel-tabs button[aria-current=true]{border-color:#86dfc8;color:#fff}

.geo-map .geo-circle,.geo-map .geo-polygon{fill:#56d4a90d;stroke:#7ee4c9;stroke-width:2.2;stroke-dasharray:8 8;filter:drop-shadow(0 0 7px #87ffdf75);transition:opacity .35s ease}
.geo-map .geo-polygon{opacity:0}
.geo-demo.mode-polygon .geo-circle{opacity:0}
.geo-demo.mode-polygon .geo-polygon{opacity:1}
.geo-map .geo-center{fill:#ecfff7;stroke:#30bc93;stroke-width:5;filter:drop-shadow(0 0 8px #74e7c8)}
.geo-demo.is-visible .geo-center{animation:geo-center-pulse 2.6s ease-in-out infinite}
.geo-demo.is-visible .geo-center:nth-of-type(2){animation-delay:.3s}
.geo-demo.is-visible .geo-center:nth-of-type(3){animation-delay:.6s}
.geo-demo.is-visible .geo-center:nth-of-type(4){animation-delay:.9s}
@keyframes geo-center-pulse{50%{filter:drop-shadow(0 0 17px #b4ffe7)}}

.attendance-demo{min-height:0}
.attendance-real{display:grid;grid-template-columns:minmax(185px,240px) 1fr;align-items:center;gap:clamp(22px,4vw,55px);padding:5px clamp(23px,4vw,45px) 30px;min-height:500px}
.real-phone{height:470px;overflow:hidden;border:8px solid #303d46;border-radius:32px;background:#fff;box-shadow:0 24px 50px #0008;transform:translateY(50px) rotate(-5deg) scale(.92);opacity:0;transition:transform 900ms cubic-bezier(.16,1,.3,1),opacity 650ms}
.attendance-demo.is-visible .real-phone{transform:none;opacity:1}
.real-phone img{width:100%;height:100%;object-fit:cover;object-position:top}
.real-phone-copy{opacity:0;transform:translateY(25px);transition:opacity .65s ease .35s,transform .8s cubic-bezier(.16,1,.3,1) .35s}
.attendance-demo.is-visible .real-phone-copy{opacity:1;transform:none}
.real-phone-copy>span{display:block;color:#8de2cb;font-size:10px;font-weight:700;letter-spacing:.12em}
.real-phone-copy>strong{display:block;margin:17px 0;color:#fff;font-size:clamp(26px,2.8vw,39px);line-height:1.12;letter-spacing:-.04em}
.real-phone-copy p{max-width:270px;margin:0;color:#bbc7d1;font-size:13px}
.real-phone-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:25px}
.real-phone-tags span{padding:7px 9px;border:1px solid #5c7b76;border-radius:100px;color:#c9e7de;font-size:10px;font-weight:700}

.work-demo{min-height:410px}
.work-path{--node-size:56px;--path-top:62px;position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:var(--path-top) 22px 38px}
.work-track{position:absolute;z-index:0;top:calc(var(--path-top) + var(--node-size)/2);left:calc(12.5% + 16px);right:calc(12.5% + 16px);height:3px;transform:translateY(-50%);background:#3e5655}
.work-progress{width:100%;height:100%;background:#77ebc9;box-shadow:0 0 18px #86f4d2;transform:scaleX(0);transform-origin:left;will-change:transform}
.work-progress:after{content:'';position:absolute;right:-3px;top:-2px;width:7px;height:7px;border-radius:50%;background:#e8fff6;box-shadow:0 0 16px 5px #74e4bf8a}
.work-node{position:relative;z-index:1;display:grid;justify-items:center;align-content:start;gap:13px;visibility:hidden;opacity:0;animation:none!important}
.work-node.reached{visibility:visible;opacity:1;animation:none!important}
.work-node.reached>span:after{content:'';position:absolute;width:var(--node-size);height:var(--node-size);border:1px solid #a6ffde;border-radius:50%;animation:node-impact .6s ease-out both;pointer-events:none}
@keyframes node-impact{from{scale:1;opacity:1}to{scale:1.65;opacity:0}}
.work-node>span{display:grid;place-items:center;width:var(--node-size);height:var(--node-size);margin:0;border:1px solid #72d7ba;border-radius:50%;background:#1e3734;color:#dffff1;font-size:22px;box-shadow:0 0 0 7px #4bc59b18}
.work-node strong{color:#fff;font-size:13px;text-align:center}
.work-summary,.work-demo.is-visible .work-summary{margin:0 23px 28px;width:calc(100% - 46px);padding:25px;border:1px solid #50766b;border-radius:16px;background:linear-gradient(145deg,#20332e,#18231f);opacity:1;transform:none;animation:none!important}
.work-summary>strong{margin:9px 0 5px;font-size:24px}
.work-summary p{color:#d1ded7;font-size:13px}
.work-summary.pulse{animation:work-summary-pulse .42s ease-out!important}
@keyframes work-node-pop{from{transform:scale(.7)}to{transform:scale(1)}}
@keyframes work-summary-pulse{50%{border-color:#a5f4d6;box-shadow:0 0 25px #60caa333}}

.proof-laptop{background:none!important;border:0!important;overflow:visible!important}
.proof-laptop img{width:100%;height:auto;filter:drop-shadow(0 35px 30px #0008);opacity:0;transform:perspective(1200px) translateY(80px) rotateX(10deg) scale(.88);transform-origin:50% 80%;transition:opacity .75s ease,transform 1.2s cubic-bezier(.16,1,.3,1)}
.proof-laptop.is-visible img{opacity:1;transform:none}

@media(max-width:1000px){.hero-slide-copy{max-width:42%}}
@media(max-width:600px){
  .hero-carousel{margin-top:45px}.hero-viewport{height:420px;border-radius:20px}
  .hero-slide-copy{left:7%;top:8%;max-width:80%}.hero-slide-copy>strong{font-size:27px}.hero-slide-copy p{font-size:11px;margin-top:10px}
  .hero-slide-reports .hero-slide-copy{max-width:80%}.hero-slide-reports>img{right:-13%;bottom:-4%;width:105%;height:57%;border-radius:9px}
  .hero-slide-mobile .hero-slide-copy{top:9%;max-width:75%}.hero-slide-mobile .hero-phone{right:8%;top:41%;width:35%;height:78%;border-width:5px;border-radius:22px}
  .hero-carousel-controls{gap:7px}.hero-carousel-controls>button{width:29px;height:29px;flex-basis:29px}.hero-carousel-controls>[data-hero-pause]{margin-left:2px}.hero-carousel-tabs button{min-width:0;padding:7px 6px;font-size:9px}
  .attendance-real{grid-template-columns:minmax(0,170px) 1fr;gap:14px;min-height:0;padding:5px 15px 25px}.real-phone{height:355px;border-width:5px;border-radius:22px}.real-phone-copy>span{font-size:8px}.real-phone-copy>strong{font-size:22px;margin:10px 0}.real-phone-copy p{font-size:10px}.real-phone-tags{gap:4px;margin-top:13px}.real-phone-tags span{font-size:8px;padding:5px 6px}
  .work-path{--node-size:42px;--path-top:44px;padding:var(--path-top) 8px 28px;grid-template-columns:repeat(4,minmax(0,1fr));gap:0}.work-track{display:block;left:calc(12.5% + 6px);right:calc(12.5% + 6px)}.work-node>span{width:var(--node-size);height:var(--node-size);font-size:17px}.work-node strong{font-size:9px}.work-summary,.work-demo.is-visible .work-summary{margin:0 15px 18px;width:calc(100% - 30px);padding:19px}.work-summary>strong{font-size:21px}.work-summary p{font-size:11px}.work-demo{min-height:0}
}
@media(prefers-reduced-motion:reduce){.hero-slide,.real-phone,.real-phone-copy,.proof-laptop img{transition:none!important}.real-phone,.real-phone-copy,.proof-laptop img{opacity:1;transform:none}.work-node{visibility:visible;opacity:1}.work-progress{transform:scaleX(1)}.geo-demo.is-visible .geo-center{animation:none}}

@media(prefers-reduced-motion:no-preference){
  .motion-ready .story .demo-surface.reveal{opacity:1;clip-path:inset(8% 0 8% 0 round 28px);transform:perspective(1200px) translateY(65px) rotateX(7deg) scale(.94);transition:clip-path 1.1s cubic-bezier(.16,1,.3,1),transform 1.2s cubic-bezier(.16,1,.3,1)}
  .motion-ready .story .demo-surface.is-visible{clip-path:inset(0 round 24px);transform:none}
  .motion-ready .reveal h2{clip-path:inset(0 0 100% 0);transform:translateY(32px);transition:clip-path .95s cubic-bezier(.16,1,.3,1),transform 1s cubic-bezier(.16,1,.3,1)}
  .motion-ready .reveal.is-visible h2{clip-path:inset(0);transform:none}
  .hero-slide.is-active .hero-slide-copy{animation:slide-copy-enter .85s cubic-bezier(.16,1,.3,1) both}
  .hero-slide.is-active>img{animation:slide-screen-enter 1.1s cubic-bezier(.16,1,.3,1) both}
  .hero-slide.is-active .hero-phone{animation:slide-phone-enter 1.2s cubic-bezier(.16,1,.3,1) both}
  .geo-demo.is-visible .geo-circle,.geo-demo.is-visible .geo-polygon{animation:zone-trace 4s linear infinite}
  .geo-demo.mode-polygon .geo-polygon{animation:zone-trace 4s linear infinite}
  .real-phone-tags span{transition:transform .3s,background .3s}.real-phone-tags span:hover{transform:translateY(-4px);background:#2b5147}
  .button-primary{position:relative;overflow:hidden}.button-primary:after{content:'';position:absolute;inset:-50%;background:linear-gradient(110deg,transparent 40%,#ffffff30 50%,transparent 60%);transform:translateX(-100%);transition:transform .6s}.button-primary:hover:after{transform:translateX(100%)}
  @keyframes slide-copy-enter{from{clip-path:inset(0 0 100%);translate:0 35px}to{clip-path:inset(0);translate:0 0}}
  @keyframes slide-screen-enter{from{transform:perspective(1000px) translate(90px,50px) rotateY(-12deg) scale(.94)}to{transform:none}}
  @keyframes slide-phone-enter{from{transform:translate(65px,90px) rotate(15deg)}to{transform:rotate(6deg)}}
  @keyframes zone-trace{to{stroke-dashoffset:-64}}
  @supports(animation-timeline:view()){
    .geo-map>img{scale:1.12;animation:map-scroll linear both;animation-timeline:view();animation-range:entry 0% exit 100%}
    .proof-laptop{animation:laptop-scroll linear both;animation-timeline:view();animation-range:entry 0% exit 100%}
    @keyframes map-scroll{from{translate:0 -3%}to{translate:0 3%}}
    @keyframes laptop-scroll{from{translate:0 32px}to{translate:0 -32px}}
  }
}

html:not(.motion-ready) .real-phone,html:not(.motion-ready) .real-phone-copy,html:not(.motion-ready) .proof-laptop img{opacity:1;transform:none}
html:not(.motion-ready) .work-node{visibility:visible;opacity:1}

/* Primate brand and continuous product scenes. */
:root{--blue:#00897b;--void:#0b1417;--panel:#101d21;--raised:#17292d;--steel:#30474b;--pewter:#466064;--ash:#94b3b3;--fog:#b0c5c5}
.button-primary:hover{background:#00796b;border-color:#00796b}.inline-link,.inline-action{color:#66cfc1}.eyebrow{color:#8ec9c1}.site-header{background:#0b1417f5}.site-header:after{background:linear-gradient(90deg,#00897b,#b2dfdb)}.nav-mobile a:last-child{color:#80cbc4}.hero-carousel{margin-bottom:12px}.hero-carousel-controls{display:none}
.overview-stage{background:#0a201f}.overview-panel{background:#0a211ee8;border-color:#47726c}.hero-slide .overview-map{filter:brightness(.62) saturate(.75)}.team-scene .overview-map{background-position:70% 45%;scale:1.2}.insight-scene .overview-map{background-position:20% 80%;scale:1.14}.overview-chips b{border-color:#4c7771}
.team-routes{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.team-routes path{fill:none;stroke:#80cbc4;stroke-width:2;stroke-dasharray:8 9;filter:drop-shadow(0 0 6px #00897b)}.team-routes circle{fill:#e0f2f1;stroke:#00897b;stroke-width:6;filter:drop-shadow(0 0 12px #80cbc4)}.team-label{position:absolute;color:#e0f2f1;font-size:11px;font-weight:700;padding:8px 12px;background:#092823d9;border:1px solid #537c72;border-radius:100px}.team-label-a{left:64%;top:24%}.team-label-b{left:72%;top:56%}.team-label-c{left:64%;top:78%}
.insight-stack{position:absolute;left:59%;right:5%;top:26%;display:grid;gap:17px}.insight-stack>div{display:flex;align-items:center;gap:15px;padding:20px 17px;border:1px solid #48766c;border-radius:14px;background:#0b2622ef;box-shadow:0 16px 30px #0005}.insight-stack i{font-style:normal;color:#80cbc4;font-size:26px}.insight-stack span{font-size:10px;color:#a1c7bf}.insight-stack strong{display:block;color:#fff;font-size:14px;margin-top:4px}.insight-stack b{margin-left:auto;color:#80cbc4}
.geo-zone{opacity:0;transform:scale(.55);transform-box:fill-box;transform-origin:center;transition:opacity .45s,transform .7s cubic-bezier(.16,1,.3,1)}.geo-zone.zone-on{opacity:1;transform:scale(1)}.geo-demo .geo-polygon{display:none}.geo-demo.mode-polygon .geo-polygon{display:block}.geo-demo.mode-polygon .geo-circle{display:none}.geo-demo .geo-center{animation:none!important}.geo-map .geo-circle,.geo-map .geo-polygon{stroke:#80cbc4;fill:#00897b15}.geo-modes button.is-selected{background:#b2dfdb;color:#004d40}
.attendance-demo{background:radial-gradient(ellipse at 28% 48%,#174b4160,transparent 62%),#101d21}.attendance-real{perspective:1200px;padding-top:20px;padding-bottom:45px;gap:42px}.phone-rig{position:relative;perspective:1000px;isolation:isolate}.phone-rig:after{content:'';position:absolute;left:10%;right:0;bottom:-22px;height:25px;border-radius:50%;background:#000;filter:blur(13px);opacity:.6;z-index:-1}.real-phone{position:relative;height:485px;padding:14px 7px 10px;border:1px solid #b5c6c4;border-radius:35px;overflow:visible;background:linear-gradient(115deg,#ecf0ed 0%,#506361 2%,#111b1b 5%,#0a0f10 93%,#617773 98%,#d2dfda);box-shadow:inset 0 0 0 2px #26332f,inset 0 0 0 4px #090e0d,8px 5px 0 #354a45,10px 6px 0 #7f9790,14px 10px 24px #0009;transform-style:preserve-3d;opacity:1;transition:none}.phone-screen{height:100%;width:100%;overflow:hidden;border:1px solid #0b1211;border-radius:26px;background:#fff;transform:translateZ(1px)}.phone-screen img{width:100%;height:100%;object-fit:cover;object-position:top}.phone-speaker{position:absolute;top:5px;left:40%;width:20%;height:3px;background:#030505;border-radius:9px;box-shadow:0 1px 1px #9eaaa7}.phone-camera{position:absolute;top:4px;right:31%;width:5px;height:5px;border:1px solid #46645c;border-radius:50%;background:#12273c}.phone-buttons{position:absolute;left:-5px;top:90px;width:4px;height:47px;background:linear-gradient(90deg,#b3c6bf,#2e4039);border-radius:3px;box-shadow:0 58px 0 #51675f}.phone-reflection{position:absolute;inset:2px;border-radius:33px;background:linear-gradient(115deg,transparent 28%,#ffffff1a 43%,#ffffff04 50%,transparent 60%);pointer-events:none;transform:translateZ(2px)}
.proof-laptop{position:relative;isolation:isolate}.proof-laptop:before{content:'';position:absolute;inset:20% 10% 0;z-index:-1;border-radius:50%;background:radial-gradient(ellipse,#00897b45,transparent 68%);filter:blur(20px)}
@media(prefers-reduced-motion:no-preference){
.hero-slide.is-active .team-routes path{animation:route-flow 5s linear infinite}.hero-slide.is-active .team-label{animation:scene-label 6.5s both infinite}.hero-slide.is-active .team-label-b{animation-delay:.4s}.hero-slide.is-active .team-label-c{animation-delay:.8s}.hero-slide.is-active .insight-stack>div{animation:insight-card 6.5s both infinite}.hero-slide.is-active .insight-stack>div:nth-child(2){animation-delay:.5s}.hero-slide.is-active .insight-stack>div:nth-child(3){animation-delay:1s}
.attendance-demo.is-visible .real-phone{animation:phone-orbit 9s cubic-bezier(.45,0,.2,1) infinite}.phone-reflection{animation:glass-light 9s ease-in-out infinite}.phone-rig:after{animation:phone-shadow 9s ease-in-out infinite}
.proof-laptop.is-visible img{animation:laptop-float 8s ease-in-out infinite;opacity:1}.proof-laptop:before{animation:laptop-halo 8s ease-in-out infinite}
@keyframes route-flow{to{stroke-dashoffset:-170}}@keyframes scene-label{0%{opacity:0;translate:0 15px}15%,87%{opacity:1;translate:0 0}100%{opacity:0;translate:0 -8px}}@keyframes insight-card{0%{opacity:0;transform:translate(50px,15px) rotateY(-12deg)}18%,88%{opacity:1;transform:none}100%{opacity:0;transform:translateY(-10px)}}
@keyframes phone-orbit{0%,100%{transform:rotateY(-24deg) rotateX(7deg) rotateZ(-5deg) translateY(5px)}28%,48%{transform:rotateY(0) rotateX(0) rotateZ(0) translateY(-6px)}70%{transform:rotateY(17deg) rotateX(4deg) rotateZ(3deg) translateY(0)}85%{transform:rotateY(0) rotateX(0) rotateZ(0) translateY(-6px)}}@keyframes glass-light{0%,100%{opacity:.85;translate:-3px 0}35%,80%{opacity:.15;translate:3px 0}65%{opacity:.7}}@keyframes phone-shadow{50%{scale:.85;opacity:.35}}
@keyframes laptop-float{0%,100%{transform:perspective(1300px) rotateY(-7deg) rotateX(3deg) translateY(6px)}35%,55%{transform:perspective(1300px) rotateY(0) rotateX(0) translateY(-15px)}78%{transform:perspective(1300px) rotateY(5deg) rotateX(2deg) translateY(-4px)}}@keyframes laptop-halo{50%{opacity:.4;scale:.9}}
}
@media(max-width:600px){.team-routes{height:65%;top:0}.team-label{font-size:8px;padding:5px 7px}.team-label-a{top:13%;left:56%}.team-label-b{top:26%;left:61%}.team-label-c{top:34%;left:43%}.insight-stack{top:10%;left:7%;right:7%;gap:5px}.insight-stack>div{padding:7px 12px;gap:10px;border-radius:9px}.insight-stack strong{display:inline;margin-left:10px;font-size:9px}.insight-stack span{font-size:8px}.insight-stack i{font-size:16px}.insight-scene .overview-panel{top:47%}.attendance-real{gap:20px;padding-inline:20px}.real-phone{height:350px;padding:12px 4px 7px;border-radius:25px;box-shadow:inset 0 0 0 2px #26332f,5px 3px 0 #354a45,7px 4px 0 #7f9790,10px 9px 20px #0008}.phone-screen{border-radius:19px}.phone-reflection{border-radius:23px}.phone-buttons{top:65px;height:35px}}
@media(prefers-reduced-motion:reduce){.geo-zone{opacity:1;transform:none;transition:none}.real-phone,.proof-laptop img{animation:none!important;transform:none!important}.phone-reflection,.phone-rig:after,.proof-laptop:before,.team-label,.insight-stack>div{animation:none!important}}

/* Light Primate theme. Dark cartography is confined to the map illustrations. */
:root{--void:#f7faf9;--panel:#edf5f2;--raised:#fff;--overlay:#e6f1ed;--steel:#d4e3df;--pewter:#b5ccc4;--slate:#667e76;--ash:#577a70;--fog:#536b63;--silver:#77958b;--white:#12352d;--blue:#00897b}
body{background:#f7faf9;color:#536b63}.site-header{background:#ffffffed;border-bottom-color:#dce8e2}.site-header.is-scrolled{box-shadow:0 8px 30px #234a3610}.nav-desktop a{color:#365d51}.nav-desktop a:hover{color:#00897b}.eyebrow{color:#00897b}.hero-lead{color:#577167}.button-outline{color:#235344;border-color:#9bb9ad}.button-outline:hover{color:#004d40;background:#e0f2f1;border-color:#00897b}.button-primary{color:#fff}.section-lead{color:#244e40}.challenge-questions span{color:#355d50;background:#fff;border-color:#c5dcd1}.story-detail{color:#637e72}.inline-link,.inline-action{color:#00796b}.inline-link:hover{color:#004d40}
.overview-stage:after{box-shadow:#071c17 0 -125px 120px -62px inset}.overview-stage .overview-panel>strong,.overview-stage .overview-pin{color:#fff}.overview-panel>span{color:#a8cbc0}.overview-chips b{color:#d4e3df}.overview-top{color:#d7e9e2}.hero-viewport{box-shadow:0 25px 60px #204c3320;border-color:#c5d9d0}.demo-surface{border-color:#c9ded3;box-shadow:0 18px 42px #24583c0a}.geo-toolbar{background:#fff}.geo-toolbar span{color:#688276}.geo-toolbar strong{color:#164839}.geo-modes button{color:#3a6253}.geo-modes button.is-selected{background:#00897b;color:#fff;border-color:#00897b}
.attendance-demo{background:radial-gradient(ellipse at 28% 48%,#b2dfdb80,transparent 70%),#fff}.demo-header{color:#618174}.real-phone-copy>span{color:#00897b}.real-phone-copy>strong{color:#143e30}.real-phone-copy p{color:#557265}.real-phone-tags span{color:#00695c;background:#e0f2f1;border-color:#b2dfdb}.real-phone-tags span:hover{background:#b2dfdb}.phone-rig:after{opacity:.18}.work-demo{background:#fff}.work-node strong{color:#244d3d}.work-node>span{background:#00796b;color:#fff;border-color:#00897b;box-shadow:0 0 0 7px #00897b10}.work-track{background:#c4dcd0}.work-progress{background:#00897b;box-shadow:0 0 13px #00897b55}.work-progress:after{background:#00897b;box-shadow:0 0 15px #00897b88}.work-summary,.work-demo.is-visible .work-summary{background:linear-gradient(130deg,#e0f2f1,#f0f8f4);border-color:#b2dfdb}.work-summary>strong{color:#004d40}.work-summary>span{color:#547d6d}.work-summary p{color:#3f6958}
.proof-laptop img{filter:drop-shadow(0 25px 20px #28514026)}.proof-laptop:before{background:radial-gradient(ellipse,#80cbc444,transparent 68%)}.faq summary{color:#204d3b}.faq summary:after{color:#00897b}.form-panel{background:#fff;border:1px solid #d2e5d9;box-shadow:0 20px 50px #244e3509}.form-panel label{color:#2e5b46}.form-panel input,.form-panel select,.form-panel textarea{background:#f7fbf8;color:#244a38;border-color:#bdd5c7}.form-panel input::placeholder,.form-panel textarea::placeholder{color:#81998c}.pending-note,.contact-note{color:#6d8477}.footer{background:#fff}.footer a:not(.footer-logo){color:#32705a}.footer small{color:#768b7e}.menu-toggle{border-color:#bdd5c7;background:#fff}.menu-toggle span{background:#20533d}.nav-mobile:not([hidden]){background:#fff}.nav-mobile a{color:#2b5641;border-color:#dce9e1}.nav-mobile a:last-child{color:#00897b}.form-status.error{color:#a33d3d}.form-status.success{color:#00695c}

.school-terminal{background:#123e35;color:#fff;border-color:#4e8a7b}.school-terminal>div{background:#004d40;border-color:#5e9e8e}.school-record{background:#fff;border:1px solid #d4e3df}.school-hero-panel{background:#e0f2f1}.case-grid article{border:1px solid #d4e3df;background:#fff}

/* Centered carousel with neighboring scenes, and full-width device stories. */
.hero-live{overflow:hidden}.hero-carousel{position:relative;width:100vw;max-width:none;left:50%;margin-left:-50vw;margin-top:65px}.hero-viewport{height:clamp(420px,43vw,570px);border:0;border-radius:0;background:transparent;box-shadow:none;overflow:hidden}.hero-slide{left:50%;top:0;right:auto;bottom:auto;width:min(74vw,1080px);height:100%;visibility:visible;opacity:.38;transform:translateX(-50%);transition:transform .95s cubic-bezier(.22,1,.36,1),opacity .65s;cursor:pointer}.hero-slide[data-position=active]{z-index:3;opacity:1;transform:translateX(-50%);cursor:default}.hero-slide[data-position=prev]{z-index:1;transform:translateX(calc(-150% - 22px)) scale(.92)}.hero-slide[data-position=next]{z-index:1;transform:translateX(calc(50% + 22px)) scale(.92)}.hero-carousel .overview-stage{border:1px solid #8ca99b55;border-radius:24px}.carousel-arrows{display:flex;justify-content:center;gap:16px;margin-top:23px}.carousel-arrows button{display:grid;place-items:center;width:42px;height:42px;background:#fff;color:#245e4d;border:1px solid #b8d2c5;border-radius:50%;font-size:22px;transition:background .2s,transform .2s}.carousel-arrows button:hover{background:#e0f2f1;transform:translateY(-2px)}
.shared-map{position:absolute;inset:0;width:100%;height:100%;z-index:1}.shared-map image,.geo-map svg image{filter:brightness(.7) saturate(.75)}.overview-grid{z-index:2;pointer-events:none}.shared-route{fill:none;stroke:#80cbc4;stroke-width:2;stroke-dasharray:8 9;filter:drop-shadow(0 0 5px #00897b)}.point-halo{fill:#00897b80}.point-dot{fill:#e0f2f1;stroke:#39bfa9;stroke-width:3}.shared-point text{font-size:10px;font-family:var(--font);font-weight:700;fill:#fff;paint-order:stroke;stroke:#0a201f;stroke-width:3px;stroke-linejoin:round}.insight-stack{z-index:3}.overview-panel{z-index:3}.team-scene .overview-panel{top:17%;width:38%;padding:25px}.team-scene .overview-panel>strong{font-size:clamp(25px,2.8vw,38px)}
.device-section{padding:100px 0;background:radial-gradient(ellipse at 28% 50%,#d8eeea 0,transparent 59%),#f7faf9}.device-section.web-feature{background:radial-gradient(ellipse at 32% 50%,#e1f0e8 0,transparent 59%),#fff}.device-feature{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:clamp(40px,7vw,105px);max-width:1180px;margin-inline:auto}.device-feature.attendance-demo{background:none;border:0;border-radius:0;box-shadow:none;overflow:visible}.device-visual{min-width:0;display:flex;justify-content:center;align-items:center}.device-visual .phone-rig{width:280px}.device-visual .real-phone{height:620px}.device-copy{max-width:470px}.device-copy h2{font-size:clamp(42px,4.4vw,64px);margin-bottom:25px}.device-copy>p:not(.eyebrow){font-size:18px;line-height:1.7;max-width:440px}.device-copy .real-phone-tags{margin-top:28px;gap:10px}.device-copy .real-phone-tags span{font-size:12px;padding:10px 14px}.device-copy .inline-link{margin-top:28px}.web-feature .device-feature{grid-template-columns:1.25fr 1fr;max-width:1300px;gap:65px}.web-feature .proof-laptop{width:100%}.device-feature .real-phone-copy{opacity:1;transform:none}
@media(prefers-reduced-motion:no-preference){.hero-slide.is-active .shared-route{animation:route-flow 6s linear infinite}.hero-slide.is-active .point-halo{animation:map-point-pulse 3s ease-in-out var(--point-delay) infinite;transform-box:fill-box;transform-origin:center}@keyframes map-point-pulse{50%{scale:1.5;opacity:.45}}}
@media(max-width:800px){.device-feature,.web-feature .device-feature{grid-template-columns:1fr;gap:55px}.device-copy{max-width:520px;width:100%;margin-inline:auto}.device-visual .phone-rig{width:250px}.device-visual .real-phone{height:555px}.web-feature .proof-laptop{max-width:650px;margin-inline:auto}.device-section{padding:75px 0}}
@media(max-width:600px){.hero-carousel{margin-top:45px}.hero-viewport{height:440px}.hero-slide{width:84vw}.hero-slide[data-position=prev]{transform:translateX(calc(-150% - 10px)) scale(.92)}.hero-slide[data-position=next]{transform:translateX(calc(50% + 10px)) scale(.92)}.hero-carousel .overview-stage{border-radius:18px}.shared-map{height:58%;width:100%;inset:0 0 auto}.shared-map text{font-size:12px}.team-scene .overview-panel{top:47%;width:84%;padding:20px}.overview-panel{top:47%}.insight-scene .shared-map{height:100%}.insight-stack{top:11%}.carousel-arrows{margin-top:18px}.device-visual .phone-rig{width:230px}.device-visual .real-phone{height:520px;padding:14px 6px 9px;border-radius:31px}.device-visual .phone-screen{border-radius:24px}.device-copy h2{font-size:40px}.device-copy>p:not(.eyebrow){font-size:16px}.device-section{padding:65px 0}.device-copy .real-phone-tags span{font-size:11px}}
@media(prefers-reduced-motion:reduce){.hero-slide{transition:none}.point-halo,.shared-route{animation:none!important}}

.device-section .device-feature{width:min(100% - 64px,1180px)}.web-feature .device-feature{width:min(100% - 64px,1300px)}
@media(max-width:600px){.device-section .device-feature{width:calc(100% - 36px)}.hero-slide{width:80vw}.hero-slide[data-position=prev]{transform:translateX(calc(-150% - 8px)) scale(.98)}.hero-slide[data-position=next]{transform:translateX(calc(50% + 8px)) scale(.98)}}
@media(max-width:600px){.hero-carousel .overview-panel,.hero-carousel .team-scene .overview-panel,.hero-carousel .insight-scene .overview-panel{top:43%;padding:18px}.hero-carousel .overview-panel>strong{font-size:25px}}


/* Brand entrance: the actual three-node isotipo rotates through its three meanings. */
.web-feature .device-copy{order:1}
.web-feature .device-visual{order:2}
.web-feature .device-feature{grid-template-columns:1fr 1.25fr}
.brand-intro{
  --intro-size:8000px;
  --intro-visual-size:8000px;
  --intro-large-scale:1;
  --intro-final-scale:.0225;
  --intro-icon-size:calc(var(--intro-size) * var(--intro-final-scale));
  --intro-wordmark-width:clamp(290px,43vw,500px);
  --intro-gap-offset:calc(var(--intro-wordmark-width) * -.12);
  --intro-shift:calc(var(--intro-wordmark-width) / 2 - 27px);
  --intro-drop:calc(50vh + var(--intro-visual-size) * .257);
  position:fixed;z-index:200;inset:0;overflow:hidden;
  background:#fdfefd;visibility:hidden;opacity:0;pointer-events:none;
}
.show-intro body{overflow:hidden}
.show-intro .brand-intro{visibility:visible;opacity:1;pointer-events:auto}
.show-intro:not(.intro-assets-ready) .intro-mark{opacity:0!important;animation:none!important}
.intro-mark{
  position:absolute;left:50%;top:50%;z-index:1;
  width:var(--intro-size);aspect-ratio:1182/1063;
  transform-origin:center;
  transform:translate(-50%,calc(-50% + var(--intro-drop))) rotate(0) scale(var(--intro-large-scale));
}
.intro-mark img{display:block;width:100%;height:100%;object-fit:contain}
.intro-words{
  position:absolute;left:0;right:0;top:calc(96% - var(--intro-visual-size) * .063 - 65px);
  z-index:2;text-align:center;color:#0d1b2a;
  font-size:clamp(28px,4.7vw,62px);line-height:1.05;
  font-weight:700;letter-spacing:-.045em;text-transform:uppercase;
}
.intro-words span{position:absolute;left:0;right:0;opacity:0}
.intro-wordmark{
  position:absolute;z-index:2;top:50%;
  left:calc(50% - var(--intro-shift) + var(--intro-icon-size) / 2 + var(--intro-gap-offset));
  width:var(--intro-wordmark-width);height:auto;
  transform:translateY(-50%) translateX(-28px);
  opacity:0;
}
.show-intro.intro-assets-ready .intro-mark{opacity:0;animation:intro-mark-turn 6.2s cubic-bezier(.76,0,.24,1) both}
.show-intro .intro-words span:nth-child(1){animation:intro-presence 6.2s both}
.show-intro .intro-words span:nth-child(2){animation:intro-evidence 6.2s both}
.show-intro .intro-words span:nth-child(3){animation:intro-certainty 6.2s both}
.show-intro .intro-wordmark{animation:intro-reveal-name 6.2s cubic-bezier(.16,1,.3,1) both}
@keyframes intro-mark-turn{
  0%,1%{opacity:0;transform:translate(-50%,calc(-50% + var(--intro-drop))) rotate(0) scale(var(--intro-large-scale))}
  2%,14%{opacity:1;transform:translate(-50%,calc(-50% + var(--intro-drop))) rotate(0) scale(var(--intro-large-scale))}
  23%,34%{opacity:1;transform:translate(calc(-50% + var(--intro-visual-size) * .013),calc(-50% + var(--intro-drop) + var(--intro-visual-size) * .0515)) rotate(120deg) scale(var(--intro-large-scale))}
  43%{opacity:1;transform:translate(calc(-50% - var(--intro-visual-size) * .013),calc(-50% + var(--intro-drop) + var(--intro-visual-size) * .05075)) rotate(240deg) scale(var(--intro-large-scale))}
  60%,74%{opacity:1;transform:translate(calc(-50% - var(--intro-visual-size) * .013),calc(-50% + var(--intro-drop) + var(--intro-visual-size) * .05075)) rotate(360deg) scale(var(--intro-large-scale))}
  85%{opacity:1;transform:translate(-50%,-50%) rotate(360deg) scale(var(--intro-final-scale))}
  92%{opacity:1;transform:translate(calc(-50% - var(--intro-shift)),-50%) rotate(360deg) scale(var(--intro-final-scale))}
  100%{opacity:1;transform:translate(calc(-50% - var(--intro-shift)),-50%) rotate(360deg) scale(var(--intro-final-scale))}
}
@keyframes intro-presence{
  0%{opacity:0;transform:translateY(12px)}
  3%,13%{opacity:1;transform:none}
  17%,100%{opacity:0;transform:translateY(-10px)}
}
@keyframes intro-evidence{
  0%,22%{opacity:0;transform:translateY(12px)}
  25%,33%{opacity:1;transform:none}
  37%,100%{opacity:0;transform:translateY(-10px)}
}
@keyframes intro-certainty{
  0%,42%{opacity:0;transform:translateY(12px)}
  45%,69%{opacity:1;transform:none}
  76%,100%{opacity:0;transform:translateY(-10px)}
}
@keyframes intro-reveal-name{
  0%,85%{opacity:0;transform:translateY(-50%) translateX(-44px)}
  95%,100%{opacity:1;transform:translateY(-50%) translateX(0)}
}
.portal-details{background:#edf5f2}
.portal-details-head{max-width:650px;margin-bottom:40px}
.portal-details-head p:not(.eyebrow){font-size:17px}
.portal-details-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.portal-shot{overflow:hidden;border:1px solid #c6dbd0;border-radius:22px;background:#fff;box-shadow:0 15px 35px #2c5e3c0b}
.portal-shot-image{height:265px;overflow:hidden;background:#e6f1ed}
.portal-shot-image img{width:100%;height:100%;object-fit:cover;object-position:top left;transition:transform .9s cubic-bezier(.16,1,.3,1)}
.portal-shot:hover img{transform:scale(1.08)}
.portal-shot>div:last-child{padding:27px}
.portal-shot span{color:#00897b;font-size:10px;font-weight:800;letter-spacing:.12em}
.portal-shot h3{font-size:25px;margin:12px 0}
.portal-shot p{font-size:14px;margin:0}
@media(max-width:700px){
  .portal-details-grid{grid-template-columns:1fr}
  .portal-shot{width:100%;margin-inline:auto}
  .portal-shot-image{height:auto;min-height:0;aspect-ratio:1878/923;display:grid;place-items:center}
  .portal-shot-image img{width:100%;height:100%;object-fit:contain;object-position:center;transform:none}
  .brand-intro{--intro-final-scale:.018;--intro-wordmark-width:clamp(220px,60vw,285px);--intro-shift:calc(var(--intro-wordmark-width) / 2 - 27px)}
  .intro-words{top:calc(96% - var(--intro-visual-size) * .063 - 35px);font-size:clamp(27px,7vw,45px)}
  .web-feature .device-feature{grid-template-columns:1fr}
  .web-feature .device-visual{order:1;width:100%}
  .web-feature .device-copy{order:2;width:100%}
  .web-feature .proof-laptop{width:100%;max-width:620px;margin-inline:auto}
  .web-feature .proof-laptop img{width:100%;height:auto;object-fit:contain}
  .work-demo .work-path{grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 12px;padding:38px 18px 30px}
  .work-demo .work-track{display:none}
  .work-demo .work-node,.work-demo .work-node.reached{visibility:visible;opacity:1}
  .work-demo .work-node>span{width:46px;height:46px;font-size:18px}
}
@media(max-width:600px){
  .attendance-demo .phone-3d-rig{width:min(78vw,290px);height:480px;margin-inline:auto}
}
@media(prefers-reduced-motion:reduce){.brand-intro{display:none!important}}

/* Hardware pass: give the mobile demo a real, layered 3D chassis instead of a flat frame. */
.attendance-demo .phone-rig{
  perspective:1400px;
  perspective-origin:50% 46%;
  transform-style:preserve-3d;
}
.attendance-demo .real-phone{
  isolation:isolate;
  backface-visibility:visible;
  will-change:transform;
  border:1px solid #d6e4de;
  background:linear-gradient(118deg,#edf6f2 0%,#81978f 2.5%,#1c2a29 7%,#071011 15%,#0b1415 86%,#718c83 96%,#d6e5df 99%);
  box-shadow:inset 0 0 0 2px #30413c,inset 0 0 0 4px #07100e,7px 5px 0 #39524a,11px 8px 0 #89a49a,18px 16px 31px #16352b40,0 38px 55px #16453520;
}
.attendance-demo .real-phone::before{
  content:"";
  position:absolute;
  inset:9px -15px -12px 3px;
  z-index:-2;
  border-radius:38px;
  background:linear-gradient(112deg,#546d65 0%,#263c36 13%,#0b1714 44%,#12231f 84%,#678279 100%);
  box-shadow:12px 12px 18px #12312652,0 0 0 1px #244238;
  transform:translateZ(-17px);
}
.attendance-demo .real-phone::after{
  content:"";
  position:absolute;
  inset:4px;
  z-index:3;
  border:1px solid #f3fff933;
  border-radius:34px;
  box-shadow:inset 0 0 0 1px #07110e, inset 0 0 18px #d7fff41a;
  pointer-events:none;
  transform:translateZ(4px);
}
.attendance-demo .phone-screen{
  position:relative;
  z-index:1;
  transform:translateZ(8px);
  border-color:#071312;
  box-shadow:0 0 0 2px #111c1a,0 1px 0 #effff766, inset 0 0 20px #07171455;
}
.attendance-demo .phone-screen::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:2;
  pointer-events:none;
  background:linear-gradient(111deg,transparent 22%,#ffffff24 38%,transparent 50%,#ffffff0a 72%,transparent 84%);
  mix-blend-mode:screen;
  opacity:.58;
  transform:translateX(-18%);
  animation:screen-glint 9s ease-in-out infinite;
}
.attendance-demo .phone-screen img{position:relative;z-index:1}
.attendance-demo .phone-speaker,.attendance-demo .phone-camera{
  z-index:4;
  transform:translateZ(15px);
}
.attendance-demo .phone-speaker{top:7px;background:linear-gradient(90deg,#020606,#718c83 48%,#020606);box-shadow:0 1px 0 #d7e8e2aa}
.attendance-demo .phone-camera{top:6px;box-shadow:inset 0 0 0 1px #8aa89d,0 0 0 2px #0d211c,0 0 9px #70d8c566}
.attendance-demo .phone-buttons{z-index:4;transform:translateZ(2px)}
.attendance-demo .phone-reflection{z-index:5;transform:translateZ(16px);mix-blend-mode:screen;opacity:.38}
.attendance-demo.is-visible .real-phone{animation:phone-orbit-premium 11s cubic-bezier(.45,0,.2,1) infinite}
.attendance-demo.is-visible .phone-reflection{animation:phone-reflection-premium 11s ease-in-out infinite}
@keyframes phone-orbit-premium{
  0%,100%{transform:perspective(1400px) rotateY(-34deg) rotateX(8deg) rotateZ(-7deg) translate3d(-9px,8px,0) scale(.96)}
  17%{transform:perspective(1400px) rotateY(-22deg) rotateX(5deg) rotateZ(-4deg) translate3d(-4px,1px,0) scale(.98)}
  32%,48%{transform:perspective(1400px) rotateY(0) rotateX(0) rotateZ(0) translate3d(0,-8px,0) scale(1)}
  68%{transform:perspective(1400px) rotateY(27deg) rotateX(5deg) rotateZ(5deg) translate3d(7px,2px,0) scale(.98)}
  84%{transform:perspective(1400px) rotateY(10deg) rotateX(2deg) rotateZ(2deg) translate3d(3px,-4px,0) scale(.995)}
}
@keyframes phone-reflection-premium{
  0%,100%{opacity:.18;transform:translateZ(16px) translateX(-30%)}
  32%,48%{opacity:.5;transform:translateZ(16px) translateX(8%)}
  68%{opacity:.2;transform:translateZ(16px) translateX(26%)}
}
@keyframes screen-glint{0%,28%{transform:translateX(-30%);opacity:.1}45%,58%{transform:translateX(20%);opacity:.55}78%,100%{transform:translateX(34%);opacity:.12}}
@media(prefers-reduced-motion:reduce){
  .attendance-demo .phone-screen::after{animation:none;opacity:.2;transform:none}
  .attendance-demo.is-visible .real-phone,.attendance-demo.is-visible .phone-reflection{animation:none!important}
}

/* Use a true rendered product mockup for the mobile feature. The screenshot is baked into the 3D render. */
.attendance-demo .phone-mockup-real{
  width:min(100%,420px);
  min-height:690px;
  display:grid;
  place-items:center;
  perspective:1400px;
  transform-style:preserve-3d;
}
.attendance-demo .phone-mockup-real::after{display:none}
.attendance-demo .phone-mockup-3d{
  display:block;
  width:100%;
  height:auto;
  max-height:none;
  object-fit:contain;
  opacity:0;
  transform:perspective(1400px) translateY(28px) rotateY(-110deg) rotateZ(-12deg) scale(.82);
  filter:none;
  transition:opacity .7s ease;
  will-change:transform;
}
.attendance-demo.is-visible .phone-mockup-3d{
  opacity:1;
  animation:phone-mockup-orient 11s cubic-bezier(.16,1,.3,1) 1s infinite;
}
@keyframes phone-mockup-orient{
  0%{transform:perspective(1400px) translate3d(-10px,28px,0) rotateY(-110deg) rotateZ(-12deg) scale(.82)}
  15%{transform:perspective(1400px) translate3d(-5px,0,0) rotateY(-22deg) rotateZ(-5deg) scale(1.08)}
  30%{transform:perspective(1400px) translate3d(8px,-3px,0) rotateY(10deg) rotateZ(2deg) scale(1.12)}
  44%{transform:perspective(1400px) translate3d(-8px,-1px,0) rotateY(-8deg) rotateZ(-2deg) scale(1.1)}
  58%{transform:perspective(1400px) translate3d(4px,-4px,0) rotateY(5deg) rotateZ(1deg) scale(1.12)}
  72%,100%{transform:perspective(1400px) translate3d(0,0,0) rotateY(0deg) rotateZ(0deg) scale(1.12)}
}
@media(max-width:800px){
  .attendance-demo .phone-mockup-real{width:min(100%,330px);min-height:560px}
  .attendance-demo .phone-mockup-3d{transform:perspective(1100px) translateY(18px) rotateY(-110deg) rotateZ(-10deg) scale(.82)}
}
@media(prefers-reduced-motion:reduce){
  .attendance-demo .phone-mockup-3d{opacity:1;transform:none;animation:none!important;transition:none;filter:none}
}

/* Real WebGL phone mockup: the GLB has a complete chassis, front, back and side geometry. */
.attendance-demo .phone-3d-rig{
  position:relative;
  width:min(100%,370px);
  height:540px;
  display:block;
  overflow:visible;
  perspective:none;
  transform:none;
  background:transparent;
  box-shadow:none;
}
.attendance-demo .phone-3d-rig::after{display:none!important;content:none!important}
.attendance-demo .phone-3d-canvas{display:block;width:100%;height:100%;outline:0;background:transparent;cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none}
.attendance-demo .phone-3d-rig.is-dragging .phone-3d-canvas{cursor:grabbing}
.attendance-demo .phone-3d-rig.is-dragging .phone-3d-canvas{touch-action:none}
.attendance-demo .phone-3d-rig [data-phone-fallback]{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;filter:none;transform:none}
.attendance-demo .phone-3d-rig:not(.is-fallback) [data-phone-fallback]{display:none}
.attendance-demo .phone-3d-rig.is-fallback .phone-3d-canvas{display:none}
@media(max-width:800px){
  .attendance-demo .phone-3d-rig{width:min(100%,320px);height:540px}
}
@media(prefers-reduced-motion:reduce){
  .attendance-demo .phone-3d-rig{height:520px}
}

/* Keep the desktop navigation optically centered between equal side columns. */
@media(min-width:781px){
  .header-inner{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:24px}
  .header-inner .logo{justify-self:start}
  .header-inner .nav-desktop{justify-self:center;margin-inline:0}
  .header-inner .header-action{justify-self:end;margin-left:0}
}

/* Mobile layout guardrails: no horizontal overflow and comfortable touch targets. */
@media(max-width:780px){
  .wrap{width:min(100% - 32px,640px)}
  .header-inner{min-height:64px;gap:16px}
  .logo img{width:124px}
  .menu-toggle{width:42px;height:42px;flex:0 0 42px}
  .nav-mobile:not([hidden]){max-height:calc(100svh - 64px);overflow:auto;padding-inline:16px}
  .nav-mobile a{min-height:48px;display:flex;align-items:center}
  .device-feature{width:100%;}
  .device-copy{padding-inline:2px}
  .device-copy h2{font-size:clamp(38px,9vw,52px)}
  .device-copy>p:not(.eyebrow){font-size:16px;line-height:1.6}
}
@media(max-width:480px){
  .hero{padding-top:64px}
  .hero-actions{width:100%}
  .hero-carousel{margin-top:38px}
  .device-section{padding-block:58px}
  .device-feature{gap:38px}
  .attendance-demo .phone-3d-rig{width:min(86vw,310px);height:500px}
  .device-copy .real-phone-tags{flex-wrap:wrap}
}

/* Final mobile guardrails: keep every visual inside the viewport and let the
   phone gesture yield to vertical scrolling until a horizontal drag is clear. */
@media(max-width:600px){
  html,body{overflow-x:hidden}
  .attendance-demo .phone-3d-rig{width:min(78vw,290px);height:480px;margin-inline:auto}
  .attendance-demo .phone-3d-canvas{touch-action:pan-y}
  .web-feature .device-feature{grid-template-columns:1fr;gap:34px}
  .web-feature .device-visual,.web-feature .device-copy{width:100%}
  .web-feature .device-visual{order:1}
  .web-feature .device-copy{order:2}
  .web-feature .proof-laptop{max-width:620px;margin-inline:auto}
  .portal-shot-image{aspect-ratio:1878/923;height:auto;min-height:0}
  .portal-shot-image img{object-fit:contain;object-position:center}
  .work-demo .work-path{--node-size:36px;--path-top:42px;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:var(--path-top) 9px 30px}
  .work-demo .work-track{display:block;left:calc(12.5% + 8px);right:calc(12.5% + 8px);top:calc(var(--path-top) + var(--node-size)/2);height:2px}
  .work-demo .work-node{visibility:visible;opacity:.38;gap:8px}
  .work-demo .work-node.reached{visibility:visible;opacity:1}
  .work-demo .work-node>span{width:var(--node-size);height:var(--node-size);font-size:14px;box-shadow:0 0 0 5px #00897b10}
  .work-demo .work-node strong{font-size:8px;white-space:nowrap}
}
