@import"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Spline+Sans+Mono:wght@300;400;500;600&display=swap";:root{--bg: #14110b;--paper: #1d1a13;--terminal: #0a0805;--ink: #e8e3d4;--ink-2: #c9c2b3;--muted: #7a7268;--muted-2: #4d4943;--rule: #2a2620;--rule-soft: #1f1c17;--pass: #5fd388;--pass-bg: #163a25;--warn: #d8a04a;--warn-bg: #3a2a10;--fail: #e36b5e;--accent: #c8a468;--mono: "Spline Sans Mono", ui-monospace, "SF Mono", 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:14px;line-height:1.6;font-weight:400;-webkit-font-smoothing:antialiased;overflow-x:hidden}body:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle,rgba(232,227,212,.04) 1px,transparent 1px);background-size:24px 24px;background-position:0 0;pointer-events:none;z-index:-2}::selection{background:var(--accent);color:var(--terminal)}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}code{font-family:var(--mono)}@keyframes blink{50%{opacity:0}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%{box-shadow:0 0 #5fd3888c}70%{box-shadow:0 0 0 7px #5fd38800}to{box-shadow:0 0 #5fd38800}}@keyframes page-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}body.booting .app-root{opacity:0}body:not(.booting) .app-root{animation:page-rise .7s cubic-bezier(.2,.6,.2,1) both}.app-root{position:relative;min-height:100vh}.scanline{position:fixed;inset:0 0 auto 0;height:80px;background:linear-gradient(180deg,transparent 0%,rgba(95,211,136,.04) 30%,rgba(95,211,136,.16) 50%,rgba(95,211,136,.04) 70%,transparent 100%);z-index:9998;pointer-events:none;transform:translateY(-80px);opacity:0}.scanline.run{animation:scan 1.4s cubic-bezier(.5,0,.5,1) 1 forwards}@keyframes scan{0%{transform:translateY(-80px);opacity:0}10%{opacity:1}90%{opacity:1}to{transform:translateY(110vh);opacity:0}}.bg-canvas{position:absolute;top:0;left:0;width:100%;pointer-events:none;z-index:-1}.boot{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:var(--terminal);color:var(--ink);display:flex;align-items:center;justify-content:center;flex-direction:column;font-family:var(--mono);font-size:14px;padding:32px;transition:opacity .45s ease,clip-path .6s cubic-bezier(.7,0,.3,1)}.boot.done{opacity:0;clip-path:inset(100% 0 0 0);pointer-events:none}.boot-inner{width:100%;max-width:520px}.boot-prompt{color:var(--accent);margin-bottom:18px;font-size:12px;letter-spacing:.04em}.boot-line{display:flex;gap:14px;align-items:baseline;margin-bottom:6px;opacity:0;line-height:1.55}.boot-line.show{opacity:1;transition:opacity .15s}.boot-line .tag{color:var(--muted);flex-shrink:0;width:64px;font-size:12px}.boot-line .tag.ok{color:var(--pass)}.boot-line .tag.fail{color:var(--warn)}.boot-line .text{color:var(--ink);font-size:13px}.boot-line .pending{display:inline-block;width:8px;height:14px;background:var(--ink);margin-left:4px;transform:translateY(2px);animation:blink .85s steps(1) infinite}.boot-ready{margin-top:14px;color:var(--pass);opacity:0;font-size:14px;letter-spacing:.03em}.boot-ready.show{opacity:1;transition:opacity .2s}.boot-skip{position:absolute;bottom:24px;right:28px;background:transparent;border:1px solid var(--rule);color:var(--muted);font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;padding:6px 12px;cursor:pointer;transition:color .15s,border-color .15s,background .15s}.boot-skip:hover{color:var(--ink);border-color:var(--ink);background:#e8e3d40a}.status-bar{position:sticky;top:0;z-index:50;background:var(--terminal);color:var(--ink-2);font-family:var(--mono);font-size:11px;padding:10px 32px;display:flex;align-items:center;gap:18px;letter-spacing:.01em;border-bottom:1px solid var(--rule)}.status-bar .status-dot{width:7px;height:7px;border-radius:50%;background:var(--pass);box-shadow:0 0 #5fd3888c;animation:pulse 2.4s infinite;flex-shrink:0}.status-bar .v{color:var(--ink)}.status-bar .sep{color:var(--muted-2)}.status-bar .right{margin-left:auto;display:flex;gap:18px;align-items:center}.live-tag{color:var(--muted-2);font-size:10px;letter-spacing:.1em;text-transform:uppercase}.live-tag.live{color:var(--pass)}.live-tag.fallback{color:var(--warn)}@media (max-width: 920px){.status-bar{padding:10px 18px;gap:10px;flex-wrap:wrap}.status-bar .right{margin-left:0;gap:12px}}.nav{padding:20px 56px;display:flex;justify-content:space-between;align-items:center;font-size:12px}.nav-name{font-family:var(--mono);font-size:13px;font-weight:500;letter-spacing:-.01em}.nav-cursor{display:inline-block;width:8px;height:14px;background:var(--accent);margin-left:2px;transform:translateY(2px);animation:blink 1.1s steps(1) infinite}.nav-links{display:flex;gap:28px;color:var(--muted)}.nav-links a{transition:color .15s;border-bottom:1px solid transparent;padding-bottom:2px}.nav-links a:hover{color:var(--ink);border-bottom-color:var(--ink)}@media (max-width: 920px){.nav{padding:18px 24px}.nav-links{display:none}}.hero{padding:56px 56px 88px;display:grid;grid-template-columns:1.45fr 1fr;gap:80px;align-items:start}.hero-left .hero-label{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--muted);margin-bottom:28px;min-height:16px}.hero-left .hero-label:before{content:"$ ";color:var(--accent)}.hero-left .type-cursor{display:inline-block;width:6px;height:11px;background:var(--accent);margin-left:2px;transform:translateY(1px);animation:blink .7s steps(1) infinite}.hero-name{font-family:var(--serif);font-size:clamp(64px,9vw,116px);font-weight:400;line-height:.96;letter-spacing:-.025em;margin-bottom:28px}.hero-name .char{display:inline-block;opacity:0;transform:translateY(28px) rotate(2deg)}.hero-name.cascade .char{animation:char-rise .65s cubic-bezier(.2,.7,.2,1) forwards}@keyframes char-rise{to{opacity:1;transform:translateY(0) rotate(0)}}.hero-summary{font-family:var(--mono);font-size:15.5px;line-height:1.7;color:var(--ink-2);max-width:52ch;margin-bottom:40px}.hero-summary em{font-family:var(--serif);font-style:italic;font-size:19px;color:var(--ink);position:relative;display:inline-block}.hero-summary em:after{content:"";position:absolute;left:0;bottom:1px;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left center}.hero-summary em.draw:after{animation:line-draw .7s cubic-bezier(.4,0,.2,1) forwards}@keyframes line-draw{to{transform:scaleX(1)}}.hero-summary .accent{color:var(--accent)}.hero-actions{display:flex;gap:10px;flex-wrap:wrap}.cmd{font-family:var(--mono);font-size:12px;padding:12px 18px;border:1px solid var(--ink);background:var(--ink);color:var(--bg);transition:background .18s,color .18s,transform .18s;display:inline-flex;align-items:center;gap:10px;letter-spacing:.01em}.cmd:hover{background:var(--accent);color:var(--terminal);transform:translateY(-1px)}.cmd.ghost{background:transparent;color:var(--ink)}.cmd.ghost:hover{background:var(--ink);color:var(--bg)}.cmd .caret{color:var(--accent)}.cmd:hover .caret{color:var(--terminal)}.status-card{background:var(--paper);border:1px solid var(--rule);align-self:start;margin-top:40px;position:relative}.status-card-hint{position:absolute;top:-20px;left:0;font-size:10px;color:var(--muted);letter-spacing:.08em;text-transform:uppercase}.status-card-hint:before{content:"↳ ";color:var(--accent)}.status-card-head{background:var(--terminal);color:var(--ink);padding:10px 16px;font-family:var(--mono);font-size:11px;display:flex;justify-content:space-between;align-items:center;letter-spacing:.02em}.status-card-head .caret{color:var(--accent)}.status-card-head .badge{padding:2px 8px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;background:var(--pass);color:var(--terminal);transition:background .3s;font-weight:600}.status-card-head .badge.fail{background:var(--fail)}.status-card-head .badge.pending{background:var(--warn)}.status-card-body{padding:18px 20px 20px}.metric-row{display:flex;justify-content:space-between;align-items:baseline;padding:10px 0;border-bottom:1px dashed var(--rule-soft);font-family:var(--mono);font-size:13px;opacity:0;transform:translate(-6px);animation:metric-in .45s ease forwards}.metric-row:nth-child(1){animation-delay:.6s}.metric-row:nth-child(2){animation-delay:.7s}.metric-row:nth-child(3){animation-delay:.8s}.metric-row:nth-child(4){animation-delay:.9s}.metric-row:nth-child(5){animation-delay:1s}.metric-row:nth-child(6){animation-delay:1.1s}@keyframes metric-in{to{opacity:1;transform:translate(0)}}.metric-row .k{color:var(--muted);font-size:10px;letter-spacing:.1em;text-transform:uppercase}.metric-row .v{color:var(--ink)}.metric-row .v.pass{color:var(--pass)}.metric-row .v.fail{color:var(--fail)}.metric-row .v.accent{color:var(--accent)}.metric-row .v .num{font-family:var(--mono);font-size:16px;font-weight:500;margin-right:4px}.uptime-row{display:flex;gap:2px;padding-top:14px}.uptime-row .bar{flex:1;height:18px;background:var(--pass);border-radius:1px;opacity:0;animation:fade-in .5s ease forwards}.uptime-row .bar.warn{background:var(--warn)}.uptime-legend{margin-top:6px;display:flex;justify-content:space-between;font-size:9px;color:var(--muted);letter-spacing:.06em}@media (max-width: 920px){.hero{grid-template-columns:1fr;gap:32px;padding:40px 24px 64px}.status-card{margin-top:0}}.about{padding:0 56px 96px;max-width:740px}.about p{font-family:var(--mono);font-size:16px;line-height:1.75;color:var(--ink-2);margin-bottom:16px;opacity:0;transform:translateY(14px);transition:opacity .7s cubic-bezier(.2,.6,.2,1),transform .7s cubic-bezier(.2,.6,.2,1)}.about p.visible{opacity:1;transform:translateY(0)}.about p:nth-child(2){transition-delay:.15s}.about p em{font-family:var(--serif);font-style:italic;font-size:19px;color:var(--ink)}.about p code{background:var(--paper);border:1px solid var(--rule-soft);padding:1px 6px;border-radius:2px;font-size:13.5px}@media (max-width: 920px){.about{padding:0 24px 64px}}.log{padding:0 56px;margin-top:48px;margin-bottom:28px;font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.02em;display:flex;align-items:center;gap:14px}.log>*{opacity:0;transform:translate(-4px);transition:opacity .3s ease,transform .3s ease}.log.run>*{opacity:1;transform:translate(0)}.log.run>*:nth-child(1){transition-delay:0s}.log.run>*:nth-child(2){transition-delay:.1s}.log.run>*:nth-child(3){transition-delay:.2s}.log.run>*:nth-child(4){transition-delay:.3s}.log.run>*:nth-child(5){transition-delay:.5s}.log .ts{color:var(--muted-2)}.log .level{border:1px solid var(--rule);background:var(--paper);padding:1px 8px;font-size:9px;letter-spacing:.1em;color:var(--ink-2)}.log .leader{flex:1;border-bottom:1px dotted var(--rule);height:1px;margin:0 4px;align-self:center}.log .ok{color:var(--pass)}@media (max-width: 920px){.log{padding:0 24px}}.marquee{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);overflow:hidden;background:var(--paper);padding:12px 0}.marquee-track{display:flex;gap:36px;white-space:nowrap;animation:marquee 50s linear infinite;font-family:var(--mono);font-size:11px;color:var(--muted);letter-spacing:.04em}.marquee-track span{flex-shrink:0;display:inline-flex;align-items:center;gap:36px}.marquee-track .dot{color:var(--accent)}@keyframes marquee{0%{transform:translate(0)}to{transform:translate(-50%)}}.projects{padding:0 56px 96px}.project-card{border:1px solid var(--rule);background:var(--paper);margin-bottom:14px;transition:border-color .2s,transform .2s;opacity:0;transform:translateY(20px);position:relative;overflow:hidden}.project-card.visible{opacity:1;transform:translateY(0);transition:opacity .7s ease,transform .7s ease}.project-card:hover{border-color:var(--ink)}.project-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(200,164,104,.1),transparent);transform:translate(-100%);transition:transform .65s ease;pointer-events:none;z-index:1}.project-card:hover:before{transform:translate(100%)}.project-card>*{position:relative;z-index:2}.project-head{padding:14px 20px;border-bottom:1px solid var(--rule-soft);display:flex;align-items:center;gap:14px;font-family:var(--mono);font-size:12px;flex-wrap:wrap}.project-num{color:var(--muted);font-size:11px}.project-status{display:inline-flex;align-items:center;gap:6px;background:var(--pass-bg);color:var(--pass);padding:3px 9px;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500}.project-status:before{content:"✓"}.project-status.dev{background:var(--warn-bg);color:var(--warn)}.project-status.dev:before{content:"●";animation:blink 1.6s steps(1) infinite}.project-suite{font-family:var(--serif);font-size:22px;font-weight:400;color:var(--ink);flex:1;min-width:200px;line-height:1.1}.project-tail{color:var(--muted);font-size:11px}.project-body{padding:18px 20px 20px}.project-stack{font-family:var(--mono);font-size:11px;color:var(--accent);margin-bottom:12px;letter-spacing:.01em}.project-desc{font-family:var(--mono);font-size:14px;line-height:1.7;color:var(--ink-2);margin-bottom:14px;max-width:70ch}.project-desc code{background:var(--bg);border:1px solid var(--rule-soft);padding:1px 6px;border-radius:2px;font-size:12.5px}.project-foot{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:10px;padding-top:4px}.tag-row{display:flex;gap:6px;flex-wrap:wrap}.tag{font-family:var(--mono);font-size:10px;padding:2px 8px;border:1px solid var(--rule);color:var(--muted);letter-spacing:.02em}.tag-pending{color:var(--muted-2)}.link-row{display:flex;gap:14px}.link-row a{font-family:var(--mono);font-size:11px;color:var(--ink);border-bottom:1px solid var(--ink);padding-bottom:1px}.link-row a:hover{color:var(--accent);border-color:var(--accent)}@media (max-width: 920px){.projects{padding:0 24px 64px}}.contact{padding:0 56px 120px;max-width:720px}.contact-card{border:1px solid var(--rule);background:var(--paper)}.contact-card-head{background:var(--terminal);color:var(--ink);padding:10px 16px;font-family:var(--mono);font-size:11px;display:flex;justify-content:space-between}.contact-card-head .caret{color:var(--accent)}.contact-card-head .badge{background:var(--pass);color:var(--terminal);padding:2px 8px;font-size:10px;letter-spacing:.08em;font-weight:600}.contact-blurb{padding:22px 20px;font-family:var(--mono);font-size:14.5px;line-height:1.7;color:var(--ink-2);border-bottom:1px solid var(--rule-soft)}.contact-form{padding:8px 20px 20px}.form-row{display:flex;align-items:flex-start;gap:12px;padding:12px 0;border-bottom:1px solid var(--rule-soft)}.form-row:last-of-type{border-bottom:0}.form-row .prompt{color:var(--accent);font-family:var(--mono);font-size:12px;letter-spacing:.02em;width:96px;flex-shrink:0;padding-top:6px}.form-row input,.form-row textarea{flex:1;background:transparent;border:0;border-bottom:1px dashed var(--rule);font-family:var(--mono);font-size:14px;color:var(--ink);padding:6px 4px;outline:none;transition:border-color .18s;resize:vertical;min-height:30px}.form-row textarea{min-height:80px}.form-row input:focus,.form-row textarea:focus{border-bottom-color:var(--accent)}.form-row input::placeholder,.form-row textarea::placeholder{color:var(--muted-2)}.form-actions{display:flex;align-items:center;gap:14px;padding-top:14px}.form-actions .submit{font-family:var(--mono);font-size:12px;padding:10px 18px;border:1px solid var(--ink);background:var(--ink);color:var(--bg);cursor:pointer;letter-spacing:.02em;transition:background .18s,color .18s,transform .18s}.form-actions .submit:hover{background:var(--accent);color:var(--terminal);transform:translateY(-1px)}.form-actions .submit:disabled{opacity:.5;cursor:not-allowed;transform:none}.form-actions .submit .caret{color:var(--accent);margin-right:4px}.form-actions .submit:hover .caret{color:var(--terminal)}.form-actions .hint{font-family:var(--mono);font-size:10.5px;color:var(--muted);letter-spacing:.04em}.form-success{padding:22px 20px;font-family:var(--mono);font-size:14px;color:var(--ink-2);line-height:1.7}.form-success .ok-line{color:var(--pass);margin-bottom:8px}.form-success .ok-line .prefix{color:var(--pass)}.form-success .arrow{color:var(--accent)}.form-error{margin-top:14px;padding:10px 12px;background:#e36b5e14;border:1px solid var(--fail);border-radius:2px;font-family:var(--mono);font-size:12.5px;color:var(--fail);line-height:1.55}.form-error .prefix{color:var(--fail);margin-right:6px}.contact-meta{display:flex;gap:28px;flex-wrap:wrap;padding:14px 20px;border-top:1px solid var(--rule-soft);font-family:var(--mono);font-size:11px;color:var(--muted)}.contact-meta a:hover{color:var(--accent)}@media (max-width: 920px){.contact{padding:0 24px 80px}.form-row{flex-direction:column;gap:4px}.form-row .prompt{width:auto;padding-top:0}}.footer{background:var(--terminal);color:var(--muted);padding:26px 56px;font-family:var(--mono);font-size:10px;letter-spacing:.04em;display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;border-top:1px solid var(--rule)}.footer .right{color:var(--muted-2)}@media (max-width: 920px){.footer{padding:26px 24px}}
