.project-page { --project-accent:#dcefe5; }
.project-page .site-header { border-bottom-color:var(--line); }
.project-back { display:inline-flex; align-items:center; gap:9px; color:var(--muted); font-family:"DM Mono",monospace; font-size:12px; letter-spacing:.06em; text-transform:uppercase; }
.project-back:hover { color:var(--accent); }
.case-hero { width:min(1200px,calc(100% - 64px)); margin:0 auto; padding:80px 0 72px; }
.case-kicker { display:flex; justify-content:space-between; gap:24px; margin-bottom:50px; }
.case-number { font-family:"DM Mono",monospace; font-size:12px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }
.case-title { max-width:1000px; font-size:clamp(64px,10vw,132px); line-height:.82; letter-spacing:-.075em; margin:0 0 42px; }
.case-summary { max-width:900px; font-size:clamp(23px,3vw,38px); line-height:1.2; letter-spacing:-.035em; color:#3e454e; margin-bottom:44px; }
.case-actions { display:flex; flex-wrap:wrap; gap:12px; }
.case-tags { display:flex; flex-wrap:wrap; gap:8px; margin-top:48px; }
.case-tags span { padding:7px 10px; border-radius:5px; background:var(--project-accent); font-family:"DM Mono",monospace; font-size:11px; }
.case-canvas { width:min(1340px,calc(100% - 64px)); min-height:440px; margin:0 auto 112px; padding:64px; background:var(--project-accent); display:grid; place-items:center; overflow:hidden; }
.system-map { width:min(100%,1050px); display:grid; grid-template-columns:repeat(var(--steps,4),1fr); gap:34px; position:relative; }
.system-map::before { content:""; position:absolute; left:7%; right:7%; top:50%; height:1px; background:rgba(32,37,44,.25); }
.system-node { min-height:150px; padding:22px; background:rgba(255,255,255,.76); backdrop-filter:blur(6px); position:relative; z-index:1; display:flex; flex-direction:column; justify-content:space-between; box-shadow:0 12px 40px rgba(32,37,44,.06); }
.system-node span { font-family:"DM Mono",monospace; font-size:10px; letter-spacing:.08em; color:var(--muted); }
.system-node strong { font-size:18px; letter-spacing:-.025em; }
.case-body { width:min(1200px,calc(100% - 64px)); margin:0 auto; }
.case-row { display:grid; grid-template-columns:280px minmax(0,760px); justify-content:space-between; gap:70px; padding:86px 0; border-top:1px solid var(--line); }
.case-row-label { font-family:"DM Mono",monospace; font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted); }
.case-copy h2 { font-size:clamp(35px,5vw,58px); margin-bottom:28px; }
.case-copy p { font-size:19px; line-height:1.65; color:#444b54; }
.case-copy p:last-child { margin-bottom:0; }
.case-columns { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; margin-top:32px; }
.case-note { padding:25px; background:#f0f0ec; }
.case-note span { display:block; margin-bottom:28px; font-family:"DM Mono",monospace; font-size:10px; letter-spacing:.1em; text-transform:uppercase; color:var(--muted); }
.case-note h3 { font-size:21px; letter-spacing:-.035em; margin-bottom:10px; }
.case-note p { font-size:15px; line-height:1.5; margin:0; }
.case-next { width:min(1200px,calc(100% - 64px)); margin:40px auto 112px; display:block; padding:44px; background:var(--project-accent); transition:transform .18s ease; }
.case-next:hover { transform:translateY(-3px); }
.case-next span { font-family:"DM Mono",monospace; font-size:11px; letter-spacing:.1em; text-transform:uppercase; }
.case-next strong { display:block; margin-top:36px; font-size:clamp(35px,5vw,58px); letter-spacing:-.055em; }
@media (max-width:800px) {
  .case-hero,.case-body,.case-next { width:calc(100% - 40px); }
  .case-hero { padding:54px 0; }
  .case-kicker { margin-bottom:36px; }
  .case-title { font-size:clamp(52px,18vw,82px); }
  .case-summary { font-size:23px; }
  .case-canvas { width:calc(100% - 40px); min-height:auto; padding:24px; margin-bottom:72px; }
  .system-map { grid-template-columns:1fr; gap:12px; }
  .system-map::before { display:none; }
  .system-node { min-height:115px; }
  .case-row { grid-template-columns:1fr; gap:28px; padding:62px 0; }
  .case-columns { grid-template-columns:1fr; }
  .case-copy p { font-size:17px; }
}

/* Research-cover system adapted from the Clarity template while retaining the
   portfolio's DM Sans / DM Mono typography and restrained color language. */
.project-cover{width:min(1340px,calc(100% - 64px));margin:0 auto 100px;background:var(--project-accent)}
.project-cover .case-hero{width:auto;min-height:650px;padding:72px;display:flex;align-items:flex-end}
.research-cover-grid{display:grid!important;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr);gap:58px;align-items:end!important}
.research-cover-grid>*{min-width:0}.project-cover .case-title{max-width:760px;font-size:clamp(48px,5.5vw,78px);line-height:.98;letter-spacing:-.055em}
.project-cover .case-summary{max-width:700px;font-size:clamp(20px,2.1vw,29px);line-height:1.4;letter-spacing:-.025em}
.research-byline{margin:0 0 28px;color:#555d65;font-family:"DM Mono",monospace;font-size:12px}
.research-cover-media{margin:0;align-self:center;aspect-ratio:4/5;min-height:480px;position:relative;overflow:hidden;background:#fff}
.research-cover-media img{display:block;width:100%;height:100%;object-fit:cover}.research-cover-media figcaption{position:absolute;left:16px;bottom:16px;padding:7px 9px;background:rgba(251,251,249,.9);font-family:"DM Mono",monospace;font-size:10px}
.research-toc{position:sticky;top:16px;z-index:5;width:max-content;max-width:calc(100% - 40px);margin:-70px auto 74px;padding:10px 12px;display:flex;gap:4px;border:1px solid var(--line);border-radius:999px;background:rgba(251,251,249,.9);backdrop-filter:blur(12px)}
.research-toc a{padding:7px 12px;border-radius:999px;color:var(--muted);font-family:"DM Mono",monospace;font-size:10px}.research-toc a:hover{background:var(--project-accent);color:var(--ink)}
.section-index{margin-bottom:40px;color:var(--muted);font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.uav-system{margin:0}.uav-system img{display:block;width:100%;height:auto}.uav-system figcaption{max-width:760px;margin:20px auto 0;text-align:center;color:var(--muted);font-size:13px;line-height:1.5}
.research-metrics{width:min(1040px,calc(100% - 64px));margin:0 auto 84px;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.research-metrics div{padding:26px 20px;border-right:1px solid var(--line)}.research-metrics div:last-child{border-right:0}.research-metrics strong{display:block;margin-bottom:7px;font-size:28px;letter-spacing:-.045em}.research-metrics span{color:var(--muted);font-family:"DM Mono",monospace;font-size:10px;line-height:1.35;text-transform:uppercase}
.research-prose{width:min(760px,calc(100% - 64px));margin:0 auto;padding:76px 0;scroll-margin-top:90px}.research-prose h2,.research-wide h2{margin:0 0 30px;font-size:clamp(38px,5vw,60px);line-height:1.02;letter-spacing:-.052em}.research-prose h3{margin:50px 0 18px;font-size:26px;letter-spacing:-.035em}.research-prose>p{color:#444b54;font-size:19px;line-height:1.72}.research-prose .inline-equation{white-space:nowrap;font-family:Georgia,serif;font-style:italic;color:var(--ink)}
.research-wide{width:min(1040px,calc(100% - 64px));margin:0 auto;padding:76px 0;scroll-margin-top:90px}.research-section{border-top:1px solid var(--line)}.research-lede{max-width:820px;color:#444b54;font-size:18px;line-height:1.7}
.research-callout{margin-top:38px;padding:25px 28px;border-left:4px solid var(--accent);background:#eff2ee}.research-callout span{display:block;margin-bottom:9px;color:var(--accent);font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase}.research-callout p{margin:0;color:#3f474f;font-size:15px;line-height:1.6}
.research-figure{width:min(1200px,calc(100% - 64px));margin:62px auto;padding:48px;background:#f0f1ef;scroll-margin-top:90px}.research-figure img{display:block;width:100%;height:auto}.research-figure figcaption,.research-gallery figcaption{max-width:860px;margin:22px auto 0;color:#5b636b;font-size:13px;line-height:1.55;text-align:center}.research-figure figcaption strong{color:var(--ink)}.research-figure figcaption span{color:#7b8581;font-family:"DM Mono",monospace;font-size:10px}.technical-diagram{overflow:hidden}.diagram-viewport{width:100%;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;scrollbar-color:#9caaa5 transparent}.diagram-viewport object{display:block;width:100%;min-width:760px;aspect-ratio:1400/840}.technical-diagram:not(#architecture) .diagram-viewport object{aspect-ratio:1400/900}.mobile-hint{display:none}
.research-comparison{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin-top:40px}.research-comparison article{min-height:275px;padding:30px;background:var(--project-accent)}.research-comparison span{font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.research-comparison h3{margin:62px 0 14px;font-size:27px;letter-spacing:-.04em}.research-comparison p{margin:0;color:#444b54;font-size:15px;line-height:1.65}
.equation-block{margin:30px 0;padding:30px 22px;overflow-x:auto;background:#f0f1ef;text-align:center;color:var(--ink);font-family:Georgia,serif;font-size:clamp(20px,3vw,29px);font-style:italic}.equation-block sub{font-size:.65em}.dashboard-figure{background:#edf0ec}
.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(220px,.55fr);gap:22px;align-items:stretch}.dashboard-grid img{width:100%;height:100%;object-fit:contain;background:#fff}
.result-table-wrap{margin-top:38px;overflow-x:auto}.result-table{width:100%;border-collapse:collapse;font-size:14px}.result-table th,.result-table td{padding:16px 14px;border-bottom:1px solid #d8dad6;text-align:left;vertical-align:top;line-height:1.5}.result-table th{font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.result-table tbody tr:nth-child(odd){background:#f0f1ef}.result-table td:nth-child(2){font-weight:700;white-space:nowrap}
.research-gallery{width:min(1200px,calc(100% - 64px));margin:62px auto;padding:38px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;background:#f0f1ef}.research-gallery figure{margin:0;padding:18px;background:#fff}.research-gallery img{display:block;width:100%;height:auto}.research-gallery figcaption{margin-top:14px;font-size:11px}
.fpga-gallery figure{display:flex;flex-direction:column;justify-content:center}.fpga-gallery img{max-height:460px;object-fit:contain}.fpga-cover{background:#e4e8e5}.fpga-bench-figure{background:#e5e9e5}.fpga-bench-figure img{max-height:800px;object-fit:contain}.fpga-repo-action{margin-top:32px}.fpga-repo-action .button{width:fit-content}
body[data-project="fpga-hologram"]{overflow-x:hidden}@media(max-width:800px){.fpga-cover .case-kicker{display:grid;gap:10px}.fpga-cover .case-title{font-size:clamp(38px,11.5vw,48px);letter-spacing:-.055em}.fpga-cover .case-actions{display:grid;grid-template-columns:1fr 1fr}.fpga-cover .case-actions .button{min-width:0;padding-inline:14px;justify-content:space-between}}
.hardware-layout{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(0,1.2fr);gap:54px;align-items:start}.hardware-layout figure{margin:0;background:#f0f1ef}.hardware-layout img{display:block;width:100%;height:auto}.hardware-layout p,.hardware-layout li{color:#444b54;font-size:16px;line-height:1.65}.hardware-layout ul{padding-left:20px;display:grid;gap:8px}.hardware-layout .caption{color:var(--muted);font-size:13px}
.field-test-figure{background:#e5e9e5}.field-test-figure img{aspect-ratio:49/29;object-fit:cover}.poster-figure{background:#e6e4df}.poster-figure img{max-height:920px;object-fit:contain}.research-limitations{margin:35px 0 0;padding:0;list-style:none}.research-limitations li{padding:22px 0;border-top:1px solid var(--line);color:#444b54;font-size:16px;line-height:1.6}.research-limitations li:last-child{border-bottom:1px solid var(--line)}.research-limitations strong{color:var(--ink)}.reproducibility-block{padding-bottom:110px}.reproducibility-block .case-actions{margin-top:32px}.research-section code{padding:2px 5px;background:#eef0ec;font-family:"DM Mono",monospace;font-size:.82em}
@media(max-width:800px){.project-cover{width:calc(100% - 40px);margin-bottom:72px}.project-cover .case-hero{min-height:560px;padding:38px 24px}.research-cover-grid{grid-template-columns:1fr;gap:30px}.research-cover-media{width:min(100%,420px);min-height:0}.research-toc{overflow-x:auto;justify-content:flex-start;margin-top:-52px;margin-bottom:40px}.project-cover .case-title{font-size:clamp(48px,16vw,70px);line-height:.9}.project-cover .case-summary{font-size:20px;line-height:1.3}}
@media(max-width:800px){.pollinator-cover .case-kicker{display:grid;grid-template-columns:1fr;gap:10px}.pollinator-cover .research-byline{line-height:1.55}.uav-toc{width:calc(100% - 40px)}.research-metrics{width:calc(100% - 40px);grid-template-columns:repeat(2,1fr)}.research-metrics div:nth-child(2){border-right:0}.research-metrics div:nth-child(-n+2){border-bottom:1px solid var(--line)}.research-prose,.research-wide{width:calc(100% - 40px);padding:58px 0}.research-prose>p{font-size:17px}.research-figure,.research-gallery{width:calc(100% - 40px);padding:20px}.research-comparison,.research-gallery,.hardware-layout,.dashboard-grid{grid-template-columns:1fr}.research-comparison article{min-height:230px}.hardware-layout{gap:30px}.result-table{min-width:720px}.poster-figure img{max-height:none}}
@media(max-width:800px){.desktop-hint{display:none}.mobile-hint{display:inline}}

/* TargetONCO: restrained clinical-research system language. */
.targetonco-cover{--project-accent:#e3eee9;background:linear-gradient(135deg,#e2eee8 0%,#eee5df 100%)}
body[data-project="targetonco"]{overflow-x:hidden}
.target-reference-diagram{padding:24px;background:#fff}.target-reference-diagram img{width:100%;height:auto;object-fit:contain}.target-reference-diagram-complex{width:min(1340px,calc(100% - 40px));padding:18px}
.target-reference-diagram img{cursor:zoom-in;transition:filter .2s ease,transform .2s ease}.target-reference-diagram img:hover{filter:brightness(.98);transform:scale(1.003)}.target-reference-diagram img:focus-visible{outline:3px solid var(--accent);outline-offset:5px}.zoomable-media,.zoomable-svg{cursor:zoom-in}.zoomable-media:focus-visible,.zoomable-svg:focus-visible{outline:3px solid var(--accent);outline-offset:5px}.diagram-lightbox{width:calc(100vw - 48px);max-width:none;height:calc(100vh - 48px);max-height:none;margin:auto;padding:0;border:0;background:#f8f7f2;box-shadow:0 28px 90px rgba(17,31,29,.3)}.diagram-lightbox::backdrop{background:rgba(17,25,24,.78);backdrop-filter:blur(5px)}.diagram-lightbox-toolbar{position:sticky;top:0;z-index:3;height:58px;padding:10px 14px;display:flex;align-items:center;justify-content:flex-end;gap:7px;background:rgba(248,247,242,.94);border-bottom:1px solid #dde0dc;backdrop-filter:blur(8px)}.diagram-lightbox-toolbar button,.diagram-lightbox-level{min-width:40px;height:36px;padding:0 11px;display:grid;place-items:center;border:1px solid #c9ceca;border-radius:999px;background:#fff;color:var(--ink);font:11px "DM Mono",monospace;cursor:pointer}.diagram-lightbox-level{min-width:58px;background:transparent;border:0}.diagram-lightbox-close{margin-left:8px!important;min-width:auto!important;padding-inline:14px!important;text-transform:uppercase}.diagram-lightbox-close span{margin-left:7px;font-size:17px}.diagram-lightbox-scroll{width:100%;height:calc(100% - 58px);padding:28px;overflow:auto;overscroll-behavior:contain}.diagram-lightbox-scroll img{display:block;width:100%;max-width:none;height:auto;margin:auto;transform-origin:top left}.diagram-lightbox-scroll:active{cursor:grabbing}
@media(max-width:800px){.diagram-lightbox{width:calc(100vw - 12px);height:calc(100vh - 12px)}.diagram-lightbox-toolbar{padding-inline:8px}.diagram-lightbox-toolbar button{padding-inline:9px}.diagram-lightbox-level{display:none}.diagram-lightbox-scroll{padding:14px}.target-reference-diagram{padding:10px}}
@media(max-width:800px){.diagram-viewport{overflow:visible}.diagram-viewport object,.ombench-diagram .diagram-viewport object,.cipher-diagram object,.lifeedit-diagram object{display:block;width:100%!important;max-width:100%!important;min-width:0!important;height:auto!important;aspect-ratio:1400/840!important}.technical-diagram:not(#architecture) .diagram-viewport object{aspect-ratio:1400/900!important}.cipher-motion object{width:100%;height:auto;aspect-ratio:1200/640}.research-figure object{max-width:100%}}

/* Quantum Bayesian Learner research case study. */
.qbl-cover{--project-accent:#e5e1ed;background:linear-gradient(135deg,#ebe7f1,#f1e4df)}.qbl-cover .case-title{font-size:clamp(46px,5vw,75px)}.qbl-cover .case-title span:last-child{display:block}.venue-badge{width:fit-content;margin:0 0 24px;padding:9px 12px;border:1px solid #a79bb8;background:rgba(255,255,255,.5);font:11px "DM Mono",monospace;letter-spacing:.035em;color:#4f485a}.venue-badge span{margin-right:8px;color:#296240;font-weight:700;text-transform:uppercase}.qbl-source-figure{background:#f4f1e9}.qbl-source-figure img{max-height:760px;object-fit:contain}.mini-equation{margin-top:22px;padding:13px;background:rgba(255,255,255,.55);font:italic 17px Georgia,serif;text-align:center}.qbl-result-callouts{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:38px;background:#d8d9d5;border:1px solid #d8d9d5}.qbl-result-callouts article{padding:27px;background:#f7f6f1}.qbl-result-callouts strong{display:block;margin-bottom:8px;font-size:27px;letter-spacing:-.04em}.qbl-result-callouts span{font:10px/1.5 "DM Mono",monospace;text-transform:uppercase;color:var(--muted)}.qbl-gallery img{aspect-ratio:4/3;object-fit:contain}.qbl-poster{background:#e8ebf1}.qbl-poster a{display:block}.qbl-poster img{max-height:none;width:100%}
.qbl-source-figure img,.qbl-gallery img{cursor:zoom-in}
body[data-project="quantum-bayesian-learner"]{overflow-x:hidden}
@media(max-width:800px){.qbl-cover{width:calc(100vw - 40px);overflow:hidden}.qbl-cover .blog-intro{width:calc(100vw - 88px);max-width:calc(100vw - 88px);min-width:0;overflow:hidden}.qbl-cover .case-kicker{display:grid;gap:10px}.qbl-cover .case-title{font-size:clamp(36px,10.3vw,48px);line-height:.98}.qbl-cover .case-title span{display:block}.qbl-cover .case-summary{max-width:25ch}.qbl-cover .research-byline{max-width:32ch}.qbl-cover .case-summary,.qbl-cover .research-byline{overflow-wrap:anywhere}.venue-badge{width:28ch;max-width:100%;line-height:1.55;overflow-wrap:anywhere}.qbl-result-callouts{grid-template-columns:1fr}.qbl-source-figure{padding:10px}.qbl-gallery img{aspect-ratio:auto}}

/* Ombench: operational memory and replay research case study. */
.ombench-cover{--project-accent:#e2e7ea;background:linear-gradient(135deg,#e4e9eb,#e9e4df)}.ombench-cover .case-title{font-size:clamp(62px,8vw,112px)}.ombench-diagram{background:#f1f2ef}.ombench-diagram .diagram-viewport{display:grid;place-items:center;overflow:auto}.ombench-diagram .diagram-viewport object{width:auto;max-width:100%;height:720px;min-width:0;aspect-ratio:auto}.rubric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:40px 0;background:#d7dad6;border:1px solid #d7dad6}.rubric-grid article{min-height:210px;padding:25px;background:#f7f6f1}.rubric-grid span{font:10px "DM Mono",monospace;letter-spacing:.12em;color:#78837f}.rubric-grid h3{margin:60px 0 12px;font-size:22px}.rubric-grid p{margin:0;color:#56615f;font-size:14px;line-height:1.55}.ombench-cover+.research-toc a:hover{background:#e2e7ea}
@media(max-width:800px){body[data-project="ombench"]{overflow-x:hidden}.ombench-cover{width:calc(100vw - 40px);overflow:hidden}.ombench-cover .blog-intro{width:calc(100vw - 88px);max-width:calc(100vw - 88px);min-width:0;overflow:hidden}.ombench-cover .case-kicker{display:grid;gap:10px}.ombench-cover .case-title{font-size:clamp(50px,16vw,72px)}.ombench-cover .case-summary,.ombench-cover .research-byline{max-width:100%;overflow-wrap:anywhere}.ombench-cover .case-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.ombench-cover .case-actions .button{min-width:0;padding-inline:15px;justify-content:space-between}.ombench-cover .case-actions .button:first-child{grid-column:1/-1}.ombench-diagram{padding:10px}.ombench-diagram .diagram-viewport{justify-content:start}.ombench-diagram .diagram-viewport object{height:600px;max-width:none}.rubric-grid{grid-template-columns:1fr 1fr}.rubric-grid article{min-height:185px}}
@media(max-width:480px){body[data-project="ombench"] .site-header nav{gap:8px}.ombench-cover .case-tags{margin-top:34px}.rubric-grid{grid-template-columns:1fr}.rubric-grid article{min-height:155px}.rubric-grid h3{margin-top:38px}}

/* CipherShield: cryptographic protocol and trust-boundary case study. */
.cipher-cover{--project-accent:#e5e0ed;background:linear-gradient(135deg,#e7e1ef,#e6e9e4)}.cipher-cover .case-title{font-size:clamp(52px,7vw,94px)}body[data-project="ciphershield"]{overflow-x:hidden}.cipher-diagram{background:#efefea}.cipher-diagram .diagram-viewport{display:grid;place-items:center}.cipher-diagram object{width:100%;min-width:1000px;aspect-ratio:1400/820}.cipher-diagram:nth-of-type(2) object{aspect-ratio:1400/760}.cipher-motion{padding:0;background:#172623}.cipher-motion object{display:block;width:100%;aspect-ratio:1200/760}.cipher-motion figcaption{padding:0 30px 30px;color:#bac5c2}.cipher-motion figcaption strong{color:#fff}.cipher-award{margin-bottom:80px;padding:38px 44px;display:flex;align-items:center;justify-content:space-between;gap:50px;background:#152523;color:#f8f7f2}.cipher-award .section-index{margin-bottom:20px;color:#b3c0bc}.cipher-award h2{margin-bottom:13px;color:#fff;font-size:clamp(30px,4vw,48px)}.cipher-award p{max-width:700px;margin:0 0 20px;color:#cad3d0;line-height:1.6}.cipher-award a{font:11px "DM Mono",monospace;color:#e9c96f;text-transform:uppercase;letter-spacing:.06em}.cipher-award img{width:180px;height:auto}.cipher-stack{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:40px 0;background:#d5d9d5;border:1px solid #d5d9d5}.cipher-stack article{min-height:255px;padding:25px;background:#f7f6f1}.cipher-stack span{font:10px "DM Mono",monospace;letter-spacing:.12em;color:#77827f}.cipher-stack h3{margin:74px 0 12px;font-size:23px}.cipher-stack p{margin:0;color:#56615f;font-size:14px;line-height:1.55}
@media(max-width:800px){.cipher-cover{width:calc(100vw - 40px);overflow:hidden}.cipher-cover .blog-intro{width:calc(100vw - 88px);max-width:calc(100vw - 88px);min-width:0}.cipher-cover .case-kicker{display:grid;gap:10px}.cipher-cover .case-title{font-size:clamp(42px,12vw,62px)}.cipher-cover .case-actions{display:grid;grid-template-columns:1fr 1fr}.cipher-cover .case-actions .button:first-child{grid-column:1/-1}.cipher-diagram{padding:10px}.cipher-diagram .diagram-viewport{justify-content:start}.cipher-motion{padding:0}.cipher-award{width:calc(100vw - 40px);padding:30px 24px;flex-direction:column;align-items:flex-start}.cipher-stack{grid-template-columns:1fr 1fr}.cipher-stack article{min-height:210px}}

/* SonicSync: published underwater psychoacoustics and wearable engineering. */
.sonic-cover{--project-accent:#dce5e7;background:linear-gradient(135deg,#dce6e8,#e7e3df)}.sonic-cover .case-title{font-size:clamp(54px,7vw,96px)}body[data-project="sonicsync"]{overflow-x:hidden}.collab-badge{display:inline-flex;align-items:center;gap:12px;width:fit-content;margin:0 0 25px;padding:10px 14px;border:1px solid #9facaa;background:rgba(255,255,255,.48);font:italic 12px Georgia,serif;color:#4f5d5a}.collab-badge img{width:82px;height:20px;object-fit:contain}.sonic-source{background:#e7ebea}.sonic-source img{max-height:780px;object-fit:contain}.sonic-system img{max-height:none}.sonic-results{display:grid;grid-template-columns:1.05fr .95fr;gap:24px;align-items:stretch}.tone-chart{padding:32px;background:#f1f2ee}.tone-row{display:grid;grid-template-columns:60px 1fr 55px;gap:14px;align-items:center;margin:17px 0;font:12px "DM Mono",monospace}.tone-track{height:20px;background:#e2e4df}.tone-track i{display:block;height:100%;width:var(--v);background:#789d96;transform-origin:left;animation:tone-grow 1.1s ease both}.tone-row:nth-child(2) i{animation-delay:.1s}.tone-row:nth-child(3) i{animation-delay:.2s}.tone-row:nth-child(4) i{animation-delay:.3s}.tone-row:nth-child(5) i{animation-delay:.4s}@keyframes tone-grow{from{transform:scaleX(0)}to{transform:scaleX(1)}}.sonic-venue{border-color:#738d98;background:#edf3f3}.sonic-venue span{color:#245e67}.sonic-gallery img{aspect-ratio:4/3;object-fit:contain;background:#fff}
.sonic-data-block{margin-top:48px;padding:34px;background:#f1f2ee;border-top:3px solid #789d96}.sonic-data-block>div:first-child{display:grid;grid-template-columns:.75fr 1.25fr;gap:30px;align-items:start}.sonic-data-block h3,.sonic-hsd h3{font-size:26px;letter-spacing:-.035em;margin-bottom:10px}.sonic-data-block p,.sonic-hsd p{color:#5d6665;line-height:1.6}.sonic-observation-table{min-width:820px;background:#fff}.sonic-observation-table th:not(:first-child),.sonic-observation-table td:not(:first-child){text-align:center}.sonic-observation-table td:first-child{font-weight:700;white-space:nowrap}.sonic-stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:20px;background:#d8ddda;border:1px solid #d8ddda}.sonic-stat-grid article{padding:27px;background:#fff}.sonic-stat-grid span{display:block;margin-bottom:16px;font:10px "DM Mono",monospace;letter-spacing:.1em;text-transform:uppercase;color:#687572}.sonic-stat-grid strong{display:block;font-size:24px;letter-spacing:-.04em}.sonic-stat-grid p{margin:8px 0 0;color:#68706f;font:12px "DM Mono",monospace}.sonic-hsd{display:grid;grid-template-columns:.7fr 1.3fr;gap:42px;margin-top:48px;padding:38px;background:#e5ece9}.hsd-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:#cbd6d2;border:1px solid #cbd6d2}.hsd-list span{display:grid;grid-template-columns:1fr 40px;grid-template-rows:auto auto;gap:4px 12px;padding:15px 17px;background:#fff}.hsd-list b{font:600 13px "DM Mono",monospace}.hsd-list em{font:13px "DM Mono",monospace;text-align:right;font-style:normal}.hsd-list i{grid-column:1/-1;color:#287259;font:italic 11px Georgia,serif}.hsd-list .not-significant{background:#f4e8e3}.hsd-list .not-significant i{color:#9b543c}.sonic-circuit-gallery{grid-template-columns:1fr;gap:28px}.sonic-circuit-gallery figure{padding:0 0 20px;overflow:hidden}.sonic-circuit-gallery img{aspect-ratio:12/7;width:100%;background:#f7f6f1}.sonic-circuit-gallery figcaption{padding:0 20px}.sonic-circuit-gallery figure{transition:transform .22s ease,box-shadow .22s ease}.sonic-circuit-gallery figure:hover{transform:translateY(-3px);box-shadow:0 18px 45px rgba(36,65,59,.1)}.sonic-fabrication-gallery{margin-top:-38px}
@media(max-width:800px){.sonic-cover{width:calc(100vw - 40px);overflow:hidden}.sonic-cover .blog-intro{width:calc(100vw - 88px);max-width:calc(100vw - 88px);min-width:0}.sonic-cover .case-kicker{display:grid;gap:10px}.sonic-cover .case-title{font-size:clamp(45px,13vw,66px)}.sonic-cover .case-actions{display:grid;grid-template-columns:1fr 1fr}.sonic-cover .case-actions .button:first-child{grid-column:1/-1}.sonic-results{grid-template-columns:1fr}.sonic-gallery img{aspect-ratio:auto}.collab-badge{max-width:100%;flex-wrap:wrap}.cipher-stack{grid-template-columns:1fr}.sonic-data-block{margin-top:36px;padding:20px}.sonic-data-block>div:first-child,.sonic-hsd{grid-template-columns:1fr}.sonic-stat-grid{grid-template-columns:1fr}.sonic-hsd{gap:20px;padding:24px 20px}.hsd-list{grid-template-columns:1fr}.sonic-circuit-gallery{width:calc(100% - 20px);padding:10px}.sonic-circuit-gallery figure{overflow-x:auto}.sonic-circuit-gallery img{width:860px;max-width:none;aspect-ratio:12/7}.sonic-fabrication-gallery{margin-top:-32px}}
.oncology-flow{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;margin:38px 0}.oncology-flow article{min-height:220px;padding:28px;background:#eef3ef;border:1px solid #cad5d0;transition:transform .2s ease,box-shadow .2s ease}.oncology-flow article:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(28,58,54,.09)}.oncology-flow span{font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.12em;color:#75827f}.oncology-flow h3{margin:58px 0 12px;font-size:25px;letter-spacing:-.035em}.oncology-flow p{margin:0;color:#56615f;font-size:14px;line-height:1.6}.oncology-gallery img{aspect-ratio:4/3;object-fit:contain;background:#f8f8f5}
@media(max-width:800px){.oncology-flow{grid-template-columns:1fr}.oncology-flow article{min-height:190px}.oncology-gallery img{aspect-ratio:auto}.targetonco-cover{overflow:hidden}.targetonco-cover .case-kicker{display:grid;grid-template-columns:1fr;gap:10px}.targetonco-cover .case-title{font-size:clamp(42px,13.5vw,62px);letter-spacing:-.065em}.targetonco-cover .case-summary,.targetonco-cover .research-byline{max-width:100%;line-height:1.7;overflow-wrap:anywhere}}
.cipher-motion object{aspect-ratio:1200/640}
.duke-collaboration,.research-partners{display:flex;align-items:center;gap:12px;width:fit-content;margin:0 0 24px;padding:10px 14px;border:1px solid #aab7b8;background:rgba(255,255,255,.48);font:italic 12px Georgia,serif;color:#53615f}.duke-collaboration img{width:80px;height:27px;object-fit:contain}.duke-collaboration strong{padding-left:11px;border-left:1px solid #aab7b8;font:600 12px "DM Sans",sans-serif;color:#1a3048}.research-partners strong{font:600 12px "DM Sans",sans-serif;color:#173b35}.research-partners i{width:1px;height:20px;background:#aab7b8}
.partner-lockup{align-items:center;padding:12px 16px}.partner-lockup>span{flex:0 0 auto}.partner-lockup img{display:block;width:190px;max-height:82px;object-fit:contain}.sponsor-partner img{width:145px;max-height:48px}
.lifeedit-cover{--project-accent:#dcefe5;background:linear-gradient(135deg,#dcefe5,#e7e5ed)}.lifeedit-cover .case-title{font-size:clamp(48px,5.2vw,76px)}.lifeedit-cover .partner-lockup{background:#fff}.lifeedit-cover .partner-lockup img{width:235px}.lifeedit-diagram{background:#f3f2ec;overflow:hidden}.lifeedit-diagram .diagram-viewport{display:grid;place-items:center}.lifeedit-diagram object{display:block;width:100%;min-width:1000px;aspect-ratio:1400/760}.lifeedit-gallery{background:#e9eeea}.lifeedit-gallery figure{display:flex;flex-direction:column}.lifeedit-gallery img{flex:1;object-fit:contain;background:#fff}.lifeedit-stack article:nth-child(1){background:#edf5f0}.lifeedit-stack article:nth-child(2){background:#f6f0df}.lifeedit-stack article:nth-child(3){background:#f3e5e2}.lifeedit-stack article:nth-child(4){background:#eeeaf3}
@media(max-width:800px){.sonic-venue{width:100%;box-sizing:border-box;line-height:1.5;overflow-wrap:anywhere}}
@media(max-width:800px){.duke-collaboration,.research-partners{width:100%;box-sizing:border-box;flex-wrap:wrap}.research-partners span{width:100%}}
@media(max-width:800px){.partner-lockup img{width:min(100%,220px);max-height:95px}.sponsor-partner img{width:160px;max-height:55px}}
@media(max-width:800px){.lifeedit-cover{width:calc(100vw - 40px)}.lifeedit-cover .case-kicker{display:grid;gap:10px}.lifeedit-cover .case-title{font-size:clamp(39px,11vw,54px)}.lifeedit-cover .case-actions{display:grid;grid-template-columns:1fr 1fr}.lifeedit-cover .case-actions .button:first-child{grid-column:1/-1}.lifeedit-cover .partner-lockup img{width:min(100%,235px)}.lifeedit-diagram{padding:10px}.lifeedit-diagram .diagram-viewport{justify-content:start}.lifeedit-gallery img{aspect-ratio:auto}.lifeedit-stack{grid-template-columns:1fr}}
@media(max-width:800px){.project-cover{overflow:hidden}.project-cover .blog-intro{width:calc(100vw - 88px);max-width:calc(100vw - 88px);min-width:0;overflow:hidden}.project-cover .case-title{max-width:100%;font-size:clamp(40px,12vw,56px);overflow-wrap:anywhere}.project-cover .case-summary,.project-cover .research-byline{max-width:100%;overflow-wrap:anywhere}}
.lifeedit-gallery img{cursor:zoom-in;transition:transform .2s ease,filter .2s ease}.lifeedit-gallery img:hover{transform:scale(1.008);filter:contrast(1.02)}.lifeedit-gallery img:focus-visible{outline:3px solid var(--accent);outline-offset:4px}
.lifeedit-diagram object{aspect-ratio:1400/660}
.zoomable-svg object{pointer-events:none}
