@font-face{font-family:'Roboto Mono';src:url('assets/roboto-mono-latin-variable.woff2') format('woff2');font-weight:100 700;font-style:normal;font-display:swap}
:root{--font:'Roboto Mono',ui-monospace,'SFMono-Regular','Cascadia Code',Menlo,Monaco,Consolas,'Liberation Mono','DejaVu Sans Mono',monospace;--font-mono:var(--font);scroll-behavior:smooth;scroll-padding-top:105px;--bg:#f0f1eb;--paper:#fafbf7;--ink:#273128;--muted:#455440;--quiet:#52614e;--copy:#3c4d39;--line:#87967c55;--accent:#405b38;--stack:#4c6545;--selection:#d9e8cc;--selection-ink:#202b1c;--water-glow:#fbfcf7;--water-deep:#a6bac2;--water-deep-glow:#b7cbd0;--fish:#4c6550;--fish-opacity:.76;--surface-light:#fcfdf722;--sheet:rgb(251 252 248 / .40);--mobile-panel:rgb(251 252 248 / .34);--mobile-intro:rgb(251 252 248 / .26);--paper-edge:#ffffff80;--paper-shadow:#68705e0b;--paper-outline:#929d8315;--tint:#e1e9d82b;--hover:#dce5d344;--control-bg:#f6f8f0eb;--dialog:#f9faf5;--dialog-shadow:#26331c2b;--backdrop:#e9ede2b3;--button-ink:#f7f9f0;--button-hover:#344d2d;color-scheme:light}
:root[data-theme=dark]{--bg:#091319;--paper:#101e25;--ink:#e3edef;--muted:#a6bcbf;--quiet:#8fa8ac;--copy:#c0d0d2;--line:#8bafb638;--accent:#b9d6b7;--stack:#b9cfbd;--selection:#8faf9b;--selection-ink:#0a1618;--water-surface:#153740;--water-glow:#285c68;--water-deep:#010408;--water-deep-glow:#040c15;--fish:#96c6ce;--fish-opacity:.78;--surface-light:#6aaba70a;--sheet:rgb(12 24 31 / .32);--mobile-panel:rgb(12 25 32 / .24);--mobile-intro:rgb(12 25 32 / .18);--paper-edge:#92b7bf20;--paper-shadow:#00000018;--paper-outline:#8aaeb40c;--tint:#7fa5ae0a;--hover:#8bb4b41a;--control-bg:#102329ed;--dialog:#102128;--dialog-shadow:#00000070;--backdrop:#020a10ab;--button-ink:#10221b;--button-hover:#cbe4c7;color-scheme:dark}
:root[data-theme=dark][data-terrain=soil]{--bg:#130e0a;--paper:#1d160f;--ink:#efe7da;--muted:#c4b49c;--quiet:#ad9d85;--copy:#d8cbb7;--line:#c4a68238;--water-surface:#30251a;--water-glow:#4f3d2a;--water-deep:#050302;--water-deep-glow:#100b07;--fish:#dcc7a3;--fish-opacity:.76;--surface-light:#d9b27c0a;--sheet:rgb(31 23 16 / .32);--mobile-panel:rgb(31 23 16 / .24);--mobile-intro:rgb(31 23 16 / .18);--paper-edge:#caa98020;--paper-outline:#c6a37a0c;--tint:#c8a67e0a;--hover:#caa8801a;--control-bg:#241b12ed;--dialog:#1e170f;--backdrop:#0e0905ab}
:root[data-theme=dark][data-terrain=sky]{--bg:#0b1020;--paper:#121a30;--ink:#e6eaf5;--muted:#aab4cc;--quiet:#949eb8;--copy:#c6cde0;--line:#9aa9cc38;--water-surface:#18244a;--water-glow:#2f3d6e;--water-deep:#010209;--water-deep-glow:#050917;--fish:#d0d9f0;--fish-opacity:.76;--surface-light:#9fb4ff0a;--sheet:rgb(15 21 40 / .32);--mobile-panel:rgb(15 21 40 / .24);--mobile-intro:rgb(15 21 40 / .18);--paper-edge:#a8b8e020;--paper-outline:#9eb0dc0c;--tint:#9fb0da0a;--hover:#a4b6e01a;--control-bg:#141c34ed;--dialog:#131b31;--backdrop:#04060fab}
:root[data-theme=dark][data-terrain=beach]{--bg:#141410;--paper:#1d1c16;--ink:#efece0;--muted:#c4bea6;--quiet:#aaa48c;--copy:#d9d4c0;--line:#c2b99838;--water-surface:#2c2a1f;--water-glow:#4e4934;--water-deep:#040403;--water-deep-glow:#0e0d09;--fish:#e6dfc4;--fish-opacity:.78;--surface-light:#e8d9a80a;--sheet:rgb(29 28 22 / .32);--mobile-panel:rgb(29 28 22 / .24);--mobile-intro:rgb(29 28 22 / .18);--paper-edge:#cdc29c20;--paper-outline:#c8bd960c;--tint:#cac09a0a;--hover:#cfc59c1a;--control-bg:#1f1e17ed;--dialog:#1d1c16;--backdrop:#0a0a07ab}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:12px/1.85 var(--font);-webkit-font-smoothing:antialiased}body:has(dialog[open]){overflow:hidden}::selection{background:var(--selection);color:var(--selection-ink)}button,input{font:inherit}button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{color:inherit;border:0;background:none;cursor:pointer}a{color:inherit;text-decoration:none}a,button,summary{transition:color .2s,background .2s,border-color .2s}a:hover,button:hover,summary:hover{color:var(--accent)}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:5px}h1,h2,h3,p,pre{margin:0}h1,h2,h3{font-weight:500}pre,code,kbd,samp{font-family:var(--font-mono)}.aquarium{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;isolation:isolate;background:radial-gradient(ellipse at 50% 20%,color-mix(in srgb,var(--water-glow),var(--water-deep-glow) var(--ocean-depth-mix,0%)) 0,transparent 65%),color-mix(in srgb,var(--water-surface,var(--bg)),var(--water-deep) var(--ocean-depth-mix,0%))}#ocean-art{position:absolute;inset:0;overflow:hidden;white-space:pre;color:var(--fish);opacity:var(--fish-opacity);font-weight:400;letter-spacing:0;user-select:none}.water-light{position:absolute;inset:0;opacity:calc(1 - var(--ocean-depth,0)*.85);background:radial-gradient(ellipse at 48% 15%,var(--surface-light) 0,transparent 64%);pointer-events:none}.ocean-caption{position:fixed;left:28px;top:50%;z-index:1;writing-mode:vertical-rl;transform:rotate(180deg);display:flex;gap:15px;align-items:center;font-size:8px;letter-spacing:1.5px;color:var(--quiet);pointer-events:none}.ocean-dot{font-size:13px}.caption-rule{height:45px;width:1px;background:var(--line)}.site-header{position:relative;z-index:3;max-width:1216px;padding:35px 35px 29px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:25px}.wordmark{font-size:21px;font-weight:600;letter-spacing:-.8px;white-space:nowrap}nav{display:flex;gap:28px}nav a{font-size:10px;color:var(--muted)}nav a.active{color:var(--accent);text-decoration:underline;text-underline-offset:7px}.header-cv{font-size:10px}.header-cv span{margin-left:9px;color:var(--quiet)}.cv-sheet{position:relative;z-index:2;width:min(956px,calc(100% - 128px));margin:20px auto 120px;padding:27px 57px 0;background:var(--sheet);border:1px solid var(--paper-edge);box-shadow:0 10px 80px var(--paper-shadow),0 0 0 1px var(--paper-outline);backdrop-filter:none;text-shadow:0 1px 2px var(--bg),0 0 1px var(--bg)}.paper-topline{display:flex;justify-content:space-between;gap:20px;color:var(--quiet);font-size:8px;letter-spacing:1px;padding-bottom:20px;border-bottom:1px solid var(--line)}.thin-slash{margin-inline:9px;color:var(--quiet)}.paper-topline time{font-variant-numeric:tabular-nums}.cv-intro{padding:44px 0 38px;border-bottom:1px solid var(--line)}.intro-kicker{font-size:8px;letter-spacing:1.1px;color:var(--muted);margin-bottom:20px}.intro-dot{color:var(--accent);font-size:14px;margin-right:7px;vertical-align:-1px}.cv-intro h1{font-size:74px;line-height:1.03;letter-spacing:-6px;font-weight:500;margin-left:-4px}.name-cursor{font-size:67px;color:var(--accent)}.intro-bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-top:26px}.role-title{font-size:14px;letter-spacing:-.5px}.role-context{font-size:9px;color:var(--muted);margin-top:5px}.intro-contact{font-size:10px;white-space:nowrap;border-bottom:1px solid var(--line);padding-bottom:3px}.intro-contact span{margin-left:10px;color:var(--accent)}.cv-layout{display:grid;grid-template-columns:189px minmax(0,1fr);gap:45px;padding-top:43px}.cv-sidebar{padding-right:24px;border-right:1px solid var(--line)}.sidebar-block{margin-bottom:30px}.sidebar-block h2{font-size:8px;letter-spacing:1px;color:var(--quiet);margin-bottom:9px}.sidebar-block p,.sidebar-block>a{font-size:10px;line-height:2}.sidebar-block .secondary{color:var(--muted);font-size:9px;margin-top:8px;line-height:1.9}.sidebar-block>a{display:flex;justify-content:space-between;gap:12px;max-width:136px}.sidebar-block>a>span{color:var(--quiet);font-size:9px}.sidebar-note{color:var(--quiet);font-size:8px;border-top:1px solid var(--line);padding-top:23px;margin-top:40px}.sidebar-note pre{font-size:10px;color:var(--accent);margin-top:20px;line-height:1.8}.cv-section{padding-top:34px;margin-top:34px;border-top:1px solid var(--line)}.cv-section:first-child{padding-top:0;margin-top:0;border-top:0}.section-heading{display:flex;gap:12px;align-items:baseline;margin-bottom:20px}.section-number{font-size:8px;letter-spacing:.5px;color:var(--quiet);white-space:nowrap}.section-heading h2{font-size:19px;letter-spacing:-.8px;line-height:1.4}.cv-section>p{font-size:11px;line-height:1.95;color:var(--copy);margin-top:13px}.career-entry{padding-top:23px;margin-top:23px;border-top:1px dashed var(--line)}.career-entry:first-of-type{padding-top:0;margin-top:0;border-top:0}.career-dates{display:flex;gap:15px;align-items:center;font-size:8px;letter-spacing:.3px;color:var(--muted);margin-bottom:8px}.current-badge{font-size:7px;color:var(--accent);letter-spacing:.3px}.career-entry h3{font-size:14px;line-height:1.6;letter-spacing:-.3px}.company{font-size:11px;margin-top:3px;color:var(--accent)}.career-entry>p:not(.company):not(.career-tools){font-size:10px;line-height:1.95;margin-top:12px;color:var(--muted)}.career-tools{font-size:8px;line-height:1.9;color:var(--quiet);margin-top:12px}.delivery-details{margin-top:21px;border:1px solid var(--line);background:var(--tint)}.delivery-details>summary{list-style:none;display:flex;justify-content:space-between;align-items:center;font-size:9px;padding:11px 13px;cursor:pointer;gap:20px}.delivery-details>summary::-webkit-details-marker{display:none}.detail-toggle:after{content:'+'}.delivery-details[open] .detail-toggle:after{content:'-'}.delivery-list{padding:0 13px 5px}.delivery-list>div{display:flex;gap:10px;border-top:1px dashed var(--line);padding:9px 0}.delivery-marker{font-size:10px;color:var(--accent)}.delivery-list strong{display:block;font-size:9px;font-weight:400;line-height:1.7}.delivery-list time{font-size:7px;letter-spacing:.2px;color:var(--quiet);display:block;margin-top:2px}.desktop-break{display:none}.section-intro{margin-top:-7px!important;font-size:10px!important}.project-entry{border-bottom:1px solid var(--line)}.project-entry[hidden]{display:none}.project-open{display:block;width:100%;text-align:left;padding:20px 0}.project-open:hover{background:var(--hover)}.project-meta{font-size:7px;letter-spacing:.8px;color:var(--quiet);margin-bottom:5px}.project-name{display:flex;justify-content:space-between;gap:20px;align-items:baseline}.project-name h3{font-size:17px;letter-spacing:-.5px}.project-name>span{font-size:12px;color:var(--quiet)}.project-description{font-size:10px;color:var(--muted);line-height:1.9;margin-top:8px}.project-stack{display:flex;gap:5px 11px;flex-wrap:wrap;font-size:8px;color:var(--stack);margin-top:13px}.projects-bottom{display:flex;justify-content:space-between;gap:15px;align-items:center;margin-top:17px;font-size:8px;color:var(--quiet)}.projects-bottom a{font-size:9px;color:var(--muted)}.education-entry{margin-top:20px}.education-entry time{font-size:8px;color:var(--quiet)}.education-entry h3{font-size:12px;line-height:1.8;margin-top:5px}.education-entry p{font-size:10px;color:var(--muted);margin-top:4px}.contact-section{padding-bottom:8px}.email-row{display:flex;gap:13px;align-items:center;flex-wrap:wrap;margin-top:20px}.email-row>a{font-size:11px;color:var(--accent);border-bottom:1px solid var(--line);padding-bottom:3px}.email-row button{font-size:7px;color:var(--quiet);padding:5px 0}.download-link{font-size:10px;display:inline-flex;gap:17px;align-items:center;margin-top:24px}.download-link span{font-size:8px;color:var(--quiet)}.paper-footer{border-top:1px solid var(--line);padding:22px 0;margin-top:43px;display:flex;justify-content:space-between;gap:20px;color:var(--quiet);font-size:8px}.ocean-controls{position:fixed;z-index:6;bottom:22px;right:27px;display:flex;align-items:center;gap:15px;padding:8px 13px;background:var(--control-bg);backdrop-filter:blur(8px);border:1px solid var(--line);box-shadow:0 3px 16px var(--paper-shadow);font-size:8px;color:var(--muted)}#ocean-status{font-size:7px;letter-spacing:.7px;white-space:nowrap}.live-dot{color:var(--accent);font-size:12px;margin-right:5px;vertical-align:-1px}.ocean-controls button{padding:3px 0;min-width:25px}.ocean-controls-divider{color:var(--quiet)}.skip-link{position:fixed;top:-80px;left:15px;z-index:80;background:var(--paper);color:var(--ink);padding:10px 18px;border:1px solid var(--line)}.skip-link:focus{top:15px}dialog{color:var(--ink);background:var(--dialog);border:1px solid var(--line);padding:0;box-shadow:0 30px 150px var(--dialog-shadow)}dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(5px)}#project-dialog{width:min(700px,calc(100% - 32px));max-height:88dvh}#project-detail{padding:27px 32px 32px}.detail-top{display:flex;justify-content:space-between;align-items:center;gap:20px;color:var(--quiet);font-size:8px;margin-bottom:18px}.close-project,.close-command{font-size:9px;color:var(--muted);padding:7px 0 7px 10px}#project-detail h2{font-size:33px;letter-spacing:-1.5px}.detail-tagline{font-size:11px;color:var(--muted);margin-top:7px}.detail-diagram{background:var(--tint);border:1px solid var(--line);padding:22px 8px;display:flex;justify-content:center;margin-top:22px;overflow:auto}.detail-diagram pre{font-size:9px;line-height:1.6;color:var(--accent);white-space:pre}.detail-description{font-size:11px;line-height:1.95;color:var(--muted);margin-top:22px}.detail-highlights{margin:15px 0 0;padding:0;list-style:none}.detail-highlights li{font-size:10px;color:var(--muted);padding:5px 0 5px 18px;position:relative;line-height:1.9}.detail-highlights li:before{content:'+';color:var(--accent);position:absolute;left:0}.detail-stack-label{font-size:8px;letter-spacing:.8px;color:var(--quiet);margin-top:23px;margin-bottom:9px}.detail-stack{display:flex;flex-wrap:wrap;gap:6px}.detail-stack span{font-size:9px;border:1px solid var(--line);padding:4px 8px;color:var(--stack)}.detail-actions{display:flex;flex-wrap:wrap;gap:22px;align-items:center;margin-top:25px}.button{display:inline-flex;gap:21px;align-items:center;font-size:10px;padding:11px 16px;min-height:43px;border:1px solid var(--accent)}.primary{background:var(--accent);color:var(--button-ink)}.primary:hover{background:var(--button-hover);color:var(--button-ink)}.text-link{font-size:10px;display:inline-flex;gap:12px;align-items:center}.detail-source{font-size:8px;color:var(--quiet);margin-top:22px}.detail-source a{text-decoration:underline;text-underline-offset:3px}#command-dialog{width:min(570px,calc(100% - 32px));margin-top:15dvh;max-height:75dvh}.command-top{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:15px 20px;border-bottom:1px solid var(--line);font-size:12px}#command-search{width:100%;background:var(--tint);color:var(--ink);border:0;border-bottom:1px solid var(--line);padding:18px 20px;font-size:11px;outline-offset:-3px}#command-search::placeholder{color:var(--quiet)}#command-results{padding:8px;max-height:46dvh;overflow:auto}.command-result{display:flex;justify-content:space-between;align-items:center;gap:20px;width:100%;padding:11px 13px;text-align:left;font-size:11px}.command-result>span:last-child{font-size:7px;color:var(--quiet)}.command-result:hover,.command-result:focus-visible{background:var(--hover)}.command-hint{font-size:8px;color:var(--quiet);padding:12px 20px;border-top:1px solid var(--line)}.command-empty{padding:23px 14px;color:var(--muted);font-size:10px}#toast{position:fixed;left:50%;bottom:72px;transform:translate(-50%,15px);opacity:0;pointer-events:none;background:var(--paper);border:1px solid var(--line);color:var(--accent);padding:10px 18px;font-size:10px;z-index:80;transition:opacity .2s,transform .2s;white-space:nowrap}#toast.show{opacity:1;transform:translate(-50%,0)}
@media(min-width:1600px){.cv-sheet{margin-top:35px}.site-header{max-width:1400px;padding-top:42px}}
@media(max-width:1100px){.cv-sheet{width:calc(100% - 164px);padding-inline:40px}.cv-layout{grid-template-columns:159px minmax(0,1fr);gap:31px}.cv-sidebar{padding-right:17px}.cv-intro h1{font-size:66px}.name-cursor{font-size:59px}.role-title{font-size:12px}.role-context{font-size:8px}.sidebar-block p,.sidebar-block>a{font-size:9px}.sidebar-block h2{font-size:7px}.career-entry h3{font-size:13px}.ocean-caption{left:23px;font-size:7px}.intro-contact{font-size:9px}.email-row>a{font-size:10px}}
@media(max-width:850px){.site-header{padding:27px 30px 22px;gap:20px}nav{gap:22px}nav a{font-size:9px}.header-cv{font-size:9px}.header-cv span{margin-left:5px}.cv-sheet{width:calc(100% - 104px);padding:23px 32px 0;margin-top:12px}.cv-intro{padding-top:36px}.cv-intro h1{font-size:60px;letter-spacing:-4.7px}.name-cursor{font-size:55px}.cv-layout{grid-template-columns:137px minmax(0,1fr);gap:25px;padding-top:34px}.cv-sidebar{padding-right:16px}.sidebar-block{margin-bottom:27px}.sidebar-block p,.sidebar-block>a{font-size:8px}.sidebar-block h2{font-size:6.5px;letter-spacing:.8px}.sidebar-block .secondary{font-size:8px}.sidebar-note{font-size:7px}.sidebar-note pre{font-size:8px}.section-heading{gap:10px}.section-heading h2{font-size:17px}.section-number{font-size:7px}.cv-section>p{font-size:10px}.career-entry h3{font-size:12px}.career-entry>p:not(.company):not(.career-tools){font-size:9px}.career-dates{font-size:7px;gap:10px}.company{font-size:10px}.current-badge{font-size:6px}.intro-bottom{align-items:flex-start;gap:20px}.intro-contact{font-size:8px;margin-top:3px}.role-context{max-width:250px}.role-title{font-size:11px}.project-name h3{font-size:16px}.project-description{font-size:9px}.project-meta{font-size:6px}.project-stack{font-size:7px}.projects-bottom{font-size:7px}.projects-bottom a{font-size:8px}.delivery-details>summary{font-size:8px;padding-inline:10px}.delivery-list{padding-inline:10px}.delivery-list strong{font-size:8px}.delivery-list time{font-size:6px}.ocean-caption{left:16px;font-size:6px}.ocean-controls{bottom:18px;right:18px;font-size:8px}.paper-topline{font-size:7px;letter-spacing:.5px}.intro-kicker{font-size:7px;letter-spacing:.6px}.paper-footer{font-size:7px}.education-entry h3{font-size:11px}.education-entry p{font-size:9px}}
@media(max-width:620px){:root{scroll-padding-top:30px}.site-header{padding:23px 22px 22px;gap:14px}.wordmark{font-size:19px}nav{gap:18px;margin-left:auto}nav a{font-size:8px}nav a[href='#about'],nav a[href='#contact']{display:none}.header-cv{font-size:8px;white-space:nowrap}.header-cv span{display:none}.cv-sheet{width:calc(100% - 32px);margin:7px auto 100px;padding:19px 23px 0;background:var(--mobile-panel);backdrop-filter:none}.paper-topline{font-size:6px;letter-spacing:.6px;padding-bottom:16px;gap:15px}.thin-slash{margin-inline:5px}.cv-intro{padding-block:30px}.intro-kicker{font-size:6px;letter-spacing:.75px;margin-bottom:19px}.intro-dot{font-size:11px;margin-right:4px}.cv-intro h1{font-size:clamp(48px,13.3vw,73px);letter-spacing:-4.5px;line-height:1.05;margin-left:-3px}.name-cursor{font-size:.9em}.intro-bottom{flex-direction:column;gap:17px;margin-top:22px}.role-title{font-size:12px;letter-spacing:-.4px}.role-context{font-size:8px;line-height:1.9;max-width:290px;margin-top:6px}.intro-contact{font-size:9px;align-self:flex-start;margin-top:0}.cv-layout{display:flex;flex-direction:column;gap:0;padding-top:29px}.cv-sidebar{order:1;display:grid;grid-template-columns:1fr 1fr;gap:25px 20px;border:0;border-top:1px solid var(--line);padding:28px 0 0;margin-top:32px}.sidebar-block{margin:0}.sidebar-block h2{font-size:6px;letter-spacing:.5px;margin-bottom:6px}.sidebar-block p,.sidebar-block>a{font-size:8px;line-height:1.95}.sidebar-block .secondary{font-size:7px;margin-top:5px}.sidebar-block>a{max-width:115px}.sidebar-block>a>span{font-size:7px}.sidebar-note{display:none}.cv-body{order:0}.section-heading{gap:10px;margin-bottom:17px}.section-heading h2{font-size:18px;letter-spacing:-.7px}.section-number{font-size:7px}.cv-section>p{font-size:10px;line-height:2;margin-top:12px}.cv-section{padding-top:28px;margin-top:29px}.career-dates{font-size:7px;letter-spacing:.1px;gap:12px}.career-entry h3{font-size:12px;letter-spacing:-.4px;line-height:1.7}.career-entry>p:not(.company):not(.career-tools){font-size:9px;line-height:2;margin-top:10px}.career-tools{font-size:7px}.company{font-size:10px}.career-entry{margin-top:23px;padding-top:23px}.delivery-details{margin-top:18px}.delivery-details>summary{font-size:8px;padding:11px}.delivery-list{padding:0 11px 5px}.delivery-list>div{gap:9px;padding-block:9px}.delivery-list strong{font-size:8px}.delivery-list time{font-size:6px}.project-open{padding-block:18px}.project-meta{font-size:6px;letter-spacing:.65px;margin-bottom:6px}.project-name h3{font-size:16px}.project-description{font-size:9px;line-height:1.95}.project-stack{font-size:7px;gap:4px 9px;margin-top:12px}.projects-bottom{font-size:6px;gap:9px}.projects-bottom a{font-size:7px}.education-entry h3{font-size:10px;line-height:1.9}.education-entry time{font-size:7px}.education-entry p{font-size:9px}.email-row{gap:12px}.email-row>a{font-size:clamp(8px,2.48vw,12px);letter-spacing:-.2px}.email-row button{font-size:6px}.download-link{font-size:9px;gap:14px;margin-top:21px}.download-link span{font-size:7px}.paper-footer{font-size:6px;padding:19px 0;gap:12px;margin-top:29px}.paper-footer a{white-space:nowrap}.ocean-caption{display:none}.ocean-controls{bottom:14px;right:14px;gap:12px;padding:7px 11px;font-size:8px}#ocean-status{font-size:6px;letter-spacing:.5px}.live-dot{font-size:10px;margin-right:4px}.ocean-controls button{font-size:9px;min-width:25px}#project-detail{padding:21px 21px 25px}#project-detail h2{font-size:28px}.detail-top{font-size:6px;gap:12px}.close-project{font-size:8px;white-space:nowrap}.detail-tagline{font-size:9px}.detail-diagram{padding:20px 6px}.detail-diagram pre{font-size:6.6px}.detail-description{font-size:10px}.detail-highlights li{font-size:9px}.detail-stack span{font-size:8px}.detail-actions{gap:17px}.button{font-size:9px;gap:17px;padding:10px 13px}.text-link{font-size:9px}.detail-source{font-size:7px}.command-top{padding-inline:17px;font-size:11px}#command-search{font-size:10px;padding-inline:17px}.command-result{font-size:10px;gap:15px}.command-result>span:last-child{font-size:6px}.command-hint{font-size:6px;padding-inline:17px}#toast{font-size:9px;padding-inline:13px;bottom:67px}}

/* On phones, the header stays compact and the ocean shows between the CV panels. */
@media(max-width:620px){
  .site-header{padding-bottom:18px}
  .cv-sheet{width:calc(100% - 32px);margin:8px auto 112px;padding:0;background:none;border:0;box-shadow:none;backdrop-filter:none}
  .paper-topline{padding:18px 21px 15px;background:var(--mobile-intro);border:1px solid var(--paper-edge);border-bottom:1px solid var(--line)}
  .cv-intro{padding:27px 23px 30px;background:var(--mobile-intro);border:1px solid var(--paper-edge);border-top:0;box-shadow:0 8px 30px var(--paper-shadow)}
  .cv-layout{padding-top:0}
  .cv-body{min-width:0}
  .cv-section,.cv-section:first-child{padding:25px 22px 28px;background:var(--mobile-panel);border:1px solid var(--paper-edge);box-shadow:0 8px 30px var(--paper-shadow);margin-top:36px}
  .cv-sidebar{padding:25px 22px 27px;background:var(--mobile-panel);border:1px solid var(--paper-edge);margin-top:36px}
  .paper-footer{padding:19px 20px;margin-top:36px;background:var(--mobile-panel);border:1px solid var(--paper-edge);font-size:6px;gap:10px}
  .cv-section>p{color:var(--copy)}
  #ocean-art{opacity:.87}
  .ocean-controls{gap:8px;padding:2px 11px;bottom:max(12px,env(safe-area-inset-bottom));right:12px}
  .ocean-controls button{min-height:36px;min-width:30px}
  #ocean-status{font-size:6px;letter-spacing:.3px}
  .live-dot{margin-right:2px}
}
@media(max-width:360px){
  .paper-topline{padding-inline:18px;font-size:5.5px;letter-spacing:.35px}
  .cv-intro{padding-inline:20px}
  .cv-intro h1{font-size:44px;letter-spacing:-4px}
  .cv-section,.cv-section:first-child,.cv-sidebar{padding-inline:19px}
  .paper-footer{padding-inline:15px;font-size:5px}
}


/* A compact introduction, a clearer reading scale, and four curated project cards. */
.cv-intro{padding-block:34px 31px}
.cv-intro h1{font-size:clamp(42px,4.2vw,58px);line-height:1.12;letter-spacing:-3.5px}
.name-break{display:none}
.name-cursor{font-size:1em}
.intro-kicker{margin-bottom:18px;font-size:8px}
.intro-bottom{margin-top:20px}
.role-context{font-size:10px;line-height:1.8}
.cv-layout{gap:36px;padding-top:36px}
.cv-section{padding-top:34px;margin-top:36px}
.cv-section>p{font-size:11.5px;line-height:1.95}
.section-heading{margin-bottom:18px}
.section-heading h2{font-size:20px;line-height:1.4}
.section-number{font-size:8px}
.sidebar-block{margin-bottom:27px}
.sidebar-block h2{font-size:8px;letter-spacing:.7px}
.sidebar-block p,.sidebar-block>a{font-size:9.5px;line-height:2}
.sidebar-block .secondary{font-size:9px}
.career-entry>p:not(.company):not(.career-tools){font-size:10.5px;line-height:1.95}
.career-dates{font-size:8px;line-height:1.8}
.career-tools{font-size:8px;line-height:1.9}
.delivery-list strong{font-size:9.5px}
.delivery-list time{font-size:8px;line-height:1.7}
#about strong{font-weight:500;color:var(--ink)}
#project-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:23px}
.project-entry{border:1px solid var(--line);background:var(--tint);min-width:0}
.project-open{display:flex;flex-direction:column;height:100%;padding:17px;min-width:0}
.project-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;font-size:7px;letter-spacing:.3px;line-height:1.8;margin-bottom:8px}
.repo-badge{border:1px solid var(--line);padding:0 4px;font-size:6px;letter-spacing:.4px;color:var(--muted)}
.project-name{width:100%;align-items:center}
.project-name h3{font-size:19px}
.project-description{font-size:10px;line-height:1.9;flex:1;margin-block:10px 17px}
.project-stack{font-size:8px;line-height:1.9;margin-top:auto;gap:3px 7px}
.project-stack>span:not(:last-child):after{content:' /';margin-left:7px;color:var(--quiet)}
.projects-bottom{font-size:8px;line-height:1.9}
.education-entry h3{font-size:12px}
.education-entry p{font-size:10px}
.email-row>a{font-size:11px}
.header-cv{font-size:10px;white-space:nowrap}
@media(min-width:621px) and (max-width:900px){
 .cv-layout{grid-template-columns:138px minmax(0,1fr);gap:25px}
 .sidebar-block p,.sidebar-block>a{font-size:8.5px}
 .sidebar-block h2{font-size:7px}
 #project-list{grid-template-columns:1fr}
}
@media(max-width:620px){
 .site-header{padding-inline:22px;gap:18px;align-items:center}
 nav{gap:19px}
 nav a,.header-cv{font-size:9px}
 .cv-intro{padding:26px 23px 28px}
 .cv-intro h1{font-size:clamp(43px,12vw,58px);line-height:1.1;letter-spacing:-3px}
 .name-break{display:block}
 .intro-bottom{gap:16px;margin-top:20px}
 .role-title{font-size:12px;line-height:1.8}
 .role-context{font-size:9px;line-height:1.9}
 .intro-kicker{font-size:6.5px;letter-spacing:.6px}
 .paper-topline{font-size:7px;letter-spacing:.3px}
 .paper-topline time{font-size:7px}
 .cv-layout{gap:0;padding-top:0}
 .cv-section,.cv-section:first-child{padding:24px 22px 27px;margin-top:28px}
 .cv-section>p{font-size:11px;line-height:1.95}
 .section-heading{gap:10px;margin-bottom:18px}
 .section-heading h2{font-size:19px}
 .section-number{font-size:8px}
 .career-entry{padding-top:22px;margin-top:22px}
 .career-entry h3{font-size:13px;line-height:1.7}
 .company{font-size:11px}
 .career-entry>p:not(.company):not(.career-tools){font-size:10.5px;line-height:1.95}
 .career-tools{font-size:8px}
 .career-dates{font-size:8px;gap:12px}
 .current-badge{font-size:7px}
 .delivery-details>summary{font-size:9px}
 .delivery-list strong{font-size:9px}
 .delivery-list time{font-size:7.5px}
 #project-list{grid-template-columns:1fr;gap:14px;margin-top:20px}
 .project-open{padding:18px}
 .project-meta{font-size:7.5px;letter-spacing:.4px}
 .project-name h3{font-size:20px}
 .project-description{font-size:10.5px;line-height:1.95;margin-bottom:16px}
 .project-stack{font-size:8px}
 .repo-badge{font-size:6.5px}
 .projects-bottom{font-size:7px;gap:13px}
 .projects-bottom a{font-size:8px}
 .education-entry h3{font-size:11px}
 .education-entry time{font-size:8px}
 .education-entry p{font-size:10px}
 .email-row>a{font-size:clamp(9px,2.75vw,12px)}
 .email-row button{font-size:7px}
 .download-link{font-size:10px}
 .cv-sidebar{gap:24px 17px;margin-top:28px;padding:24px 22px}
 .sidebar-block{margin:0}
 .sidebar-block h2{font-size:7px}
 .sidebar-block p,.sidebar-block>a{font-size:9px;line-height:1.95}
 .sidebar-block .secondary{font-size:8px}
 .paper-footer{margin-top:28px}
 .ocean-controls{gap:9px;padding:1px 7px;right:12px}
 #ocean-status,.ocean-controls-divider{display:none}
 .ocean-controls button{min-height:40px;min-width:32px;font-size:10px}
}
@media(max-width:360px){
 .site-header{padding-inline:20px;gap:15px}
 nav{gap:15px}
 nav a{font-size:8px}
 .cv-intro{padding-inline:20px}
 .cv-section,.cv-section:first-child,.cv-sidebar{padding-inline:19px}
 .paper-topline{font-size:6.5px;padding-inline:18px}
 .paper-topline time{font-size:6.5px}
 .career-dates{font-size:7px;gap:9px}
 .current-badge{font-size:6px}
 .project-open{padding:16px}
 .project-meta{font-size:7px}
 .projects-bottom{font-size:6px;gap:9px}
 .projects-bottom a{font-size:7px}
 .email-row>a{font-size:9px}
 .sidebar-block h2{font-size:6.5px}
 .sidebar-block p,.sidebar-block>a{font-size:8.5px}
}


/* Unobtrusive page chrome; project stories expand directly into the page. */
.cv-sheet{padding-top:0}
.intro-meta{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px}
.intro-meta .intro-kicker{margin:0}
.intro-location{font-size:8px;letter-spacing:.5px;color:var(--quiet);white-space:nowrap}
.intro-location time{font-variant-numeric:tabular-nums}
#project-list{display:block;margin-top:23px}
.project-entry{width:100%;margin:0;background:var(--tint)}
.project-entry+.project-entry{margin-top:14px}
.project-summary{list-style:none;cursor:pointer;display:block;padding:21px;transition:background .2s;touch-action:manipulation}
.project-summary::-webkit-details-marker{display:none}
.project-summary:hover{background:var(--hover)}
.project-summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.project-summary .project-description{display:block;margin:10px 0 16px;font-size:11px;line-height:1.95;color:var(--muted)}
.project-summary .project-meta{display:flex;width:100%;font-size:8px}
.project-summary .project-name{display:flex;width:100%}
.project-summary .project-stack{display:flex;font-size:9px}
.project-state{font-size:16px;color:var(--accent)}
.project-state:after{content:'[ + ]'}
.project-entry[open]>.project-summary .project-state:after{content:'[ - ]'}
.project-expand{display:flex;justify-content:space-between;align-items:center;gap:15px;color:var(--accent);font-size:9px;margin-top:18px}
.project-expand>span:last-child{color:var(--quiet)}
.when-open{display:none}
.project-entry[open]>.project-summary .when-open{display:inline}
.project-entry[open]>.project-summary .when-closed{display:none}
.project-entry[open]>.project-summary{border-bottom:1px solid var(--line);background:var(--hover)}
.project-expanded{padding:22px 21px 24px}
.project-tagline{font-size:13px;line-height:1.8;color:var(--ink)}
.project-expanded .detail-description{margin-top:13px;font-size:11px;line-height:1.95}
.gallery-heading{display:flex;justify-content:space-between;gap:15px;align-items:center;margin:25px 0 12px;font-size:8px;letter-spacing:.4px;color:var(--quiet)}
.gallery-heading>span:last-child{font-size:7px;letter-spacing:0;text-align:right}
.project-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}
.project-gallery figure{margin:0;min-width:0}
.screenshot-button{width:100%;display:block;padding:0;position:relative;border:1px solid var(--line);background:var(--dialog);overflow:hidden}
.screenshot-button:hover{border-color:var(--accent)}
.screenshot-button img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain;background:var(--dialog)}
.screenshot-button>span{position:absolute;right:7px;bottom:7px;color:var(--ink);background:var(--control-bg);border:1px solid var(--line);font-size:9px;padding:2px 6px}
.project-gallery figcaption{font-size:8px;line-height:1.8;color:var(--muted);margin-top:8px}
.project-expanded .detail-highlights{margin-top:24px}
.project-expanded .detail-highlights li{font-size:11px}
.architecture-details{border:1px solid var(--line);margin-top:23px;background:var(--tint)}
.architecture-details>summary{list-style:none;display:flex;justify-content:space-between;gap:20px;cursor:pointer;padding:11px 13px;font-size:10px}
.architecture-details>summary::-webkit-details-marker{display:none}
.architecture-symbol:after{content:'+'}
.architecture-details[open] .architecture-symbol:after{content:'-'}
.architecture-details pre{overflow:auto;white-space:pre;font-size:9px;line-height:1.7;padding:18px 12px 21px;color:var(--accent);text-align:center;border-top:1px solid var(--line)}
.project-expanded .detail-actions{margin-top:23px}
.collapse-project{display:block;font-size:9px;color:var(--quiet);margin-top:22px;padding:7px 0;text-decoration:underline;text-underline-offset:4px}
.paper-footer{display:block}
.footer-links{display:flex;justify-content:space-between;align-items:center;gap:15px}
.site-preferences{margin-top:15px}
.site-preferences>summary{list-style:none;display:flex;justify-content:flex-end;align-items:center;gap:9px;cursor:pointer;font-size:8px;color:var(--quiet);padding:5px 0}
.site-preferences>summary::-webkit-details-marker{display:none}
.preference-symbol:after{content:'[ + ]'}
.site-preferences[open] .preference-symbol:after{content:'[ - ]'}
.preferences-panel{border:1px solid var(--line);padding:12px 16px;background:var(--tint);max-width:380px;margin:12px 0 0 auto}
.preference-row{display:flex;justify-content:space-between;align-items:center;gap:20px;min-height:43px;border-bottom:1px solid var(--line);font-size:10px;color:var(--muted)}
.preference-row:last-of-type{border-bottom:0}
.preference-row button{font-size:10px;color:var(--accent);padding:8px 0;min-width:60px;min-height:38px;text-align:right}
.preferences-panel #ocean-status{display:block;font-size:7px;letter-spacing:.5px;margin-top:12px;color:var(--quiet)}
.terrain-options{display:flex;flex-wrap:wrap;justify-content:flex-end;min-width:0;gap:4px}
.preference-row .terrain-options button{min-width:0;color:var(--quiet)}
.preference-row .terrain-options button[aria-pressed=true]{color:var(--accent)}
.terrain-options button:before{content:'[ ';opacity:0}
.terrain-options button:after{content:' ]';opacity:0}
.terrain-options button[aria-pressed=true]:before,.terrain-options button[aria-pressed=true]:after{opacity:1}
#ocean-art{transition:opacity .24s}
.aquarium.is-changing #ocean-art{opacity:0}
#image-dialog{width:min(1120px,calc(100% - 32px));max-height:92dvh;padding:17px;overflow:auto}
.viewer-top{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:0 0 13px;font-size:11px;color:var(--muted)}
#close-viewer{font-size:10px;padding:6px 0 6px 10px;white-space:nowrap;color:var(--ink)}
#viewer-image{display:block;width:100%;height:auto;max-height:72dvh;object-fit:contain;background:var(--tint)}
.viewer-bottom{display:flex;justify-content:space-between;align-items:center;gap:20px;padding-top:13px;color:var(--muted);font-size:10px}
.viewer-navigation{display:flex;gap:13px;flex-shrink:0}
.viewer-navigation[hidden]{display:none}
.viewer-navigation button{padding:5px 4px;font-size:11px;color:var(--accent)}
@media(max-width:620px){
 .cv-sheet{padding-top:0}
 .cv-intro{border-top:1px solid var(--paper-edge)}
 .intro-meta{flex-wrap:wrap;align-items:flex-start;gap:9px 14px;margin-bottom:23px}
 .intro-meta .intro-kicker{font-size:6.5px}
 .intro-location{font-size:7px;letter-spacing:.2px}
 .intro-location .thin-slash{margin-inline:6px}
 .project-summary{padding:18px}
 .project-summary .project-meta{font-size:7.5px}
 .project-summary .project-description{font-size:10.5px}
 .project-summary .project-stack{font-size:8px}
 .project-expand{font-size:9px}
 .project-state{font-size:14px}
 .project-expanded{padding:20px 18px 22px}
 .project-tagline{font-size:12px}
 .project-expanded .detail-description,.project-expanded .detail-highlights li{font-size:10px}
 .gallery-heading{align-items:flex-start;font-size:7px;margin-top:23px}
 .gallery-heading>span:last-child{font-size:6px;max-width:145px}
 .project-gallery{grid-template-columns:1fr;gap:18px}
 .project-gallery figcaption{font-size:8px}
 .architecture-details pre{font-size:6.7px;text-align:left;padding:18px 9px}
 .architecture-details>summary{font-size:9px}
 .project-expanded .detail-stack span{font-size:8px}
 .paper-footer{padding:20px;font-size:7px}
 .footer-links{gap:10px}
 .site-preferences>summary{font-size:8px}
 .preferences-panel{padding:10px 13px}
 .preference-row{font-size:9px}
 .preference-row .terrain-options button{font-size:9px}
 .preferences-panel #ocean-status{display:block;font-size:6.5px}
 #image-dialog{padding:12px;width:calc(100% - 22px)}
 .viewer-top{font-size:10px;gap:12px}
 #close-viewer{font-size:9px}
 #viewer-image{max-height:70dvh}
 .viewer-bottom{align-items:flex-start;font-size:8px;gap:13px;line-height:1.8}
 .viewer-navigation{gap:7px}
 .viewer-navigation button{font-size:10px;padding:5px 2px}
}
@media(max-width:360px){
 .intro-meta .intro-kicker{font-size:6px}
 .project-summary,.project-expanded{padding-inline:15px}
 .project-summary .project-meta{font-size:7px}
 .paper-footer{padding-inline:16px;font-size:6px}
 .footer-links>a{font-size:6px}
}

/* Career deliveries expand separately from the selected software projects. */
.career-projects{margin-top:20px}
.career-projects-label{font-size:7.5px;letter-spacing:.8px;color:var(--quiet);margin-bottom:10px}
.delivery-project{border:1px solid var(--line);background:var(--tint)}
.delivery-project+.delivery-project{margin-top:8px}
.delivery-project>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:13px;padding:12px 13px;min-height:60px}
.delivery-project>summary::-webkit-details-marker{display:none}
.delivery-project>summary:hover,.delivery-project[open]>summary{background:var(--hover)}
.delivery-project-name{min-width:0}
.delivery-project-name strong{display:block;font-size:10.5px;line-height:1.7;font-weight:500;color:var(--ink)}
.delivery-project-name time{display:block;font-size:8px;line-height:1.8;letter-spacing:.2px;color:var(--quiet);margin-top:3px}
.delivery-project-toggle{flex-shrink:0;font-size:11px;color:var(--accent)}
.delivery-project-toggle:after{content:'[ + ]'}
.delivery-project[open]>summary .delivery-project-toggle:after{content:'[ - ]'}
.delivery-project-content{padding:14px 13px 17px;border-top:1px solid var(--line)}
.delivery-project-content>p{font-size:10.5px;line-height:1.95;color:var(--copy)}
.delivery-project-content>.delivery-snapshot{font-size:9.5px;margin-top:12px;color:var(--accent)}
.delivery-project-content>.delivery-contribution-label{font-size:7.5px;letter-spacing:.8px;color:var(--quiet);margin-top:17px}
.delivery-project-content .detail-highlights{margin-top:8px}
.delivery-project-content .detail-highlights li{font-size:10.5px;color:var(--copy);padding-block:4px}
@media(max-width:360px){
 .delivery-project>summary{padding-inline:11px;gap:9px}
 .delivery-project-name strong{font-size:10px}
 .delivery-project-name time{font-size:7.5px}
 .delivery-project-content{padding-inline:11px}
 .delivery-project-content>p,.delivery-project-content .detail-highlights li{font-size:10px}
}

/* The introduction has its own ocean viewport; the CV follows in normal flow. */
.portfolio{position:relative;z-index:2;text-shadow:0 1px 2px var(--bg),0 0 1px var(--bg)}
.site-header{position:absolute;inset:0 0 auto;width:100%}
.landing-screen{position:relative;display:grid;place-items:center;min-height:100vh;min-height:100svh;padding:110px 16px}
.landing-screen>.cv-intro{width:min(640px,100%);padding:32px 36px 22px;background:var(--mobile-intro);border:1px solid var(--line);box-shadow:0 12px 42px var(--paper-shadow)}
.landing-screen>.cv-intro .intro-kicker{display:flex;align-items:center;gap:9px;margin:0 0 18px;font-size:8px;line-height:1.5;letter-spacing:.8px;color:var(--quiet)}
.landing-screen>.cv-intro .intro-dot{font-size:11px;line-height:1;margin:0;color:var(--accent)}
.landing-screen>.cv-intro h1{font-size:36px;font-weight:400;line-height:1.25;letter-spacing:-.035em;margin-left:0}
.landing-screen>.cv-intro .name-cursor{font-size:.9em;color:var(--accent)}
.landing-screen>.cv-intro .role-title{font-size:13px;line-height:1.7;letter-spacing:-.2px;margin-top:8px}
.landing-screen>.cv-intro .role-context{max-width:none;font-size:11px;line-height:1.85;letter-spacing:0;color:var(--muted);margin-top:12px}
.intro-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:20px;padding-top:9px;border-top:1px solid var(--line)}
.landing-screen>.cv-intro .intro-contact{display:inline-flex;align-items:center;gap:12px;min-height:40px;padding:7px 0;margin:0;border:0;font-size:10px;line-height:1.5;color:var(--accent)}
.landing-screen>.cv-intro .intro-contact span{margin:0}
.landing-screen>.cv-intro .intro-contact:hover{text-decoration:underline;text-underline-offset:5px}
.landing-screen>.cv-intro .intro-location{font-size:8px;line-height:1.5;letter-spacing:.1px;color:var(--quiet)}
.landing-screen>.cv-intro .intro-location .thin-slash{margin-inline:7px}
.landing-scroll{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);padding:10px 12px;font-size:8px;letter-spacing:1px;color:var(--muted);text-align:center;white-space:nowrap}
.landing-scroll span{display:block;margin-top:7px;font-size:12px;line-height:1.3;color:var(--accent)}
@media(max-width:620px){
 .landing-screen{padding-block:96px}
 .landing-screen>.cv-intro{padding:24px 24px 16px}
 .landing-screen>.cv-intro .intro-kicker{font-size:7.5px;letter-spacing:.55px;gap:8px;margin-bottom:16px}
 .landing-screen>.cv-intro h1{font-size:clamp(24px,7.2vw,30px);line-height:1.25}
 .landing-screen>.cv-intro .role-title{font-size:12px;margin-top:7px}
 .landing-screen>.cv-intro .role-context{font-size:10.5px;margin-top:10px}
 .intro-footer{gap:12px;margin-top:18px;padding-top:8px}
 .landing-screen>.cv-intro .intro-location{font-size:7.5px;letter-spacing:0}
 .landing-scroll{bottom:23px;font-size:7px}
}
@media(max-width:360px){
 .landing-screen>.cv-intro{padding-inline:20px}
 .landing-screen>.cv-intro .intro-kicker{font-size:7px}
 .landing-screen>.cv-intro .intro-contact{font-size:9px;gap:8px}
 .landing-screen>.cv-intro .intro-location{font-size:7px}
 .landing-screen>.cv-intro .intro-location .thin-slash{margin-inline:5px}
}

@media(prefers-reduced-motion:reduce){:root{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
