:root{--bg:#02060c;--ink:#f4f1ea;--muted:#f4f1ea8c;--line:#f4f1ea24;--accent-a:#6e7f3f;--accent-b:#b0894f;--accent-c:#a05a28;--font-display:"Syne", sans-serif;--font-body:"DM Sans", sans-serif;--panel-wash:linear-gradient(180deg, #02060c1f 0%, #02060c94 35%, #02060cd1 100%)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);min-height:100%;color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}a{color:inherit;text-decoration:none}.has-star-cursor,.has-star-cursor *{cursor:none!important}.star-cursor{z-index:50;pointer-events:none;opacity:.95;mix-blend-mode:screen;will-change:transform;width:22px;height:22px;transition:width .25s,height .25s,opacity .2s;position:fixed;top:0;left:0}.star-cursor.is-gone{opacity:0}.star-cursor.is-hot{width:30px;height:30px}.star-cursor__svg{filter:drop-shadow(0 0 6px #f0c75e8c);width:100%;height:100%;animation:2.4s ease-in-out infinite star-twinkle;display:block}.star-cursor__spike{fill:#f4f1eaeb}.star-cursor__core{fill:#f0c75e}.star-cursor.is-hot .star-cursor__svg{filter:drop-shadow(0 0 10px #3dd6c6b3);animation-duration:1.2s}.star-cursor.is-hot .star-cursor__spike{fill:#3dd6c6}.star-cursor.is-hot .star-cursor__core{fill:#fff6d8}@keyframes star-twinkle{0%,to{opacity:.75;transform:rotate(0)scale(.92)}50%{opacity:1;transform:rotate(18deg)scale(1.05)}}#webgl{z-index:0;pointer-events:none;position:fixed;inset:0}#webgl canvas{width:100%;height:100%;display:block}.nav{z-index:3;pointer-events:none;justify-content:space-between;align-items:center;padding:1.25rem clamp(1.25rem,4vw,2.5rem);display:flex;position:fixed;top:0;left:0;right:0}.nav a{pointer-events:auto}.nav__brand{font-family:var(--font-display);letter-spacing:.08em;opacity:.75;font-size:.95rem;font-weight:700;transition:opacity .25s}.nav__brand:hover{opacity:1}.nav__links{letter-spacing:.18em;text-transform:uppercase;color:var(--muted);gap:1.5rem;font-size:.78rem;display:flex}.nav__links a{transition:color .25s}.nav__links a:hover{color:var(--ink)}.scroll-space{z-index:1;position:relative}.hero{text-align:center;place-items:center;min-height:100svh;padding:clamp(1.5rem,4vw,3rem) clamp(1.5rem,4vw,3rem) clamp(5rem,14vh,8rem);display:grid;position:relative}.hero__content{width:min(92vw,920px);animation:1.2s cubic-bezier(.22,1,.36,1) both rise-in}.hero__name{margin:0}.hero__name-svg{width:100%;height:auto;display:block;overflow:visible}.hero__name-svg text{font-family:var(--font-display);letter-spacing:-4px;dominant-baseline:alphabetic;font-size:155px;font-weight:800}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.hero__tagline{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);margin:1.25rem 0 0;font-size:clamp(.82rem,1.8vw,1.05rem);font-weight:300;animation:1.2s cubic-bezier(.22,1,.36,1) .15s both rise-in}.hero__scroll{color:var(--muted);letter-spacing:.28em;text-transform:uppercase;opacity:var(--scroll-cue-opacity,1);pointer-events:none;flex-direction:column;align-items:center;gap:.65rem;font-size:.7rem;transition:opacity .15s linear;animation:1.2s cubic-bezier(.22,1,.36,1) .35s backwards rise-scroll-cue;display:flex;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.hero__scroll[data-hidden] .hero__scroll-line{animation:none}.hero__scroll-line{transform-origin:top;background:linear-gradient(#0000,#f4f1ea8c);width:1px;height:48px;animation:2.2s ease-in-out infinite scroll-pulse}.panel{background:var(--panel-wash);place-items:center;min-height:100svh;padding:clamp(5rem,12vh,8rem) clamp(1.25rem,5vw,4rem);transition:background .45s;display:grid;position:relative}html[data-sky] .panel.work{background:linear-gradient(#0000000d 0%,#0000006b 40%,#00000094 100%)}.panel__inner{width:min(720px,100%)}.panel__inner--wide{width:min(1100px,100%)}.panel__eyebrow{letter-spacing:.28em;text-transform:uppercase;color:var(--muted);margin:0 0 .85rem;font-size:.72rem}.panel__title{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 2.5rem;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;line-height:1.05}.about__layout{grid-template-columns:minmax(12rem,.85fr) minmax(0,1.6fr);align-items:start;gap:clamp(2rem,5vw,4.5rem);display:grid}.about__intro .panel__title{max-width:8ch;margin:0}.about__copy{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.5rem 2rem;display:grid}.about__copy p{color:#f4f1eac7;margin:0;font-size:clamp(.98rem,1.6vw,1.1rem);font-weight:300;line-height:1.55}@media (width<=800px){.about__layout{grid-template-columns:1fr;gap:1.75rem}.about__intro .panel__title{max-width:none}.about__copy{grid-template-columns:1fr;gap:1.15rem}}.project-list{border-top:1px solid var(--line);margin:0;padding:0;list-style:none}.project{border-bottom:1px solid var(--line)}.project__trigger{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;gap:.35rem;padding:1.6rem .15rem;transition:padding-left .35s cubic-bezier(.22,1,.36,1);display:grid}.project__trigger:hover,.project__trigger:focus-visible,.project.is-open .project__trigger{padding-left:.65rem}.project__trigger:focus-visible{outline-offset:6px;outline:1px solid #a05a28b3}.project__top{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.project__meta{flex-wrap:wrap;align-items:baseline;gap:.65rem 1rem;display:flex}.project__name{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:clamp(1.35rem,3vw,1.85rem);font-weight:700;transition:color .25s}.project__role{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:.78rem}.project__toggle{flex:none;width:1rem;height:1rem;margin-top:.35rem;position:relative}.project__toggle:before,.project__toggle:after{content:"";background:var(--accent-c);width:100%;height:1px;transition:transform .4s cubic-bezier(.22,1,.36,1),opacity .3s;position:absolute;top:50%;left:50%}.project__toggle:before{transform:translate(-50%,-50%)}.project__toggle:after{transform:translate(-50%,-50%)rotate(90deg)}.project.is-open .project__toggle:after{opacity:0;transform:translate(-50%,-50%)rotate(90deg)scaleX(0)}.project__blurb{color:#f4f1eab8;max-width:42ch;margin:0;font-size:.98rem;font-weight:300;line-height:1.5}.project__drawer{grid-template-rows:0fr;transition:grid-template-rows .55s cubic-bezier(.22,1,.36,1);display:grid}.project.is-open .project__drawer{grid-template-rows:1fr}.project__drawer-inner{overflow:hidden}.project__details{opacity:0;padding:.15rem .15rem 1.7rem .65rem;transition:opacity .4s cubic-bezier(.22,1,.36,1),translate .4s cubic-bezier(.22,1,.36,1);translate:0 12px}.project.is-open .project__details{opacity:1;transition-delay:.12s;translate:0}.project__details p{color:#f4f1eab3;max-width:48ch;margin:0 0 .9rem;font-size:.95rem;font-weight:300;line-height:1.55}.project__details p:last-of-type{margin-bottom:1.1rem}.project__tags{flex-wrap:wrap;gap:.5rem .65rem;margin:0;padding:0;list-style:none;display:flex}.project__tags li{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;border:1px solid #f4f1ea24;padding:.35rem .65rem;font-size:.7rem}.project__work-btn{min-height:2.6rem;color:var(--ink);font-family:var(--font-display);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:0 0;border:1px solid #6e7f3f8c;justify-content:center;align-items:center;margin-top:1.35rem;padding:.7rem 1.25rem;font-size:.82rem;font-weight:700;transition:border-color .3s,background .3s,color .3s;display:inline-flex}.project__work-btn:hover,.project__work-btn:focus-visible{border-color:var(--accent-a);background:#6e7f3f24;outline:none}.project[data-constellation=northbound]:hover .project__name,.project[data-constellation=northbound]:focus-within .project__name,.project[data-constellation=northbound].is-open .project__name{color:var(--accent-a)}.project[data-constellation=lumen]:hover .project__name,.project[data-constellation=lumen]:focus-within .project__name,.project[data-constellation=lumen].is-open .project__name{color:var(--accent-b)}.project[data-constellation=signal]:hover .project__name,.project[data-constellation=signal]:focus-within .project__name,.project[data-constellation=signal].is-open .project__name{color:var(--accent-c)}.contact__copy{color:#f4f1eab8;max-width:34ch;margin:-1.25rem 0 2rem;font-size:clamp(1.05rem,2.2vw,1.25rem);font-weight:300;line-height:1.55}.contact__actions{flex-wrap:wrap;align-items:center;gap:1.25rem 1.75rem;display:flex}.contact__button{min-height:3rem;color:var(--ink);font-family:var(--font-display);letter-spacing:.04em;cursor:pointer;isolation:isolate;background:0 0;border:1px solid #f4f1ea59;justify-content:center;align-items:center;padding:.85rem 1.5rem;font-size:.95rem;font-weight:700;transition:border-color .35s cubic-bezier(.22,1,.36,1),color .35s,translate .35s cubic-bezier(.22,1,.36,1),box-shadow .35s;display:inline-flex;position:relative;overflow:hidden}.contact__button:before{content:"";z-index:-1;opacity:0;transform-origin:0;background:linear-gradient(120deg,#6e7f3f38,#a05a2847,#b0894f33);transition:opacity .35s,transform .45s cubic-bezier(.22,1,.36,1);position:absolute;inset:0;transform:scaleX(.4)}.contact__button:hover,.contact__button:focus-visible{color:#fff6e8;border-color:#a05a28d9;translate:0 -2px;box-shadow:0 10px 28px #00000059}.contact__button:hover:before,.contact__button:focus-visible:before{opacity:1;transform:scaleX(1)}.contact__button:active{transition-duration:.12s;translate:0}body.modal-open{overflow:hidden}.work-modal{z-index:42;pointer-events:none;place-items:center;padding:1.25rem;display:grid;position:fixed;inset:0}.work-modal[hidden]{display:none}.work-modal.is-open{pointer-events:auto}.work-modal__backdrop{opacity:0;background:radial-gradient(at 50% 20%,#6e7f3f24,#0000 50%),#02060cb8;transition:opacity .4s;position:absolute;inset:0}.work-modal.is-open .work-modal__backdrop{opacity:1}.work-modal__panel{z-index:1;opacity:0;background:#080c12f0;border:1px solid #f4f1ea24;width:min(720px,100%);max-height:min(88vh,900px);padding:1.75rem 1.5rem;transition:opacity .45s cubic-bezier(.22,1,.36,1),translate .45s cubic-bezier(.22,1,.36,1);position:relative;overflow:auto;translate:0 18px}.work-modal.is-open .work-modal__panel{opacity:1;translate:0}.work-modal__close{width:2.25rem;height:2.25rem;color:var(--ink);cursor:pointer;background:0 0;border:1px solid #f4f1ea33;font-size:.95rem;line-height:1;transition:border-color .25s,background .25s;position:absolute;top:1rem;right:1rem}.work-modal__close:hover,.work-modal__close:focus-visible{background:#f4f1ea0f;border-color:#f4f1ea73;outline:none}.work-modal__title{font-family:var(--font-display);letter-spacing:-.02em;margin:0 0 1.5rem;font-size:clamp(1.6rem,3vw,2.1rem);font-weight:700}.work-modal__list{gap:1.75rem;display:grid}.work-piece__image{border:1px solid #f4f1ea1a;width:100%;height:auto;margin:0 0 1.1rem;display:block}.work-piece__title{font-family:var(--font-display);letter-spacing:.02em;color:var(--accent-a);margin:0 0 .75rem;font-size:1.15rem;font-weight:700}.work-piece__description{color:#f4f1eab8;max-width:58ch;margin:0;font-size:.95rem;font-weight:300;line-height:1.6}.contact-modal{z-index:40;pointer-events:none;place-items:center;padding:1.25rem;display:grid;position:fixed;inset:0}.contact-modal[hidden]{display:none}.contact-modal.is-open{pointer-events:auto}.contact-modal__backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);opacity:0;background:radial-gradient(at 50% 20%,#a05a281f,#0000 50%),#02060cb8;transition:opacity .45s;position:absolute;inset:0}.contact-modal.is-open .contact-modal__backdrop{opacity:1}.contact-modal__panel{z-index:1;opacity:0;background:linear-gradient(#0c1014f5,#06090cfa);border:1px solid #f4f1ea1a;width:min(520px,100%);padding:clamp(1.75rem,4vw,2.4rem);transition:opacity .5s cubic-bezier(.22,1,.36,1),translate .55s cubic-bezier(.22,1,.36,1),scale .55s cubic-bezier(.22,1,.36,1);position:relative;translate:0 36px;scale:.96;box-shadow:0 24px 80px #0000008c}.contact-modal.is-open .contact-modal__panel{opacity:1;translate:0;scale:1}.contact-modal__frame{pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.contact-modal__frame-path{fill:none;stroke:#a05a28;stroke-width:.45px;stroke-linecap:square;stroke-dasharray:100;stroke-dashoffset:100px;opacity:.85;transition:stroke-dashoffset 1s cubic-bezier(.22,1,.36,1) .15s}.contact-modal.is-open .contact-modal__frame-path{stroke-dashoffset:0}.contact-modal__close{width:2.25rem;height:2.25rem;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #f4f1ea2e;font-size:.9rem;transition:color .25s,border-color .25s;position:absolute;top:1rem;right:1rem}.contact-modal__close:hover,.contact-modal__close:focus-visible{color:var(--ink);border-color:#f4f1ea80}.contact-modal__title{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 1.5rem;font-size:clamp(1.6rem,3vw,2.1rem);font-weight:700}.contact-modal .panel__eyebrow,.contact-modal .contact-modal__title,.contact-modal .contact-form__field,.contact-modal .contact-form__actions{opacity:0;transition:opacity .45s cubic-bezier(.22,1,.36,1),translate .45s cubic-bezier(.22,1,.36,1);translate:0 16px}.contact-modal.is-open .panel__eyebrow{opacity:1;transition-delay:.18s;translate:0}.contact-modal.is-open .contact-modal__title{opacity:1;transition-delay:.26s;translate:0}.contact-modal.is-open .contact-form__field:first-child{opacity:1;transition-delay:.34s;translate:0}.contact-modal.is-open .contact-form__field:nth-child(2){opacity:1;transition-delay:.42s;translate:0}.contact-modal.is-open .contact-form__field:nth-child(3){opacity:1;transition-delay:.5s;translate:0}.contact-modal.is-open .contact-form__actions{opacity:1;transition-delay:.58s;translate:0}.contact-form{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.contact-form__field{gap:.45rem;display:grid}.contact-form__field--full{grid-column:1/-1}.contact-form__field span{letter-spacing:.18em;text-transform:uppercase;color:var(--muted);font-size:.72rem}.contact-form__field input,.contact-form__field textarea{width:100%;color:var(--ink);font:inherit;resize:vertical;background:#f4f1ea08;border:1px solid #f4f1ea29;padding:.8rem .9rem;font-size:.98rem;font-weight:300;transition:border-color .25s,background .25s}.contact-form__field input:focus,.contact-form__field textarea:focus{background:#a05a280f;border-color:#a05a28bf;outline:none}.contact-form__actions{flex-wrap:wrap;grid-column:1/-1;align-items:center;gap:1rem 1.25rem;margin-top:.35rem;display:flex}.contact-form__cancel{color:var(--muted);letter-spacing:.16em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;padding:.4rem 0;font-size:.82rem;transition:color .25s}.contact-form__cancel:hover,.contact-form__cancel:focus-visible{color:var(--ink)}@media (width<=560px){.contact-form{grid-template-columns:1fr}}.contact__link{letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-bottom:.2rem;font-size:.82rem;transition:color .3s,translate .35s cubic-bezier(.22,1,.36,1);position:relative}.contact__link:after{content:"";background:linear-gradient(90deg, var(--accent-c), var(--accent-b));transform-origin:0;width:100%;height:1px;transition:transform .4s cubic-bezier(.22,1,.36,1);position:absolute;bottom:0;left:0;transform:scaleX(0)}.contact__link:hover,.contact__link:focus-visible{color:var(--ink);translate:0 -1px}.contact__link:hover:after,.contact__link:focus-visible:after{transform:scaleX(1)}.footer{text-align:center;color:#f4f1ea59;letter-spacing:.12em;text-transform:uppercase;background:#0000008c;padding:2rem clamp(1.25rem,5vw,4rem) 2.75rem;font-size:.78rem}.footer__cross{letter-spacing:0;text-transform:none;color:#e8d9b08c;-webkit-user-select:none;user-select:none;margin-left:.45em;font-size:1.05em}.reveal{opacity:0;transition:opacity .9s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.22,1,.36,1);transform:translateY(28px)}.reveal.is-visible{opacity:1;transform:translateY(0)}@keyframes gradient-flow{0%{background-position:0%}50%{background-position:100%}to{background-position:0%}}@keyframes rise-in{0%{opacity:0;translate:0 28px}to{opacity:1;translate:0}}@keyframes rise-scroll-cue{0%{opacity:0;translate:0 28px}to{opacity:1;translate:0}}@keyframes scroll-pulse{0%,to{opacity:.35;transform:scaleY(.45)}50%{opacity:1;transform:scaleY(1)}}@media (prefers-reduced-motion:reduce){.hero__content,.hero__tagline,.hero__scroll,.star-cursor__svg{animation:none}.hero__name-svg animate{display:none}.hero__scroll-line{animation:none}.reveal{opacity:1;transition:none;transform:none}.project__drawer,.project__details,.project__toggle:before,.project__toggle:after,.contact__button,.contact__button:before,.contact__link,.contact__link:after{transition:none}.contact__button:hover,.contact__button:focus-visible,.contact__link:hover,.contact__link:focus-visible{translate:none}.contact-modal__backdrop,.contact-modal__panel,.contact-modal__frame-path,.contact-modal .panel__eyebrow,.contact-modal .contact-modal__title,.contact-modal .contact-form__field,.contact-modal .contact-form__actions,.work-modal__backdrop,.work-modal__panel{transition:none}.contact-modal.is-open .contact-modal__panel,.work-modal.is-open .work-modal__panel{translate:0;scale:1}.contact-modal .panel__eyebrow,.contact-modal .contact-modal__title,.contact-modal .contact-form__field,.contact-modal .contact-form__actions{opacity:1;translate:0}.contact-modal__frame-path{stroke-dashoffset:0}}
