@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital,wght@0,300;0,400;0,500;0,600;1,400&family=Instrument+Serif:ital@0;1&display=swap";:root{--bg: #0b0b0d;--bg-2: #101013;--surface: #14141a;--ink: #ece8dd;--ink-dim: #8a867d;--ink-faint: #4a4842;--rule: #1f1f25;--rule-hot: #2a2a33;--accent: #e8a857;--accent-dim:#9a6f3a;--ok: #93b58b;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--serif: "Instrument Serif", "Times New Roman", serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--mono);font-size:13px;line-height:1.65;font-weight:400;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}::-moz-selection{background:var(--accent);color:var(--bg)}::selection{background:var(--accent);color:var(--bg)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:100;opacity:.035;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='200' height='200' filter='url(%23n)'/></svg>")}.statusbar{position:sticky;top:0;z-index:50;display:grid;grid-template-columns:auto 1fr auto auto auto;align-items:center;gap:24px;padding:10px 28px;background:#0b0b0dd9;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--rule);font-size:11px;letter-spacing:.04em;color:var(--ink-dim);text-transform:uppercase}.statusbar .dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--ok);margin-right:8px;box-shadow:0 0 10px var(--ok);animation:pulse 2.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.statusbar .seg{display:flex;align-items:center;gap:10px;white-space:nowrap}.statusbar .sep{color:var(--ink-faint)}.statusbar .clock{font-variant-numeric:tabular-nums;color:var(--ink)}.frame{display:block;min-height:100vh}main{padding:64px 56px 0}@media (max-width: 780px){main{padding:40px 20px 0}}.label{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim)}.label .k{color:var(--accent);margin-right:8px}.rule{border:none;height:1px;background:var(--rule);margin:0}.section-head{display:grid;grid-template-columns:160px 1fr auto;align-items:baseline;gap:24px;padding:14px 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);margin-bottom:40px}.section-head .num{font-family:var(--serif);font-style:italic;font-size:22px;color:var(--accent);letter-spacing:0}.section-head h2{font-family:var(--mono);font-size:11px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--ink)}.section-head .meta{font-size:10.5px;color:var(--ink-dim);letter-spacing:.12em;text-transform:uppercase}@media (max-width: 780px){.section-head{grid-template-columns:60px 1fr}.section-head .meta{grid-column:1 / -1;font-size:10px}}section{padding:80px 0 40px;scroll-margin-top:60px}.hero{padding-top:72px;padding-bottom:120px;position:relative}.hero-top{display:flex;justify-content:space-between;align-items:flex-start;font-size:11px;color:var(--ink-dim);letter-spacing:.12em;text-transform:uppercase;margin-bottom:56px}.hero-top .coord{font-variant-numeric:tabular-nums}.hero h1{font-family:var(--serif);font-weight:400;font-size:clamp(60px,11vw,168px);line-height:.88;letter-spacing:-.02em;color:var(--ink)}.hero h1 .it{font-style:italic;color:var(--accent)}.hero h1 .amp{font-style:italic;color:var(--ink-dim);font-size:.85em;vertical-align:.02em}.hero .tag{margin-top:44px;display:grid;grid-template-columns:2fr 1fr;gap:64px;align-items:end;border-top:1px solid var(--rule);padding-top:28px}.hero .tag p{max-width:52ch;font-size:14px;color:var(--ink);line-height:1.7}.hero .tag p span.em{color:var(--accent)}.hero .tag .who{font-size:11px;color:var(--ink-dim);letter-spacing:.12em;text-transform:uppercase;line-height:1.9}.hero .tag .who b{color:var(--ink);font-weight:500}@media (max-width: 780px){.hero .tag{grid-template-columns:1fr;gap:28px}}.termstrip{margin-top:80px;padding:18px 22px;background:var(--surface);border:1px solid var(--rule);border-radius:4px;font-size:12px;color:var(--ink-dim);display:flex;align-items:center;gap:14px;overflow:hidden}.termstrip .prompt{color:var(--accent)}.termstrip .cmd{color:var(--ink)}.termstrip .cursor{display:inline-block;width:7px;height:14px;background:var(--accent);animation:blink 1.05s steps(1) infinite;vertical-align:-2px}@keyframes blink{50%{opacity:0}}.index-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:24px;row-gap:14px}.index-row{grid-column:1 / -1;display:grid;grid-template-columns:200px 1fr;gap:32px;padding:10px 0;border-bottom:1px dashed var(--rule);font-size:13px}.index-row .k{color:var(--ink-dim);font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding-top:3px}.index-row .v{color:var(--ink)}.index-row .v b{color:var(--accent);font-weight:500}@media (max-width: 780px){.index-row{grid-template-columns:1fr;gap:4px}}.xp{display:grid;gap:0}.xp article{display:grid;grid-template-columns:180px 1fr 220px;gap:40px;padding:34px 0;border-bottom:1px solid var(--rule);transition:background .25s ease;position:relative}.xp article:hover{background:#e8a85706}.xp article:hover:before{content:"";position:absolute;left:-24px;top:0;bottom:0;width:2px;background:var(--accent)}.xp .when{font-size:11px;color:var(--ink-dim);letter-spacing:.12em;text-transform:uppercase;padding-top:4px}.xp .when .now{display:inline-block;background:var(--accent);color:var(--bg);padding:1px 6px;font-size:9.5px;letter-spacing:.14em;margin-right:6px;font-weight:500}.xp .body h3{font-family:var(--serif);font-weight:400;font-size:30px;letter-spacing:-.01em;line-height:1.1;margin-bottom:4px;color:var(--ink)}.xp .body h3 em{color:var(--accent);font-style:italic}.xp .body .role{font-size:11px;color:var(--ink-dim);letter-spacing:.12em;text-transform:uppercase;margin-bottom:16px}.xp .body ul{list-style:none}.xp .body li{font-size:13px;color:var(--ink);line-height:1.7;padding-left:20px;position:relative;margin-bottom:6px;max-width:68ch}.xp .body li:before{content:"—";position:absolute;left:0;color:var(--accent-dim)}.xp .stack{display:flex;flex-wrap:wrap;gap:6px;align-content:flex-start;padding-top:6px}.xp .stack span{font-size:10.5px;letter-spacing:.06em;padding:3px 8px;border:1px solid var(--rule-hot);color:var(--ink-dim);border-radius:2px}@media (max-width: 780px){.xp article{grid-template-columns:1fr;gap:12px}.xp .body h3{font-size:24px}}.projects{display:grid;grid-template-columns:repeat(6,1fr);gap:0;border-top:1px solid var(--rule)}.proj{grid-column:span 3;padding:36px 28px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);position:relative;cursor:pointer;transition:background .3s ease;display:flex;flex-direction:column;gap:18px;min-height:340px}.proj:hover{background:var(--bg-2)}.proj:hover .proj-arrow{transform:translate(4px,-4px);color:var(--accent)}.proj:nth-child(3n){border-right:none}.proj-head{display:flex;justify-content:space-between;align-items:flex-start}.proj-index{font-family:var(--serif);font-style:italic;font-size:13px;color:var(--ink-faint);letter-spacing:0}.proj-arrow{font-size:18px;color:var(--ink-dim);transition:transform .3s ease,color .3s ease;font-family:var(--mono)}.proj h3{font-family:var(--serif);font-weight:400;font-size:32px;line-height:1.05;letter-spacing:-.01em;color:var(--ink)}.proj h3 em{font-style:italic;color:var(--accent)}.proj .kind{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-dim)}.proj p{font-size:12.5px;color:var(--ink);line-height:1.65;max-width:44ch;margin-top:auto}.proj .stack{display:flex;flex-wrap:wrap;gap:6px;padding-top:14px;border-top:1px dashed var(--rule)}.proj .stack span{font-size:10.5px;color:var(--ink-dim);letter-spacing:.06em}.proj .stack span:after{content:" /";color:var(--ink-faint);margin-left:4px}.proj .stack span:last-child:after{content:""}.proj.wide{grid-column:span 6;min-height:220px}.proj.tall{grid-column:span 2}@media (max-width: 780px){.projects{grid-template-columns:1fr}.proj{grid-column:span 1!important;border-right:none}.proj h3{font-size:26px}}.contact-sheet{background:#0a0a0c;padding:36px 28px 28px;border:1px solid var(--rule);position:relative}.contact-sheet:before{content:"ROLL 001 / BOSTON + OXFORD / 2024–2026";position:absolute;top:12px;left:28px;font-size:10px;letter-spacing:.22em;color:var(--accent)}.contact-sheet:after{content:"36 EXP / KODAK PORTRA 400";position:absolute;top:12px;right:28px;font-size:10px;letter-spacing:.22em;color:var(--ink-dim)}.sheet{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:24px}.frame-cell{position:relative;aspect-ratio:3/2;overflow:hidden;background:var(--bg-2);cursor:pointer}.frame-cell .frame-num{position:absolute;bottom:6px;left:8px;z-index:2;font-size:9.5px;letter-spacing:.16em;color:var(--accent);background:#0a0a0cb3;padding:2px 5px;font-family:var(--mono)}.frame-cell .frame-meta{position:absolute;bottom:6px;right:8px;z-index:2;font-size:9.5px;letter-spacing:.12em;color:var(--ink-dim);background:#0a0a0cb3;padding:2px 5px;font-family:var(--mono)}.frame-cell .img{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;filter:grayscale(.1) contrast(1.05);transition:transform .5s ease,filter .5s ease}.frame-cell:hover .img{transform:scale(1.04);filter:grayscale(0) contrast(1.1)}.sheet-footer{display:flex;justify-content:space-between;margin-top:20px;padding-top:14px;border-top:1px dashed var(--rule);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-dim)}.sheet-footer a{color:var(--accent)}@media (max-width: 780px){.sheet{grid-template-columns:repeat(2,1fr)}}.contact{margin-top:80px;padding:80px 0 40px;border-top:1px solid var(--rule)}.contact-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:64px;align-items:start}.contact h2.big{font-family:var(--serif);font-weight:400;font-size:clamp(44px,7vw,100px);line-height:.9;letter-spacing:-.02em;color:var(--ink)}.contact h2.big em{font-style:italic;color:var(--accent)}.contact .chan{display:grid;gap:14px;margin-top:12px}.contact .chan a{display:grid;grid-template-columns:90px 1fr auto;gap:16px;padding:14px 0;border-bottom:1px solid var(--rule);font-size:12px;letter-spacing:.05em;align-items:center;transition:padding .25s ease,color .25s ease}.contact .chan a:hover{padding-left:8px;color:var(--accent)}.contact .chan a .k{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim)}.contact .chan a .arrow{color:var(--ink-faint)}.contact .chan a:hover .arrow{color:var(--accent)}@media (max-width: 780px){.contact-grid{grid-template-columns:1fr;gap:32px}}footer.foot{margin-top:80px;padding:24px 28px;border-top:1px solid var(--rule);display:grid;grid-template-columns:1fr auto 1fr;gap:24px;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint)}footer.foot .mid{color:var(--ink-dim);text-align:center}footer.foot .right{text-align:right}nav.sidenav{position:fixed;right:14px;top:50%;transform:translateY(-50%);z-index:40;display:flex;flex-direction:column;gap:10px;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-faint)}nav.sidenav a{display:flex;align-items:center;gap:10px;padding:4px 0;transition:color .25s ease}nav.sidenav a:before{content:"";width:18px;height:1px;background:var(--ink-faint);transition:width .3s ease,background .3s ease}nav.sidenav a:hover,nav.sidenav a.on{color:var(--ink)}nav.sidenav a:hover:before,nav.sidenav a.on:before{width:36px;background:var(--accent)}nav.sidenav a .n{color:var(--accent)}@media (max-width: 780px){nav.sidenav{display:none}}.reveal{opacity:0;transform:translateY(14px);transition:opacity .8s ease,transform .8s ease}.reveal.in{opacity:1;transform:none}@media (max-width: 780px){body{font-size:15px}.statusbar{grid-template-columns:1fr auto;gap:12px;padding:10px 16px;font-size:11px}.statusbar .seg:nth-child(2),.statusbar .seg:nth-child(3),.statusbar .seg:nth-child(4){display:none}.hero{padding-top:36px;padding-bottom:64px}.hero-top{margin-bottom:28px;flex-direction:column;gap:4px;font-size:12px}.hero-top .coord{display:none}.termstrip{gap:8px;padding:14px 16px;font-size:13px}.termstrip .prompt{display:none}section{padding:48px 0 24px}.section-head{gap:14px;padding:12px 0;margin-bottom:28px}.section-head .num{font-size:20px}.section-head h2{font-size:12px}.section-head .meta{font-size:11px}.index-row{font-size:14px}.index-row .k{font-size:12px}.xp .body h3{font-size:26px}.xp .body .role{font-size:12px}.xp .body li{font-size:14px}.xp .stack span{font-size:12px}.proj h3{font-size:28px}.proj .kind{font-size:12px}.proj p{font-size:14px}.proj .stack span{font-size:12px}.contact{margin-top:48px;padding:48px 0 24px}.contact .chan a{font-size:14px}.contact .chan a .k{font-size:12px}.contact-sheet{padding-top:44px}.contact-sheet:before{font-size:10px;letter-spacing:.14em;left:16px;right:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.contact-sheet:after{display:none}.sheet-footer{flex-direction:column;gap:6px;align-items:flex-start;font-size:12px}.proj{min-height:220px}footer.foot{grid-template-columns:1fr;gap:6px;text-align:center;padding:20px 16px;font-size:12px}footer.foot .right{text-align:center}}
