/* V6 final experience: shared motion, ecosystem and sensor demos. */
.ticker{padding:18px 0}.ticker-segment{display:flex;flex:none;align-items:center;min-width:100vw;width:max-content}.ticker-segment span{padding-right:32px}.ticker-pause{right:24px;top:50%;min-width:78px;display:inline-flex;align-items:center;justify-content:center;line-height:1.2;clip-path:polygon(0 0,calc(100% - 7px) 0,100% 7px,100% 100%,7px 100%,0 calc(100% - 7px));box-shadow:0 0 0 12px var(--accent)}
.status-chip{display:inline-flex;align-items:center;gap:7px;width:fit-content;padding:6px 10px;font-size:11px;line-height:1.4;letter-spacing:.02em;border:1px solid #54624e;color:var(--muted);background:#1b231e}.status-chip::before{content:"";width:5px;height:5px;background:currentColor;flex:none}.status-chip.live{color:var(--accent)}.status-chip.developing{color:#e3c58c}.status-chip.planned{color:#a5b6ce;border-style:dashed}.kira-pipeline{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));padding:0;list-style:none;gap:7px;margin:28px 0 12px}.kira-pipeline li{position:relative;padding:15px 7px 12px;border:1px solid var(--line);text-align:center;color:var(--muted);background:#1c241f;clip-path:polygon(0 0,calc(100% - 8px) 0,100% 8px,100% 100%,0 100%);transition:background .25s,color .25s}.kira-pipeline svg{width:37px;height:37px;display:block;margin:0 auto 9px}.kira-pipeline span{display:block;font-size:12px;font-weight:600}.kira-pipeline small{display:block;margin-top:5px;font-size:10px;line-height:1.4}.kira-pipeline [data-state=active]{background:#34412a;color:var(--accent);border-color:var(--accent)}.kira-pipeline [data-state=done]{border-color:#748960;color:#d0dcbd}.response-box>.status-chip{margin-bottom:22px}.response-box #kira-response{min-height:125px;font-size:17px;color:var(--text)}.response-box small{display:block;line-height:1.7;color:var(--muted)}
.sensor-demo-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(250px,1fr);gap:28px;margin-top:25px}.sensor-stage{background:linear-gradient(145deg,#222c25,#17201a);border:1px solid var(--line);padding:22px 24px;min-width:0;overflow:hidden;clip-path:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,0 100%)}.sensor-scene{width:100%;height:auto;max-height:350px;display:block;overflow:visible}.sensor-stage-caption{display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:20px}.sensor-stage-caption strong{font:500 clamp(23px,3vw,36px)/1.2 var(--font-display);color:var(--accent)}.sensor-stage-caption>span:last-child{font-size:12px;color:var(--muted)}.sensor-stage-caption .eyebrow{width:100%}.sensor-stage p{font-size:14px;line-height:1.7;margin:14px 0;max-width:65ch}.sensor-stage .experiment-actions{gap:10px}.sensor-aside{min-width:0}.sensor-aside>.status-chip{margin-bottom:22px}.sensor-aside label{display:block;font-size:13px;margin:10px 0}.sensor-aside output{display:block;font-size:12px;color:var(--accent);margin:8px 0 20px}.sensor-aside input[type=range]{width:100%;accent-color:var(--accent)}.sensor-aside .small-note{margin-top:15px}.delivery-card{padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:18px 0}.delivery-card span,.delivery-card small{display:block;font-size:12px;color:var(--muted);line-height:1.6}.delivery-card strong{display:block;font:500 26px var(--font-display);color:var(--text);margin:10px 0}.fault-control{width:100%;font-size:12px}.fault-control[aria-pressed=true]{border-color:#e3c58c;color:#e3c58c;background:#332e23}.sensor-details{margin:20px 0;border-top:1px solid var(--line);padding-top:12px}.sensor-details summary{font-size:13px;cursor:pointer;min-height:44px;display:list-item;align-content:center;color:var(--text)}.sensor-details[open]{padding-bottom:14px}.sensor-details .budget-result{margin:14px 0}.sensor-details input[type=number]{max-width:100%;width:100%;background:var(--bg);border:1px solid var(--line);padding:9px}.sensor-details select{max-width:100%}.sensor-details .bed-load-diagram{grid-template-columns:1fr;margin:12px 0}.sensor-details .bed-load-diagram>div{padding:14px}.sensor-details #bed-chart{width:100%;height:auto}.sensor-aside>p{font-size:14px}.signal-chain{display:flex;gap:8px;flex-wrap:wrap;font-size:12px;align-items:center}.signal-chain strong{padding:8px;background:var(--accent);color:var(--bg)}.bed-person-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:20px}.bed-person-controls button{font-size:12px}.bed-person-controls [aria-pressed=true]{background:#2e3d29;border-color:#72865d;color:var(--accent)}.bed-person{opacity:0;transition:opacity .4s,transform .4s}.bed-stage[data-people="1"] .bed-person-left,.bed-stage[data-people="2"] .bed-person{opacity:1}.bed-scene .bed-sensors{opacity:.5;transition:opacity .3s}.sensor-stage[data-people="1"] .bed-person-left,.sensor-stage[data-people="2"] .bed-person{opacity:1}.sensor-stage[data-people="1"] .bed-sensors,.sensor-stage[data-people="2"] .bed-sensors{opacity:1}.plant-sleep,.plant-radio,.sample-route{opacity:.18}.sensor-stage[data-phase=sleep] .plant-sleep{opacity:1}.sensor-stage[data-phase=send] .plant-radio,.sensor-stage[data-phase=send] .sample-route{opacity:1}.sensor-stage[data-phase=sample] .sensor-led,.sensor-stage[data-phase=send] .sensor-led{filter:drop-shadow(0 0 5px #d0fa74)}.soil-moisture{transition:y .5s,height .5s}.sensor-stage[data-phase=send] .plant-destination{color:var(--accent)}
.ecosystem-legend{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}.ecosystem-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(230px,1fr);gap:24px}.ecosystem-map{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 108px minmax(0,1fr);gap:24px;align-items:center;background:linear-gradient(145deg,#1f2922,#151d18);border:1px solid var(--line);padding:25px;min-height:510px;overflow:hidden}.ecosystem-routes{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.ecosystem-routes path{stroke:#45553e;stroke-width:2;fill:none}.ecosystem-routes path.active{stroke:var(--accent);stroke-width:3}.ecosystem-column{position:relative;z-index:1;display:flex;flex-direction:column;gap:25px}.map-family>.eyebrow{margin-bottom:9px;letter-spacing:.07em;font-size:10px}.map-family>div{display:grid;gap:6px}.map-node{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding:10px 12px;min-height:40px;background:#1c261f;border:1px solid #465341;color:var(--text);font-size:12px;text-align:left;clip-path:polygon(0 0,calc(100% - 6px) 0,100% 6px,100% 100%,0 100%)}.map-node small{width:5px;height:5px;flex:none;background:#a5b6ce}.map-node[data-status=live] small{background:var(--accent)}.map-node[data-status=developing] small{background:#e3c58c}.map-node[aria-pressed=true]{border-color:var(--accent);background:#33412b;color:var(--accent)}.map-hub{position:relative;z-index:1;color:var(--bg);background:var(--accent);width:108px;min-height:125px;clip-path:polygon(50% 0,100% 24%,100% 76%,50% 100%,0 76%,0 24%);padding:25px 8px}.map-hub span{display:block;font:600 29px var(--font-display)}.map-hub small{display:block;font-size:10px;line-height:1.4;margin-top:7px}.ecosystem-info{border-top:2px solid var(--accent);padding:20px 0;min-width:0}.ecosystem-info h4{margin:20px 0 12px}.ecosystem-info p{font-size:14px}.map-links{display:flex;flex-wrap:wrap;gap:7px}.map-links span{padding:5px 8px;font-size:11px;background:#253026;border:1px solid var(--line);color:var(--muted)}.ecosystem-stories{margin-top:28px;padding-top:24px;border-top:1px solid var(--line)}.story-heading{display:flex;justify-content:space-between;gap:15px;align-items:center}.story-heading h4{margin:0}.story-tabs{display:flex;gap:8px;margin:20px 0;flex-wrap:wrap}.story-tabs [aria-pressed=true]{background:var(--accent);color:var(--bg);border-color:var(--accent)}.story-stage{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(200px,1fr);gap:28px;padding:24px;background:#1a241d;border:1px solid var(--line)}.story-stage h4{margin:12px 0}.story-stage p{font-size:14px;margin:12px 0}.story-steps{list-style:none;padding:0;margin:0;counter-reset:story}.story-steps li{counter-increment:story;position:relative;margin-bottom:9px;padding:10px 10px 10px 37px;border:1px solid var(--line);color:var(--muted);font-size:12px}.story-steps li::before{content:counter(story);position:absolute;left:13px;color:var(--muted)}.story-steps li[data-state=current]{color:var(--accent);border-color:#76875c}.story-steps li[data-state=done]{color:var(--text)}.story-visual{min-height:45px;margin:14px 0}.story-phone{border:1px solid #6f825d;padding:14px;clip-path:polygon(0 0,calc(100% - 10px) 0,100% 10px,100% 100%,0 100%);background:#243020;font-size:13px;color:var(--text)}.story-phone strong{display:block;margin-bottom:6px}.story-rooms{display:flex;gap:8px}.story-room{flex:1;position:relative;padding:17px 10px;border:1px solid var(--line);color:var(--muted);font-size:11px;min-height:80px}.story-room.active{color:var(--accent);border-color:var(--accent);background:#2c3b26}.story-room .person-dot{display:block;width:13px;height:13px;border-radius:50%;background:var(--accent);margin-top:12px}.story-basket{display:grid;gap:7px;font-size:12px}.story-basket span{display:flex;justify-content:space-between;gap:15px;padding:8px;border-bottom:1px solid var(--line)}
@media(prefers-reduced-motion:no-preference){.sensor-stage[data-moving=true] .bed-person>g{animation:bed-demo-move .6s ease-in-out infinite}.sensor-stage[data-phase=send] .sample-route{animation:data-route 1s linear infinite}.ecosystem-routes path.active{stroke-dasharray:7 6;animation:data-route 1.5s linear 2}}@keyframes bed-demo-move{50%{transform:translateY(3px)}}@keyframes data-route{to{stroke-dashoffset:-26}}
@media(max-width:1050px){.ecosystem-layout{grid-template-columns:1fr}.ecosystem-info{padding:16px;background:#1b241d;border-top:1px solid var(--line)}.ecosystem-info h4{margin:12px 0}.kira-layout{grid-template-columns:1fr}}
@media(max-width:760px){.sensor-demo-layout{grid-template-columns:1fr}.sensor-stage{padding:15px}.sensor-scene{max-height:290px}.sensor-aside{padding-top:4px}.sensor-aside>.status-chip{margin-bottom:12px}.ecosystem-map{grid-template-columns:minmax(0,1fr) 70px minmax(0,1fr);padding:12px;gap:10px;min-height:450px}.map-hub{width:70px;min-height:96px;padding:20px 5px}.map-hub span{font-size:21px}.map-hub small{font-size:8px}.map-node{font-size:10px;padding:8px 7px;min-height:36px}.map-family>.eyebrow{font-size:8px;letter-spacing:0}.ecosystem-column{gap:15px}.story-stage{grid-template-columns:1fr;padding:17px;gap:20px}.story-heading{display:block}.story-tabs button{font-size:12px}.kira-pipeline{gap:4px}.kira-pipeline li{padding:12px 4px}.kira-pipeline small{font-size:9px}.kira-pipeline span{font-size:10px}.kira-pipeline svg{width:28px;height:28px}.ticker-pause{right:12px;font-size:10px;min-width:64px;padding:9px}.sensor-details .bed-load-diagram{grid-template-columns:repeat(2,minmax(0,1fr))}.bed-card-scene .bed-person{opacity:0}}
@media(prefers-reduced-motion:reduce){.sensor-stage *, .ecosystem-routes path{animation:none!important;transition:none!important}}

.sensor-stage[data-people="1"][data-side="right"] .bed-person-left{opacity:0}.sensor-stage[data-people="1"][data-side="right"] .bed-person-right{opacity:1}
/* Overview selection and event playback have separate visual scopes. */
.map-section-label{margin-top:26px}.map-section-label p{margin:8px 0 0}.map-node[aria-pressed=true]{border-color:var(--accent);background:#33412b;color:var(--accent)}.ecosystem-stories{border-top:1px solid #627f82;padding:24px;background:linear-gradient(130deg,#1c2928,#17201c)}.ecosystem-stories .story-heading h4{color:#9dc6c9}.story-network-wrap{margin:20px 0 14px}.story-network-wrap>.eyebrow{font-size:10px;color:#9dc6c9}.story-network{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.story-system{display:inline-flex;padding:8px 10px;border:1px solid #527e7f;background:#233838;color:#b4d9d9;font-size:12px}.bed-person{pointer-events:none}.plant-probe{transition:filter .3s}.sensor-stage[data-phase=sample] .plant-probe{filter:drop-shadow(0 0 3px #d0fa74)}.plant-hardware-note{font-size:12px;line-height:1.6;color:var(--muted)}.plant-hardware-note a{text-decoration:underline;text-underline-offset:3px}
@media(max-width:760px){.ecosystem-stories{padding:17px 12px}.story-system{font-size:10px;padding:7px}.story-network-wrap>.eyebrow{font-size:9px}}

.bed-future{margin:20px 0;padding:15px 0;border-top:1px solid var(--line)}.bed-future p{font-size:13px;line-height:1.65;margin:10px 0 0}.plant-roots{opacity:.8}.brimnes-frame-details{pointer-events:none}

/* BedSense: one consistent overhead plane; each side responds independently. */
.bed-scene .bed-sensors{opacity:.22;transition:opacity .35s,filter .35s}
.sensor-stage[data-people="1"] .bed-sensors,.sensor-stage[data-people="2"] .bed-sensors{opacity:.22}
.sensor-stage[data-people="1"][data-side="left"] .bed-sensors-left,.sensor-stage[data-people="1"][data-side="right"] .bed-sensors-right,.sensor-stage[data-people="2"] .bed-sensors{opacity:1;filter:drop-shadow(0 0 3px #b8db77)}
.sensor-stage[data-moving="true"] .bed-sensors{animation:bed-pressure .6s ease-in-out infinite}
@keyframes bed-pressure{50%{opacity:.45}}
@media(prefers-reduced-motion:reduce){.sensor-stage[data-moving="true"] .bed-sensors{animation:none}}

.semester-section .section-heading{max-width:850px}.semester-art{background:#202a23;display:flex;align-items:center;justify-content:center;padding:20px}.semester-art img{display:block;width:100%;height:100%;object-fit:contain;transition:transform .3s}.semester-card:hover .semester-art img{transform:scale(1.02)}.semester-number{position:absolute;left:14px;top:12px;font:500 17px var(--font-display);padding:6px 10px;background:#141c15;color:var(--accent);border:1px solid #4a5b42}.semester-card .project-info .eyebrow{display:block;font-size:9px;margin-bottom:10px}.semester-card .project-info h3{font-size:clamp(20px,2vw,27px)}.semester-card .project-info p{max-width:48ch;line-height:1.65}#detail-semester[hidden]{display:none}#detail-semester figure{margin:25px 0;background:#202a23;padding:18px;border:1px solid var(--line)}#detail-study-image{display:block;max-width:100%;width:100%;height:auto;max-height:360px;object-fit:contain}#detail-study-caption{font-size:12px;color:var(--muted);margin-top:12px}#detail-semester h3{color:var(--accent)}#detail-contribution{border-left:2px solid var(--accent);padding-left:16px;line-height:1.7}
@media(max-width:520px){.semester-section .project-grid{grid-template-columns:1fr}.semester-art{height:210px}}

/* Rotate the original Smart Locks photo in the presentation, without resampling it. */
.rotated-study-photo{position:relative;aspect-ratio:750 / 367;width:100%;margin:auto;overflow:hidden}
.semester-art .rotated-study-photo{width:min(100%,388px)}
.rotated-study-photo img,#detail-study-frame.rotated-study-photo img{position:absolute;top:50%;left:50%;width:48.933333%;height:204.359673%;max-width:none;max-height:none;object-fit:contain;transform:translate(-50%,-50%) rotate(-90deg)}
.semester-card:hover .rotated-study-photo img{transform:translate(-50%,-50%) rotate(-90deg) scale(1.02)}
@media(max-width:760px){.semester-art .rotated-study-photo{width:min(100%,296px)}}
@media(max-width:520px){.semester-art .rotated-study-photo{width:min(100%,347px)}}

.kira-pipeline li{position:relative;overflow:hidden}.kira-pipeline .kira-timing{display:block;font:500 11px var(--font-display);color:var(--muted);margin-top:8px}.kira-pipeline .kira-timing.measured{color:var(--accent)}.kira-pipeline[data-running="true"] li[data-state="active"][data-kira-stage="tts"]::after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:var(--accent);transform-origin:left;animation:kira-measured-fill var(--kira-stage-duration) linear forwards}.kira-measurement-details{margin:15px 0;border-top:1px solid var(--line);padding-top:12px}.kira-measurement-details summary{font-size:12px;cursor:pointer;min-height:44px;align-content:center}.kira-measurement-details dl{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px 15px;font-size:12px;margin:14px 0}.kira-measurement-details dd{margin:0;color:var(--accent);font-variant-numeric:tabular-nums}.kira-measurement-details p{font-size:12px;line-height:1.65;color:var(--muted)}@keyframes kira-measured-fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}@media(prefers-reduced-motion:reduce){.kira-pipeline li::after{animation:none!important}}

.svg-arx-packet,.svg-rack-packet{opacity:0}

.kira-pipeline li[data-kira-stage="speaker"]::after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background:#9cc9c5;transform-origin:left;transform:scaleX(var(--played,0))}
@media(max-width:420px){.kira-pipeline .kira-timing{font-size:9px}}

@media(prefers-reduced-motion:no-preference){.ticker-track{animation-duration:120s}}
