/* V7 keeps the existing polygon identity, with results ahead of decoration. */
:root{--muted:#bcc6ba;--line:#455247}html{scroll-padding-top:28px}.eyebrow{font-size:12px}.small-note,figcaption{font-size:13px!important;line-height:1.65}.tags span{font-size:12px}.preview-note{font-size:12px}.hero{padding:48px 0 56px;grid-template-columns:1.25fr .85fr}.hero h1{font-size:clamp(42px,5.1vw,75px)}.hero-rack-link{background:radial-gradient(ellipse at 50% 45%,#465547,#29372e 78%)}.hero-rack-link img{filter:brightness(1.24);max-height:365px}.hero-rack-bottom strong{font-size:23px}.hero-disciplines{margin-top:26px;font-size:12px}.ticker{transform:rotate(-1deg);padding:10px 0}.ticker-track span{font-size:15px}.ticker-track b{margin:0 18px}.ticker-pause{right:16px;min-height:36px;padding:8px 12px}.ticker-track{animation-duration:120s}.ticker[data-paused=true]{padding-right:72px}
.main-case-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.main-case-card{display:flex;flex-direction:column;min-width:0;background:var(--panel);border:1px solid var(--line);clip-path:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,0 100%);transition:border-color .2s}.main-case-card:hover{border-color:var(--accent)}.main-case-card:focus-visible{outline-offset:2px;clip-path:none}.case-card-image{height:210px;position:relative;margin:0;background:#26332b;overflow:hidden}.case-card-image img{width:100%;height:100%;object-fit:cover;object-position:center}.case-card-image.rotated-study-photo{aspect-ratio:auto}.case-card-image.rotated-study-photo img{position:absolute;left:50%;top:50%;width:210px;height:429px;object-fit:contain;transform:translate(-50%,-50%) rotate(-90deg)}.case-card-image figcaption{position:absolute;bottom:0;left:0;right:0;background:#131817ed;padding:8px 14px;color:var(--text);font-size:12px!important}.main-case-copy{padding:22px;display:flex;flex-direction:column;flex:1}.main-case-copy h3{font-size:27px;margin:12px 0}.main-case-copy>p{font-size:14px;line-height:1.65}.main-case-copy dl{margin:14px 0 22px}.main-case-copy dt{font-size:12px;color:var(--text);margin-top:14px}.main-case-copy dd{font-size:14px;line-height:1.6;color:var(--muted);margin:5px 0 0}.case-open{display:block;color:var(--accent);font-size:14px;margin-top:auto}.semester-index{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}.semester-index>a{border-top:1px solid var(--line);padding:20px 0;position:relative}.semester-index h3{font-size:22px}.semester-index p{font-size:14px;line-height:1.6}.semester-index>a>span:last-child{color:var(--accent)}.semester-index .eyebrow{letter-spacing:.04em}.semester-section .section-heading h2{font-size:clamp(27px,3vw,39px)}.semester-section{padding-top:55px;padding-bottom:45px}
#homelab .project-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}#homelab [data-homelab-lead]{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:center;border:1px solid var(--line);padding:22px}#homelab [data-homelab-lead] .project-info{grid-column:2;grid-row:1;padding:0}#homelab [data-homelab-lead] .tags,#homelab [data-homelab-lead]>.project-maturity{grid-column:2}#homelab [data-homelab-lead] .homelab-racks{grid-row:1/4;grid-column:1;height:310px;background:radial-gradient(ellipse,#445447,#26332b)}.homelab-racks img{width:100%;height:100%;object-fit:contain;filter:brightness(1.2)}#homelab .project-art{height:168px}#homelab .project-info h3{font-size:23px}#homelab .project-info p{font-size:14px}#homelab .tags{display:none}.project-maturity{font-size:12px!important;font-weight:500;color:var(--text);margin:8px 0 14px;padding-left:10px;border-left:2px solid var(--line)}.app-card .project-maturity{margin:10px 0 0}.app-section{padding-top:56px}.app-section .section-heading h2{font-size:clamp(29px,3.3vw,43px)}.app-grid{gap:18px}
.case-page{padding-top:36px;padding-bottom:70px;max-width:1200px}.case-page>article{margin-top:30px}.case-header{display:block;padding:0;border:0;min-height:0;max-width:none}.case-header h1{font-size:clamp(38px,5.5vw,68px);margin:20px 0}.case-intro{max-width:70ch;font-size:18px}.case-facts{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin:36px 0 48px;padding:26px;background:var(--panel);border:1px solid var(--line)}.case-fact h2{font-size:19px;margin:0 0 12px}.case-fact p{font-size:16px;margin:0}.case-body{display:grid;grid-template-columns:1fr 1fr;gap:42px;align-items:start}.case-photo{margin:0}.case-photo img{display:block;width:100%;max-height:420px;object-fit:contain;background:var(--panel)}.case-photo figcaption{margin-top:12px;color:var(--muted)}.case-body h2,.case-system h2,.case-test h2{font-size:25px}.case-body li{color:var(--muted);margin-bottom:10px}.case-body ul{padding-left:20px}.case-system,.case-test{max-width:80ch;margin:40px 0}.case-flow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;list-style:none;padding:0;counter-reset:flow}.case-flow li{counter-increment:flow;background:var(--panel);padding:16px;line-height:1.6;font-size:14px;border:1px solid var(--line)}.case-flow li:before{content:counter(flow,decimal-leading-zero) " / ";display:block;color:var(--accent);font-size:12px;margin-bottom:8px}.case-source{padding:18px 0;border-top:1px solid var(--line);max-width:80ch}.case-source summary{font-size:15px;cursor:pointer}.inline-case{position:static;display:block;width:100%;max-width:none;max-height:none;margin:36px 0 0;padding:0;border:0;background:transparent;overflow:visible;overscroll-behavior:auto}.inline-case>.detail-top,.inline-case>#app-title,.inline-case>#app-summary,.inline-case>#app-maturity{display:none}.inline-case #app-panel{overflow:visible;max-height:none;padding:0}.inline-case .app-case-layout{grid-template-columns:1fr}.inline-case .app-system-visual{display:none}.inline-case .app-case-layout>div:first-child{display:none}.inline-case .app-case-layout h3{font-size:25px}.inline-case .app-points{max-width:80ch}.inline-case .pipeline-demo{max-height:none}.source-excerpt{max-width:100%;overflow:auto;padding:20px;background:#101612;border:1px solid var(--line);font-size:13px;line-height:1.7;tab-size:4}.app-system-visual:has(.ring-symbol){padding:20px}.ring-symbol{width:90px!important;height:90px!important;margin:16px auto!important}.ring-project-status{font-size:13px}.app-demo-surface .demo-title{font-size:26px}.app-demo-surface .demo-intro{font-size:14px;margin-bottom:16px}.ring-bytes{gap:4px}.ring-bytes small{font-size:10px}.ring-bytes strong{font-size:12px}
.cad-static{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(ellipse,#37483c,#19251e);padding:24px}.cad-static img{display:block;width:100%;height:75%;max-height:440px;object-fit:contain}.cad-static figcaption{color:var(--text);margin:14px auto 10px;max-width:62ch;text-align:center}.cad-static button{margin:0 auto}.cad-viewport{position:relative}.cad-static-loading{opacity:.8}.cad-static-loading button{display:none}#cad-status{font-size:13px}#plant-power-concept{max-width:72ch}#lab h2{font-size:clamp(30px,3.6vw,48px)}
@media(min-width:1025px){.app-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1024px){.main-case-grid{grid-template-columns:1fr}.main-case-card{display:grid;grid-template-columns:1fr 1.35fr}.case-card-image{height:100%;min-height:300px}.case-card-image.rotated-study-photo img{width:300px;height:613px}.main-case-copy dl{display:grid;grid-template-columns:1fr;gap:0}.semester-index{grid-template-columns:1fr 1fr}.hero{grid-template-columns:1.2fr .8fr;gap:4%}.hero h1{font-size:clamp(40px,5.3vw,61px)}header nav{gap:15px}#homelab .project-grid{grid-template-columns:1fr 1fr}.case-body{gap:25px}.case-facts{gap:25px}}
@media(max-width:768px){header{flex-wrap:wrap;padding-top:15px;padding-bottom:12px;gap:12px}.brand{margin-right:auto}header nav{order:3;width:100%;overflow:auto;gap:22px;margin-left:0;white-space:nowrap}#language{margin-left:auto}.hero{grid-template-columns:1fr}.hero-rack-link{max-width:490px;width:100%;margin:auto}.hero-rack-link img{max-height:310px}.hero h1{font-size:clamp(44px,8vw,65px)}.hero-copy>p{max-width:62ch}.case-body{grid-template-columns:1fr}.case-photo{max-width:560px}.case-facts{gap:20px;padding:20px}.case-header h1{font-size:45px}.section{padding-top:55px;padding-bottom:55px}.main-case-copy h3{font-size:25px}.case-card-image{min-height:260px}.case-card-image.rotated-study-photo img{width:260px;height:531px}#homelab [data-homelab-lead]{grid-template-columns:1fr}#homelab [data-homelab-lead] .homelab-racks{grid-column:auto;grid-row:auto;height:260px}#homelab [data-homelab-lead] .project-info,#homelab [data-homelab-lead]>.project-maturity{grid-column:auto;grid-row:auto}#homelab [data-homelab-lead] .tags{display:none}.inline-case .pipeline-explanation{grid-template-columns:1fr}}
@media(max-width:520px){.main-case-card{display:flex}.case-card-image{height:235px;min-height:0}.case-card-image.rotated-study-photo img{width:235px;height:480px}.case-card-image:not(.rotated-study-photo) img{object-fit:contain}.main-case-copy{padding:20px}.case-facts,.case-flow{grid-template-columns:1fr}.case-header h1{font-size:38px}.case-intro{font-size:16px}.semester-index{grid-template-columns:1fr}.semester-index>a{padding:14px 0}.semester-index h3{font-size:22px;margin:10px 0}.semester-index p{margin:8px 0}#homelab .project-grid{grid-template-columns:1fr 1fr;gap:22px 16px}#homelab .project-art{height:118px}#homelab .project-info h3{font-size:20px}#homelab .project-info .eyebrow{font-size:10px}#homelab .project-info p{font-size:13px}#homelab .project-info{padding-top:16px}#homelab [data-homelab-lead]{padding:16px}.cad-static{padding:14px}.cad-static figcaption{font-size:12px!important}.inline-case .app-tabs{gap:6px}.inline-case .app-tabs button{font-size:13px;padding:12px}.case-page{padding-left:5vw;padding-right:5vw}.source-excerpt{font-size:11px;padding:12px}.ring-bytes{grid-template-columns:repeat(8,minmax(0,1fr))}.hero-actions{gap:18px}.hero-disciplines{gap:10px}.hero-disciplines span+span{padding-left:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.ticker-track{animation:none!important}*,*::before,*::after{scroll-behavior:auto!important}}

.cad-static{margin:0;z-index:2}.cad-stage:has(.cad-static:not([hidden])) #cad-status{z-index:3;top:10px;left:20px;right:20px;margin:0;font-size:12px}.cad-stage:has(.cad-static:not([hidden])) .cad-views{visibility:hidden}.cad-static img{filter:brightness(1.18)}

#homelab .project-art svg{opacity:1}#app-dialog:not(.inline-case){max-height:88dvh}#app-panel{max-height:none;overflow:visible}#app-dialog{overscroll-behavior:contain}

.case-result{color:var(--text);font-size:15px;line-height:1.7;border-bottom:1px solid var(--line);padding-bottom:20px}

.pipeline-card-image{background:radial-gradient(ellipse at center,#334638,#202d25)}.pipeline-card-image svg{display:block;width:100%;height:calc(100% - 44px);min-height:175px}.pipeline-card-image figcaption{font-size:11px!important;line-height:1.45;min-height:44px;padding:7px 12px}.art-radar{background:#26352c}.radar-sweep{transform-origin:126px 78px}.radar-track-ring{transform-box:fill-box;transform-origin:center}.project-card:hover .radar-sweep,.project-card:focus-visible .radar-sweep{animation:radar-scan 4s ease-in-out infinite}.project-card:hover .radar-track-ring,.project-card:focus-visible .radar-track-ring{animation:radar-presence 2.4s ease-in-out infinite}.project-card:hover .radar-track-second,.project-card:focus-visible .radar-track-second{animation-delay:.8s}@keyframes radar-scan{50%{transform:rotate(-16deg)}}@keyframes radar-presence{50%{opacity:.35;transform:scale(1.12)}}@media(max-width:1024px) and (min-width:521px){.pipeline-card-image svg{height:calc(100% - 55px);min-height:230px}.pipeline-card-image figcaption{min-height:55px}}@media(prefers-reduced-motion:reduce){.project-card .radar-sweep,.project-card .radar-track-ring{animation:none!important}}

/* Ownership, maturity and example states are separate signals. */
.project-ownership{color:#c9dcc1;font:500 .72rem/1.5 var(--mono,monospace);margin:.6rem 0;overflow-wrap:anywhere}
.main-case-copy>.project-ownership{order:-1}.main-case-copy{display:flex;flex-direction:column}.project-info+.project-maturity+.project-ownership{margin-top:0}
.radar-case-extra{margin:1.5rem 0}.radar-check-example{padding:1rem;border:1px solid #526858;background:#1b2b21}.radar-check-steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.75rem;list-style:none;padding:0;margin:1rem 0}.radar-check-steps li{display:flex;flex-direction:column;gap:.5rem;font-size:.85rem;line-height:1.45}.step-number{color:#d0fa74;font-family:monospace}.radar-check-steps li+li{border-left:1px solid #526858;padding-left:.65rem}.radar-check-steps li:last-child{color:#d0fa74}.source-excerpt{overflow:auto;max-width:100%;font-size:.75rem}.detail-flow{flex-wrap:wrap}
@media(max-width:768px){.radar-check-steps{grid-template-columns:1fr}.radar-check-steps li{flex-direction:row}.radar-check-steps li+li{border-left:0;border-top:1px solid #526858;padding:.65rem 0 0}.radar-check-steps .step-number{flex:0 0 2rem}#project-dialog:has(.radar-case-extra:not([hidden])) .detail-flow{flex-direction:column;align-items:stretch}#project-dialog:has(.radar-case-extra:not([hidden])) .flow-connector{transform:rotate(90deg);align-self:center}}

.project-info .radar-card-summary{font-size:.8rem;line-height:1.5;color:#c9dcc1;margin-top:.55rem}

/* Keep ownership out of the title/plus row. Each label retains its own width. */
#homelab .project-card:not([data-homelab-lead]){display:flex;flex-direction:column;justify-content:flex-start;align-content:start}
#homelab .project-art{flex:none;width:100%}
#homelab .project-info{flex:1;align-items:flex-start}
#homelab .project-info>div{min-width:0;flex:1}
#homelab .open-icon{flex:none;line-height:1}
.project-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:5px 14px;border-left:2px solid var(--line);padding-left:10px;margin:8px 0 14px}
.project-meta .project-ownership,.project-meta .project-maturity{flex:0 0 auto;white-space:nowrap;margin:0;padding:0;border:0;font:500 12px/1.5 var(--font-display);overflow-wrap:normal}
#homelab [data-homelab-lead]>.project-meta{grid-column:2}
#homelab [data-homelab-lead] .homelab-racks{grid-row:1/3}
.project-card:is(:hover,:focus-visible) .radar-node-led{animation:radar-led 3s ease-in-out infinite}
@keyframes radar-led{50%{opacity:.35}}
@media(max-width:768px){#homelab [data-homelab-lead]>.project-meta{grid-column:auto}#homelab [data-homelab-lead] .homelab-racks{grid-row:auto}}
@media(prefers-reduced-motion:reduce){.radar-node-led{animation:none!important}}

/* Current detailed illustrations retain the hover/focus loops after SVG replacement. */
@media(prefers-reduced-motion:no-preference){
.project-card:is(:hover,:focus-visible) .plant-card-scene .sensor-led{animation:plant-led 4.8s ease-in-out infinite}
.project-card:is(:hover,:focus-visible) .plant-card-scene .plant-probe{animation:plant-card-sample 4.8s ease-in-out infinite}
.project-card:is(:hover,:focus-visible) .plant-card-scene .sample-route{animation:plant-card-send 4.8s linear infinite}
.project-card:is(:hover,:focus-visible) .plant-card-scene .plant-radio{animation:plant-card-radio 4.8s ease-in-out infinite}
.project-card:is(:hover,:focus-visible) .plant-card-scene .plant-sleep{animation:plant-card-sleep 4.8s ease-in-out infinite}
.project-card:is(:hover,:focus-visible) .bed-card-scene .bed-person-left{animation:bed-card-person 4.8s ease-in-out infinite}
.project-card:is(:hover,:focus-visible) .bed-card-scene .bed-person-right{animation:bed-card-person 4.8s ease-in-out .45s infinite}
.project-card:is(:hover,:focus-visible) .bed-card-scene .bed-sensors-left{animation:bed-card-detect 4.8s ease-in-out infinite}
.project-card:is(:hover,:focus-visible) .bed-card-scene .bed-sensors-right{animation:bed-card-detect 4.8s ease-in-out .45s infinite}
.project-card:is(:hover,:focus-visible) .radar-presence-wave{animation:radar-card-presence 3s ease-in-out infinite}
}
@keyframes plant-card-sample{0%,8%,35%,100%{opacity:.55}15%,27%{opacity:1}}
@keyframes plant-card-send{0%,28%,58%,100%{opacity:.18;stroke-dashoffset:0}35%,50%{opacity:1}58%{stroke-dashoffset:-40}}
@keyframes plant-card-radio{0%,28%,58%,100%{opacity:.18}36%,50%{opacity:1}}
@keyframes plant-card-sleep{0%,60%{opacity:.18}70%,92%{opacity:1}100%{opacity:.18}}
@keyframes bed-card-person{0%,10%,90%,100%{opacity:0}25%,72%{opacity:1}}
@keyframes bed-card-detect{0%,18%,90%,100%{opacity:.22}32%,72%{opacity:1}}
@keyframes radar-card-presence{0%,100%{opacity:.25}50%{opacity:1;stroke:#d0fa74}}
