@font-face{font-family:Apfel Grotezk;src:url(/fonts/apfel-grotezk/ApfelGrotezk-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Apfel Grotezk;src:url(/fonts/apfel-grotezk/ApfelGrotezk-Mittel.woff2)format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Apfel Grotezk;src:url(/fonts/apfel-grotezk/ApfelGrotezk-Fett.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Apfel Grotezk;src:url(/fonts/apfel-grotezk/ApfelGrotezk-Satt.woff2)format("woff2");font-weight:800;font-style:normal;font-display:swap}:root{--paper:#020617;--ink:#fff;--ink-soft:#ccc;--muted:#1a1a1a;--accent:#a60006;--border:#f33;--grid-dot:color-mix(in srgb, var(--ink) 15%, transparent);--rule:1.5px solid var(--border);--gap:18px;--tile-pad:18px;--hair:1px solid color-mix(in srgb, var(--border) 55%, transparent);--safe-top:env(safe-area-inset-top,0px)}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--paper);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-size:17px}body{background:var(--paper);color:var(--ink);font-synthesis:italic;-webkit-font-smoothing:antialiased;font-family:Apfel Grotezk,sans-serif;font-weight:400;line-height:1.4}::selection{background:var(--ink);color:var(--paper)}a{color:inherit;text-decoration:none}:focus-visible{outline:1.5px solid var(--ink);outline-offset:3px}body:before{content:"";height:var(--safe-top);background:var(--paper);pointer-events:none;z-index:40;position:fixed;top:0;left:0;right:0}body:after{content:"";pointer-events:none;z-index:50;opacity:1;background-image:radial-gradient(var(--grid-dot) 1.2px, transparent 1.25px);background-size:22px 22px;position:fixed;inset:0}.is-fallback{background-color:var(--paper);background-image:radial-gradient(circle at 2.5px 2.5px, color-mix(in srgb, var(--ink) 72%, transparent) 1.2px, transparent 1.32px);color:var(--ink);letter-spacing:0;-webkit-text-stroke:5px var(--paper);paint-order:stroke fill;background-size:5px 5px;font-size:2.05rem;font-weight:840}.dot-hover:hover{background-image:radial-gradient(circle at 3px 3px, color-mix(in srgb, var(--ink) 22%, transparent) .7px, transparent .78px);background-size:6px 6px}.wrap{width:100%;min-width:0;max-width:1300px;min-height:100vh;padding:var(--safe-top) 24px 0;flex-direction:column;margin:0 auto;display:flex}@media (min-width:1536px){.wrap{max-width:1600px}}.site-header{margin-bottom:var(--gap);border:var(--rule);border-top:0}.topbar{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);padding:14px var(--tile-pad);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:12px;font-size:14px;font-weight:700;display:flex}.topbar-brand{display:none}.topbar>a{letter-spacing:.12em;color:var(--ink);font-size:18px;font-weight:800}.locale{align-items:center;gap:14px;min-width:0;display:inline-flex}.local-now{letter-spacing:.04em;align-items:center;gap:8px;font-weight:650;display:inline-flex}.local-now time{font-variant-numeric:tabular-nums;min-width:4.6ch;display:inline-block}.mosaic{grid-template-columns:repeat(4,1fr);grid-auto-rows:minmax(96px,auto);grid-auto-flow:dense;gap:var(--gap);margin-bottom:var(--gap);display:grid}.tile{border:var(--rule);background:var(--paper);flex-direction:column;min-width:0;padding:0;display:flex;position:relative}.span-2{grid-column:span 2}.span-4{grid-column:span 4}.col-photo{grid-column:span 1}.col-lead{grid-column:span 3}.tile-label{letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);padding:16px var(--tile-pad) 12px;justify-content:space-between;gap:12px;margin-bottom:0;font-size:11.5px;font-weight:800;display:flex}.tile-label.is-section{letter-spacing:.16em;color:var(--ink);font-size:13.5px}.shuffle{appearance:none;color:var(--ink-soft);cursor:pointer;background:0 0;border:0;flex-shrink:0;place-items:center;margin:-4px -4px -4px auto;padding:4px;display:grid;position:relative}.shuffle svg{width:16px;height:16px;display:block}.shuffle:hover,.shuffle:focus-visible{color:var(--ink);outline:none}.shuffle.is-spin svg{animation:.45s cubic-bezier(.16,1,.3,1) shuffle-spin}@keyframes shuffle-spin{0%{transform:rotate(0)}to{transform:rotate(180deg)}}.shuffle[data-tip]:after{content:attr(data-tip);z-index:4;background:var(--ink);color:var(--paper);letter-spacing:.02em;text-transform:none;white-space:nowrap;opacity:0;pointer-events:none;padding:6px 8px;font-size:11px;font-weight:650;transition:opacity .12s linear,transform .12s linear;position:absolute;top:calc(100% + 8px);right:0;transform:translateY(-2px)}.shuffle:hover:after,.shuffle:focus-visible:after{opacity:1;transform:translateY(0)}@media (prefers-reduced-motion:reduce){.shuffle.is-spin svg{animation:none}}.tile-photo{padding:0;display:block;overflow:hidden}.tile-photo img,.tile-photo .portrait-placeholder{object-fit:cover;object-position:center top;width:100%;height:100%;display:block;position:absolute;inset:0}.portrait-placeholder{background-color:var(--muted);background-image:radial-gradient(circle at 2.5px 2.5px, color-mix(in srgb, var(--accent) 55%, transparent) 1.05px, transparent 1.13px);color:var(--accent);letter-spacing:.22em;writing-mode:vertical-rl;text-orientation:mixed;background-size:5px 5px;justify-content:center;align-items:center;padding:20px 12px;font-size:clamp(1.1rem,.7rem + 1.4vw,1.65rem);font-weight:800;line-height:1;display:flex;transform:rotate(180deg)}.portrait-placeholder--bar{writing-mode:horizontal-tb;text-orientation:mixed;letter-spacing:.28em;justify-content:flex-start;width:100%;height:100%;padding:0 14px;font-size:.72rem;position:static;inset:auto;transform:none}.lead-copy{letter-spacing:-.03em;max-width:none;padding:18px var(--tile-pad) 16px;border-bottom:var(--hair);text-transform:none;margin:0;font-size:clamp(1.7rem,1.1rem + 1.7vw,2rem);font-weight:450;line-height:1.15}.lead-copy strong{font-weight:600}.cta-row{padding:0 var(--tile-pad) 16px;border-bottom:var(--hair);flex-wrap:wrap;gap:10px;display:flex}.cta{letter-spacing:.06em;text-transform:uppercase;border:var(--rule);justify-content:center;align-items:center;padding:10px 16px;font-size:.92rem;font-weight:700;transition:background .12s linear,color .12s linear;display:inline-flex}.cta-primary{background:var(--ink);color:var(--paper)}.cta-primary:hover{background:var(--accent);border-color:var(--accent);color:var(--paper)}.cta-secondary{color:var(--ink);background:0 0}.cta-secondary:hover{background:var(--ink);color:var(--paper)}.tile-lead{min-height:0;position:relative;overflow:hidden}.roles{flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.role{z-index:1;border-top:var(--hair);flex-direction:column;flex:1 1 0;display:flex}.role:first-child{border-top:0}.role-pin{z-index:3;height:var(--row-h,25%);background:var(--paper);border-top:0;flex:none;animation:.45s cubic-bezier(.16,1,.3,1) both role-pin-in;position:absolute;top:0;left:0;right:0}@keyframes role-pin-in{0%{transform:translateY(var(--from-y,0px))}to{transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.role-pin{animation:none}}.role-summary{appearance:none;width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;padding:12px var(--tile-pad);-webkit-tap-highlight-color:transparent;background:0 0;border:0;flex:1;grid-template-columns:minmax(0,1fr) 28px;align-items:center;column-gap:12px;margin:0;display:grid}.r-brand{align-items:center;gap:14px;min-width:0;display:flex}.r-favicon{object-fit:contain;background:var(--paper);border:0;flex-shrink:0;place-items:center;width:64px;height:64px;display:grid}.r-mark{border:var(--rule);color:var(--ink)}.r-mark svg{width:28px;height:28px;display:block}.role-summary:active .r-title{color:var(--accent)}.role-summary:active .r-mark{border-color:var(--accent);color:var(--accent)}@media (hover:hover) and (pointer:fine){.roles:not(.is-hover-locked) .role-summary:hover .r-title{color:var(--accent)}.roles:not(.is-hover-locked) .role-summary:hover .r-mark{border-color:var(--accent);color:var(--accent)}}.r-title{letter-spacing:-.01em;min-width:0;font-size:1.08rem;font-weight:700;line-height:1.25}.r-plus{width:28px;height:28px;color:var(--accent);place-self:center end;place-items:center;display:grid}.r-plus svg{width:16px;height:16px;display:block}.role-pin .r-plus{transform:rotate(45deg)}.role-panel{bottom:0;left:0;right:0;top:var(--row-h,25%);z-index:2;background:var(--paper);padding:20px var(--tile-pad) 22px;padding-left:calc(var(--tile-pad) + 64px + 14px);border-top:var(--hair);position:absolute;overflow:auto}@media (max-width:560px){.role-panel{padding-left:var(--tile-pad)}}.role-panel p{color:var(--ink-soft);max-width:none;font-size:clamp(1.22rem,.85rem + .7vw,1.42rem);line-height:1.45}.role-links{margin-top:.7em}.role-panel a{color:var(--accent);font-weight:700}.role-links a{white-space:nowrap;margin-right:1.1em;display:inline-block}.role-panel a:hover{color:var(--ink)}.tile-more{padding:16px var(--tile-pad) 18px;border-top:var(--hair);letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-top:auto;font-size:.95rem;font-weight:700;display:block}.tile-more:hover{color:var(--ink)}.items{border-top:var(--hair);flex-direction:column;flex:1;list-style:none;display:flex}.items li{flex:1;display:flex}.items li+li{border-top:var(--hair)}.item-row{padding:12px var(--tile-pad);flex:1;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;margin:0;display:grid}.mosaic .item-row{padding:14px var(--tile-pad);gap:18px}a.item-row:hover .i-title{color:var(--accent)}.i-thumb{letter-spacing:-.02em;border:0;place-items:center;width:80px;height:80px;font-size:1.7rem;font-weight:840;display:grid;position:relative;overflow:hidden}.i-thumb.is-cover{aspect-ratio:2/3;width:54px;height:80px}.mosaic .i-thumb.is-cover{width:96px;height:144px}.mosaic .i-thumb.is-icon{width:56px;height:56px}.i-thumb img{object-fit:cover;background:0 0;width:100%;height:100%;position:absolute;inset:0}.i-thumb img.icon{object-fit:contain;padding:0}.i-title{letter-spacing:-.01em;font-size:1.16rem;font-weight:700;line-height:1.15;display:block}.i-meta{color:var(--ink-soft);margin-top:1px;font-size:.84rem;font-weight:500;display:block}.i-cat{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);font-size:10.5px;font-weight:800}.i-right{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--ink);font-size:.85rem;font-weight:700}.i-right.link{color:var(--accent);font-size:1rem}@media (min-width:1280px){.mosaic .items{grid-template-columns:1fr 1fr;display:grid}.mosaic #services .items{flex-direction:column;display:flex}.mosaic .items li{min-width:0}.mosaic .items li:nth-child(2){border-top:0}.mosaic #services .items li:nth-child(2){border-top:var(--hair)}.mosaic .items li:nth-child(odd){border-right:var(--hair)}.mosaic #services .items li:nth-child(odd){border-right:0}.mosaic .items li:nth-last-child(2):nth-child(2n){border-bottom:var(--hair)}.mosaic .i-thumb.is-cover{width:72px;height:108px}.mosaic .item-row{gap:14px}}.projects-featured{background:color-mix(in srgb, var(--ink) 30%, transparent);border-top:1px solid color-mix(in srgb, var(--ink) 30%, transparent);grid-template-columns:1fr 1fr;gap:1px;list-style:none;display:grid}.projects-featured>li{background:var(--paper);min-width:0}.project-card{height:100%;padding:20px var(--tile-pad) 22px;flex-direction:column;gap:12px;display:flex}.project-head{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.project-title{letter-spacing:-.02em;font-size:1.35rem;font-weight:800;line-height:1.15}.project-status{letter-spacing:.16em;text-transform:uppercase;color:var(--accent);flex-shrink:0;font-size:11px;font-weight:800}.project-blurb{color:var(--ink-soft);max-width:42ch;font-size:1.02rem;font-weight:500;line-height:1.4}.project-tags{flex-wrap:wrap;gap:8px 14px;margin-top:auto;padding-top:4px;display:flex}.project-tags span{letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:10.5px;font-weight:800}.project-links{flex-wrap:wrap;gap:16px;padding-top:4px;display:flex}.project-link{letter-spacing:.04em;color:var(--accent);font-size:.95rem;font-weight:700}.project-link:hover{color:var(--ink)}.project-link.muted{color:var(--ink-soft)}.project-link.muted:hover{color:var(--ink)}.projects-grid{background:color-mix(in srgb, var(--ink) 30%, transparent);border-top:1px solid color-mix(in srgb, var(--ink) 30%, transparent);grid-template-columns:1fr 1fr;gap:1px;list-style:none;display:grid}.projects-grid>li{background:var(--paper);min-width:0}.project-mini{padding:16px var(--tile-pad);justify-content:space-between;align-items:center;gap:16px;height:100%;display:flex}.contact-row{grid-template-columns:1fr 1.15fr;min-height:0;padding:0;display:grid;overflow:hidden}.contact-copy{border-right:var(--hair);flex-direction:column;justify-content:center;min-width:0;display:flex}.contact-copy .tile-label{border-bottom:0;padding-bottom:8px}.contact-copy p{padding:0 var(--tile-pad) 18px;letter-spacing:-.015em;color:var(--ink-soft);max-width:36ch;margin:0;font-size:clamp(1.15rem,.85rem + .8vw,1.4rem);font-weight:500;line-height:1.35}.contact-meta{border-top:var(--hair);margin-top:auto}.contact-actions{flex-direction:column;min-width:0;display:flex}.contact-item{padding:14px var(--tile-pad);border-bottom:var(--hair);flex-direction:column;gap:4px;display:flex}.contact-meta .contact-item:last-child{border-bottom:0}a.contact-item:hover .contact-value,a.contact-value:hover{color:var(--accent)}.contact-kicker{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);font-size:11px;font-weight:800}.contact-value{letter-spacing:-.01em;font-size:1.05rem;font-weight:700}.contact-form{flex-direction:column;flex:1;min-height:0;display:flex}.contact-form.is-sent{padding:22px var(--tile-pad);justify-content:center}.contact-form-note{color:var(--ink-soft);max-width:36ch;margin:0;font-size:1.05rem;font-weight:500;line-height:1.4}.contact-form-note a{color:var(--accent);font-weight:700}.contact-form-note a:hover{color:var(--ink)}.contact-field{padding:14px var(--tile-pad);border-bottom:var(--hair);flex-direction:column;gap:8px;display:flex}.contact-field input,.contact-field textarea{appearance:none;width:100%;color:var(--ink);font:inherit;letter-spacing:-.01em;resize:vertical;background:0 0;border:0;border-radius:0;margin:0;padding:0;font-size:1.05rem;font-weight:600;line-height:1.35}.contact-field textarea{min-height:6.5rem;font-weight:500}.contact-field input::placeholder,.contact-field textarea::placeholder{color:color-mix(in srgb, var(--ink-soft) 70%, transparent);font-weight:500}.contact-field input:focus,.contact-field textarea:focus{outline:none}.contact-field:focus-within{background-image:radial-gradient(circle at 3px 3px, color-mix(in srgb, var(--ink) 22%, transparent) .7px, transparent .78px);background-size:6px 6px}.contact-form-actions{padding:16px var(--tile-pad) 18px;flex-wrap:wrap;align-items:center;gap:14px 18px;margin-top:auto;display:flex}.contact-form-alt{letter-spacing:.04em;color:var(--accent);font-size:.92rem;font-weight:700}.contact-form-alt:hover{color:var(--ink)}.elsewhere{padding:0}.social-grid{background:color-mix(in srgb, var(--ink) 30%, transparent);border-top:1px solid color-mix(in srgb, var(--ink) 30%, transparent);flex:1;grid-template-columns:repeat(2,1fr);gap:1px;display:grid}.social-grid a{padding:12px var(--tile-pad);background:var(--paper);border:0;justify-content:space-between;align-items:center;gap:8px;margin:0;font-size:.95rem;font-weight:650;display:flex}.s-brand{align-items:center;gap:8px;min-width:0;display:flex}.s-icon{flex-shrink:0;width:16px;height:16px}.social-grid a:hover{background:var(--ink);color:var(--paper)}.social-grid a .at{color:var(--ink-soft);font-size:.75rem;font-weight:500}.social-grid a:hover .at{color:color-mix(in srgb, var(--paper) 60%, transparent)}footer{border:var(--rule);color:var(--ink);border-bottom:0;margin-top:auto;padding:0;display:block}.footer-bar{padding:14px var(--tile-pad);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);border-top:1px solid color-mix(in srgb, var(--ink) 30%, transparent);flex-wrap:wrap;justify-content:space-between;gap:8px 24px;font-size:11.5px;font-weight:700;display:flex}.footer-bar a:hover{color:var(--ink)}.footer-bar .legal{gap:18px;display:flex}@media (max-width:900px){.mosaic{grid-template-columns:repeat(2,1fr)}.span-4{grid-column:span 2}.col-photo,.col-lead{grid-column:span 1}.social-grid{grid-template-columns:1fr 1fr}.projects-featured,.projects-grid,.contact-row{grid-template-columns:1fr}.contact-copy{border-right:0;border-bottom:var(--hair)}}@media (max-width:640px){.wrap{padding:var(--safe-top) 10px 0}}@media (max-width:520px){.topbar{padding:14px var(--tile-pad);flex-direction:column;align-items:flex-start;gap:8px}.locale{flex-wrap:nowrap;justify-content:flex-start;gap:10px 14px}}@media (max-width:1279px){#skills .items li:nth-child(n+5){display:none}}@media (max-width:560px){.mosaic{grid-template-columns:minmax(0,1fr)}.span-2,.span-4,.col-photo,.col-lead{grid-column:span 1}.tile-photo{display:none}.topbar-brand{border-top:var(--hair);height:34px;display:block}.social-grid{grid-template-columns:1fr 1fr}.social-grid a .at{display:none}}@media (max-width:375px){:root{--tile-pad:12px;--gap:12px}.wrap{padding:0 6px}.lead-copy{font-size:1.5rem}}
