:root{--bg: #f5f4ef;--bg-soft: #f0efe8;--ink: #151515;--muted: #77756f;--line: #d6d4cc;--accent: #1b4cff;--max: 1240px;--header: 72px;--panel-w: min(420px, 34vw);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);overflow-x:hidden}button,a{font:inherit;color:inherit}a{text-decoration:none}button{cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.site-header{position:fixed;z-index:40;top:0;left:0;right:0;height:var(--header);padding:0 4vw;display:flex;align-items:center;justify-content:space-between;background:color-mix(in srgb,var(--bg) 82%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}.brand{font-size:12px;font-weight:800;letter-spacing:.08em}nav{display:flex;gap:30px}nav a{font-size:12px;color:var(--muted)}nav a:hover{color:var(--ink)}.menu-button{display:none;border:0;background:transparent;font-size:12px}.stage{position:relative;height:100vh;height:100svh;overflow:hidden;border-bottom:1px solid var(--line);background:radial-gradient(120% 90% at 50% 45%,#faf9f5 0%,var(--bg) 55%,#edece5 100%)}.graph{position:absolute;inset:0;touch-action:pan-y;cursor:grab;user-select:none;-webkit-user-select:none}.stage.is-active .graph{touch-action:none}.graph.is-panning{cursor:grabbing}.graph-world{position:absolute;inset:0;transform-origin:50% 50%;will-change:transform}.graph-edges{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}.gedge{stroke:#c3c1b8;stroke-width:1;vector-effect:non-scaling-stroke;transition:stroke .25s,opacity .25s}.graph.is-focused .gedge{opacity:.2}.graph.is-focused .gedge.is-related{opacity:1;stroke:var(--ink);stroke-width:1.4}.gedge-label{font-family:inherit;font-size:8px;letter-spacing:.12em;text-transform:uppercase;fill:var(--muted);stroke:var(--bg);stroke-width:4;paint-order:stroke fill;opacity:0;transition:opacity .25s}.gedge-label.is-visible{opacity:1}.graph-nodes{position:absolute;inset:0;pointer-events:none}.gnode{position:absolute;left:50%;top:50%;transform:translate(var(--tx, 0),var(--ty, 0)) translate(-50%,-50%) scale(var(--s, 1));pointer-events:auto;white-space:nowrap;background:var(--bg);border:1px solid var(--line);color:var(--ink);transition:background-color .22s,color .22s,border-color .22s,opacity .3s,box-shadow .22s;will-change:transform}.gnode--self{background:var(--ink);color:var(--bg);border-color:var(--ink);border-radius:999px;padding:20px 26px;font-size:11px;font-weight:800;letter-spacing:.14em}.gnode--org{border-color:var(--ink);border-radius:2px;padding:12px 17px;font-size:13px;font-weight:600;letter-spacing:-.01em;outline:1px solid var(--ink);outline-offset:3px}.gnode--concept{border-color:#b0aea6;border-radius:2px;padding:11px 15px;font-size:12px;letter-spacing:-.01em}.gnode--tech{border-radius:999px;padding:7px 12px;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);background:var(--bg-soft)}.gnode--project{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));color:var(--accent);border-radius:2px;padding:10px 14px;font-size:12px;display:flex;align-items:baseline;gap:9px}.gnode--output{border-style:dashed;border-color:color-mix(in srgb,var(--accent) 45%,var(--line));color:var(--accent);border-radius:999px;padding:8px 13px;font-size:9px;letter-spacing:.1em;text-transform:uppercase}.gnode-num{font-size:8px;letter-spacing:.1em;opacity:.65}.gnode:hover,.gnode.is-active{--s: 1.06;background:var(--ink);border-color:var(--ink);color:var(--bg);z-index:4}.gnode--project:hover,.gnode--project.is-active,.gnode--output:hover,.gnode--output.is-active{background:var(--accent);border-color:var(--accent);color:#fff}.gnode.is-selected{box-shadow:0 0 0 5px color-mix(in srgb,var(--accent) 14%,transparent)}.gnode.is-related{border-color:var(--ink);color:var(--ink);z-index:3}.gnode--project.is-related,.gnode--output.is-related{border-color:var(--accent);color:var(--accent)}.graph.is-focused .gnode:not(.is-active):not(.is-related){opacity:.18}.gnode.is-muted{opacity:.12!important;pointer-events:none}.stage-intro{position:absolute;z-index:5;left:4vw;top:50%;transform:translateY(-50%);max-width:min(520px,42vw);pointer-events:none;transition:opacity .5s,transform .5s}.stage-intro .button{pointer-events:auto}.stage-intro:before{content:"";position:absolute;z-index:-1;inset:-60px -140px -60px -8vw;background:radial-gradient(65% 60% at 28% 50%,var(--bg) 0%,color-mix(in srgb,var(--bg) 78%,transparent) 45%,transparent 100%);pointer-events:none}.stage.is-active .stage-intro{opacity:0;transform:translateY(-52%)}.stage.is-active .stage-intro .button{pointer-events:none}.kicker,.section-label{font-size:10px;letter-spacing:.16em;font-weight:700;color:var(--muted);margin:0}.stage-intro h1{margin:26px 0 24px;font-size:clamp(40px,4.6vw,68px);line-height:.95;letter-spacing:-.055em;font-weight:500}em{font-family:Georgia,Times New Roman,serif;font-weight:400}.stage-intro .lead{margin:0 0 32px;max-width:430px;color:#4f4d48;font-size:15px;line-height:1.65}.button{display:inline-flex;gap:28px;align-items:center;padding:15px 18px;border:1px solid var(--ink);background:transparent;font-size:12px;transition:.2s}.button:hover{background:var(--ink);color:var(--bg)}.stage-filters{position:absolute;z-index:6;left:4vw;bottom:34px;display:flex;flex-wrap:wrap;gap:7px}.chip{border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 75%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;padding:7px 13px;font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);transition:.2s}.chip:hover{color:var(--ink);border-color:var(--ink)}.chip.is-on{background:var(--ink);border-color:var(--ink);color:var(--bg)}.stage-exit{position:absolute;z-index:30;top:calc(var(--header) + 18px);right:4vw;display:flex;align-items:center;gap:10px;padding:8px 8px 8px 15px;border:1px solid var(--ink);border-radius:999px;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;pointer-events:none;transition:opacity .35s,transform .5s cubic-bezier(.16,.84,.28,1),background-color .2s,color .2s}.stage.is-active .stage-exit{opacity:1;pointer-events:auto}.stage.has-panel .stage-exit{transform:translate(calc(-1 * var(--panel-w)))}.stage-exit:hover{background:var(--ink);color:var(--bg)}.stage-exit-label{font-size:9px;letter-spacing:.14em}.stage-exit-cross{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;border:1px solid currentColor;font-size:14px;line-height:1}.stage-hints{position:absolute;z-index:5;left:50%;transform:translate(-50%);bottom:38px;font-size:8px;letter-spacing:.16em;color:var(--muted);pointer-events:none;text-align:center;transition:opacity .4s}.stage.has-panel .stage-hints{opacity:0}.hint-active,.stage.is-active .hint-idle{display:none}.stage.is-active .hint-active{display:inline}.stage-controls{position:absolute;z-index:6;right:4vw;bottom:74px;display:flex;gap:6px;transition:opacity .4s,transform .4s}.stage-controls button{width:30px;height:30px;border:1px solid var(--line);background:color-mix(in srgb,var(--bg) 75%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:50%;font-size:13px;line-height:1;color:var(--muted);transition:.2s}.stage-controls button:hover{color:var(--ink);border-color:var(--ink)}.stage-scroll{position:absolute;z-index:5;right:4vw;bottom:34px;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:4px;transition:.2s}.stage-scroll:hover{color:var(--ink);border-color:var(--ink)}.panel{position:absolute;z-index:20;top:var(--header);right:0;width:var(--panel-w);height:calc(100% - var(--header));background:var(--bg);border-left:1px solid var(--line);padding:44px 40px 60px;overflow-y:auto;overscroll-behavior:contain;transform:translate(101%);transition:transform .5s cubic-bezier(.16,.84,.28,1)}.panel.is-open{transform:translate(0)}.panel-close{position:absolute;top:14px;right:18px;border:0;background:transparent;font-size:26px;line-height:1;color:var(--muted)}.panel-close:hover{color:var(--ink)}.panel-type{margin:0;font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.panel-title{margin:18px 0 20px;font-size:clamp(30px,3vw,42px);line-height:.98;letter-spacing:-.05em;font-weight:500}.panel-short{margin:0 0 18px;font-size:16px;line-height:1.5}.panel-body-text{margin:0;color:var(--muted);line-height:1.7;font-size:14px}.panel-meta{margin:18px 0 0;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.panel-tags{display:flex;flex-wrap:wrap;gap:6px;margin:26px 0 0}.panel-tags span{border:1px solid var(--line);border-radius:999px;padding:6px 10px;font-size:9px;letter-spacing:.06em;color:var(--muted)}.panel-links{display:flex;flex-wrap:wrap;gap:22px;margin:30px 0 0}.panel-links a{font-size:11px;border-bottom:1px solid var(--ink);padding-bottom:4px}.panel-links a:hover{color:var(--accent);border-color:var(--accent)}.panel-label{margin:40px 0 8px;font-size:9px;letter-spacing:.14em;color:var(--muted)}.panel-relations{list-style:none;margin:0;padding:0}.panel-relations li{border-top:1px solid var(--line)}.panel-relations li:last-child{border-bottom:1px solid var(--line)}.panel-relations button{width:100%;border:0;background:transparent;display:grid;grid-template-columns:16px 1fr;align-items:baseline;gap:4px 10px;padding:12px 6px 12px 0;text-align:left;transition:.18s}.panel-relations button:hover{padding-left:8px;padding-right:0;background:var(--bg-soft)}.rel-arrow{color:var(--muted);font-size:12px}.rel-predicate{grid-column:2;font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.rel-target{grid-column:2;font-size:15px;letter-spacing:-.02em}.panel-relations button:hover .rel-target{color:var(--accent)}.section{width:min(var(--max),92vw);margin:0 auto;padding:130px 0}.statement{display:grid;grid-template-columns:1fr 2fr;gap:7vw}.statement-copy{max-width:760px}.large{font-size:clamp(28px,4vw,52px);line-height:1.1;letter-spacing:-.035em}.statement-copy>p:last-child{max-width:600px;color:var(--muted);line-height:1.7}.section-heading{display:grid;grid-template-columns:1fr 2fr;gap:7vw;margin-bottom:70px}.section-heading p{max-width:580px;color:var(--muted);line-height:1.7;margin:0}.work,.project{border-top:1px solid var(--line)}.project:last-child{border-bottom:1px solid var(--line)}.project-main{width:100%;border:0;background:transparent;display:grid;grid-template-columns:70px 1fr 110px 40px;align-items:center;gap:25px;padding:28px 0;text-align:left;transition:.18s}.project-main:hover{padding-left:15px;padding-right:15px;background:var(--bg-soft)}.project-number,.project-year,.project-title-wrap span{color:var(--muted);font-size:10px;letter-spacing:.08em}.project-title-wrap{display:flex;align-items:baseline;gap:25px}.project-title-wrap h3{margin:0;font-size:clamp(25px,3vw,42px);font-weight:450;letter-spacing:-.04em}.project-arrow{font-size:20px;text-align:right}.project-main:hover .project-arrow{color:var(--accent)}.timeline{border-top:1px solid var(--line)}.timeline-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;margin-top:70px;border-top:1px solid var(--line)}.timeline-item{padding:25px 20px 25px 0;border-right:1px solid var(--line);min-height:260px}.timeline-item:not(:first-child){padding-left:20px}.timeline-item span{color:var(--muted);font-size:10px}.timeline-item h3{font-size:18px;margin:60px 0 15px;letter-spacing:.04em}.timeline-item p{color:var(--muted);line-height:1.6;font-size:13px}.about{border-top:1px solid var(--line)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:8vw;margin-top:65px}.about h2{font-size:clamp(48px,7vw,90px);line-height:.9;letter-spacing:-.06em;font-weight:500;margin:0}.about-role{margin:22px 0 0;font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:700;color:var(--accent)}.about-role+.large{margin-top:26px}.about-copy{color:var(--muted);line-height:1.75;max-width:540px}.about-copy p:first-child{margin-top:0}.contact{min-height:80vh;border-top:1px solid var(--line);display:flex;flex-direction:column;justify-content:center}.contact h2{font-size:clamp(70px,13vw,170px);line-height:.82;letter-spacing:-.07em;font-weight:450;margin:50px 0}.contact-links{display:flex;gap:35px}.contact-links a{font-size:12px;border-bottom:1px solid var(--ink);padding-bottom:5px}.site-footer{border-top:1px solid var(--line);width:92vw;margin:auto;padding:20px 0;display:flex;justify-content:space-between;color:var(--muted);font-size:8px;letter-spacing:.1em}@media(max-width:900px){.stage-intro{max-width:none;right:4vw;top:auto;bottom:150px;transform:none}.stage.is-active .stage-intro{transform:translateY(10px)}.stage.has-panel .stage-exit{transform:none}.stage-intro:before{inset:-40px -6vw;background:linear-gradient(to top,var(--bg) 30%,transparent 100%)}.stage-intro h1{font-size:clamp(34px,8vw,48px)}.stage-intro .lead{display:none}.stage-controls{bottom:110px}.panel{inset:auto 0 0;width:auto;height:68%;border-left:0;border-top:1px solid var(--ink);padding:34px 6vw 50px;transform:translateY(101%)}.panel.is-open{transform:translateY(0)}}@media(max-width:760px){:root{--header: 62px}nav{display:none;position:absolute;top:var(--header);left:0;right:0;padding:25px 4vw;background:var(--bg);border-bottom:1px solid var(--line);flex-direction:column;gap:18px}nav.open{display:flex}.menu-button{display:block}.section{padding:95px 0}.statement,.section-heading,.about-grid{grid-template-columns:1fr;gap:35px}.project-main{grid-template-columns:35px 1fr 25px;gap:10px}.project-year{display:none}.project-title-wrap{display:block}.project-title-wrap span{display:block;margin-top:6px}.timeline-grid{grid-template-columns:1fr}.timeline-item,.timeline-item:not(:first-child){border-right:0;border-bottom:1px solid var(--line);padding:20px 0;min-height:auto}.timeline-item h3{margin-top:30px}.contact h2{font-size:23vw}.contact-links{flex-wrap:wrap;gap:20px}.site-footer{flex-direction:column;gap:8px}.stage-hints{display:none}.stage-filters,.stage-scroll{bottom:26px}.gnode--concept,.gnode--project{font-size:11px;padding:9px 12px}.gnode--self{padding:16px 20px;font-size:10px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.panel{transition:none}}
