:root{--gsd-gold:#d6ad43;--gsd-gold-soft:#d6ad431f;--gsd-gold-line:#d6ad4357}.personal-brand-logo{object-fit:contain;width:36px;height:36px;display:block}.client-case-study-page{background:radial-gradient(circle at 80% 5%, #d6ad4314, transparent 28rem), radial-gradient(circle at 8% 42%, #6ae4da09, transparent 30rem), var(--bg)}.client-case-study-page .section-code,.client-case-study-page .case-breadcrumb span,.client-case-study-page .decision-item>span{color:var(--gsd-gold)}.case-hero{padding:calc(var(--header-height) + 72px) 0 84px;border-bottom:1px solid var(--line);position:relative;overflow:hidden}.case-grid-bg{opacity:.22;pointer-events:none;background-image:linear-gradient(#edf2e90d 1px,#0000 1px),linear-gradient(90deg,#edf2e90d 1px,#0000 1px);background-size:42px 42px;position:absolute;inset:0;-webkit-mask-image:linear-gradient(#000,#0000 88%);mask-image:linear-gradient(#000,#0000 88%)}.case-hero-inner{z-index:1;position:relative}.case-breadcrumb{border-bottom:1px solid var(--line);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:24px;margin-bottom:62px;padding-bottom:17px;font-size:10px;display:flex}.case-breadcrumb a{color:var(--muted);text-decoration:none}.case-breadcrumb a:hover,.case-breadcrumb a:focus-visible{color:var(--text)}.case-hero-layout{grid-template-columns:minmax(0,1.35fr) minmax(300px,.65fr);align-items:end;gap:90px;display:grid}.case-hero-copy h1{max-width:880px;font-family:var(--font-display);letter-spacing:-.08em;margin:24px 0 26px;font-size:clamp(66px,10vw,138px);font-weight:500;line-height:.82}.case-hero-copy h1 span{color:var(--gsd-gold)}.case-hero-lead{max-width:820px;color:var(--text);font-family:var(--font-display);letter-spacing:-.035em;margin:0;font-size:clamp(24px,3vw,40px);line-height:1.25}.case-hero-summary{max-width:680px;color:var(--muted);margin:26px 0 0;font-size:15px;line-height:1.85}.case-hero-actions,.case-contact-actions{flex-wrap:wrap;gap:12px;margin-top:34px;display:flex}.client-case-study-page .button-solid{border-color:var(--gsd-gold);background:var(--gsd-gold);color:#0a0905}.client-case-study-page .button-solid:hover,.client-case-study-page .button-solid:focus-visible{background:#f1cf70;border-color:#f1cf70}.project-brief{border:1px solid var(--gsd-gold-line);background:linear-gradient(145deg,#d6ad4314,#0b0e0bf0 42%)}.project-brief-top{border-bottom:1px solid var(--line);min-height:54px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.11em;text-transform:uppercase;justify-content:space-between;align-items:center;padding:0 18px;font-size:9px;display:flex}.project-brief-top strong{color:var(--gsd-gold);font-size:12px}.project-brief dl{margin:0;padding:8px 20px 20px}.project-brief dl div{border-bottom:1px solid var(--line);grid-template-columns:.85fr 1.15fr;gap:20px;padding:17px 0;display:grid}.project-brief dl div:last-child{border-bottom:0}.project-brief dt{color:var(--dim);font-family:var(--font-mono);letter-spacing:.09em;text-transform:uppercase;font-size:8px}.project-brief dd{color:var(--text);font-family:var(--font-display);text-align:right;margin:0;font-size:14px}.confidentiality-banner{border:1px solid var(--gsd-gold-line);background:var(--gsd-gold-soft);grid-template-columns:210px 1fr;gap:36px;margin-top:68px;padding:23px 26px;display:grid}.confidentiality-banner span{color:var(--gsd-gold);font-family:var(--font-mono);letter-spacing:.11em;text-transform:uppercase;font-size:9px}.confidentiality-banner p{color:var(--muted);margin:0;font-size:13px;line-height:1.75}.case-showcase{padding:72px 0 0}.product-frame{border:1px solid var(--line-strong);background:#0b0e0b;margin:0;overflow:hidden;box-shadow:0 34px 90px #00000059}.product-frame-hero{border-color:var(--gsd-gold-line)}.product-frame-bar{border-bottom:1px solid var(--line);min-height:46px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:20px;padding:0 17px;font-size:8px;display:flex}.product-frame img{background:#080a08;width:100%}.product-frame figcaption{border-top:1px solid var(--line);color:var(--dim);font-family:var(--font-mono);letter-spacing:.055em;text-transform:uppercase;padding:15px 18px;font-size:8px;line-height:1.65}.case-section{border-bottom:1px solid var(--line);padding:124px 0}.case-section-alt{background:linear-gradient(#d6ad4306,#090c09b8)}.case-section-heading{grid-template-columns:minmax(0,1.25fr) minmax(260px,.75fr);align-items:end;gap:86px;margin-bottom:68px;display:grid}.case-section-heading h2,.section-copy h2,.outcomes-copy h2,.case-contact-panel h2{font-family:var(--font-display);letter-spacing:-.065em;margin:22px 0 0;font-size:clamp(42px,6vw,78px);font-weight:500;line-height:1}.case-section-heading h2 em{color:var(--gsd-gold);font-style:normal}.case-section-heading>p,.section-copy>p:last-child{color:var(--muted);margin:0 0 5px;font-size:14px;line-height:1.85}.context-layout{grid-template-columns:minmax(300px,.78fr) minmax(0,1.22fr);gap:76px;display:grid}.context-story{border-top:1px solid var(--gsd-gold-line);padding-top:26px}.context-story h3,.workflow-card h3,.decision-item h3,.reflection-card h3,.private-repository-note h3{font-family:var(--font-display);letter-spacing:-.035em;margin:0 0 16px;font-size:27px;font-weight:500}.context-story p{color:var(--muted);margin:0 0 20px;font-size:15px;line-height:1.85}.problem-grid,.workflow-grid,.outcome-grid,.reflection-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.problem-card,.workflow-card,.outcome-card,.reflection-card{border:1px solid var(--line);background:#101410b8}.problem-card{min-height:245px;padding:24px}.problem-card>span,.workflow-icon{border:1px solid var(--gsd-gold-line);min-width:38px;min-height:30px;color:var(--gsd-gold);font-family:var(--font-mono);place-items:center;font-size:8px;display:inline-grid}.problem-card h3{font-family:var(--font-display);letter-spacing:-.03em;margin:48px 0 12px;font-size:22px;font-weight:500}.problem-card p,.workflow-card p,.outcome-card p,.reflection-card li{color:var(--muted);margin:0;font-size:12px;line-height:1.75}.workflow-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.workflow-card{flex-direction:column;min-height:445px;padding:24px;display:flex}.workflow-card h3{margin-top:50px}.workflow-card>p{min-height:88px}.workflow-card ul,.reflection-card ul{border-top:1px solid var(--line);gap:10px;margin:auto 0 0;padding:24px 0 0;list-style:none;display:grid}.workflow-card li{color:var(--text);font-family:var(--font-mono);letter-spacing:.045em;text-transform:uppercase;font-size:8px;line-height:1.5}.workflow-card li:before,.reflection-card li:before{content:"•";color:var(--gsd-gold);margin-right:9px}.architecture-panel{border:1px solid var(--line-strong);background:radial-gradient(circle at 18% 35%,#d6ad4312,#0000 28rem),#0b0e0b}.architecture-panel-head{border-bottom:1px solid var(--line);min-height:48px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:22px;padding:0 18px;font-size:8px;display:flex}.architecture-flow{grid-template-columns:1fr 90px 1fr 90px 1fr;align-items:center;gap:0;min-height:430px;padding:58px;display:grid;position:relative}.architecture-node{border:1px solid var(--line-strong);background:#0e120e;align-content:center;gap:9px;min-height:180px;padding:28px;display:grid}.architecture-node>span,.architecture-offline>span{color:var(--gsd-gold);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-size:8px}.architecture-node strong,.architecture-offline strong{font-family:var(--font-display);letter-spacing:-.035em;font-size:24px;font-weight:500}.architecture-node small,.architecture-offline small{color:var(--muted);font-family:var(--font-mono);font-size:8px;line-height:1.65}.architecture-ui{border-color:var(--gsd-gold-line)}.architecture-api{border-color:#6ae4da57}.architecture-connector{background:var(--line-strong);height:1px;position:relative}.architecture-connector:after{content:"›";color:var(--gsd-gold);font-size:24px;position:absolute;top:50%;right:-4px;transform:translateY(-54%)}.architecture-connector span{color:var(--dim);font-family:var(--font-mono);font-size:7px;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.architecture-offline{border:1px dashed var(--gsd-gold-line);background:#d6ad430b;grid-template-columns:.45fr .8fr 1.75fr;align-items:center;gap:22px;padding:17px 22px;display:grid;position:absolute;bottom:28px;left:58px;right:58px}.case-tech-list{flex-wrap:wrap;gap:8px;margin:24px 0 0;padding:0;list-style:none;display:flex}.case-tech-list li{border:1px solid var(--line);color:var(--text);font-family:var(--font-mono);padding:8px 11px;font-size:8px}.two-column-section{grid-template-columns:.75fr 1.25fr;gap:90px;display:grid}.section-copy{top:calc(var(--header-height) + 40px);align-self:start;position:sticky}.section-copy h2{font-size:clamp(40px,5vw,68px)}.section-copy>p:last-child{margin-top:28px}.decision-list{border-top:1px solid var(--line-strong)}.decision-item{border-bottom:1px solid var(--line);grid-template-columns:62px 1fr;gap:24px;padding:32px 0;display:grid}.decision-item>span{font-family:var(--font-mono);font-size:10px}.decision-item h3{margin-bottom:10px;font-size:22px}.decision-item p{max-width:680px;color:var(--muted);margin:0;font-size:13px;line-height:1.8}.delivery-timeline{border-top:1px solid var(--line-strong);counter-reset:none;margin:0;padding:0;list-style:none}.delivery-timeline li{border-bottom:1px solid var(--line);grid-template-columns:88px 1fr;align-items:start;gap:34px;padding:28px 0;display:grid}.delivery-timeline li>span{color:var(--gsd-gold);font-family:var(--font-mono);font-size:10px}.delivery-timeline li>div{grid-template-columns:minmax(150px,.35fr) minmax(0,1fr);align-items:baseline;gap:32px;display:grid}.delivery-timeline h3{font-family:var(--font-display);letter-spacing:-.03em;margin:0;font-size:25px;font-weight:500}.delivery-timeline p{color:var(--muted);margin:0;font-size:13px;line-height:1.75}.outcomes-layout{grid-template-columns:.85fr 1.15fr;gap:80px;display:grid}.outcomes-copy h2{font-size:clamp(40px,5vw,68px)}.outcomes-copy>p:last-child{color:var(--muted);margin:26px 0 0;font-size:14px;line-height:1.85}.outcome-card{min-height:245px;padding:23px}.outcome-card strong{color:var(--gsd-gold);font-family:var(--font-display);letter-spacing:-.07em;font-size:42px;font-weight:400}.outcome-card span{color:var(--text);font-family:var(--font-display);margin:42px 0 10px;font-size:19px;font-weight:500;display:block}.reflection-card{padding:28px}.reflection-card ul{margin-top:28px}.reflection-card li{padding-left:0}.private-repository-note{border:1px solid var(--gsd-gold-line);background:var(--gsd-gold-soft);grid-template-columns:.8fr 1.2fr;gap:72px;margin-top:22px;padding:34px;display:grid}.private-repository-note span{color:var(--gsd-gold);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;margin-bottom:12px;font-size:8px;display:block}.private-repository-note h3{margin:0}.private-repository-note p{color:var(--muted);margin:0;font-size:13px;line-height:1.85}.case-contact{padding:80px 0}.case-contact-panel{border:1px solid var(--gsd-gold-line);background:linear-gradient(120deg,#d6ad431f,#0000 70%),#0b0e0b;justify-content:space-between;align-items:flex-end;gap:60px;padding:52px;display:flex}.case-contact-panel h2{max-width:700px;font-size:clamp(38px,5vw,66px)}.case-contact-actions{flex-shrink:0;margin-top:0}@media (width<=1080px){.case-hero-layout,.case-section-heading,.context-layout,.two-column-section,.outcomes-layout{grid-template-columns:1fr;gap:52px}.project-brief{max-width:650px}.workflow-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.architecture-flow{grid-template-columns:1fr 60px 1fr;gap:0;padding-bottom:155px}.architecture-data{grid-column:1/-1;width:min(100%,520px);margin:50px auto 0}.architecture-flow>.architecture-connector:nth-of-type(4){display:none}.section-copy{position:static}.case-contact-panel{flex-direction:column;align-items:flex-start}}@media (width<=720px){.case-hero{padding-top:calc(var(--header-height) + 42px)}.case-breadcrumb{flex-direction:column;align-items:flex-start;margin-bottom:42px}.case-hero-copy h1{font-size:clamp(58px,23vw,94px)}.case-hero-lead{font-size:24px}.confidentiality-banner,.private-repository-note{grid-template-columns:1fr;gap:16px}.case-showcase{padding-top:42px}.case-section{padding:88px 0}.case-section-heading{margin-bottom:48px}.problem-grid,.workflow-grid,.outcome-grid,.reflection-grid{grid-template-columns:1fr}.workflow-card{min-height:390px}.architecture-flow{grid-template-columns:1fr;gap:18px;padding:28px 20px 175px;display:grid}.architecture-flow>.architecture-connector:nth-of-type(4){display:block}.architecture-connector{width:1px;height:30px;margin:0 auto}.architecture-connector:after{top:auto;bottom:-9px;right:50%;transform:translate(50%)rotate(90deg)}.architecture-connector span{top:50%;bottom:auto;left:16px;transform:translateY(-50%)}.architecture-data{grid-column:auto;width:auto;margin:0}.architecture-offline{grid-template-columns:1fr;gap:6px;bottom:24px;left:20px;right:20px}.delivery-timeline li{grid-template-columns:44px 1fr;gap:16px}.delivery-timeline li>div{grid-template-columns:1fr;gap:8px}.case-contact-panel{padding:32px 24px}.case-contact-actions{width:100%}.case-contact-actions .button{justify-content:space-between;width:100%}.product-frame-bar{flex-direction:column;align-items:flex-start;padding-block:12px}}.product-frame img{object-fit:contain;image-rendering:auto;width:100%;height:auto}.architecture-flow{grid-template-columns:minmax(0,1fr) 72px minmax(0,1fr) 72px minmax(0,1fr);grid-template-areas:"ui rest api jpa data""offline offline offline offline offline";align-items:center;gap:28px 0;min-height:0;padding:56px;display:grid}.architecture-ui{grid-area:ui}.architecture-flow>.architecture-connector:first-of-type{grid-area:rest}.architecture-api{grid-area:api}.architecture-flow>.architecture-connector:nth-of-type(2){grid-area:jpa}.architecture-data{grid-area:data}.architecture-offline{border:1px dashed var(--gsd-gold-line);background:#d6ad430b;grid-area:offline;grid-template-columns:minmax(140px,.5fr) minmax(220px,.9fr) minmax(0,1.6fr);align-items:center;gap:22px;width:100%;padding:20px 24px;display:grid;position:static}.architecture-node{min-width:0;min-height:190px}.case-evidence-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:28px;display:grid}.case-evidence-card{border:1px solid var(--line);background:#101410b8;min-height:230px;padding:26px}.case-evidence-card span{color:var(--gsd-gold);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;font-size:8px}.case-evidence-card h3{font-family:var(--font-display);letter-spacing:-.03em;margin:44px 0 12px;font-size:22px;font-weight:500}.case-evidence-card p{color:var(--muted);margin:0;font-size:12px;line-height:1.75}.responsive-showcase-grid{grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);grid-template-areas:"portrait landscape""portrait mobile";align-items:stretch;gap:16px;display:grid}.responsive-shot{border:1px solid var(--line-strong);background:#0b0e0b;grid-template-rows:auto minmax(0,1fr) auto;min-width:0;margin:0;display:grid;overflow:hidden;box-shadow:0 28px 70px #00000042}.responsive-shot-portrait{grid-area:portrait}.responsive-shot-landscape{grid-area:landscape}.responsive-shot-mobile{grid-area:mobile}.responsive-shot-bar{border-bottom:1px solid var(--line);min-height:46px;color:var(--muted);font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;align-items:center;gap:18px;padding:0 16px;font-size:8px;display:flex}.responsive-shot-bar span:last-child{color:var(--gsd-gold)}.responsive-shot-stage{background:linear-gradient(#edf2e90b 1px,#0000 1px) 0 0/30px 30px,linear-gradient(90deg,#edf2e90b 1px,#0000 1px) 0 0/30px 30px,radial-gradient(circle at 50% 42%,#d6ad4314,#0000 48%) 0 0/100% 100%,#090c09 0 0/100% 100%;place-items:center;min-height:300px;padding:24px;display:grid;overflow:hidden}.responsive-shot-stage img{object-fit:contain;border:1px solid #edf2e929;width:100%;max-height:100%;box-shadow:0 24px 54px #0006}.responsive-shot-portrait .responsive-shot-stage{min-height:760px}.responsive-shot-portrait .responsive-shot-stage img{width:min(100%,520px);max-height:710px}.responsive-shot-landscape .responsive-shot-stage img{width:min(100%,640px)}.responsive-shot-mobile .responsive-shot-stage img{width:min(100%,280px);max-height:330px}.responsive-shot figcaption{border-top:1px solid var(--line);color:var(--dim);font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;padding:15px 17px;font-size:8px;line-height:1.65}@media (width<=1080px){.architecture-flow{grid-template-columns:minmax(0,1fr) 56px minmax(0,1fr);grid-template-areas:"ui rest api""data data data""offline offline offline";gap:28px 0;padding:42px}.architecture-flow>.architecture-connector:nth-of-type(2){display:none}.architecture-data{width:min(100%,540px);margin:0 auto}.case-evidence-grid{grid-template-columns:1fr 1fr}.case-evidence-card:last-child{grid-column:1/-1}.responsive-showcase-grid{grid-template-columns:1fr 1fr;grid-template-areas:"portrait portrait""landscape mobile"}.responsive-shot-portrait .responsive-shot-stage{min-height:650px}}@media (width<=720px){.architecture-flow{grid-template-columns:1fr;grid-template-areas:"ui""rest""api""jpa""data""offline";gap:16px;padding:24px 18px}.architecture-flow>.architecture-connector:nth-of-type(2){display:block}.architecture-connector{width:1px;height:30px;margin:0 auto}.architecture-connector:after{top:auto;bottom:-9px;right:50%;transform:translate(50%)rotate(90deg)}.architecture-connector span{top:50%;bottom:auto;left:16px;transform:translateY(-50%)}.architecture-data{width:auto;margin:0}.architecture-offline{grid-template-columns:1fr;gap:8px}.case-evidence-grid{grid-template-columns:1fr}.case-evidence-card:last-child{grid-column:auto}.responsive-showcase-grid{grid-template-columns:1fr;grid-template-areas:"portrait""landscape""mobile"}.responsive-shot-stage,.responsive-shot-portrait .responsive-shot-stage{min-height:340px;padding:18px}.responsive-shot-portrait .responsive-shot-stage img{width:min(100%,390px);max-height:560px}.responsive-shot-mobile .responsive-shot-stage img{max-height:420px}}
