/* Routine Controller: a schematic product study, driven by native scroll. */
.rc-section{padding-bottom:0;border-top:1px solid var(--line);background:radial-gradient(ellipse at 72% 48%,#7068a012,transparent 60%)}
.rc-status{display:inline-flex;align-items:center;gap:9px;border:1px solid #e8c59040;border-radius:99px;padding:9px 13px;color:#e8c590;font:10px var(--mono);letter-spacing:.07em}.rc-status i{width:5px;height:5px;border-radius:50%;background:currentColor}
.rc-section .section-heading{margin-bottom:12px}.rc-section .section-heading p{max-width:340px}.rc-scroll{height:270svh;position:relative}.rc-sticky{height: min(860px,100svh);min-height:640px;position:sticky;top:0;display:grid;grid-template-columns:.8fr 1.2fr;align-items:center;gap:25px}
.rc-copy{position:relative;z-index:2;max-width:370px;padding-bottom:40px}.rc-counter{font:10px var(--mono);color:var(--accent);letter-spacing:.12em}.rc-copy h3{font:500 clamp(34px,3.5vw,52px)/1.09 var(--display);letter-spacing:-.04em;margin:23px 0}.rc-copy p{font-size:14px;line-height:1.85;max-width:325px;color:#b1adbf;min-height:105px}.rc-detail{font:10px/1.7 var(--mono);color:#cdc2eb;border-left:1px solid #bca4ff70;padding-left:14px;margin:24px 0 30px}.rc-copy a{font-size:12px;color:var(--accent);border-bottom:1px solid #bca4ff55;padding-bottom:5px}
.rc-stage{height:570px;position:relative;perspective:1400px;isolation:isolate;--spread:0;--turn:0deg;--pitch:0deg;--device-size:290px}.rc-halo{position:absolute;inset:10% -8%;background:radial-gradient(ellipse,#bca4ff13,transparent 65%);filter:blur(12px)}.rc-floor{position:absolute;top:72%;left:15%;width:80%;height:90px;border-radius:50%;background:#000;filter:blur(28px);opacity:.65}
.rc-object{position:absolute;left:50%;top:48%;width:var(--device-size);height:var(--device-size);transform-style:preserve-3d;transform:translate(-50%,-50%) rotateX(var(--pitch)) rotateY(var(--turn)) rotateZ(-7deg)}
.rc-layer{position:absolute;inset:0;transform-style:preserve-3d;border-radius:25px;backface-visibility:visible;transform:translate3d(calc(var(--spread)*var(--dx)),calc(var(--spread)*var(--dy)),var(--z));box-shadow:4px 7px 0 var(--edge),8px 14px 20px #0005;will-change:transform}
.rc-display{--dx:0px;--dy:-54px;--z:0px;--edge:#22232a;background:linear-gradient(150deg,#34353c,#17181e);border:1px solid #73717d;padding:15px}.rc-ui{height:100%;background:radial-gradient(ellipse at 0 0,#3a2b3133,transparent 80%),#111215;border:1px solid #ffffff0c;border-radius:12px;padding:17px;color:#f0eeeb}.rc-ui-top{display:flex;justify-content:space-between;font:8px var(--mono);color:#aaa7a7}.rc-ui h4{font:500 23px var(--display);letter-spacing:-.04em;margin:13px 0 14px}.rc-ui h4 span{color:#b8b1a7}.rc-ui-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.rc-tile{border:1px solid #ffffff12;background:#202127;border-radius:10px;height:65px;padding:9px;display:flex;flex-direction:column;justify-content:space-between}.rc-tile b{font:10px var(--display);font-weight:500}.rc-tile small{font:7px var(--mono);color:#a29e9c}.rc-tile i{font-style:normal;font-size:17px}.rc-tile.on{background:linear-gradient(130deg,#d8b68a,#a68866);color:#201b16;border-color:#efd3ae}.rc-tile.on small{color:#40382c}.rc-ui-tabs{display:flex;justify-content:space-between;font:7px var(--mono);color:#8b8893;border-top:1px solid #ffffff0c;margin-top:13px;padding-top:11px}.rc-ui-tabs b{color:#e1c298;font-weight:400}
.rc-label{position:absolute;left:calc(50% + 160px);font:8px var(--mono);letter-spacing:.07em;white-space:nowrap;color:#bdb5ce;opacity:var(--label-opacity,0);transform:translateY(calc(var(--spread)*var(--ly)));top:46%}.rc-label::before{content:'';display:inline-block;vertical-align:middle;width:30px;height:1px;background:#8d829d66;margin-right:10px}.rc-label.l1{--ly:-160px}.rc-label.l2{--ly:-54px}.rc-label.l3{--ly:53px}.rc-label.l4{--ly:160px}
.rc-stage-note{position:absolute;bottom:0;left:0;right:0;text-align:center;font:8px/1.8 var(--mono);color:#817d90;letter-spacing:.05em}.rc-stage-note b{font-weight:400;color:#aaa2ba}
.rc-track{position:absolute;left:0;right:0;bottom:38px;display:flex;gap:8px;align-items:center}.rc-step{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:transparent;border:1px solid #ffffff20;color:#8f879f;font:10px var(--mono);transition:background .25s,color .25s}.rc-step[aria-pressed=true]{background:#bca4ff1c;color:#e2d3ff;border-color:#bca4ff88}.rc-track-hint{font:9px var(--mono);color:#8f879f;margin-left:13px}.rc-track-hint span{color:var(--accent);padding-left:10px}
@media(min-width:1500px){.rc-stage{--device-size:320px}.rc-ui h4{margin-bottom:21px}.rc-tile{height:73px}.rc-label{left:calc(50% + 180px)}}
@media(max-width:1100px){.rc-stage{--device-size:250px}.rc-ui{padding:12px}.rc-ui h4{font-size:21px;margin:12px 0}.rc-tile{height:55px;padding:7px}.rc-ui-tabs{margin-top:10px;padding-top:10px}.rc-label{display:none}.rc-sticky{grid-template-columns:.85fr 1fr}.rc-copy h3{font-size:39px}.rc-copy{max-width:310px}}
@media(max-width:760px){.rc-section .section-heading h2{font-size:41px}.rc-section .section-top{gap:15px}.rc-scroll{height:245svh}.rc-sticky{height:100svh;min-height:720px;display:flex;flex-direction:column;justify-content:flex-start;gap:0;padding-top:35px}.rc-copy{max-width:none;width:100%;padding:0}.rc-counter{font-size:8px}.rc-copy h3{font-size:31px;margin:12px 0}.rc-copy p{font-size:12px;max-width:440px;min-height:68px;margin:0}.rc-detail{font-size:9px;margin:12px 0}.rc-copy a{font-size:11px}.rc-stage{--device-size:210px;width:100%;height:370px;flex:1;min-height:325px}.rc-object{top:47%}.rc-ui{padding:9px}.rc-display{padding:10px;border-radius:19px}.rc-ui h4{font-size:19px;margin:8px 0}.rc-tile{height:44px;padding:6px;border-radius:7px}.rc-tile i{font-size:12px}.rc-tile b{font-size:8px}.rc-tile small{font-size:6px}.rc-ui-tabs{font-size:6px;margin-top:7px;padding-top:8px}.rc-layer{--dy:calc(var(--mobile-dy,0px))}.rc-shell{--mobile-dy:105px}.rc-board{--mobile-dy:35px}.rc-display{--mobile-dy:-35px}.rc-track{position:relative;bottom:auto;width:100%;padding:13px 0 24px;flex-shrink:0}.rc-track-hint{font-size:8px;margin-left:6px}.rc-stage-note{font-size:7px;bottom:-5px}.rc-plan{grid-template-columns:1fr;gap:20px;padding-top:28px}.rc-plan h3{font-size:24px}.rc-section{padding-bottom:45px}}
@media(max-height:750px) and (min-width:761px){.rc-sticky{min-height:590px}.rc-stage{height:485px;--device-size:250px}.rc-copy{padding-bottom:40px}.rc-track{bottom:20px}.rc-layer{--dy:var(--compact-dy)}.rc-shell{--compact-dy:125px}.rc-board{--compact-dy:42px}.rc-display{--compact-dy:-42px}}
.rc-static .rc-scroll{height:auto}.rc-static .rc-sticky{position:relative}.rc-static .rc-track-hint{display:none}.rc-static .rc-layer{will-change:auto}
/* Keep chapter controls above the shared fixed site navigation. */
@media(max-width:760px){.rc-track{padding-bottom:90px}.rc-stage-note{bottom:0}}
@media(prefers-reduced-motion:reduce){.rc-scroll{height:auto}.rc-sticky{position:relative}.rc-layer{will-change:auto}}

/* Measured hardware stack, revision 0.8. Display/touch/ESP32 move as one part. */
.rc-section{padding-top:65px;padding-bottom:25px}
.rc-section .section-top{margin-bottom:22px}
.rc-section .section-heading{margin-bottom:0;align-items:flex-end}
.rc-section .section-heading h2{font-size:clamp(36px,4.2vw,60px)}
.rc-section .section-heading p{font-size:12px;max-width:370px}
.rc-scroll{height:245svh}
.rc-sticky{height:calc(100svh - 38px);min-height:590px;top:0;grid-template-columns:.75fr 1.4fr;gap:10px}
.rc-stage{height:calc(100svh - 100px);max-height:730px;min-height:510px;--device-size:355px}
.rc-object{top:48%;left:48%}
.rc-layer{border-radius:15px;box-shadow:3px 5px 0 var(--edge),5px 11px 18px #0004}
.rc-layer>img{display:block;width:100%;height:100%;pointer-events:none}
.rc-display{--dy:-155px;--compact-dy:-140px;--mobile-dy:-110px;--z:20px;--dx:-6px;--edge:#8b8d8d;border-radius:14px;background:linear-gradient(120deg,#c4c7c5,#656a6d 40%,#e2e4df);padding:11px;border:1px solid #d4d6d1}
.rc-ui{position:relative;z-index:1;border-radius:8px;overflow:hidden;padding:22px;box-shadow:0 0 0 3px #24272b}
.rc-ui h4{font-size:29px;margin:18px 0 22px}
.rc-tile{height:78px;padding:11px;border-radius:9px}.rc-tile b{font-size:12px}.rc-tile small{font-size:8px}.rc-tile i{font-size:19px}
.rc-ui-tabs{margin-top:19px;padding-top:15px;font-size:8px}.rc-ui-top{font-size:9px}
.rc-module-board{position:absolute;inset:4px -11px 4px 13px;background:repeating-linear-gradient(0deg,transparent 0 15px,#b98f2944 15px 16px),#c28e2c;border:2px solid #e3b34e;border-radius:8px;transform:translateZ(-5px);box-shadow:3px 3px 0 #8b6422}
.rc-module-board span{position:absolute;right:0;top:45%;writing-mode:vertical-rl;font:5px monospace;color:#70551a}.rc-module-board i{position:absolute;right:-3px;bottom:19%;height:30px;width:10px;background:#dddacb;border:2px solid #77796e}
.rc-power{--dy:-42px;--compact-dy:-35px;--mobile-dy:-25px;--z:5px;--dx:0px;--edge:#6d716c;inset:5px;background:none;border:0;box-shadow:2px 4px 0 #6b6d66,6px 11px 22px #0006}
.rc-shell{--dy:86px;--compact-dy:80px;--mobile-dy:70px;--z:-9px;--dx:0px;--edge:#8a877a;inset:0;background:none;padding:0;border:0}.rc-shell::before{display:none}
.rc-dock{--dy:205px;--compact-dy:175px;--mobile-dy:150px;--z:-23px;--dx:0px;--edge:transparent;box-shadow:none;background:none}
.rc-label{left:calc(48% + 173px);font-size:7px;top:46%}.rc-label::before{width:18px;margin-right:8px}.rc-label.l1{--ly:-155px}.rc-label.l2{--ly:-42px}.rc-label.l3{--ly:86px}.rc-label.l4{--ly:205px}
.rc-stage-note{bottom:25px;font-size:8px}.rc-track{bottom:48px}.rc-copy{padding-bottom:10px}
@media(min-width:1500px){.rc-stage{--device-size:400px}.rc-label{left:calc(48% + 200px)}.rc-tile{height:94px}.rc-ui h4{font-size:32px}.rc-ui-tabs{margin-top:22px}}
@media(max-width:1100px){.rc-stage{--device-size:305px}.rc-sticky{grid-template-columns:.8fr 1.15fr}.rc-ui{padding:17px}.rc-ui h4{font-size:25px;margin:15px 0 18px}.rc-tile{height:64px;padding:9px}.rc-tile b{font-size:10px}.rc-tile small{font-size:7px}.rc-ui-tabs{margin-top:15px;padding-top:12px}}
@media(max-height:750px) and (min-width:761px){.rc-stage{--device-size:315px;min-height:485px;height:calc(100svh - 80px)}.rc-sticky{min-height:570px}.rc-ui{padding:18px}.rc-ui h4{font-size:25px;margin:14px 0 18px}.rc-tile{height:65px}.rc-stage-note{bottom:10px}.rc-track{bottom:45px}}
@media(max-width:760px){.rc-section{padding-top:45px}.rc-section .section-heading h2{font-size:38px}.rc-section .section-heading p{font-size:12px;margin-top:17px}.rc-scroll{height:235svh}.rc-sticky{height:100svh;min-height:760px;gap:0;padding-top:26px}.rc-stage{--device-size:245px;height:auto;min-height:355px;max-height:none}.rc-object{top:44%;left:50%}.rc-copy p{min-height:87px;font-size:12px}.rc-copy h3{font-size:30px}.rc-ui{padding:12px}.rc-display{padding:8px;border-radius:10px}.rc-ui h4{font-size:20px;margin:10px 0 12px}.rc-tile{height:48px;padding:7px}.rc-tile b{font-size:8px}.rc-tile small{font-size:6px}.rc-tile i{font-size:13px}.rc-ui-top{font-size:6px}.rc-ui-tabs{font-size:6px;margin-top:9px;padding-top:8px}.rc-stage-note{bottom:3px;font-size:7px}.rc-track{padding-bottom:85px;padding-top:10px}.rc-label{display:none}.rc-status{font-size:8px}.rc-detail{font-size:8px;margin:10px 0 13px}.rc-copy{padding-bottom:0}}
@media(max-width:760px) and (max-height:760px){.rc-sticky{min-height:700px;padding-top:20px}.rc-copy p{min-height:78px;font-size:11px;line-height:1.7}.rc-copy h3{font-size:26px;margin:9px 0}.rc-stage{--device-size:215px;min-height:290px}.rc-ui{padding:10px}.rc-ui h4{font-size:18px;margin:8px 0 10px}.rc-tile{height:40px;padding:5px}.rc-ui-tabs{margin-top:7px;padding-top:7px}.rc-track{padding-bottom:78px}.rc-stage-note{bottom:-6px}}
/* The object grows with a tall viewport instead of leaving a fixed-size island. */
@media(min-width:761px){.rc-stage{--device-size:clamp(305px,37svh,460px);height:calc(100svh - 100px);max-height:none}.rc-object{top:46%}}
.rc-layer{transform:translate3d(calc(var(--spread)*var(--dx)),calc(var(--spread)*var(--dy)*var(--travel,1)),var(--z))}
.rc-label{transform:translateY(calc(var(--spread)*var(--ly)*var(--travel,1)))}
.rc-power{--dx:105px}
@media(max-width:760px){.rc-power{--dx:45px}}
@media(min-width:761px) and (min-height:950px){.rc-label{display:none}}
@media(min-width:761px){.rc-stage-note{bottom:-5px}}
@media(max-width:760px){.rc-stage{--device-size:210px}.rc-object{top:46%}.rc-display{--mobile-dy:-90px}.rc-power{--mobile-dy:-15px;--dx:38px}.rc-shell{--mobile-dy:55px}.rc-dock{--mobile-dy:118px}.rc-ui{padding:9px}.rc-ui h4{font-size:18px;margin:8px 0 10px}.rc-tile{height:39px;padding:5px}.rc-ui-tabs{margin-top:7px;padding-top:7px}.rc-stage-note{bottom:-2px;font-size:6px}}
@media(max-width:760px){.rc-stage{--device-size:190px}.rc-object{top:42%}.rc-display{--mobile-dy:-75px}.rc-power{--mobile-dy:-10px;--dx:34px}.rc-shell{--mobile-dy:45px}.rc-dock{--mobile-dy:100px}.rc-ui{padding:8px}.rc-ui h4{font-size:16px;margin:7px 0 8px}.rc-tile{height:33px;padding:4px}.rc-tile i{font-size:11px}.rc-tile b{font-size:7px}.rc-tile small{font-size:5px}.rc-ui-tabs{font-size:5px;margin-top:6px;padding-top:6px}.rc-ui-grid{gap:5px}}
@media(max-width:760px){.rc-copy{order:0}.rc-track{order:1;bottom:auto;padding:12px 0 8px}.rc-stage{order:2;padding-bottom:80px}.rc-object{top:39%}.rc-stage-note{display:none}}
@media(min-width:761px) and (min-height:950px){.rc-ui h4{font-size:37px;margin:23px 0 30px}.rc-ui{padding:29px}.rc-tile{height:110px}.rc-tile b{font-size:14px}.rc-tile small{font-size:10px}.rc-ui-tabs{font-size:10px;margin-top:27px;padding-top:20px}.rc-label{left:calc(48% + 235px)}}
