:root{--bg:#0c0d10;--bg-2:#121419;--bg-3:#171a21;--fg:#d6dae0;--muted:#79808d;--dim:#464c58;--green:#6ee787;--cyan:#56d4dd;--amber:#e3b341;--red:#f47067;--violet:#b083f0;--line:#242832;--line-soft:#1b1f27;--mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--pad:clamp(1rem, 3.5vw, 3.5rem);--maxw:1180px;--ease:cubic-bezier(.16, 1, .3, 1)}*,:before,:after{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--mono);-webkit-font-smoothing:antialiased;font-variant-ligatures:none;margin:0;font-size:14px;font-weight:400;line-height:1.65;overflow-x:hidden}@media (width>=700px){body{font-size:15px}}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}::selection{background:var(--green);color:var(--bg)}body:before{content:"";z-index:9999;pointer-events:none;background:repeating-linear-gradient(#ffffff04 0 1px,#0000 1px 3px);position:fixed;inset:0}.wrap{width:100%;max-width:var(--maxw);padding-inline:var(--pad);margin-inline:auto}.green{color:var(--green)}.cyan{color:var(--cyan)}.amber{color:var(--amber)}.red{color:var(--red)}.violet{color:var(--violet)}.muted{color:var(--muted)}.dim{color:var(--dim)}.prompt:before{content:"$ ";color:var(--green)}.topbar{z-index:100;backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#0c0d10eb;position:sticky;top:0}.topbar__in{justify-content:space-between;align-items:center;gap:1rem;padding-block:.7rem;display:flex}.topbar__id{color:var(--muted);white-space:nowrap}.topbar__id b{color:var(--green);font-weight:400}.topbar nav{flex-wrap:wrap;gap:1.25rem;display:flex}.topbar nav a{color:var(--muted);transition:color .15s linear}.topbar nav a:hover{color:var(--fg)}.topbar nav a:before{content:"./";color:var(--dim)}@media (width<=720px){.topbar nav{display:none}}.hero{padding-block:clamp(2.5rem,8vh,5.5rem) clamp(2rem,6vh,4rem)}.hero__window{border:1px solid var(--line);background:var(--bg-2);border-radius:6px;overflow:hidden}.winbar{border-bottom:1px solid var(--line);background:var(--bg-3);align-items:center;gap:.55rem;padding:.6rem .9rem;display:flex}.winbar i{border-radius:50%;flex:none;width:11px;height:11px;display:block}.winbar i:first-child{background:#ff5f57}.winbar i:nth-child(2){background:#febc2e}.winbar i:nth-child(3){background:#28c840}.winbar span{color:var(--dim);margin-left:auto;font-size:.8em}.hero__body{min-height:15.5rem;padding:clamp(1rem,3vw,1.75rem)}.boot-line{white-space:pre-wrap;word-break:break-word;margin:0 0 .15rem}.boot-line+.boot-out{margin-top:0}.boot-out{color:var(--muted);white-space:pre-wrap;margin:0 0 .9rem}.caret{background:var(--green);vertical-align:-.18em;width:.55em;height:1.05em;animation:1.1s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.hero__title{letter-spacing:-.02em;margin:clamp(1.5rem,4vw,2.5rem) 0 0;font-size:clamp(1.5rem,1rem + 2.6vw,2.6rem);font-weight:700;line-height:1.2}.hero__sub{color:var(--muted);max-width:62ch;margin:.9rem 0 0}.hero__cta{flex-wrap:wrap;gap:.75rem;margin-top:clamp(1.25rem,3vw,2rem);display:flex}.btn{border:1px solid var(--line);background:var(--bg-2);color:var(--fg);font:inherit;cursor:pointer;transition:border-color .2s var(--ease), background .2s var(--ease), color .2s var(--ease);border-radius:4px;padding:.55rem 1rem}.btn:hover{border-color:var(--green);color:var(--green)}.btn--solid{background:var(--green);border-color:var(--green);color:var(--bg);font-weight:700}.btn--solid:hover{color:var(--bg);background:#8ef2a3;border-color:#8ef2a3}section{scroll-margin-top:4rem}.sec{padding-block:clamp(2.5rem,7vh,5rem)}.sec__head{flex-wrap:wrap;align-items:baseline;gap:1rem;margin-bottom:clamp(1.5rem,4vw,2.5rem);display:flex}.sec__head h2{letter-spacing:-.01em;margin:0;font-size:clamp(1.05rem,.9rem + .8vw,1.4rem);font-weight:700}.sec__head h2:before{content:"$ ";color:var(--green);font-weight:400}.sec__head .hint{color:var(--dim);margin-left:auto}.about pre{font:inherit;color:var(--muted);white-space:pre-wrap;max-width:76ch;margin:0}.about pre b{color:var(--fg);font-weight:400}.stack{background:var(--line);border:1px solid var(--line);border-radius:6px;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:1px;display:grid;overflow:hidden}.stack__col{background:var(--bg-2);padding:1.1rem 1.2rem 1.3rem}.stack__col h3{color:var(--cyan);margin:0 0 .9rem;font-size:1em;font-weight:400}.stack__col h3:before{content:"# ";color:var(--dim)}.stack__col dl{gap:.7rem;margin:0;display:grid}.stack__col dt{color:var(--fg)}.stack__col dd{color:var(--muted);margin:0;font-size:.92em}.projects{gap:1rem;display:grid}.proj{border:1px solid var(--line);background:var(--bg-2);transition:border-color .25s var(--ease);border-radius:6px;overflow:hidden}.proj:hover{border-color:var(--dim)}.proj.is-open{border-color:var(--green)}.proj__head{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:1.2rem 1fr auto;align-items:baseline;gap:.85rem;padding:1rem 1.2rem;display:grid}.proj__arrow{color:var(--green);transition:transform .3s var(--ease)}.proj.is-open .proj__arrow{transform:rotate(90deg)}.proj__title{font-weight:700}.proj__client{color:var(--muted);margin-top:.15rem;font-size:.92em;font-weight:400;display:block}.proj__meta{color:var(--dim);white-space:nowrap;font-size:.85em}.proj__body{transition:grid-template-rows .4s var(--ease);grid-template-rows:0fr;display:grid}.proj.is-open .proj__body{grid-template-rows:1fr}.proj__inner{overflow:hidden}.proj__pad{padding:0 1.2rem 1.3rem 3.05rem}@media (width<=640px){.proj__pad{padding-left:1.2rem}.proj__meta{display:none}}.proj h4{color:var(--amber);margin:1rem 0 .5rem;font-size:1em;font-weight:400}.proj h4:before{content:"// ";color:var(--dim)}.proj p{color:var(--muted);max-width:72ch;margin:0}.proj ul{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.proj ul li{color:var(--muted);grid-template-columns:1.1rem 1fr;display:grid}.proj ul li:before{content:"+";color:var(--green)}.res{border:1px solid var(--line);border-radius:4px;margin-top:.55rem;overflow:hidden}.res div{border-bottom:1px solid var(--line-soft);justify-content:space-between;gap:1rem;padding:.5rem .8rem;display:flex}.res div:last-child{border-bottom:0}.res span:first-child{color:var(--muted)}.res span:last-child{color:var(--green);text-align:right}.tags{flex-wrap:wrap;gap:.4rem;margin-top:1rem;display:flex}.tags i{border:1px solid var(--line);color:var(--muted);border-radius:3px;padding:.15rem .5rem;font-size:.85em;font-style:normal}.flow{gap:0;display:grid;position:relative}.flow__row{grid-template-columns:1.4rem auto 1fr;align-items:baseline;gap:.9rem;padding-block:.55rem;display:grid;position:relative}.flow__row:before{content:"";background:var(--line);width:1px;position:absolute;top:1.5rem;bottom:-.35rem;left:.6rem}.flow__row:last-child:before{display:none}.flow__dot{color:var(--green)}.flow__sha{color:var(--amber)}.flow__msg{color:var(--muted)}@media (width<=640px){.flow__row{grid-template-columns:1.4rem 1fr}.flow__sha{display:none}}.rates{background:var(--line);border:1px solid var(--line);border-radius:6px;grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr));gap:1px;display:grid;overflow:hidden}.rate{background:var(--bg-2);transition:background .25s var(--ease);flex-direction:column;gap:.55rem;padding:1.3rem 1.2rem;display:flex}.rate:hover{background:var(--bg-3)}.rate h3{margin:0;font-size:1em;font-weight:700}.rate__price{color:var(--green);font-size:1.25em;font-weight:700}.rate__term{color:var(--dim);font-size:.88em}.rate ul{gap:.45rem;margin:.35rem 0 0;padding:0;list-style:none;display:grid}.rate ul li{color:var(--muted);grid-template-columns:1.1rem 1fr;font-size:.94em;display:grid}.rate ul li:before{content:"·";color:var(--dim)}.rates__note{color:var(--dim);max-width:74ch;margin:1rem 0 0}.stats{border-block:1px solid var(--line);grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1.5rem 1rem;padding-block:clamp(1.5rem,4vw,2.5rem);display:grid}.stat b{color:var(--fg);font-size:clamp(1.5rem,1rem + 2vw,2.2rem);display:block}.stat span{color:var(--muted);font-size:.92em}.console__win{border:1px solid var(--line);background:var(--bg-2);border-radius:6px;overflow:hidden}.console__out{scrollbar-width:thin;scrollbar-color:var(--line) transparent;max-height:20rem;padding:1rem 1.1rem .4rem;overflow-y:auto}.console__out p{white-space:pre-wrap;word-break:break-word;margin:0 0 .1rem}.console__out .echo{color:var(--fg);margin-top:.8rem}.console__out .echo:before{content:"$ ";color:var(--green)}.console__out .res-line{color:var(--muted)}.console__out .err{color:var(--red)}.console__form{border-top:1px solid var(--line);align-items:center;gap:.5rem;padding:.75rem 1.1rem;display:flex}.console__form:before{content:"$";color:var(--green)}.console__form input{color:var(--fg);font:inherit;background:0 0;border:0;outline:none;flex:1;min-width:0}.console__form input::placeholder{color:var(--dim)}.console__hint{color:var(--dim);margin:.7rem 0 0}.console__hint button{color:var(--cyan);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline dotted}.console__hint button:hover{color:var(--green)}.contact{border:1px solid var(--line);background:var(--bg-2);border-radius:6px;padding:clamp(1.25rem,3.5vw,2rem)}.contact p{color:var(--muted);max-width:66ch;margin:0 0 1.2rem}.contact__links{gap:.1rem;display:grid}.clink{border-bottom:1px solid var(--line-soft);transition:color .2s var(--ease);justify-content:space-between;gap:1rem;padding:.7rem 0;display:flex}.clink:last-child{border-bottom:0}.clink:hover{color:var(--green)}.clink em{color:var(--dim);font-style:normal}.clink:hover em{color:var(--muted)}.footer{border-top:1px solid var(--line);color:var(--dim);flex-wrap:wrap;justify-content:space-between;gap:1rem;padding-block:1.5rem 2rem;display:flex}.reveal{opacity:0;transform:translateY(14px)}.reveal.is-visible{opacity:1;transition:opacity .55s var(--ease), transform .55s var(--ease);transform:none}@media (prefers-reduced-motion:reduce){.caret{animation:none}.reveal{opacity:1;transform:none}body:before{display:none}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
