:root{--ink:#152638;--dark:#0e1724;--dark-2:#122235;--muted:#596878;--paper:#f7f9fb;--white:#fff;--line:#dce4e9;--mint:#64e2cb;--mint-dark:#0f816f;--cream:#edf2f4;--shadow:0 20px 60px rgba(18,35,53,.085)}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:78px}body{margin:0;color:var(--ink);background:var(--paper);font-family:Inter,"Segoe UI",Arial,sans-serif;font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}a:hover{text-decoration:none}a:focus-visible,button:focus-visible{outline:3px solid #00a88b;outline-offset:4px}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:-.048em;line-height:1.12}h2{font-size:clamp(2.1rem,4vw,3.5rem)}h3{font-size:1.6rem}p{margin-bottom:1.25rem}strong{font-weight:690}em{font-style:normal;color:var(--mint)}.wrap{width:min(1140px,calc(100% - 64px));margin:0 auto}.skip-link{position:absolute;top:-80px;left:16px;padding:10px 16px;background:#fff;color:#111;z-index:100}.skip-link:focus{top:12px}.site-header{background:var(--dark);color:#f6f8fa;position:relative;z-index:10;border-bottom:1px solid #253448}.nav-inner{height:76px;display:flex;align-items:center;gap:36px;justify-content:space-between}.brand{font-size:.96rem;font-weight:700;letter-spacing:-.02em;display:inline-flex;align-items:center;gap:12px;white-space:nowrap}.brand-mark{font-size:1.07rem;font-weight:850;letter-spacing:-.07em;border:1px solid #506070;width:36px;height:36px;display:grid;place-content:center;border-radius:7px}.brand-dot{color:var(--mint)}.primary-nav{display:flex;align-items:center;gap:29px;margin-left:auto}.primary-nav a,.header-github{font-size:.82rem;font-weight:660;color:#c0ccd4;transition:color .18s}.primary-nav a:hover,.header-github:hover{color:var(--mint)}.header-github{border:1px solid #455366;padding:10px 15px;border-radius:7px;color:#fff}.header-github span{margin-left:8px}.hero{background:var(--dark);color:#f8fbfc;position:relative;overflow:hidden}.hero-grid{position:absolute;inset:0;opacity:.21;background-image:linear-gradient(to right,transparent calc(100% - 1px),#345168 1px),linear-gradient(to bottom,transparent calc(100% - 1px),#345168 1px);background-size:82px 82px;mask-image:linear-gradient(to right,transparent 7%,#000 85%);pointer-events:none}.hero:after{content:"";width:540px;height:540px;right:-220px;top:70px;position:absolute;border-radius:50%;background:radial-gradient(circle,rgba(45,137,140,.22),transparent 68%);pointer-events:none}.hero-content{padding:112px 0 100px;position:relative;z-index:1}.eyebrow,.kicker,.mini-label,.project-index,.card-meta,.visual-topline,.art-topbar,.now-panel-head,.case-header-meta{font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.eyebrow{color:#a5d7d0;display:flex;align-items:center;gap:13px;letter-spacing:.105em}.status-pulse{background:var(--mint);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 5px #31544f}.hero h1{font-weight:760;font-size:clamp(3rem,6.2vw,6rem);line-height:1.03;letter-spacing:-.067em;max-width:930px;margin:25px 0 30px}.hero h1 em{font-weight:720}.hero-lede{font-size:clamp(1.05rem,1.5vw,1.22rem);line-height:1.8;color:#bfccd6;max-width:665px}.hero-actions{display:flex;gap:13px;flex-wrap:wrap;margin:33px 0 66px}.button{display:inline-flex;align-items:center;justify-content:center;gap:16px;border-radius:7px;padding:13px 21px;font-size:.89rem;font-weight:740;line-height:1.4;transition:transform .16s,background .16s}.button:hover{transform:translateY(-2px)}.button-primary{background:var(--mint);color:#0c2125}.button-primary:hover{background:#a6f7e7}.button-outline{border:1px solid #5a6978;color:#f1f6f8}.button-outline:hover{background:#20344a}.button-dark{background:var(--dark-2);color:#fff;font-size:.81rem;justify-content:center}.hero-meta{display:flex;flex-wrap:wrap;align-items:center;gap:22px;font-size:.82rem;color:#a8b7c3}.hero-meta strong{color:#f6f8fa}.meta-divider{display:block;width:1px;height:17px;background:#526578}.hero-edge{height:48px;border-top:1px solid #273749;color:#738695;display:flex;align-items:center;justify-content:space-between;padding:0 max(32px,calc((100% - 1140px)/2));font-size:.61rem;font-weight:790;letter-spacing:.17em}.section{padding:100px 0}.work-section{background:var(--paper)}.section-head{display:flex;align-items:end;gap:64px;justify-content:space-between;margin-bottom:35px}.kicker{color:#178876;margin-bottom:17px}.section-head h2,.about-layout h2,.now-layout h2{margin:0}.section-intro{max-width:350px;color:var(--muted);margin:0 0 7px;line-height:1.8;font-size:.95rem}.featured-project{display:grid;grid-template-columns:.97fr 1.03fr;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff;box-shadow:var(--shadow);margin-bottom:24px}.featured-visual{position:relative;min-height:420px;background:#152d3d;overflow:hidden;color:#e7f7f5;background-image:radial-gradient(circle at 45% 51%,rgba(38,128,133,.22),transparent 45%),linear-gradient(130deg,#15374a,#101e2d 75%)}.featured-visual:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.12;background-image:linear-gradient(#70b6c6 1px,transparent 1px),linear-gradient(90deg,#70b6c6 1px,transparent 1px);background-size:40px 40px}.visual-topline{position:absolute;z-index:2;top:27px;left:30px;right:30px;display:flex;justify-content:space-between;color:#8cb3be}.solar-graphic{position:absolute;inset:60px 10px 70px;display:flex;justify-content:center;align-items:center}.sun-disc{height:175px;width:175px;position:relative;z-index:3;border-radius:50%;background:radial-gradient(circle at 42% 40%,#d5fff4,#62ddd1 24%,#1e8f9b 57%,#154a61 100%);box-shadow:0 0 35px #2faaaa85,0 0 110px #3dc8c644,inset -13px -15px 25px #12445b}.sun-disc:before,.sun-disc:after{content:"";position:absolute;inset:20px;border-radius:50%;border:2px solid #a6ffe660;transform:rotate(42deg) scaleX(.77)}.sun-disc:after{inset:35px;transform:rotate(-40deg) scaleX(.58);border-width:3px}.solar-halo{position:absolute;border-radius:50%;border:1px solid #5095a380}.halo-outer{width:330px;height:330px}.halo-inner{width:265px;height:265px;border-style:dashed;animation:spin 60s linear infinite}.orbit-label{position:absolute;z-index:4;font-size:.7rem;letter-spacing:.11em;color:#b6dbdf;border:1px solid #446f7d;padding:5px 9px;background:#18394b;border-radius:4px}.orbit-label.one{transform:translate(-146px,-101px)}.orbit-label.two{transform:translate(142px,102px)}@keyframes spin{to{transform:rotate(360deg)}}.visual-pipeline{position:absolute;z-index:2;bottom:28px;left:25px;right:25px;display:flex;align-items:center;justify-content:center;gap:10px;font-size:.68rem;color:#e9f9f4;white-space:nowrap}.visual-pipeline span:not(.pipe-arrow){border:1px solid #3c6c76;background:#193b4c;padding:7px 10px;border-radius:4px}.pipe-arrow{color:#76dacd}.featured-copy{padding:55px 49px;align-self:center}.project-index{display:flex;justify-content:space-between;gap:20px;color:#187f70;letter-spacing:.08em}.project-index span{color:#8393a0;white-space:nowrap}.featured-copy h3{font-size:clamp(2rem,3vw,2.7rem);margin:23px 0}.featured-copy>p:not(.project-index){color:var(--muted);line-height:1.85;font-size:.98rem}.chip-row{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 28px}.chip-row span,.skill-list span{border:1px solid #d9e4e8;background:#f6f9fa;border-radius:5px;font-size:.72rem;font-weight:700;padding:6px 10px;color:#476071}.project-links{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.text-link{color:#0f7367;font-size:.88rem;font-weight:790;white-space:normal}.text-link:hover,.quiet-link:hover{text-decoration:underline;text-underline-offset:4px}.quiet-link{font-size:.85rem;color:#506c7b;font-weight:650}.project-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}.project-card{min-width:0;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 8px 35px #15263808}.project-visual{height:250px;position:relative;overflow:hidden}.restaurant-art{background:#253d4c}.cloud-art{background:#183e48}.project-visual:after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.13;background-image:linear-gradient(#e4f2f5 1px,transparent 1px),linear-gradient(90deg,#e4f2f5 1px,transparent 1px);background-size:30px 30px}.art-topbar{position:absolute;top:15px;left:22px;right:20px;display:flex;align-items:center;gap:5px;color:#b2dbdb}.art-topbar i{width:6px;height:6px;background:#668e92;border-radius:50%}.art-topbar span{margin-left:auto}.booking-art-body{position:absolute;left:18%;right:18%;top:64px;bottom:27px;background:#d6e5e5;border:1px solid #accacb;box-shadow:0 20px 50px #04162260;border-radius:6px;display:flex;padding:12px;gap:13px;transform:perspective(700px) rotateX(5deg)}.booking-sidebar{width:22%;border-right:1px solid #b1cac9;display:flex;flex-direction:column;gap:12px;padding-right:9px;padding-top:10px}.booking-sidebar b{height:7px;background:#95bbba;border-radius:2px}.booking-sidebar b:nth-child(2){width:60%}.booking-sidebar b:nth-child(3){width:80%}.booking-sidebar b:nth-child(4){width:65%}.floor-art{flex:1;display:grid;grid-template-columns:1fr 1fr;align-items:center;justify-items:center;gap:6px;padding:8px}.floor-table{border:5px solid #4f8c8c;width:38px;height:38px;border-radius:50%;background:#e6eeee}.floor-table.wide{border-radius:9px;width:54px;height:28px}.booking-lines{display:flex;flex-direction:column;gap:15px;width:20%;padding-top:11px}.booking-lines b{height:13px;border-radius:4px;background:#a6c2bf}.booking-lines b:nth-child(2){background:#73afa4}.cloud-flow{height:100%;display:flex;align-items:center;justify-content:center;gap:19px;padding:50px 30px 10px}.cloud-node{z-index:1;position:relative;background:#15303e;border:1px solid #71b5ba;border-radius:10px;width:100px;height:105px;display:flex;align-items:center;justify-content:center;flex-direction:column;box-shadow:0 0 35px #53c7bf22;color:#bdf6ec}.cloud-node.big-node{background:#27636a;width:125px;height:125px;border-color:#76e5d2}.node-glyph{font-size:2rem;line-height:1.2}.cloud-node small{font-size:.58rem;font-weight:850;letter-spacing:.12em;margin-top:9px}.line-arrow{color:#83dcce;font-size:1.7rem}.card-body{padding:27px 30px 33px;display:flex;flex-direction:column;align-items:flex-start;flex:1}.card-meta{color:#5d8591;display:flex;gap:16px;letter-spacing:.09em}.card-meta span+span{color:#8e9fa8}.card-body h3{margin:18px 0 13px;font-size:1.6rem}.card-body p{color:var(--muted);font-size:.91rem;line-height:1.8;flex:1}.card-body .chip-row{margin:13px 0 25px}.note-link{font-size:.85rem;font-weight:680;color:#718791}.about-section{background:#ebf0f2}.about-layout{display:grid;grid-template-columns:1fr 1fr;gap:90px}.about-layout h2{max-width:510px}.about-text{color:#42576a;line-height:1.95}.about-text p{margin-bottom:21px}.skills-block{margin-top:28px;border-top:1px solid #cdd9df;padding-top:27px}.mini-label{color:#657b87;margin:0 0 18px}.skill-list{display:flex;gap:8px;flex-wrap:wrap}.skill-list span{background:#f8fbfc}.now-section{background:#fff}.now-layout{display:grid;grid-template-columns:1fr 1fr;gap:110px;align-items:center}.now-layout h2{max-width:500px}.now-layout p:not(.kicker){color:var(--muted);line-height:1.9;max-width:530px;margin-top:27px}.fine-print{font-size:.86rem!important;color:#788794!important;border-left:3px solid #96ded0;padding-left:16px}.now-panel{background:#112436;color:#fff;border-radius:15px;padding:31px 34px 35px;min-height:380px;box-shadow:0 20px 65px #12253622;position:relative;overflow:hidden}.now-panel:after{content:"";position:absolute;inset:0;opacity:.1;background-image:linear-gradient(#bdd4e9 1px,transparent 1px),linear-gradient(90deg,#bdd4e9 1px,transparent 1px);background-size:27px 27px;pointer-events:none}.now-panel-head{display:flex;align-items:center;gap:10px;color:#a7d9d3;position:relative;z-index:2}.light-dot{width:7px;height:7px;background:var(--mint);border-radius:50%}.now-panel h3,.now-panel p{position:relative;z-index:2}.now-panel h3{font-size:1.45rem;margin-bottom:10px}.now-panel p{color:#adc0cb!important;margin:0!important;font-size:.86rem;line-height:1.7!important}.circuit-illustration{height:188px;position:relative;display:grid;place-items:center}.circuit-chip{width:110px;height:87px;border:2px solid #75cabb;border-radius:7px;display:grid;place-items:center;position:relative;z-index:2;background:#184052;box-shadow:0 0 40px #50c5c622}.circuit-chip:before,.circuit-chip:after{content:"";height:105px;width:140px;position:absolute;inset:-11px -16px;border-top:4px dotted #417978;border-bottom:4px dotted #417978}.chip-core{font-size:1.5rem;font-weight:770;color:#d3f6ef;letter-spacing:-.04em}.circuit-line{position:absolute;background:#3c8f92;height:1px;width:120px;z-index:1}.circuit-line.l1{transform:translate(-120px,-30px)}.circuit-line.l2{transform:translate(120px,30px)}.circuit-line.l3{transform:translate(120px,-30px)}.circuit-line.l4{transform:translate(-120px,30px)}.contact-section{background:#0e1724;color:#f7faf9;padding:84px 0}.contact-layout{display:grid;grid-template-columns:1.2fr .8fr;gap:80px;align-items:center}.kicker-light{color:var(--mint)}.contact-layout h2{font-size:clamp(2.1rem,3.6vw,3rem);margin:0 0 16px}.contact-layout p:not(.kicker){color:#b9c9d2;max-width:480px}.contact-links{display:grid}.contact-links a{border-bottom:1px solid #314355;display:flex;justify-content:space-between;align-items:center;padding:15px 0;font-size:1.03rem;font-weight:720}.contact-links a:hover{color:var(--mint)}.site-footer{background:#0a121c;color:#8595a4;font-size:.73rem;padding:23px 0}.footer-inner{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}.site-footer a:hover{text-decoration:underline}.case-hero{background:radial-gradient(circle at 82% 30%,#183c45 0%,#0e1724 45%);color:#fff;padding:62px 0 69px}.back-link{font-size:.82rem;color:#b4c8cb;font-weight:700;display:inline-block;margin-bottom:67px}.back-link:hover{color:var(--mint)}.case-hero h1{font-size:clamp(3rem,7.2vw,6rem);letter-spacing:-.065em;margin:18px 0 26px}.case-lede{font-size:1.2rem;line-height:1.75;color:#b8ccd4;max-width:710px;margin-bottom:55px}.case-header-meta{border-top:1px solid #334651;padding-top:23px;display:flex;flex-wrap:wrap;gap:30px;color:#a5c6c8;letter-spacing:.08em}.case-header-meta a{color:#8cf3df}.case-body{background:var(--paper)}.case-layout{display:grid;grid-template-columns:250px minmax(0,1fr);gap:93px;align-items:start}.case-aside{position:sticky;top:30px;background:#ebf1f3;border:1px solid var(--line);border-radius:10px;padding:25px}.case-aside dl{margin:0 0 27px}.case-aside dt{color:#748994;font-size:.72rem;font-weight:770;text-transform:uppercase;letter-spacing:.075em;margin-top:18px}.case-aside dd{margin:2px 0 0;font-size:.9rem;color:#2d4554;line-height:1.6}.case-aside .button{width:100%}.aside-note{font-size:.84rem;line-height:1.75;color:#6b808c;margin:0}.case-content{max-width:775px}.case-content h2{font-size:1.65rem;letter-spacing:-.035em;margin:0 0 14px}.case-content h2:not(:first-child){margin-top:47px}.case-content p,.case-content li{line-height:1.95;color:#4e6270;font-size:.98rem}.case-content strong{color:#263c49}.stat-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;border:1px solid #d7e5e8;border-radius:10px;padding:18px 5px;margin:27px 0;background:#eef6f6}.stat-strip>div{text-align:center}.stat-strip strong{display:block;color:#0f625c;font-size:2rem;letter-spacing:-.045em;line-height:1.2}.stat-strip span{display:block;color:#6c828b;font-size:.77rem;margin-top:6px}.simple-table-wrap{max-width:100%;overflow-x:auto;margin:28px 0}.simple-table-wrap table{border-collapse:collapse;width:100%;font-size:.9rem;background:white}.simple-table-wrap caption{text-align:left;color:#657b87;font-size:.79rem;margin-bottom:9px}.simple-table-wrap th,.simple-table-wrap td{text-align:left;padding:13px 16px;border-bottom:1px solid #dfe8ec;white-space:nowrap}.simple-table-wrap thead{background:#e8f0f1;color:#234658}.architecture{background:#12293a;color:#fff;border-radius:9px;padding:25px;margin:27px 0}.architecture-title{font-size:.69rem;font-weight:800;letter-spacing:.12em;color:#9fd8d0}.architecture-title small{font-size:.62rem;color:#7d999b;margin-left:5px}.arch-row{display:flex;gap:13px;align-items:center;justify-content:space-between;margin-top:22px}.arch-row>span{flex:1;min-width:0;border:1px solid #437078;background:#1c3b4b;border-radius:5px;text-align:center;padding:15px 4px;font-size:.8rem;font-weight:800;line-height:1.5}.arch-row small{font-weight:500;color:#b1d7d8}.arch-row>b{color:var(--mint)}.editorial-note{margin:26px 0;padding:17px 20px;border-left:3px solid #39af9d;background:#e8f4f2;font-size:.89rem!important}.check-list{padding-left:21px}.check-list li{padding-left:4px;margin:8px 0}.check-list li::marker{color:#12917e}.case-bottom{border-top:1px solid var(--line);margin-top:57px;padding-top:25px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:16px}.hidden-bad-link{display:none}
@media(max-width:960px){.featured-project{grid-template-columns:1fr}.featured-visual{min-height:360px}.featured-copy{padding:36px}.about-layout,.now-layout{gap:45px}.case-layout{gap:40px;grid-template-columns:220px 1fr}.contact-layout{gap:40px}}
@media(max-width:700px){.wrap{width:min(100% - 36px,1140px)}.nav-inner{height:auto;min-height:70px;gap:10px;flex-wrap:wrap;padding:10px 0}.brand{font-size:.87rem}.brand-mark{width:32px;height:32px;font-size:.95rem}.primary-nav{order:3;width:100%;justify-content:space-around;margin:0;padding:8px 0 3px;gap:12px}.primary-nav a{font-size:.75rem}.header-github{padding:8px;font-size:.75rem}.hero-content{padding:70px 0 72px}.hero h1{font-size:clamp(2.85rem,11vw,4.7rem);margin-top:26px}.hero-meta{gap:9px;flex-direction:column;align-items:flex-start}.meta-divider{display:none}.hero-actions{margin-bottom:44px}.hero-edge{padding:0 18px}.section{padding:66px 0}.section-head{align-items:start;flex-direction:column;gap:13px}.project-grid,.about-layout,.now-layout,.contact-layout{grid-template-columns:1fr;gap:30px}.project-visual{height:230px}.featured-copy{padding:27px}.project-index{flex-direction:column;gap:7px}.solar-halo.halo-outer{width:295px;height:295px}.solar-halo.halo-inner{width:240px;height:240px}.sun-disc{height:150px;width:150px}.visual-pipeline{gap:5px;font-size:.57rem;left:8px;right:8px}.visual-pipeline span:not(.pipe-arrow){padding:6px 6px}.card-body{padding:24px}.now-panel{min-height:350px}.contact-section{padding:63px 0}.contact-links{margin-top:7px}.case-hero{padding:37px 0 50px}.back-link{margin-bottom:48px}.case-lede{font-size:1.08rem}.case-layout{grid-template-columns:1fr}.case-aside{position:static}.stat-strip strong{font-size:1.7rem}.case-content h2:not(:first-child){margin-top:34px}.arch-row{gap:5px}.arch-row>span{font-size:.63rem;padding:10px 2px}.arch-row>b{font-size:.75rem}.architecture{padding:17px}.case-body{padding-top:50px}}
@media(max-width:420px){.header-github{display:none}.cloud-flow{gap:10px;padding-left:10px;padding-right:10px}.cloud-node{width:79px;height:90px}.cloud-node.big-node{width:100px;height:105px}.sun-disc{width:138px;height:138px}.visual-pipeline{font-size:.53rem}.hero h1{font-size:2.7rem}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}

/* Accessible, data-derived result figures on the solar-flare case study */
.results-figure{margin:26px 0 32px}
.results-figure a{display:block}
.results-figure img{display:block;width:100%;height:auto;border:1px solid #d7e5e8;border-radius:10px;background:#f5fafb}
.results-figure figcaption{font-size:.81rem;line-height:1.65;color:#607787;margin-top:9px}
.results-figure figcaption a{display:inline;color:#0f625c;font-weight:650;text-decoration:underline;text-underline-offset:2px}
.results-figure a:focus-visible img{outline:3px solid #098878;outline-offset:3px}

/* Source-grounded restaurant system case study */
.workflow-panel{border:1px solid #d7e5e8;border-radius:11px;background:#f2f8f9;margin:25px 0;padding:3px 22px}
.workflow-step{display:flex;align-items:flex-start;gap:18px;padding:21px 0;border-bottom:1px solid #d7e5e8}
.workflow-step:last-child{border-bottom:0}
.workflow-index{color:#0a8375;font-size:1rem;font-weight:800;letter-spacing:.04em;flex:0 0 25px;margin-top:3px}
.case-content .workflow-step h3,.case-content .decision-block h3{font-size:1.07rem;letter-spacing:-.015em;margin:0 0 6px;color:#1b3a49}
.case-content .workflow-step p,.case-content .decision-block p{margin:0;font-size:.91rem;line-height:1.8}
.schema-panel{border:1px solid #d7e5e8;border-radius:10px;padding:22px;background:#f2f8f9;margin:24px 0 0}
.schema-group{display:flex;align-items:center;gap:10px;margin-bottom:15px}
.schema-group:last-child{margin-bottom:0}
.schema-group>div{flex:1;min-width:0;border:1px solid #bcd1d7;border-radius:7px;background:#fff;padding:11px}
.schema-group strong{display:block;color:#1f4656;font-size:.83rem}
.schema-group span{display:block;color:#65818d;font-size:.71rem;overflow-wrap:anywhere;margin-top:3px}
.schema-group>b{font-size:1.05rem;color:#0f8379;flex:0 0 14px;text-align:center}
.case-content .schema-caption{font-size:.8rem;color:#66808c;margin-top:8px}
.decision-block{padding:20px 22px;background:#f6f9fa;border-left:3px solid #289a8c;margin:20px 0}
.case-content code{background:#eaf0f2;border-radius:3px;padding:1px 4px;color:#264854;font-size:.91em;overflow-wrap:anywhere}
@media(max-width:700px){.workflow-panel{padding:3px 14px}.workflow-step{gap:10px}.schema-panel{padding:12px}.schema-group{gap:5px}.schema-group>div{padding:7px}.schema-group strong{font-size:.73rem}.schema-group span{font-size:.61rem}.schema-group>b{flex-basis:8px;font-size:.85rem}.decision-block{padding:15px}}

/* Real application screenshots — preserve each image's native proportions.
   Avoid applying max-height to responsive <img>: it letterboxes portrait images
   in some browsers and makes image widths inconsistent inside the gallery. */
.case-screenshot-section{margin:44px 0}
.case-screenshot-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:28px;margin:26px 0}
.case-screenshot{min-width:0;margin:0;border:1px solid #d7e5e8;border-radius:12px;background:#fff;overflow:hidden;box-shadow:0 5px 18px rgba(22,52,70,.055)}
.case-screenshot>a:first-child{display:block;background:#fff;line-height:0}
.case-screenshot img{display:block;width:100%;max-width:100%;height:auto;max-height:none;object-fit:initial;border-radius:0;margin:0;background:#fff}
.case-screenshot figcaption{border-top:1px solid #d7e5e8;padding:18px 21px 20px;margin:0;font-size:.89rem;line-height:1.7;color:#4b6471}
.case-screenshot figcaption strong{color:#1b3a49}
.case-screenshot figcaption a{white-space:nowrap;color:#0c7069;font-weight:700;text-decoration:underline;text-underline-offset:2px}
.case-screenshot a:focus-visible{outline:3px solid #098878;outline-offset:-3px}
.case-content .case-gallery-note{font-size:.81rem;line-height:1.7;color:#5f7582;margin:15px 0 24px}
@media(max-width:650px){.case-screenshot-grid{gap:20px}.case-screenshot figcaption{padding:14px 15px 17px}}

/* Real SDOBenchmark sequences. Keep the gallery inside the text column.
   Intrinsic 1290px PNG widths must not force the CSS grid wider. */
.case-study-page .case-layout > .case-content{min-width:0;width:100%;max-width:775px}
.case-content .solar-sample-section{margin:42px 0 45px;min-width:0;width:100%;max-width:100%}
.solar-sample-gallery{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;margin:24px 0;width:100%;max-width:100%;min-width:0}
.solar-sample-figure{margin:0;border:1px solid #d3e2e8;border-radius:12px;background:#fff;overflow:hidden;min-width:0;max-width:100%;width:100%;box-shadow:0 5px 19px rgba(20,55,72,.05)}
.solar-sample-figure>a:first-child{display:block;line-height:0;max-width:100%;overflow:hidden}
.solar-sample-figure img{display:block;width:100%;max-width:100%;min-width:0;height:auto;max-height:none;object-fit:contain;margin:0}
.solar-sample-figure figcaption{border-top:1px solid #dce6eb;padding:15px 19px 18px;color:#486272;font-size:.85rem;line-height:1.75;overflow-wrap:anywhere}
.solar-sample-figure figcaption strong{color:#213f4c}
.solar-sample-figure figcaption a{color:#08766e;font-weight:700;text-decoration:underline;text-underline-offset:2px}
.solar-sample-figure a:focus-visible{outline:3px solid #098878;outline-offset:-3px}
.case-content .solar-image-note{border-left:3px solid #94b5c2;background:#f1f7f9;padding:15px 18px;font-size:.84rem;line-height:1.75;color:#4b6471;margin:13px 0 28px;overflow-wrap:anywhere}
@media(max-width:650px){.solar-sample-gallery{gap:18px}.solar-sample-figure figcaption{padding:13px 15px}}


/* Cloud Dataproc case study: data flow with an explicit Spark → driver boundary */
.cloud-pipeline{width:100%;max-width:100%;min-width:0;display:flex;flex-direction:column;align-items:stretch;gap:0;padding:22px;border:1px solid #cfe0e6;border-radius:12px;background:#edf4f6;margin:27px 0 12px}
.cloud-stage{border:1px solid #b8d5d7;border-radius:9px;background:#fff;padding:14px 18px;text-align:center;min-width:0;overflow-wrap:anywhere}
.cloud-stage-tag{display:block;color:#14796f;font-size:.65rem;font-weight:800;letter-spacing:.1em;margin-bottom:5px}
.cloud-stage strong{display:block;font-size:.98rem;color:#1b4050}
.cloud-stage small{display:block;font-size:.79rem;line-height:1.55;color:#56737d;margin-top:4px}
.cloud-branches{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.cloud-branches .cloud-stage{background:#153547;border-color:#2d6870}
.cloud-branches .cloud-stage strong{color:#fff}
.cloud-branches .cloud-stage small{color:#bddee1}
.cloud-branches .cloud-stage-tag{color:#80e1d0}
.cloud-arrow{font-size:.83rem;font-weight:800;color:#087c73;text-align:center;padding:4px 0}
.cloud-stage-driver{background:#e3f5f1;border-color:#79b6aa}
.confusion-panel{min-width:0;margin:26px 0;border:1px solid #d0e1e4;border-radius:10px;background:#fff;padding:21px;overflow-x:auto}
.confusion-panel .mini-label{margin-bottom:14px}
.confusion-table{border-collapse:separate;border-spacing:5px;width:100%;min-width:360px}
.confusion-table caption{text-align:left;color:#657b87;font-size:.78rem;margin-bottom:11px}
.confusion-table th{font-size:.79rem;color:#426274;text-align:center;padding:9px 7px}
.confusion-table tbody th{text-align:left;white-space:nowrap}
.confusion-table td{width:40%;text-align:center;border-radius:6px;padding:18px 5px 17px}
.confusion-table td strong{display:block;font-size:1.95rem;line-height:1.2;color:#134f4b}
.confusion-table td span{display:block;color:#47716e;font-size:.69rem;margin-top:5px}
.confusion-table td.cm-correct{background:#d7f0e9}
.confusion-table td.cm-error{background:#f3ebe1}
.confusion-table td.cm-error strong{color:#765323}
.confusion-panel .case-gallery-note{margin:14px 0 0}

/* Database relationship diagram: redrawn from the original Workbench schema */
.db-diagram{min-width:0;max-width:100%;margin:24px 0 12px;padding:21px 17px;background:#eff6f7;border:1px solid #d0e2e6;border-radius:11px}
.db-relations{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.db-entity{min-width:0;background:#fff;border:1px solid #bbd3d9;border-radius:7px;overflow:hidden;box-shadow:0 4px 16px rgba(20,55,72,.035)}
.db-entity-name{padding:8px 11px;background:#234556;color:#fff;font-size:.88rem;font-weight:760;letter-spacing:.01em}
.db-entity-fields{font-size:.72rem;color:#3c6070;line-height:1.8;padding:10px;overflow-wrap:anywhere}
.db-entity-fields b{color:#0e8777;font-size:.69rem}
.db-connector{text-align:center;color:#13796c;font-size:2.3rem;font-weight:650;line-height:1;padding:10px 0 8px;letter-spacing:1.1em}
.db-rental{width:min(100%,480px);margin:auto;border-color:#67a79e}
.db-rental .db-entity-name{background:#126c69}
.db-rental .db-entity-fields{font-size:.77rem}

/* Compact additional-project preview beneath selected-work cards */
.additional-project{margin-top:24px;display:grid;grid-template-columns:180px minmax(0,1fr);gap:26px;align-items:center;padding:27px 32px;border:1px solid #d7e3e7;border-radius:13px;background:#eaf2f3}
.additional-project-label{font-size:.7rem;font-weight:800;letter-spacing:.115em;color:#16796f}
.additional-project-copy{min-width:0}
.additional-project h3{font-size:1.38rem;margin:4px 0 7px}
.additional-project p{font-size:.87rem;line-height:1.7;color:#536b79;margin:0 0 12px}
.additional-project .chip-row{margin:0 0 12px}
@media(max-width:700px){.cloud-pipeline{padding:11px}.cloud-stage{padding:12px 9px}.cloud-branches{gap:7px}.cloud-stage strong{font-size:.86rem}.cloud-stage small{font-size:.72rem}.confusion-panel{padding:10px}.db-diagram{padding:11px 8px}.db-relations{gap:5px}.db-entity-name{padding:7px 6px;font-size:.7rem}.db-entity-fields{font-size:.61rem;padding:7px 5px}.db-connector{font-size:1.75rem}.additional-project{grid-template-columns:1fr;gap:8px;padding:22px}}
@media(max-width:420px){.confusion-table{min-width:300px}.confusion-table th{font-size:.65rem}.confusion-table td strong{font-size:1.55rem}.confusion-table td span{font-size:.61rem}.db-entity-fields{font-size:.58rem}.db-rental .db-entity-fields{font-size:.68rem}}


/* Editorial consistency: headings are labels, prose is punctuated.
   A restrained typography rhythm is shared by all case-study pages. */
.case-content > h2{padding-bottom:12px;border-bottom:1px solid #d9e4e8;font-size:clamp(1.48rem,2.5vw,1.73rem);line-height:1.24;letter-spacing:-.035em}
.case-content > h2:not(:first-child){margin-top:50px}
.case-content > h2 + p{margin-top:19px}
.case-content .solar-sample-section > h2{padding-bottom:12px;border-bottom:1px solid #d9e4e8;line-height:1.24}
.case-content h3{letter-spacing:-.025em}
.case-content p,.case-content li{line-height:1.83}
.case-content .case-bottom{margin-top:59px}
.case-aside{box-shadow:0 9px 28px rgba(19,48,67,.035)}
.case-aside dt{margin-top:19px}
.case-aside dd{line-height:1.55}

/* Show an actual, credited project capture rather than decorative fake UI. */
.project-screenshot-preview{background:radial-gradient(circle at 65% 12%,#36616c 0%,#163444 66%,#0d2432 100%)}
.project-screenshot-preview:after{opacity:.09}
.preview-photo-frame{position:absolute;z-index:1;top:25px;bottom:-28px;left:24px;right:24px;overflow:hidden;border:1px solid #bed0d5;border-radius:9px;background:#f3f6f8;box-shadow:0 18px 44px rgba(6,17,30,.4)}
.preview-photo-frame img{display:block;width:100%;height:100%;object-fit:cover;object-position:center top}
.preview-photo-label{position:absolute;z-index:2;bottom:13px;left:30px;max-width:calc(100% - 60px);padding:7px 10px;border:1px solid rgba(164,217,213,.35);border-radius:5px;background:rgba(10,33,44,.91);color:#e9fcf8;font-size:.62rem;font-weight:800;line-height:1.45;letter-spacing:.075em}

/* Keep cards restrained and distinguish them without oversized shadows. */
.project-card,.additional-project,.featured-project{transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}
.project-card:hover,.additional-project:hover{border-color:#b9d3d6;box-shadow:0 13px 37px rgba(16,44,60,.09);transform:translateY(-2px)}
.featured-project:hover{border-color:#bdd5d7}
.card-body h3{line-height:1.23}
.card-body .text-link{margin-top:auto}
.additional-project{border-left:4px solid #4fbcab}
@media(max-width:700px){.case-content > h2:not(:first-child){margin-top:36px}.preview-photo-frame{left:16px;right:16px;top:18px}.preview-photo-label{left:23px}.case-content p,.case-content li{line-height:1.8}}
@media(prefers-reduced-motion:reduce){.project-card,.additional-project,.featured-project{transition:none}.project-card:hover,.additional-project:hover{transform:none}}

/* Implementation-derived portfolio previews.
   Source imagery: genuine SDOBenchmark image montage and an actual app capture.
   Cloud and database diagrams are faithful simplified redraws, not screenshots. */
.solar-source-preview{background:linear-gradient(135deg,#19384a,#101d2c 75%);min-width:0}
.solar-photo-window{position:absolute;left:23px;right:23px;top:61px;bottom:67px;z-index:1;border:1px solid rgba(181,211,213,.58);border-radius:8px;overflow:hidden;background:#f5f7f7;box-shadow:0 21px 45px rgba(0,0,0,.23)}
.solar-photo-window img{display:block;width:100%;height:100%;object-fit:cover;object-position:center 53%;max-width:100%}
.solar-preview-caption{position:absolute;left:25px;right:25px;bottom:22px;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.67rem;line-height:1.45;letter-spacing:.075em}
.solar-preview-caption span{font-weight:800;color:#a9c7ce}
.solar-preview-caption strong{font-size:.73rem;font-weight:760;color:#b5f2e7;letter-spacing:.03em}
.cloud-source-preview{background:radial-gradient(circle at 49% 42%,#23535c 0%,#153642 67%,#102b39 100%)}
.cloud-preview-diagram{position:absolute;inset:46px 25px 36px;z-index:1;display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:2px}
.cloud-preview-input,.cloud-preview-output{min-width:0;border:1px solid #7caaaf;border-radius:6px;background:#173d4a;color:#f0fafa;text-align:center;padding:6px 12px;font-size:.74rem;font-weight:800;letter-spacing:.045em;line-height:1.45}
.cloud-preview-input span,.cloud-preview-output span{color:#b6d9d6;font-size:.69rem;font-weight:550;letter-spacing:0;margin-left:7px}
.cloud-preview-output strong{font-size:.73rem}
.cloud-preview-output{background:#124c55;border-color:#64c8b8}
.cloud-preview-arrow{text-align:center;color:#89ebd8;font-size:.94rem;font-weight:800;line-height:1.16}
.cloud-preview-branches{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.cloud-preview-branches>div{min-width:0;border:1px solid #63aaa9;border-radius:6px;background:#285e67;padding:6px 6px 7px;display:flex;flex-direction:column;align-items:center;text-align:center}
.cloud-preview-branches strong{color:#f3fffd;font-size:.69rem;letter-spacing:.055em;line-height:1.4}
.cloud-preview-branches small{color:#c5e5e5;font-size:.65rem;line-height:1.35}
.cloud-preview-caption{position:absolute;z-index:2;left:20px;right:20px;bottom:9px;color:#a8d3d4;font-size:.6rem;letter-spacing:.08em;font-weight:760;text-align:center}
.additional-project-with-visual{grid-template-columns:minmax(230px,295px) minmax(0,1fr);gap:27px;background:#f0f5f6;border-left:1px solid #d7e3e7}
.db-preview{min-width:0;background:#163748;border:1px solid #467d81;border-radius:9px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:17px 11px 14px;overflow:hidden}
.db-preview-kicker{align-self:flex-start;color:#a5cece;font-size:.6rem;font-weight:800;letter-spacing:.07em;line-height:1.2;margin:0 0 14px 3px}
.db-preview-entities{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;gap:5px}
.db-preview-entities span{min-width:0;display:block;text-align:center;border:1px solid #75b6b4;border-radius:4px;background:#244f5e;padding:9px 2px;color:#f3f9f9;font-size:.71rem;font-weight:760;line-height:1.3}
.db-preview-links{display:block;text-align:center;color:#88ddcb;font-size:1.25rem;line-height:1.5;font-weight:750;letter-spacing:.7em;margin-right:-.7em}
.db-preview-rental{text-align:center;background:#d6f2ed;border-radius:5px;border:1px solid #9fe2d4;padding:6px 25px 8px}
.db-preview-rental strong{display:block;color:#115d5b;font-size:.89rem;line-height:1.2}
.db-preview-rental small{display:block;color:#507b77;font-size:.64rem;margin-top:2px}
.additional-project-with-visual .additional-project-label{margin:0 0 9px;line-height:1.4;font-size:.66rem;font-weight:830}
@media(max-width:960px){.additional-project-with-visual{grid-template-columns:minmax(200px,250px) minmax(0,1fr);gap:20px}}
@media(max-width:700px){.solar-photo-window{left:16px;right:16px;top:54px;bottom:63px}.solar-preview-caption{left:17px;right:17px;bottom:18px;font-size:.61rem}.solar-preview-caption strong{font-size:.65rem}.additional-project-with-visual{grid-template-columns:1fr;gap:16px}.db-preview{padding:15px 12px 12px}.db-preview-kicker{margin-bottom:10px}.cloud-preview-diagram{inset:45px 16px 35px}}
@media(max-width:390px){.solar-preview-caption{flex-wrap:wrap;row-gap:2px}.cloud-preview-input span{display:block;margin-left:0}.cloud-preview-output span{display:block;margin-left:0}.cloud-preview-diagram{inset:45px 15px 34px;gap:0}}


/* Homepage-only motion experiment.
   Short, one-shot CSS transitions on intentional hover/focus; no autoplay,
   no modifications to original image files, and no JavaScript. */
/* Keep original scientific panels free from simulated flare artwork.
   Hover adds only a restrained frame highlight and small photographic zoom. */
.solar-photo-window{transition:border-color .42s ease,box-shadow .48s ease}
.solar-photo-window::after{content:"";position:absolute;z-index:2;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,#31978d,#a6f1df,#31978d);transform:scaleX(0);transform-origin:left center;transition:transform .65s cubic-bezier(.16,1,.3,1);pointer-events:none}
.solar-photo-window img{transition:transform .9s cubic-bezier(.16,1,.3,1),filter .7s ease}

.booking-hover-demo{position:absolute;z-index:3;top:14px;right:13px;max-width:calc(100% - 26px);width:174px;border-radius:8px;padding:10px 12px 11px;border:1px solid rgba(159,220,213,.62);background:rgba(14,38,49,.95);box-shadow:0 9px 23px rgba(0,0,0,.3);pointer-events:none;opacity:0;transform:translateY(8px);transition:opacity .25s ease,transform .4s cubic-bezier(.2,.8,.2,1)}
.booking-hover-heading{display:block;color:#d2eeeb;font-weight:800;font-size:.57rem;line-height:1.5;letter-spacing:.055em}
.booking-hover-tables{display:flex;justify-content:space-between;gap:8px;margin-top:10px}
.booking-hover-tables span{display:block;flex:0 0 22px;width:22px;height:22px;border:2px solid #84b6b2;border-radius:50%;background:#29515b;box-shadow:inset 0 0 0 4px rgba(13,31,41,.8);transition:background .22s ease,border-color .22s ease,box-shadow .22s ease,transform .22s ease}

.cloud-preview-input,.cloud-preview-output,.cloud-preview-branches>div,.cloud-preview-arrow{transition:background .35s ease,border-color .35s ease,box-shadow .4s ease,color .3s ease,transform .45s cubic-bezier(.16,1,.3,1),filter .4s ease}
.db-preview-entities span,.db-preview-rental,.db-preview-links{transition:background .3s ease,border-color .35s ease,color .3s ease,box-shadow .4s ease,transform .4s ease,text-shadow .3s ease}

/* Desktop-capable pointer only. Keyboard focus within a card triggers the
   same illustration, while reduced-motion or touch devices remain static. */
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .featured-project:is(:hover,:focus-within) .solar-photo-window{border-color:#8ce5d5;box-shadow:0 21px 45px rgba(0,0,0,.23),0 0 0 2px rgba(99,226,201,.23)}
  .featured-project:is(:hover,:focus-within) .solar-photo-window img{transform:scale(1.025);filter:saturate(1.035) brightness(1.025)}
  .featured-project:is(:hover,:focus-within) .solar-photo-window::after{transform:scaleX(1)}
  /* Avoid zooming only one layer while crossfading the NASA footage. */
  .featured-project:is(:hover,:focus-within) .solar-nasa-window>img,
  .featured-project:is(:hover,:focus-within) .solar-nasa-window>.solar-nasa-poster{transform:none;filter:none}
  .project-card:is(:hover,:focus-within) .booking-hover-demo{opacity:1;transform:translateY(0)}
  .project-card:is(:hover,:focus-within) .booking-hover-tables span{background:#58d9bb;border-color:#9ef4e2;box-shadow:inset 0 0 0 4px #146e67,0 0 12px rgba(95,241,206,.45);transform:scale(1.05)}
  .project-card:is(:hover,:focus-within) .booking-hover-tables span:nth-child(1){transition-delay:.2s}
  .project-card:is(:hover,:focus-within) .booking-hover-tables span:nth-child(2){transition-delay:.37s}
  .project-card:is(:hover,:focus-within) .booking-hover-tables span:nth-child(3){transition-delay:.54s}
  .project-card:is(:hover,:focus-within) .booking-hover-tables span:nth-child(4){transition-delay:.71s}

  .project-card:is(:hover,:focus-within) .cloud-preview-input{background:#1c5360;border-color:#88e1d4;box-shadow:0 0 14px rgba(105,225,210,.22)}
  .project-card:is(:hover,:focus-within) .cloud-preview-arrow{color:#cffcf0;filter:drop-shadow(0 0 6px #9feee1);transform:scaleY(1.22)}
  .project-card:is(:hover,:focus-within) .cloud-preview-arrow:nth-child(2){transition-delay:.18s}
  .project-card:is(:hover,:focus-within) .cloud-preview-arrow:nth-child(4){transition-delay:.54s}
  .project-card:is(:hover,:focus-within) .cloud-preview-branches>div{background:#2c7178;border-color:#9ceadb;box-shadow:0 0 14px rgba(99,207,186,.25)}
  .project-card:is(:hover,:focus-within) .cloud-preview-branches>div:nth-child(1){transition-delay:.28s}
  .project-card:is(:hover,:focus-within) .cloud-preview-branches>div:nth-child(2){transition-delay:.4s}
  .project-card:is(:hover,:focus-within) .cloud-preview-output{background:#116970;border-color:#8ef5df;box-shadow:0 0 17px rgba(98,221,195,.4);transition-delay:.64s}

  .additional-project:is(:hover,:focus-within) .db-preview-entities span{background:#2b6f73;border-color:#9de7d9;box-shadow:0 0 12px rgba(106,228,202,.22)}
  .additional-project:is(:hover,:focus-within) .db-preview-entities span:nth-child(1){transition-delay:.12s}
  .additional-project:is(:hover,:focus-within) .db-preview-entities span:nth-child(2){transition-delay:.27s}
  .additional-project:is(:hover,:focus-within) .db-preview-entities span:nth-child(3){transition-delay:.42s}
  .additional-project:is(:hover,:focus-within) .db-preview-links{color:#c5ffeb;text-shadow:0 0 10px rgba(123,245,213,.8);transition-delay:.5s}
  .additional-project:is(:hover,:focus-within) .db-preview-rental{background:#b9fff0;border-color:#6fe5cf;box-shadow:0 0 20px rgba(129,237,212,.43);transform:translateY(-2px);transition-delay:.7s}
}
@media (prefers-reduced-motion:reduce){
  .solar-photo-window,.solar-photo-window::after,.solar-photo-window img,.booking-hover-demo,.booking-hover-tables span,
  .cloud-preview-input,.cloud-preview-output,.cloud-preview-branches>div,.cloud-preview-arrow,
  .db-preview-entities span,.db-preview-rental,.db-preview-links{transition:none!important;animation:none!important}
}
@media(max-width:390px){.booking-hover-tables span{flex-basis:19px;width:19px;height:19px}.booking-hover-demo{width:160px}}


/* NASA SDO cover: keep a real M8.1 flare still visible at rest,
   preload NASA's 500px animated GIF (~3 MB) as an actual image, and
   reveal it only after the browser confirms a successful image load.
   Original SDOBenchmark data remain on the detailed case-study page. */
.solar-nasa-preview{background:linear-gradient(130deg,#183747,#0b1c2a 80%)}
.solar-nasa-window{background:#0a1820 url("solar-samples/ar-11401-sample.png") center / cover no-repeat}
.solar-nasa-window>img{object-position:center center}
/* This resting still is drawn from the actual NASA AIA 131 GIF.
   It matches the hover animation's color, crop and solar feature positions. */
.solar-nasa-window>.solar-nasa-poster,
.solar-nasa-window>.solar-nasa-gif{position:absolute;inset:0;width:100%;height:100%;max-width:100%;object-fit:cover;object-position:center center;pointer-events:none;transform:none}
.solar-nasa-window>.solar-nasa-poster{z-index:2;opacity:0;visibility:hidden;transition:opacity .3s ease,visibility 0s linear .3s}
.solar-nasa-window>.solar-nasa-poster.is-ready{opacity:1;visibility:visible;transition:opacity .3s ease,visibility 0s}
.solar-nasa-window>.solar-nasa-gif{z-index:3;opacity:0;visibility:hidden;transition:opacity .25s ease,visibility 0s linear .25s}
.solar-nasa-preview .solar-preview-caption{gap:14px}
.solar-nasa-preview .solar-preview-caption span{color:#b5dcdd}
.solar-nasa-preview .solar-preview-caption strong{color:#a8f1e1}
.featured-copy>p.source-media-credit{font-size:.75rem;line-height:1.65;color:#657785;margin:17px 0 0}
.source-media-credit a{color:#126b65;text-decoration:underline;text-underline-offset:3px;font-weight:720}
.source-media-credit a:hover{color:#064c47}
@media (hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .featured-project:is(:hover,:focus-within) .solar-nasa-window>.solar-nasa-gif.is-ready{
    opacity:1;
    visibility:visible;
    transition:opacity .25s ease,visibility 0s;
  }
}
@media(prefers-reduced-motion:reduce){
  .solar-nasa-window>.solar-nasa-gif{transition:none!important;opacity:0!important;visibility:hidden!important}
  .solar-nasa-window>.solar-nasa-poster{transition:none!important}
}
@media(max-width:700px){.featured-copy>p.source-media-credit{font-size:.73rem}.solar-nasa-preview .solar-preview-caption{gap:6px}}
