:root{color-scheme:dark;--bg:#070b17;--surface:#080e1c;--line:#252d3e;--text:#eef1f7;--muted:#a3adbe;--mint:#4334eb;--mono:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:28px}body{margin:0;background:radial-gradient(ellipse at 85% 20%,#4334eb26,transparent 40%),var(--bg);color:var(--text);font:16px/1.65 Arial,Helvetica,sans-serif}.shell{max-width:1040px;margin:auto;padding:0 28px}a{color:inherit;text-decoration:none}a:hover{color:var(--mint)}a:focus-visible,summary:focus-visible{outline:2px solid var(--mint);outline-offset:6px}.skip{position:fixed;top:8px;left:8px;transform:translateY(-160%);z-index:5;background:var(--mint);color:var(--bg);padding:10px}.skip:focus{transform:none}header{display:flex;align-items:center;gap:32px;border-bottom:1px solid var(--line);padding:26px 0;margin-bottom:24px}.brand{font-weight:750;font-size:26px;letter-spacing:-1px}.brand span,.accent{color:var(--mint)}nav{display:flex;gap:24px;font-size:14px}nav a{color:var(--muted);padding:8px 0}nav a.active{color:var(--mint)}.edition{margin-left:auto;border:1px solid var(--line);padding:2px 8px;font:12px/1.6 var(--mono);color:var(--muted)}.panel{background:var(--surface);border:1px solid var(--line)}.intro{padding:34px 38px 36px;border-color:#39336a;box-shadow:0 0 34px #4334eb14}.eyebrow{font:12px/1.6 var(--mono);letter-spacing:.09em;color:var(--muted)}h1{font-size:clamp(2.8rem,7.2vw,5rem);font-weight:600;line-height:1.06;letter-spacing:-.055em;margin:28px 0 30px}h2{font-size:28px;line-height:1.25;letter-spacing:-.03em;margin:0}h3{font-size:21px;line-height:1.35;letter-spacing:-.02em;margin:13px 0}p{margin:0 0 12px}.intro-bottom{display:flex;justify-content:space-between;align-items:flex-end;gap:24px}.role{font:16px/1.7 var(--mono);color:var(--mint)}.muted,.placeholder{color:var(--muted)}.intro-bottom p:last-child{margin:0}.button{display:inline-flex;padding:11px 18px;border:1px solid #4334eb;font:14px/1.5 var(--mono);white-space:nowrap;transition:background .18s,transform .18s}.primary{background:#4334eb;color:#fff}.primary:hover{background:#3628c9;color:#fff;transform:translateY(-2px)}section{scroll-margin-top:24px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:44px 0 18px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.project{overflow:hidden;transition:border-color .2s}.project:hover{border-color:#665ccf}.image-wrap{position:relative;border-bottom:1px solid var(--line);background:#10192a;overflow:hidden}.image-wrap img{width:100%;height:auto;display:block;transition:transform .3s}.project:hover img{transform:scale(1.025)}.image-label{position:absolute;bottom:14px;left:14px;font:10px/1.5 var(--mono);letter-spacing:.08em;border:1px solid #536371;background:#080e1ce6;padding:4px 7px;color:#c1cad6}.project-copy{padding:22px}.project-meta{display:flex;justify-content:space-between;font:12px/1.6 var(--mono);color:var(--mint)}.project-copy>p{color:var(--muted);font-size:16px}.project details{margin-top:24px;border-top:1px solid var(--line);padding-top:15px;font-size:14px}summary{cursor:pointer;color:var(--text);padding:2px 0}summary:hover{color:var(--mint)}.detail{padding-top:16px;color:var(--muted)}.missing{font:12px/1.6 var(--mono);color:var(--muted)}.about,.contact{padding:34px 38px;display:grid;grid-template-columns:1fr 1.45fr;gap:50px;margin-top:24px}.about{margin-top:44px}.about h2,.contact h2{margin:12px 0 20px}.about-note{border-top:1px solid var(--line);padding-top:18px;margin-top:24px}.about-note p{margin:6px 0 0}.contact{border-color:#39336a}.contact-list{margin:0;padding:0;list-style:none;align-self:center}.contact-list li{padding:12px 0;display:flex;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);font-size:14px}.contact-list li:first-child{padding-top:0}footer{display:flex;justify-content:space-between;gap:20px;color:var(--muted);font:12px/1.6 var(--mono);padding:28px 0 36px}@media(max-width:760px){.project-grid{grid-template-columns:1fr}.image-wrap{max-height:330px}.image-wrap img{height:330px;object-fit:cover}.intro-bottom{align-items:flex-start;flex-direction:column}.about,.contact{grid-template-columns:1fr;gap:18px}.section-heading{align-items:flex-start;flex-direction:column}.edition{display:none}}@media(max-width:440px){.shell{padding:0 18px}header{gap:24px;padding:19px 0}nav{gap:20px}.intro,.about,.contact{padding:26px 24px}h1{font-size:2.8rem}.project-copy{padding:22px}footer{flex-direction:column;gap:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important}}

[hidden]{display:none!important}.cursor-grid{position:fixed;inset:0;pointer-events:none;z-index:0;opacity:0;background-repeat:no-repeat;background-size:100% 100%;mask-image:radial-gradient(circle 138px at var(--cursor-x,50%) var(--cursor-y,50%),#000 0%,rgba(0,0,0,.75) 25%,rgba(0,0,0,.35) 55%,rgba(0,0,0,.08) 80%,transparent 100%);-webkit-mask-image:radial-gradient(circle 138px at var(--cursor-x,50%) var(--cursor-y,50%),#000 0%,rgba(0,0,0,.75) 25%,rgba(0,0,0,.35) 55%,rgba(0,0,0,.08) 80%,transparent 100%);transition:opacity 1.5s ease-out}.cursor-grid.visible{opacity:1;transition-duration:.3s}.shell{position:relative;z-index:1}@media(prefers-reduced-motion:reduce),(hover:none){.cursor-grid{display:none}}

.cursor-trail{position:fixed;inset:0;z-index:4;pointer-events:none;overflow:hidden}.cursor-trail img{position:absolute;left:0;top:0;width:12px;height:19px;will-change:transform}@media(prefers-reduced-motion:reduce),(hover:none){.cursor-trail{display:none}}


/* Lighter blue text preserves readability on dark surfaces. */
.brand span,.accent,.role,.project-meta,nav a.active,a:hover,summary:hover{color:#a49bff}.primary,.primary:hover{color:#fff}

.contact-list a{color:#a49bff;overflow-wrap:anywhere;text-align:right}.contact-list li>span{flex-shrink:0}@media(max-width:440px){.contact-list li{flex-wrap:wrap}.contact-list a{text-align:left}}


.polygon-base{position:fixed;inset:0;z-index:0;pointer-events:none;background-repeat:no-repeat;background-size:100% 100%;opacity:.22}


.cursor-grid{filter:blur(1.5px);transition:opacity 1.5s ease-out,filter .45s ease}.cursor-grid.visible{opacity:.9775;filter:blur(2.5px)}.cursor-grid.visible.resting{animation:polygon-pulse 3.6s ease-in-out infinite;filter:blur(1.5px)}@keyframes polygon-pulse{0%,100%{opacity:.9775}50%{opacity:.483}}@media(prefers-reduced-motion:reduce){.cursor-grid{animation:none!important}}

