.portfolio-section{min-height:100vh;display:flex;align-items:center;position:relative;padding:120px 0}.portfolio-section--hero{padding:0;min-height:100vh}.portfolio-section--hero:before{display:none}.portfolio-col{margin-left:50vw;width:50vw;padding:0 8vw;max-width:880px;pointer-events:auto;color:var(--wrapper-ink);position:relative;opacity:var(--content-opacity, 1)}.portfolio-section--hero .portfolio-col{opacity:1}.section-marker{font-family:var(--font-dot);font-weight:700;font-size:clamp(96px,11vw,148px);line-height:.82;letter-spacing:.01em;color:var(--wrapper-ink);margin:0 0 4px;display:inline-flex;align-items:baseline;gap:14px;-webkit-user-select:none;user-select:none;pointer-events:none}.section-marker:after{content:"↓";color:var(--accent);font-family:var(--font-body, system-ui);font-size:.32em;font-weight:500;align-self:center;transform:translateY(-.15em)}.section-index{font-family:var(--font-mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--wrapper-ink-soft);font-weight:500;margin-bottom:18px;display:block}.portfolio-section .eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.28em;text-transform:uppercase;color:var(--accent);font-weight:600;margin-bottom:14px;display:inline-flex;align-items:center;gap:12px}.portfolio-section .eyebrow:before{content:"";display:inline-block;width:4px;height:4px;background:var(--accent);border-radius:50%;box-shadow:7px 0 0 var(--accent),14px 0 0 var(--accent);margin-right:18px}.portfolio-section h2{font-family:var(--font-display);font-weight:500;font-size:clamp(40px,4.6vw,68px);line-height:1.02;letter-spacing:-.045em;color:var(--wrapper-ink);margin:0 0 48px}.section-card{position:relative;background-color:#fff;border:1px solid rgba(26,23,20,.08);padding:72px 64px;margin-right:0;box-shadow:0 1px #1a17140a,0 32px 64px -36px #b4501e1f;background-image:radial-gradient(circle at center,rgba(26,23,20,.06) 1px,transparent 1.3px);background-size:22px 22px;background-position:0 0}.section-card:after{content:"";position:absolute;top:18px;right:18px;width:14px;height:14px;background:linear-gradient(currentColor,currentColor) center / 100% 1px no-repeat,linear-gradient(currentColor,currentColor) center / 1px 100% no-repeat;color:#1a171473;pointer-events:none}.section-card:before{content:"";position:absolute;top:22px;left:22px;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px #e870401f;pointer-events:none}.section-ridge{height:14px;margin:28px 0;background-image:repeating-linear-gradient(to right,rgba(26,23,20,.18) 0,rgba(26,23,20,.18) 1px,transparent 1px,transparent 4px);opacity:.85}.section-perf{height:6px;margin:22px 0;background-image:radial-gradient(circle,rgba(26,23,20,.3) .8px,transparent 1.3px);background-size:7px 6px;background-repeat:repeat-x;background-position:center}.portfolio-section p,.section-card p{font-family:var(--font-body);font-size:17px;line-height:1.65;letter-spacing:-.01em;color:var(--wrapper-ink);opacity:.88;margin:0 0 1.1em;font-weight:400}.portfolio-section p:last-child,.section-card p:last-child{margin-bottom:0}.portfolio-section a{color:var(--accent);text-decoration:none;border-bottom:1px solid currentColor;transition:opacity .15s ease}.portfolio-section a:hover{opacity:.7}.section-rule{height:6px;margin:32px 0;background-image:radial-gradient(circle,rgba(26,23,20,.25) 1px,transparent 1.5px);background-size:10px 6px;background-repeat:repeat-x;background-position:center}.project-card{background:#fff;border:1px solid rgba(26,23,20,.08);overflow:hidden;margin-bottom:40px;pointer-events:auto;position:relative;box-shadow:0 1px #1a17140a,0 24px 48px -32px #b4501e1a}.project-card:before,.project-card:after{content:"";position:absolute;width:14px;height:14px;border-color:var(--accent);pointer-events:none}.project-card:before{top:-1px;left:-1px;border-left:2px solid;border-top:2px solid}.project-card:after{bottom:-1px;right:-1px;border-right:2px solid;border-bottom:2px solid}.project-card:last-child{margin-bottom:0}.project-card-media{aspect-ratio:16 / 9;background:#f4dec0;display:flex;align-items:center;justify-content:center;color:#1a171473;font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;border-bottom:1px solid rgba(26,23,20,.08)}.project-card-body{padding:36px 40px}.project-card h3{font-family:var(--font-dot);font-weight:700;font-size:26px;letter-spacing:.02em;text-transform:uppercase;color:var(--wrapper-ink);margin:0 0 8px;line-height:1.05}.project-card-meta{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--wrapper-ink-soft);font-weight:500;margin:0 0 16px}.project-card-tags{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0}.project-tag{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.12em;padding:6px 12px;background:transparent;color:var(--accent);border:1px solid rgba(232,112,64,.35);text-transform:uppercase;font-weight:600}.project-card-links{display:flex;gap:22px;font-family:var(--font-mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;font-weight:600}.skill-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 28px}.skill-group-label{font-family:var(--font-mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-weight:600;margin-bottom:14px}.skill-list{display:flex;flex-wrap:wrap;gap:8px}.skill-chip{font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:600;padding:7px 12px;border:1px solid rgba(26,23,20,.14);color:var(--wrapper-ink);background:transparent;transition:background .18s ease,color .18s ease,border-color .18s ease}.skill-chip:hover{border-color:var(--accent);color:var(--accent)}.play-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px}.play-item{padding:24px;border:1px solid rgba(26,23,20,.08);background:#fbf8f4}.play-item-title{font-family:var(--font-dot);font-weight:700;font-size:18px;letter-spacing:.02em;text-transform:uppercase;margin:0 0 8px;color:var(--wrapper-ink)}.play-item-blurb{font-family:var(--font-body);font-size:14.5px;line-height:1.55;opacity:.78;margin:0 0 12px}.other-stack{display:flex;flex-direction:column;gap:4px}.other-entry{padding:22px 0;border-bottom:1px solid rgba(26,23,20,.08)}.other-entry:last-child{border-bottom:0;padding-bottom:0}.other-entry:first-child{padding-top:0}.other-entry-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-weight:600;margin-bottom:8px}.other-entry-title{font-family:var(--font-dot);font-weight:700;font-size:20px;letter-spacing:.02em;text-transform:uppercase;margin:0 0 6px;color:var(--wrapper-ink)}.other-entry-blurb{font-family:var(--font-body);font-size:14.5px;line-height:1.55;opacity:.78;margin:0}.contact-grid{display:flex;flex-wrap:wrap;gap:12px}.exp-item{position:relative;padding:26px 0 26px 32px;border-left:1px solid rgba(232,112,64,.25)}.exp-item:first-of-type{padding-top:8px}.exp-item:last-of-type{padding-bottom:8px}.exp-item:before{content:"";position:absolute;left:-6px;top:34px;width:11px;height:11px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px #fff,0 0 0 4px #e8704040}.exp-item:first-of-type:before{top:16px}.exp-item-when{font-family:var(--font-mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--wrapper-ink-soft);margin-bottom:6px;font-weight:500}.exp-item-where{font-family:var(--font-dot);font-weight:700;font-size:22px;letter-spacing:.02em;text-transform:uppercase;margin-bottom:4px;color:var(--wrapper-ink)}.exp-item-role{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--wrapper-ink-soft);font-weight:500;margin-bottom:14px}.exp-item-bullets{font-family:var(--font-body);font-size:15.5px;line-height:1.6;opacity:.82;margin:0;padding-left:18px;list-style:square}.exp-item-bullets li{margin-bottom:8px}.exp-item-bullets li:last-child{margin-bottom:0}.exp-item-bullets li::marker{color:var(--accent)}.exp-item-what{font-family:var(--font-body);font-size:15.5px;line-height:1.6;opacity:.78}.btn-pill{display:inline-flex;align-items:center;gap:10px;padding:14px 24px;border:1px solid var(--accent);color:var(--accent);background:transparent;font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;font-weight:600;text-decoration:none!important;border-radius:0;cursor:pointer;transition:background .18s ease,color .18s ease;pointer-events:auto}.btn-pill:hover{background:var(--accent);color:#fff}.contact-email{display:inline-block;font-family:var(--font-dot);font-weight:700;font-size:clamp(28px,3.4vw,46px);color:var(--accent);letter-spacing:.02em;text-transform:uppercase;margin:6px 0 32px;text-decoration:none!important;border:none!important}.contact-socials{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0 32px}.contact-note{margin-top:24px;opacity:.6;font-size:14px!important}.hero-mark{position:absolute;left:6vw;bottom:88px;display:flex;flex-direction:column;gap:14px;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:20}.hero-mark .eyebrow{margin:0}.hero-wordmark{font-family:var(--font-dot);font-size:clamp(28px,2.6vw,40px);font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--wrapper-ink);line-height:1.05}.scroll-hint{position:absolute;bottom:40px;right:6vw;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.32em;text-transform:uppercase;color:var(--wrapper-ink-soft);pointer-events:none}@media(max-width:768px){.portfolio-section{padding:80px 0}.portfolio-section--hero{padding:0}.portfolio-section:nth-of-type(odd){background:none}.portfolio-col{margin-left:0;width:100vw;padding:0 6vw;max-width:none}.portfolio-section--hero+.portfolio-section .portfolio-col{padding-top:14vh}.portfolio-section--hero .portfolio-col{padding:0}.section-marker{font-size:clamp(88px,26vw,140px);margin:0 0 4px}.section-index{margin-bottom:14px;font-size:10.5px;letter-spacing:.2em}.portfolio-section h2{font-size:clamp(32px,9vw,48px);letter-spacing:-.04em;margin-bottom:32px}.section-card{padding:32px 24px;margin-right:0}.section-card:after{top:14px;right:14px;width:11px;height:11px}.section-card:before{top:17px;left:17px;width:6px;height:6px}.skill-grid{grid-template-columns:minmax(0,1fr);gap:24px}.play-grid{grid-template-columns:minmax(0,1fr);gap:16px}.play-item{padding:20px}.project-card-body{padding:26px 22px}.project-card h3{font-size:22px}.contact-grid,.contact-socials{flex-direction:column}.contact-email{font-size:clamp(18px,5.5vw,28px);overflow-wrap:anywhere;word-break:normal}.scroll-hint{bottom:28px;right:50%;transform:translate(50%)}}.section-transition{position:relative;width:100vw;height:35vh;min-height:240px;display:flex;align-items:center;overflow:hidden;background:var(--wrapper-bg);border-top:1px solid rgba(21,23,26,.07);border-bottom:1px solid rgba(21,23,26,.07);z-index:2}.st-cascade{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background-image:radial-gradient(circle at center,rgba(232,112,64,.18) 1.2px,transparent 1.6px);background-size:22px 22px;animation:st-cascade-drift 24s linear infinite;opacity:.6}@keyframes st-cascade-drift{0%{background-position:0 0}to{background-position:0 220px}}.st-marquee{position:relative;width:100%;overflow:hidden}.st-track{display:flex;align-items:center;white-space:nowrap;width:max-content;animation:st-marquee-scroll 38s linear infinite}@keyframes st-marquee-scroll{0%{transform:translateZ(0)}to{transform:translate3d(-50%,0,0)}}.st-text{font-family:var(--font-pixel);font-weight:700;font-size:clamp(48px,9vw,130px);letter-spacing:-.02em;color:var(--wrapper-ink);text-transform:lowercase;padding-right:.32em;text-shadow:0 1px 0 rgba(255,255,255,.4)}.st-bullet{font-family:var(--font-pixel);font-weight:700;font-size:clamp(48px,9vw,130px);color:var(--accent);padding-right:.32em;transform:translateY(-.05em)}@media(max-width:768px){.section-transition{height:26vh;min-height:180px}.st-text,.st-bullet{font-size:clamp(32px,12vw,64px)}}@media(prefers-reduced-motion:reduce){.st-track,.st-cascade{animation-duration:0s;animation-play-state:paused}}.keypad-section{display:block;min-height:100vh;padding:0;background:#f3f3f3;position:relative;pointer-events:auto;scroll-snap-align:start;scroll-snap-stop:normal}.keypad-section:nth-of-type(odd){background:#f3f3f3}.keypad-stage{position:sticky;top:0;width:100vw;height:100vh;min-height:720px;display:flex;align-items:center;justify-content:center;pointer-events:auto}.keypad-canvas-wrapper{width:100%;height:100%;position:relative}.keypad-canvas-wrapper>canvas{display:block;width:100%!important;height:100%!important}.keypad-placeholder{width:100%;height:100%}.keypad-section .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:768px){.keypad-stage{height:80vh;min-height:520px}}.portfolio-footer{position:relative;background:var(--wrapper-bg-deep);border-top:1px solid rgba(21,23,26,.12);padding:96px 6vw 48px;margin-top:0;z-index:5}.footer-inner{max-width:1280px;margin:0 auto}.footer-grid{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:56px;margin-bottom:96px}.footer-col-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.28em;text-transform:uppercase;color:var(--accent);font-weight:600;margin-bottom:22px}.footer-col-elsewhere{display:flex;flex-direction:column}.footer-col-elsewhere>:first-child{margin-bottom:18px;max-width:100%;overflow:hidden}.footer-col-elsewhere .footer-col-label{margin-top:auto}.footer-nav{display:flex;flex-direction:column;gap:8px}.footer-link{display:inline-flex;align-items:baseline;gap:14px;padding:6px 0;background:transparent;border:0;color:var(--wrapper-ink);font-family:var(--font-display);font-size:17px;font-weight:500;letter-spacing:-.02em;cursor:pointer;text-decoration:none;width:max-content;transition:color .15s ease}.footer-link:hover{color:var(--accent)}.footer-link-num{font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;color:var(--wrapper-ink-soft);font-weight:500;min-width:18px}.footer-link:hover .footer-link-num{color:var(--accent)}.footer-meta{display:grid;grid-template-columns:1fr;gap:12px}.footer-meta>div{display:grid;grid-template-columns:90px 1fr;gap:16px;align-items:baseline;border-bottom:1px dotted rgba(21,23,26,.1);padding-bottom:10px}.footer-meta>div:last-child{border-bottom:0}.footer-meta-key{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--wrapper-ink-soft);font-weight:600}.footer-meta-val{font-family:var(--font-body);font-size:14px;color:var(--wrapper-ink);letter-spacing:-.01em}.footer-bottom{display:flex;justify-content:space-between;align-items:center;border-top:1px solid rgba(21,23,26,.1);padding-top:28px;font-family:var(--font-mono);font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--wrapper-ink-soft);font-weight:500}.footer-copy{color:var(--wrapper-ink)}.footer-mark{opacity:.7}@media(max-width:768px){.portfolio-footer{padding:72px 6vw 36px;margin-top:48px}.footer-grid{grid-template-columns:1fr;gap:40px;margin-bottom:56px}.footer-bottom{flex-direction:column;gap:12px;text-align:center}}@font-face{font-family:Offbit;src:url(/fonts/offbit/OffBit-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Offbit;src:url(/fonts/offbit/OffBit-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Offbit Dot;src:url(/fonts/offbit/OffBit-DotBold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Offbit Dot;src:url(/fonts/offbit/OffBit-Dot.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"Offbit 101";src:url(/fonts/offbit/OffBit-101Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:"Offbit 101";src:url(/fonts/offbit/OffBit-101.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}:root{color-scheme:dark;--font-dot: "Offbit Dot", "JetBrains Mono", monospace;--font-pixel: "Offbit", "JetBrains Mono", monospace;--font-display: "Geist", system-ui, -apple-system, sans-serif;--font-body: "Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-xs: 10px;--text-sm: 11px;--text-base: 12px;--tracking-wide: 2px;--tracking-wider: 3px;--tracking-widest: 4px;--hud-amber: #ffb077;--hud-amber-soft: rgba(255, 176, 119, .2);--hud-cream: #f0e0d0;--wrapper-bg: #ecedef;--wrapper-bg-soft: #f4f5f7;--wrapper-bg-deep: #d6d4d2;--wrapper-ink: #15171a;--wrapper-ink-soft: rgba(21, 23, 26, .6);--wrapper-ink-faint: rgba(21, 23, 26, .12);--accent: #e87040;--accent-soft: rgba(232, 112, 64, .12)}*{box-sizing:border-box}html,body{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none}img,svg{-webkit-user-drag:none;user-drag:none}input,textarea,[contenteditable=true],[contenteditable=""]{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}@keyframes monitor-click-hint-drop{0%{transform:translateY(-4px);opacity:0}20%{opacity:1}to{transform:translateY(10px);opacity:0}}.monitor-click-hint{pointer-events:none;animation:monitor-click-hint-drop 1.8s ease-in-out infinite;filter:drop-shadow(0 0 3px rgba(255,255,255,.35)) drop-shadow(0 0 8px rgba(255,255,255,.18));display:inline-block}html,body,#root{margin:0;padding:0;width:100%;background:var(--wrapper-bg);font-family:var(--font-body);color:var(--wrapper-ink)}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;opacity:.06;mix-blend-mode:multiply;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.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.85 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}@keyframes status-rec-pulse{0%,to{opacity:1}50%{opacity:.35}}html,body{min-height:100%}html{overflow-x:hidden;overflow-y:auto}body{overflow-x:hidden}.app-wrapper{background:var(--wrapper-bg);transition:background .35s ease}html.loading-active .app-wrapper{background:#e87040}html{scroll-snap-type:y proximity}html{scrollbar-width:none;-ms-overflow-style:none}html::-webkit-scrollbar,body::-webkit-scrollbar{display:none;width:0;height:0}canvas{display:block;touch-action:none}html.loading-active .moveable-cursor{display:none}@keyframes hero-fade-in{0%{opacity:0}to{opacity:1}}.hero-mark,.blinking-cat,.scroll-hint{animation:hero-fade-in .7s ease .25s both}html.loading-active .hero-mark,html.loading-active .blinking-cat,html.loading-active .scroll-hint{animation:none!important;opacity:0!important;pointer-events:none!important}html.loading-active .status-bar,html.loading-active .scroll-rail{display:none!important}.moveable-cursor{position:fixed;left:0;top:0;z-index:10000;width:30px;height:30px;pointer-events:none;will-change:transform,opacity;transition:opacity .18s ease}.moveable-cursor__ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:1.5px solid var(--accent);transition:transform .22s cubic-bezier(.34,1.4,.64,1),opacity .2s ease}.moveable-cursor__dot-shift{position:absolute;left:50%;top:50%;width:3.5px;height:3.5px;margin:-1.75px 0 0 -1.75px;transform:translate(var(--dot-x, 0px),var(--dot-y, 0px));will-change:transform}.moveable-cursor__dot{display:block;width:100%;height:100%;border-radius:50%;background:var(--accent);transition:transform .22s cubic-bezier(.34,1.4,.64,1),opacity .2s ease}.moveable-cursor--hot .moveable-cursor__ring{transform:scale(1.55);opacity:1}.moveable-cursor--hot .moveable-cursor__dot{transform:scale(1);opacity:1}.hud-btn{transition:background .18s ease,border-color .18s ease,color .18s ease,transform .12s cubic-bezier(.4,0,.2,1),box-shadow .18s ease}.hud-btn:hover{background:#e870401f!important;border-color:#e870408c!important;color:var(--accent)!important;box-shadow:0 4px 14px -8px #e870408c}.hud-btn:active{transform:scale(.94)}.hud-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
