:root{--font-display:"Cormorant Garamond", Georgia, serif;--font-sans:"Archivo", system-ui, sans-serif;--font-mono:"Space Mono", ui-monospace, monospace;--accent:oklch(60% .092 45);--motion:1}[data-theme=paper]{--stage:oklch(25.5% .012 70);--stage-2:oklch(21.5% .012 70);--page:oklch(96.7% .008 90);--page-2:oklch(93% .012 88);--ink:oklch(25.5% .014 65);--ink-soft:oklch(46% .012 68);--ink-faint:oklch(62% .01 70);--hair:oklch(86% .012 80);--shadow:0 2px 4px #140f081a, 0 30px 70px -20px #140f088c}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--stage);color:var(--ink);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;overflow-x:hidden}::selection{background:color-mix(in oklab, var(--accent) 30%, transparent)}.stage-grain{z-index:0;pointer-events:none;background:radial-gradient(130% 100% at 50% 0%, transparent 55%, color-mix(in oklab, var(--stage-2) 90%, black) 100%);opacity:.9;position:fixed;inset:0}.book{z-index:1;position:relative}.spread{will-change:transform;justify-content:center;align-items:center;height:100dvh;padding:clamp(14px,3.2vmin,46px);display:flex;position:sticky;top:0}.page{background:var(--page);width:min(1480px,95vw);height:min(842px,100dvh - clamp(28px,6.4vmin,92px));box-shadow:var(--shadow);transform-origin:50% 38%;will-change:transform, opacity;display:grid;position:relative;overflow:hidden}.page-pad{flex-direction:column;width:100%;height:100%;min-height:0;padding:clamp(26px,4vmin,64px) clamp(30px,4.6vmin,76px);display:flex;position:relative}.cover-veil{z-index:40;background:var(--stage);opacity:0;pointer-events:none;position:absolute;inset:0}.folio{font-family:var(--font-mono);letter-spacing:.14em;color:var(--ink-faint);z-index:30;font-size:11px;position:absolute;bottom:clamp(14px,2.4vmin,26px)}.folio-l{left:clamp(20px,3vmin,40px)}.folio-r{right:clamp(20px,3vmin,40px)}.eyebrow{font-family:var(--font-mono);letter-spacing:.26em;text-transform:uppercase;color:var(--accent);align-items:center;gap:12px;font-size:11px;display:inline-flex}.eyebrow:before{content:"";opacity:.7;background:currentColor;width:26px;height:1px}h1,h2,h3{font-family:var(--font-display);margin:0;font-weight:500;line-height:1.02}.section-title{font-family:var(--font-display);font-size:clamp(30px,4.4vmin,56px);font-weight:500;line-height:1}p{color:var(--ink-soft);margin:0 0 1em;line-height:1.62}.lead{color:var(--ink)}.d-block{display:block}.reveal{opacity:0;transform:translateY(calc(22px * var(--motion)));transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .9s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i,0) * 75ms)}.is-active .reveal{opacity:1;transform:none}.reveal-img{clip-path:inset(0 0 100%);transition:clip-path 1.05s cubic-bezier(.22,.65,.15,1);transition-delay:calc(var(--i,0) * 75ms + 60ms)}.is-active .reveal-img{clip-path:inset(0)}@media (prefers-reduced-motion:reduce){.reveal,.reveal-img{opacity:1!important;clip-path:none!important;transition:none!important;transform:none!important}}.portfolio-image{background:linear-gradient(135deg, color-mix(in oklab, var(--page-2) 92%, white) 0%, var(--page-2) 100%), var(--page-2);width:100%;height:100%;margin:0;display:block;position:relative;overflow:hidden}.portfolio-image:before{content:"";background-image:linear-gradient(color-mix(in oklab, var(--hair) 70%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in oklab, var(--hair) 70%, transparent) 1px, transparent 1px);opacity:.55;background-size:28px 28px;position:absolute;inset:0}.portfolio-image img{z-index:1;object-fit:cover;width:100%;height:100%;display:block;position:relative}.portfolio-image-placeholder{z-index:1;height:100%;min-height:160px;color:var(--ink-faint);text-align:center;font-family:var(--font-mono);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:18px;display:flex;position:relative}.portfolio-image-placeholder svg{width:56px;height:56px;color:color-mix(in oklab, var(--accent) 55%, var(--ink-faint));fill:none;stroke:currentColor;stroke-width:1.3px;opacity:.72}.portfolio-image-placeholder .cap{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);font-size:11px}.portfolio-image-placeholder .sub{letter-spacing:.08em;color:var(--ink-faint);font-size:10px}.slot-wrap{background:var(--page-2);position:relative;overflow:hidden}.sidenav{z-index:60;flex-direction:column;align-items:flex-end;gap:16px;display:flex;position:fixed;top:50%;right:clamp(14px,2.4vw,34px);transform:translateY(-50%)}.sidenav button{all:unset;cursor:pointer;color:var(--ink-soft);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:12px;font-size:10.5px;display:flex}.sidenav .dot-label{opacity:0;white-space:nowrap;color:var(--ink);background:color-mix(in oklab, var(--page) 86%, transparent);box-shadow:0 1px 10px -2px color-mix(in oklab, var(--stage) 60%, transparent);border-radius:2px;padding:4px 9px;transition:opacity .35s,transform .35s;transform:translate(6px)}.sidenav button:hover .dot-label,.sidenav button[aria-current=true] .dot-label{opacity:1;transform:none}.sidenav .dot{border:1px solid color-mix(in oklab, var(--ink) 42%, transparent);background:0 0;border-radius:50%;width:9px;height:9px;transition:background .35s,transform .35s,border-color .35s}.sidenav button:hover .dot{border-color:var(--ink-soft)}.sidenav button[aria-current=true] .dot{background:var(--accent);border-color:var(--accent);transform:scale(1.25)}.progress{z-index:70;background:var(--accent);width:0%;height:2px;transition:width .12s linear;position:fixed;top:0;left:0}.scroll-hint{font-family:var(--font-mono);letter-spacing:.26em;text-transform:uppercase;color:var(--ink-faint);z-index:30;flex-direction:column;align-items:center;gap:9px;font-size:10px;display:flex;position:absolute;bottom:clamp(22px,4vmin,46px);right:clamp(22px,3.4vmin,46px)}.scroll-hint .line{background:var(--ink-faint);width:1px;height:38px;position:relative;overflow:hidden}.scroll-hint .line:after{content:"";background:var(--accent);animation:2.1s cubic-bezier(.6,0,.2,1) infinite drip;position:absolute;inset:0}@keyframes drip{0%{transform:translateY(-100%)}60%,to{transform:translateY(100%)}}@media (prefers-reduced-motion:reduce){.scroll-hint .line:after{animation:none}}.cover .page{background:var(--page)}.cover-grid{grid-template-rows:auto 1fr auto;gap:0;height:100%;display:grid}.cover-top{justify-content:space-between;align-items:flex-start;display:flex}.cover-mid{grid-template-columns:1.15fr .85fr;align-items:center;gap:clamp(24px,4vmin,60px);min-height:0;display:grid}.cover-title{letter-spacing:-.02em;font-size:clamp(52px,12.5vmin,168px);font-weight:500;line-height:.86}.cover-title em{color:var(--accent);font-style:italic;font-weight:500}.cover-sub{max-width:30ch;margin-top:clamp(16px,2.4vmin,30px);font-size:clamp(15px,1.7vmin,19px)}.cover-figure{height:100%;min-height:0;position:relative}.cover-bottom{align-items:baseline;gap:clamp(28px,5vw,80px);display:flex}.cover-bottom .stat .n{font-family:var(--font-display);white-space:nowrap;font-size:clamp(24px,3.3vmin,40px);line-height:1;display:block}.cover-bottom .stat .l{font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-faint);margin-top:8px;font-size:10px;display:block}.spread-head{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:clamp(18px,2.6vmin,34px);display:flex}.about-grid{flex:1;grid-template-columns:.82fr 1.18fr;align-items:stretch;gap:clamp(30px,4.6vmin,72px);min-height:0;display:grid}.about-portrait{flex-direction:column;height:100%;display:flex;position:relative}.about-portrait .name-plate{margin-top:18px}.about-portrait .name-plate .nm{font-family:var(--font-display);font-size:clamp(22px,2.8vmin,30px);line-height:1}.about-portrait .name-plate .rl{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-top:8px;font-size:11px}.about-body{flex-direction:column;justify-content:center;display:flex}.about-body .lead{font-family:var(--font-display);color:var(--ink);margin-bottom:clamp(14px,2vmin,24px);font-size:clamp(20px,2.7vmin,31px);line-height:1.3}.about-cols{columns:2;column-fill:balance;column-gap:clamp(28px,3.4vmin,52px);font-size:clamp(13px,1.4vmin,15px)}.about-cols p{break-inside:avoid;margin:0}.about-cols p+p{margin-top:1em}.edu-list{flex:1;align-content:center;gap:0;display:grid}.edu-item{border-top:1px solid var(--hair);grid-template-columns:150px 1fr auto;align-items:baseline;gap:clamp(20px,3vw,48px);padding:clamp(16px,2.2vmin,26px) 0;display:grid}.edu-item:last-child{border-bottom:1px solid var(--hair)}.edu-item .yr{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-faint);font-size:12px}.edu-item .deg{font-family:var(--font-display);font-size:clamp(18px,2.3vmin,27px);line-height:1.08}.edu-item .deg .school{font-family:var(--font-sans);color:var(--ink-soft);margin-top:6px;font-size:13.5px;display:block}.edu-item .grade{font-family:var(--font-sans);text-align:right;color:var(--ink-soft);white-space:nowrap;font-size:12.5px}.edu-item .grade b{color:var(--ink);font-weight:600}.exp-grid{flex:1;grid-template-columns:1fr 1fr;align-items:center;gap:clamp(30px,4vw,64px);min-height:0;display:grid}.exp-col{flex-direction:column;gap:clamp(20px,2.8vmin,34px);display:flex}.exp-item .role-top{border-bottom:1px solid var(--hair);justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:12px;padding-bottom:10px;display:flex}.exp-item .firm{font-family:var(--font-display);font-size:clamp(18px,2.2vmin,25px);line-height:1.04}.exp-item .loc-row{font-family:var(--font-sans);color:var(--ink-faint);margin:10px 0 16px;font-size:12px}.exp-item .when{font-family:var(--font-mono);letter-spacing:.06em;color:var(--ink-faint);white-space:nowrap;text-align:right;font-size:11px}.exp-item .when b{color:var(--ink-soft);letter-spacing:.04em;margin-top:5px;font-weight:400;display:block}.exp-item ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.exp-item li{color:var(--ink-soft);padding-left:18px;font-size:13px;line-height:1.5;position:relative}.exp-item li:before{content:"";background:var(--accent);width:5px;height:5px;position:absolute;top:9px;left:0}.skills-grid{flex:1;grid-template-columns:1.05fr 1fr;align-items:center;gap:clamp(34px,5vw,84px);min-height:0;display:grid}.skills-intro{flex-direction:column;gap:clamp(16px,2.4vmin,28px);display:flex}.skills-intro .lead{font-family:var(--font-display);color:var(--ink);margin:0;font-size:clamp(19px,2.5vmin,28px);line-height:1.32}.skills-footnote{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-faint);margin:0;font-size:11px;line-height:1.5}.skill-row{border-top:1px solid var(--hair);grid-template-columns:1fr auto;align-items:center;gap:14px;padding:clamp(9px,1.5vmin,15px) 0;display:grid}.skill-row:last-child{border-bottom:1px solid var(--hair)}.skill-row .nm{color:var(--ink);font-size:13.5px;font-weight:500}.skill-row .nm .sub{font-family:var(--font-mono);letter-spacing:.1em;color:var(--ink-faint);text-transform:uppercase;margin-left:8px;font-size:10px}.bars{gap:4px;display:flex}.bars i{background:var(--hair);transform-origin:bottom;width:13px;height:13px;transition:transform .5s cubic-bezier(.2,.8,.2,1),background .4s;transition-delay:calc(var(--b) * 45ms);display:block;transform:scaleY(.2)}.is-active .bars i.on{background:var(--accent);transform:scaleY(1)}.is-active .bars i.on.dim{background:color-mix(in oklab, var(--accent) 40%, var(--hair))}.feat .page{padding:0}.feat-grid{grid-template-columns:1.45fr 1fr;height:100%;display:grid}.feat-figure{background:var(--page-2);height:100%;min-height:0;position:relative}.feat-figure .tag{z-index:5;background:var(--accent);color:var(--page);font-family:var(--font-mono);letter-spacing:.18em;text-transform:uppercase;padding:9px 16px;font-size:10.5px;position:absolute;bottom:0;left:0}.feat-figure .tag-top{top:0;bottom:auto}.feat-body{flex-direction:column;justify-content:center;padding:clamp(28px,4vmin,64px);display:flex}.feat-body h2{margin:14px 0 6px;font-size:clamp(28px,4vmin,50px);line-height:1}.feat-body .where{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:clamp(16px,2.4vmin,26px);font-size:11px}.feat-body p{font-size:clamp(13px,1.45vmin,15px)}.feat-meta{border-top:1px solid var(--hair);gap:clamp(20px,3vw,40px);margin-top:clamp(16px,2.4vmin,26px);padding-top:clamp(16px,2.4vmin,22px);display:flex}.feat-meta .m .l{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:6px;font-size:9.5px;display:block}.feat-meta .m .v{font-family:var(--font-display);white-space:nowrap;font-size:clamp(16px,2vmin,22px)}.cases-grid{flex:1;grid-template-columns:repeat(3,1fr);align-content:center;gap:clamp(18px,2.4vw,34px);min-height:0;display:grid}.case{flex-direction:column;min-height:0;display:flex}.case .slot-wrap{aspect-ratio:4/5;width:100%}.case .c-no{font-family:var(--font-mono);letter-spacing:.16em;color:var(--ink-faint);margin:14px 0 6px;font-size:10px}.case .c-name{font-family:var(--font-display);font-size:clamp(17px,2vmin,24px);line-height:1.05}.case .c-desc{color:var(--ink-soft);margin-top:7px;font-size:12.5px;line-height:1.45}.case .c-tags{flex-wrap:wrap;gap:6px;margin-top:11px;display:flex}.case .c-tags span{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint);border:1px solid var(--hair);padding:3px 8px;font-size:9.5px}.contact .page{background:var(--page)}.contact-grid{grid-template-rows:1fr auto;height:100%;display:grid}.contact-hero{flex-direction:column;justify-content:center;display:flex}.contact-hero h2{letter-spacing:-.02em;font-size:clamp(40px,9vmin,132px);line-height:.9}.contact-hero h2 em{color:var(--accent);font-style:italic}.contact-hero .mail{font-family:var(--font-display);color:var(--ink);border-bottom:1px solid var(--hair);width:fit-content;margin-top:clamp(18px,3vmin,34px);padding-bottom:6px;font-size:clamp(22px,3.4vmin,42px);text-decoration:none;transition:border-color .3s,color .3s;display:inline-block}.contact-hero .mail:hover{color:var(--accent);border-color:var(--accent)}.contact-foot{border-top:1px solid var(--hair);grid-template-columns:repeat(4,1fr);gap:24px;padding-top:clamp(20px,3vmin,30px);display:grid}.contact-foot .f .l{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint);margin-bottom:9px;font-size:9.5px;display:block}.contact-foot .f .v{color:var(--ink);font-size:13.5px;line-height:1.5}.contact-foot .f a{color:var(--ink);border-bottom:1px solid #0000;text-decoration:none;transition:border-color .3s}.contact-foot .f a:hover{border-color:var(--accent)}@media (width<=860px){.spread{height:auto;min-height:auto;padding:16px;position:relative;transform:none!important}.page{width:100%;height:auto;min-height:70dvh;opacity:1!important;transform:none!important}.cover .page,.contact .page{min-height:88dvh}.page-pad{padding:30px 24px}.cover-veil,.sidenav{display:none}.cover-mid{grid-template-columns:1fr;gap:26px}.cover-title{font-size:clamp(46px,15vw,86px)}.cover-figure{height:46vh}.cover-bottom{flex-wrap:wrap;gap:22px 40px}.about-grid{grid-template-columns:1fr;gap:26px}.about-portrait{height:56vh}.about-cols{columns:1}.edu-item{grid-template-columns:1fr;gap:4px}.edu-item .grade{text-align:left}.exp-grid,.skills-grid{grid-template-columns:1fr;gap:30px}.feat-grid{grid-template-columns:1fr}.feat-figure{height:52vh}.cases-grid{grid-template-columns:1fr;gap:28px}.case .slot-wrap{aspect-ratio:16/10}.contact-foot{grid-template-columns:1fr 1fr;gap:22px}}@media (height<=620px) and (width>=861px){.page-pad{padding:22px 34px}}.editor-login{background:var(--page);place-items:center;min-height:100dvh;padding:24px;display:grid}.editor-login form,.editor-card{border:1px solid var(--hair);background:#fff;box-shadow:0 16px 50px -34px #140f0873}.editor-login form{width:min(420px,100%);padding:28px}.editor-login h1,.editor-sidebar h1,.editor-card h2{font-family:var(--font-display);margin:0;font-weight:500}.editor-login h1{margin-bottom:20px;font-size:34px}.editor-shell{background:var(--page);min-height:100dvh;color:var(--ink);grid-template-columns:280px minmax(420px,.9fr) minmax(520px,1.1fr);gap:0;display:grid}.editor-sidebar{border-right:1px solid var(--hair);background:color-mix(in oklab, var(--page-2) 62%, white);height:100dvh;padding:22px;position:sticky;top:0;overflow:auto}.editor-sidebar h1{font-size:28px}.editor-sidebar p,.editor-note,.editor-message{color:var(--ink-soft);font-size:12px;line-height:1.45}.editor-actions,.section-editor-actions,.list-editor-actions{flex-wrap:wrap;gap:8px;display:flex}.editor-actions{margin:18px 0}.section-list{gap:8px;margin:20px 0;display:grid}.section-list button{text-align:left;justify-content:space-between;min-height:50px}.section-list button span,.section-list button small{display:block}.section-list button small{color:var(--ink-faint);font-family:var(--font-mono);text-transform:uppercase;margin-top:4px;font-size:10px}.section-list button.active{border-color:var(--accent);color:var(--accent)}.editor-panel{align-content:start;gap:18px;height:100dvh;padding:22px;display:grid;overflow:auto}.editor-card{border-radius:6px;padding:22px}.editor-card h2{margin-bottom:16px;font-size:26px}.section-editor-head{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px;display:flex}.editor-grid{gap:14px;display:grid}.editor-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.editor-grid.three{grid-template-columns:1fr 1fr 120px}.editor-field{color:var(--ink);gap:7px;font-size:12px;font-weight:600;display:grid}.editor-field span,.image-picker-head span{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-size:10px}.editor-field input,.editor-field textarea,.editor-field select,.image-picker input[type=file]{border:1px solid var(--hair);background:var(--page);width:100%;color:var(--ink);font:inherit;border-radius:4px;padding:10px 11px}.editor-field textarea{resize:vertical;min-height:96px}.editor-shell button,.editor-login button{border:1px solid var(--hair);background:var(--page);color:var(--ink);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;border-radius:4px;padding:9px 12px;font-size:10px}.editor-shell button:hover,.editor-login button:hover{border-color:var(--accent);color:var(--accent)}.editor-shell button:disabled{cursor:not-allowed;opacity:.45}.list-editor,.image-picker{gap:12px;margin-top:18px;display:grid}.list-editor-item,.image-picker{border:1px solid var(--hair);background:color-mix(in oklab, var(--page-2) 44%, white);border-radius:6px;padding:14px}.image-picker-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.image-picker img{object-fit:cover;border:1px solid var(--hair);border-radius:4px;width:100%;max-height:220px}.editor-preview{background:var(--stage);height:100dvh;padding:18px;overflow:auto}.portfolio-preview-book{gap:18px;display:grid}.portfolio-preview-book .spread{height:auto;min-height:auto;padding:0;position:relative}.portfolio-preview-book .page{width:100%;height:auto;min-height:540px;transform:none!important}.portfolio-preview-book .cover-veil{display:none}.portfolio-preview-book .reveal{opacity:1;transform:none}.portfolio-preview-book .reveal-img{clip-path:inset(0)}.portfolio-preview-book .bars i.on{background:var(--accent);transform:scaleY(1)}.portfolio-preview-book .bars i.on.dim{background:color-mix(in oklab, var(--accent) 40%, var(--hair))}@media (width<=1180px){.editor-shell{grid-template-columns:250px minmax(0,1fr)}.editor-preview{grid-column:1/-1;height:auto;max-height:none}}@media (width<=760px){.editor-shell{display:block}.editor-sidebar,.editor-panel,.editor-preview{height:auto}.editor-sidebar{position:relative}.editor-grid.two,.editor-grid.three{grid-template-columns:1fr}.section-editor-head{display:grid}}
