@font-face{font-family:Archivo Black;font-weight:400;font-style:normal;font-display:swap;src:url(/fonts/ArchivoBlack-Regular.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:400 600;font-style:normal;font-display:swap;src:url(/fonts/IBMPlexSans-Variable.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-weight:400 700;font-style:normal;font-display:swap;src:url(/fonts/JetBrainsMono-Variable.woff2) format("woff2")}:root{--bg: #F7ECE8;--bg-raised: #EEDFDA;--ink: #3D2A2E;--muted: #9C7A7C;--hair: #EEDCD6;--hair-strong: #A9787C;--accent: #FF6D76;--accent-ink: #FFF3EF;--accent-info: #4EA3C0;--accent-warm: #F3BD55;--status-active: #77C384;--intro-bg: #2F2730;--font-display: "Archivo Black", "Arial Black", sans-serif;--font-body: "IBM Plex Sans", -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;overflow-x:hidden}@media (prefers-reduced-motion: no-preference){html{scroll-behavior:smooth}}body{min-height:100dvh}body.locked{overflow:hidden}a{color:inherit}.frame{max-width:1200px;margin:0 auto;padding:0 clamp(1.25rem,3vw,2.5rem)}.reveal{opacity:0;transform:translateY(16px)}.reveal.in{opacity:1;transform:none;transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s cubic-bezier(.16,1,.3,1)}.reveal.in.d1{transition-delay:.08s}@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none}}#toast{position:fixed;top:44px;left:50%;transform:translate(-50%,-8px);z-index:91;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;background:var(--status-active);color:var(--bg);padding:.5rem .9rem;border:1px solid var(--status-active);opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease}#toast.show{opacity:1;transform:translate(-50%)}.egg-particle{position:fixed;width:9px;height:9px;z-index:90;pointer-events:none;animation:egg-burst .9s ease-out forwards}@keyframes egg-burst{0%{transform:translate(0) rotate(0);opacity:1}to{transform:translate(var(--dx),var(--dy)) rotate(220deg);opacity:0}}.statusbar{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--hair-strong);background:var(--bg-raised)}.statusbar .frame{display:flex;justify-content:space-between;align-items:center;height:34px;gap:1rem;flex-wrap:wrap}.statusbar .right{display:flex;gap:1.1rem;align-items:center}.statusbar #clock{color:var(--accent-warm);font-variant-numeric:tabular-nums}.statusbar button{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;background:transparent;border:none;color:var(--muted);cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:3px}.statusbar button:hover{color:var(--accent-info)}nav.top{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--hair-strong)}nav.top .frame{display:flex;align-items:center;justify-content:space-between;height:64px}.brandmark{font-family:var(--font-mono);font-weight:700;font-size:.8rem;letter-spacing:.06em;text-transform:uppercase}.navctrls{display:flex;align-items:center;gap:0}.toggle-group{display:flex;border:1px solid var(--hair-strong)}.toggle-group button{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.08em;text-transform:uppercase;background:transparent;border:none;border-radius:0;padding:.5rem .75rem;cursor:pointer;color:var(--muted);border-left:1px solid var(--hair-strong)}.toggle-group button:first-child{border-left:none}.toggle-group button[aria-pressed=true]{background:var(--accent-info);color:var(--bg)}.toggle-group+.toggle-group{margin-left:.75rem}.toggle-group button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.dock{position:fixed;right:1.1rem;bottom:1.1rem;z-index:20;width:84px;display:flex;flex-direction:column;align-items:center;gap:.4rem;opacity:0;transform:translateY(8px);pointer-events:none;transition:opacity .35s ease,transform .35s ease}.dock.show{opacity:1;transform:translateY(0);pointer-events:auto}.dock .dock-obj{width:64px;height:64px;border:1px solid var(--hair-strong);background:var(--bg-raised);cursor:pointer}.dock .dock-label{font-family:var(--font-mono);font-size:.5rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:center;line-height:1.3}@media (max-width: 640px){.dock{width:56px;right:.75rem;bottom:.75rem}.dock .dock-obj{width:44px;height:44px}}section.block{border-bottom:1px solid var(--hair-strong)}section.block .frame{padding-top:clamp(2.25rem,5vw,3.5rem);padding-bottom:clamp(2.25rem,5vw,3.5rem)}.block-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1.6rem;flex-wrap:wrap}.block-head h2{font-family:var(--font-display);font-weight:400;text-transform:uppercase;font-size:clamp(1.5rem,3vw,2.1rem);letter-spacing:-.01em;margin:0}.block-head .tag{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent-info)}#about,#experience{background:var(--bg-raised)}#about .frame{padding-top:clamp(1.75rem,4vw,2.75rem);padding-bottom:clamp(1.75rem,4vw,2.75rem)}#projects .frame{padding-top:clamp(3rem,6vw,4.5rem);padding-bottom:clamp(3rem,6vw,4.5rem)}#experience .frame{padding-top:clamp(2rem,4.5vw,3rem);padding-bottom:clamp(2rem,4.5vw,3rem)}.cta{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;background:var(--ink);color:var(--bg);padding:.85rem 1.3rem;border:1px solid var(--ink);transition:background .15s ease,color .15s ease,transform .08s ease}.cta:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.cta:active{transform:translateY(1px)!important}.cta:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.li-link{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;border:1px solid var(--hair-strong);padding:.5rem .8rem;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}.li-link:hover{border-color:var(--accent-info);color:var(--accent-info)}.li-link svg{width:14px;height:14px}#intro{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;background:var(--intro-bg);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:opacity .6s ease,transform .6s ease}#intro.gone{opacity:0;transform:scale(1.02);pointer-events:none}#intro .intro-obj{width:min(52vh,52vw,420px);height:min(52vh,52vw,420px)}#intro .intro-text{margin-top:1.6rem;font-family:var(--font-mono);font-size:.85rem;letter-spacing:.04em;color:var(--muted);min-height:1.4em;text-align:center;padding:0 1.5rem}#intro .intro-text:before{content:"> ";color:var(--accent)}#intro .intro-bar{margin-top:1.4rem;width:min(300px,60vw);height:2px;background:var(--hair-strong)}#intro .intro-bar-fill{height:100%;width:0%;background:var(--accent)}#intro .intro-skip{position:absolute;bottom:1.6rem;right:1.6rem;font-family:var(--font-mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.hero{border-bottom:1px solid var(--hair-strong);position:relative;overflow:hidden}.hero .frame{position:relative;z-index:1;padding-top:clamp(2rem,5vw,3.5rem);padding-bottom:clamp(2rem,5vw,3.5rem);min-height:clamp(26rem,62vh,40rem);display:flex;align-items:center}.hero-copy{max-width:64%;padding-right:1.25rem;position:relative;z-index:2}.hero-copy .role-eyebrow{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 .9rem}.hero-copy h1{font-family:var(--font-display);font-weight:400;text-transform:uppercase;font-size:clamp(2.4rem,5.5vw,4.6rem);line-height:.98;overflow-wrap:break-word;letter-spacing:-.02em;margin:0 0 1.1rem;text-wrap:balance}.hero-copy p.sub{font-size:1rem;line-height:1.55;max-width:42ch;color:var(--ink);margin:0 0 1.8rem}.hero-object{position:absolute;top:0;right:0;bottom:0;width:30vw;border-left:1px solid var(--hair-strong);background:var(--bg-raised);z-index:0}.hero-object canvas{display:block}.hero-object .obj-label{position:absolute;bottom:0;left:0;right:0;font-family:var(--font-mono);font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);background:var(--bg-raised);border-top:1px solid var(--hair-strong);padding:.5rem .7rem;display:flex;justify-content:space-between}.hero-object .obj-label .state{color:var(--accent);font-weight:700}@media (max-width: 900px){.hero{overflow:visible}.hero .frame{flex-direction:column;align-items:flex-start;min-height:0}.hero-copy{max-width:none;padding-right:0}.hero-object{position:static;width:100%;aspect-ratio:1 / 1;border-left:none;border:1px solid var(--hair-strong);margin-top:1.75rem}}.about-body p{font-size:1.02rem;line-height:1.65;max-width:62ch;margin:0 0 1rem;color:var(--ink)}.about-body strong{font-weight:600}.offduty{margin-top:1.8rem;padding-top:1.6rem;border-top:1px solid var(--hair)}.offduty .olabel{font-family:var(--font-mono);font-size:.95rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink);margin:0 0 .6rem}.offduty .oline{font-size:.98rem;line-height:1.6;max-width:58ch;margin:0 0 1.2rem;color:var(--ink)}.chips{display:flex;flex-wrap:wrap;gap:.6rem}.chip{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--hair-strong);padding:.45rem .75rem;color:var(--muted);transition:color .15s ease,border-color .15s ease}.chip-run:hover{color:var(--accent-warm);border-color:var(--accent-warm)}.chip-soccer:hover{color:var(--status-active);border-color:var(--status-active)}.chip-volley:hover{color:var(--accent-info);border-color:var(--accent-info)}.chip-pp:hover{color:var(--accent);border-color:var(--accent)}.chip-board:hover{color:var(--accent-warm);border-color:var(--accent-warm)}.project-card+.project-card{margin-top:1.6rem}.project-card{border:1px solid var(--hair-strong)}.project-shot{border-bottom:1px solid var(--hair-strong);background:var(--bg-raised);line-height:0}.project-shot img{width:100%;height:auto;display:block}.project-top{padding:1.6rem 1.6rem 1.4rem;border-bottom:1px solid var(--hair-strong)}.project-top .psub{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 .6rem}.project-top .pname{font-family:var(--font-display);font-weight:400;text-transform:uppercase;font-size:clamp(1.4rem,2.4vw,1.9rem);margin:0 0 .6rem}.project-top .pdesc{font-size:.98rem;line-height:1.6;max-width:58ch;margin:0 0 1.1rem;color:var(--ink)}.project-top .plinks{display:flex;gap:1rem;align-items:center;flex-wrap:wrap;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.project-top .plinks a{text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:1px}.project-top .plinks a:hover{border-color:var(--accent-info);color:var(--accent-info)}.project-top .plinks a.primary{border-color:var(--accent);color:var(--accent)}.project-top .plinks a.primary:hover{color:var(--accent-warm);border-color:var(--accent-warm)}.project-top .plinks .flag{color:var(--muted);border:1px solid var(--hair-strong);padding:.25rem .5rem}.spec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--hair-strong)}.spec-cluster{background:var(--bg);padding:1.3rem 1.5rem;transition:background .15s ease}.spec-cluster:hover{background:var(--bg-raised)}.spec-cluster .clabel{font-family:var(--font-mono);font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 .7rem}.spec-cluster ul{list-style:none;margin:0;padding:0;font-family:var(--font-mono);font-size:.85rem;line-height:1.9}.spec-cluster .note{margin-top:.9rem;font-family:var(--font-body);font-size:.82rem;line-height:1.5;color:var(--muted)}.spec-cluster .note .hint{color:var(--accent-info)}.spec-cluster .stat{font-family:var(--font-mono);font-size:1.5rem;font-weight:700;color:var(--status-active);font-variant-numeric:tabular-nums;margin:0}.stat-flip{perspective:800px;cursor:pointer;outline:none;display:inline-block}.stat-flip-inner{position:relative;min-height:2.4rem;min-width:6rem;transition:transform .5s cubic-bezier(.16,1,.3,1);transform-style:preserve-3d}.stat-flip:hover .stat-flip-inner,.stat-flip.flipped .stat-flip-inner,.stat-flip:focus-visible .stat-flip-inner{transform:rotateY(180deg)}.stat-face{position:absolute;top:0;right:0;bottom:0;left:0;backface-visibility:hidden;display:flex;flex-direction:column;justify-content:center}.stat-back{transform:rotateY(180deg)}.stat-back .stat{color:var(--accent);font-size:1.15rem}.stat-back .stat-tag{font-family:var(--font-mono);font-size:.56rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:.15rem 0 0}@media (prefers-reduced-motion: reduce){.stat-flip-inner{transition:none}}@media (max-width: 760px){.spec-grid{grid-template-columns:1fr}}.log{border-top:1px solid var(--hair-strong);list-style:none;margin:0;padding:0;position:relative}.log:before{content:"";position:absolute;left:13rem;top:0;bottom:0;width:1px;background:var(--hair-strong)}.log-row{display:grid;grid-template-columns:11rem 1.5rem 1fr;gap:1.25rem;padding:1.1rem 0;border-bottom:1px solid var(--hair);opacity:0;transform:translateY(10px)}.log-row.in{opacity:1;transform:none;transition:opacity .5s ease,transform .5s ease}.log-row .when{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.04em;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;margin:0}.log-row .dotcell{display:flex;align-items:flex-start;justify-content:center;padding-top:.3rem;position:relative;z-index:1}.log-row .dot{width:8px;height:8px;background:var(--muted);transform:rotate(45deg)}.log-row .dot.active{background:var(--status-active)}.log-row .dot.progress{background:var(--accent-warm)}.log-row .dot.done{background:var(--muted)}.log-row .org{font-family:var(--font-mono);font-weight:700;font-size:.85rem;letter-spacing:.03em;text-transform:uppercase;margin:0 0 .3rem;display:flex;align-items:center;flex-wrap:wrap}.log-row .role{font-size:.92rem;color:var(--ink);line-height:1.5;max-width:58ch;margin:0}.pill{display:inline-block;font-family:var(--font-mono);font-weight:400;font-size:.58rem;letter-spacing:.08em;text-transform:uppercase;padding:.15rem .42rem;border:1px solid currentColor;margin-left:.6rem}.pill.active{color:var(--status-active)}.pill.progress{color:var(--accent-warm)}.pill.done{color:var(--muted)}@media (max-width: 760px){.log:before,.log-row .dotcell{display:none}.log-row{grid-template-columns:1fr;gap:.35rem}}.footer-close{padding-top:clamp(3rem,6vw,4.5rem);padding-bottom:clamp(2.5rem,5vw,3.5rem);border-bottom:1px solid var(--hair-strong)}.footer-close .fclose-eyebrow{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);margin:0 0 .9rem}.footer-close h2{font-family:var(--font-display);font-weight:400;text-transform:uppercase;font-size:clamp(2.2rem,5.5vw,4rem);line-height:.98;letter-spacing:-.02em;margin:0 0 1rem;overflow-wrap:break-word}.footer-close .fclose-sub{font-size:1rem;line-height:1.55;max-width:42ch;color:var(--ink);margin:0 0 1.8rem}.footer-close .fclose-actions{display:flex;gap:.9rem;flex-wrap:wrap;align-items:center}.footer-bar .frame{display:flex;justify-content:space-between;align-items:center;padding-top:1.1rem;padding-bottom:1.1rem;flex-wrap:wrap;gap:1rem}.footer-bar .fmeta{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.footer-nav{display:flex;gap:1.1rem;font-family:var(--font-mono);font-size:.66rem;letter-spacing:.06em;text-transform:uppercase}.footer-nav a{text-decoration:none;color:var(--muted)}.footer-nav a:hover{color:var(--accent-info)}
