:root{color-scheme:dark;--font-ui: "IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--font-display: "Space Grotesk", "IBM Plex Mono", system-ui, sans-serif;--bg: #0a0a0f;--bg-elev: #101018;--bg-sunk: #0c0c13;--bg-hover: #171722;--line: #1f1e2c;--line-strong: #2e2c44;--grid-dot: rgba(188, 166, 255, .07);--text: #e9e7f3;--text-2: #aeaac4;--text-3: #827e9c;--accent: #bca6ff;--accent-ink: #130f26;--accent-soft: rgba(188, 166, 255, .12);--accent-line: rgba(188, 166, 255, .4);--ok: #7fdcaa;--err: #f2879f;--px-rim-hi: #5a5680;--px-rim: #2b2940;--px-frame: #7a63c9;--px-visor: #050508;--px-eye: #e8e9f0;--px-edge: #3a3856;--px-body: #1d1c2c;--px-shadow: rgba(188, 166, 255, .07);--radius: 6px;--radius-sm: 4px;--maxw: 1480px;--bar-h: 34px;--gap: clamp(8px, 1.6svh, 16px);--frame-y: clamp(6px, 1.7svh, 18px);--frame-x: clamp(10px, 1.6vw, 28px);--pad-x: clamp(14px, 1.5vw, 28px);--ui-zoom: 1;--side-w: clamp(204px, 17.5vw, 252px);--ease: cubic-bezier(.16, 1, .3, 1);--z-console: 40;--z-bar: 50;--z-skip: 100;--z-loader: 200}*,*:before,*:after{box-sizing:border-box}body,h1,h2,h3,p,ul,ol,dl,dd,figure{margin:0}ul,ol{padding:0;list-style:none}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}img{display:block;max-width:100%}html{scrollbar-color:var(--line-strong) var(--bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}a,button{touch-action:manipulation}body{min-height:100svh;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:.875rem;line-height:1.6;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}body:before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background-image:radial-gradient(circle at 1px 1px,var(--grid-dot) 1px,transparent 0);background-size:24px 24px}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}h1,h2,h3{font-family:var(--font-display);font-weight:700;letter-spacing:-.03em;line-height:1.15;text-wrap:balance}p{text-wrap:pretty}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:fixed;top:8px;left:8px;z-index:var(--z-skip);padding:10px 14px;background:var(--accent);color:var(--accent-ink);font-size:.8rem;font-weight:600;border-radius:var(--radius-sm);transform:translateY(-200%);transition:transform .2s var(--ease)}.skip-link:focus-visible{transform:none}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes blink{0%,49%{opacity:1}50%,to{opacity:0}}.cursor{display:inline-block;width:.55em;height:1.05em;margin-left:4px;background:var(--accent);vertical-align:-.15em;animation:blink 1s steps(1) infinite}.app{zoom:var(--ui-zoom);height:calc(100svh / var(--ui-zoom));padding:var(--frame-y) var(--frame-x)}.window{display:grid;grid-template-rows:var(--bar-h) minmax(0,1fr);height:100%;max-width:var(--maxw);margin-inline:auto;background:var(--bg);border:1px solid var(--line-strong);border-radius:10px;overflow:hidden}.titlebar{border-bottom:1px solid var(--line-strong);background:var(--bg-sunk)}.titlebar-inner{display:flex;align-items:center;gap:14px;height:100%;padding-inline:14px;font-size:.72rem;color:var(--text-3)}.tb-dots{display:inline-flex;gap:5px}.tb-dots i{width:8px;height:8px;border:1px solid var(--line-strong);border-radius:2px}.tb-dots i:first-child{background:var(--accent);border-color:var(--accent)}.tb-brand{font-family:var(--font-display);font-size:.85rem;font-weight:700;letter-spacing:-.02em;white-space:nowrap;color:var(--text)}.tb-path{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tb-path strong{font-weight:500;color:var(--accent)}.tb-spacer{flex:1}.tb-item{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.status-dot{display:inline-block;width:7px;height:7px;flex:none;border-radius:50%;background:var(--ok)}.shell{display:grid;grid-template-columns:var(--side-w) minmax(0,1fr);gap:var(--gap) clamp(10px,1.4vw,22px);min-height:0;padding:var(--gap) clamp(10px,1.4vw,22px)}.sidebar{display:flex;flex-direction:column;gap:clamp(10px,2.4svh,24px);min-height:0;overflow-y:auto;padding:clamp(12px,2.4svh,24px) clamp(14px,1.2vw,18px);background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.profile{display:flex;flex-direction:column;align-items:center;gap:clamp(8px,1.6svh,14px);padding-bottom:clamp(12px,2.4svh,24px);border-bottom:1px solid var(--line)}.avatar{position:relative;flex:none;width:clamp(56px,10svh,104px);aspect-ratio:1;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--bg-sunk);overflow:hidden}.avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .4s ease}.avatar-photo{object-position:center 20%;filter:url(#photo-gray)}.avatar-defs{position:absolute}.avatar:before,.avatar:after{content:"";position:absolute;z-index:1;width:9px;height:9px;border:2px solid var(--accent);pointer-events:none}.avatar:before{top:4px;left:4px;border-right:0;border-bottom:0}.avatar:after{right:4px;bottom:4px;border-left:0;border-top:0}@media(hover:hover){.avatar{transition:filter .3s ease}.avatar:before,.avatar:after{transition:transform .3s ease}.avatar:hover{filter:brightness(1.18)}.avatar:hover:before{transform:translate(3px,3px)}.avatar:hover:after{transform:translate(-3px,-3px)}}.chip{display:inline-flex;align-items:center;gap:8px;padding:2px 9px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);font-size:.68rem;color:var(--text-2)}.chip--ok{color:var(--text-2)}.side-nav{position:relative;container-type:inline-size}.nav-bot{position:absolute;top:0;right:14px;width:var(--nav-bot-w, 26px);pointer-events:none}.nav-bot[data-hidden=true]{opacity:0}.nav-bot[data-ready=true]{transition:transform .35s cubic-bezier(.22,.8,.3,1),opacity .2s ease}.nav-bot svg{display:block;width:100%;height:auto}.nav-bot.is-hop svg{animation:nav-hop .4s ease-out 1}@keyframes nav-hop{0%,to{transform:translateY(0)}40%{transform:translateY(-4px)}}@container (max-width: 175px){.nav-bot{right:8px;width:22px}}@container (max-width: 163px){.nav-bot{display:none}}@media(max-width:900px){.nav-bot{display:none}}.side-nav ul{display:grid;gap:clamp(2px,.7svh,6px)}.side-link{display:flex;align-items:center;gap:12px;padding:clamp(6px,1.2svh,12px) 12px;border:1px solid transparent;border-radius:var(--radius-sm);font-size:.82rem;color:var(--text-2);transition:color .2s ease,background-color .2s ease,border-color .2s ease}.side-link:hover{background:var(--bg-hover);color:var(--text)}.side-link[aria-current=page]{background:var(--accent-soft);border-color:var(--accent-line);color:var(--text)}.side-icon{flex:none;color:var(--text-3);transition:color .2s ease}.side-link:hover .side-icon{color:var(--text-2)}.side-link[aria-current=page] .side-icon{color:var(--accent)}.log-echo{margin-bottom:0}.log-cmd{display:inline-block;height:1lh;overflow:hidden;vertical-align:top;white-space:nowrap;animation:log-type .45s steps(var(--ch)) both}.log-line{animation:log-in .3s var(--ease) both;animation-delay:calc(.45s + var(--i) * .14s)}@keyframes log-type{0%{width:0}to{width:calc(var(--ch) * 1ch)}}@keyframes log-in{0%{opacity:0}to{opacity:1}}.side-actions{display:flex;align-items:center;gap:6px;margin-top:auto;padding-top:clamp(10px,2.2svh,20px);border-top:1px solid var(--line)}.side-actions .btn{margin-right:auto}.icon-link{display:inline-grid;place-items:center;width:30px;height:30px;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-3);transition:color .2s ease,border-color .2s ease}.icon-link:hover{color:var(--text);border-color:var(--line-strong)}.workspace{position:relative;display:flex;flex-direction:column;gap:var(--gap);min-height:0}.pane{display:flex;flex:1;flex-direction:column;min-height:0;background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.pane[hidden]{display:none}.pane:not([hidden]){animation:fade .2s ease-out both}@keyframes rise-s{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.pane:not([hidden]):not(#view-inicio):not(#view-proyectos) :is(.about-grid>*,.tl-list>li,.legend-line,.kv-list>.kv,.svc-grid>.svc,.extra-col>.box,.contact-intro,.contact-cards>li,.legal){animation:rise-s .35s var(--ease) backwards;animation-delay:calc((var(--i, 0) + var(--o, 0)) * 60ms)}.pane :is(.about-grid>*,.tl-list>li,.legend-line,.kv-list>.kv,.svc-grid>.svc,.extra-col>.box,.contact-cards>li):nth-child(2){--i: 1}.pane :is(.tl-list>li,.kv-list>.kv,.svc-grid>.svc,.contact-cards>li):nth-child(3){--i: 2}.pane :is(.kv-list>.kv,.svc-grid>.svc,.contact-cards>li):nth-child(4){--i: 3}.pane :is(.tl-list>li,.kv-list>.kv,.contact-cards>li){--o: 1}.pane .legal{--i: 5}#view-inicio:not([hidden]) .home-main>*{animation:rise-s .35s var(--ease) backwards;animation-delay:calc(var(--i, 0) * 70ms)}#view-inicio:not([hidden]) .home.is-intro .home-main>*{animation-delay:calc(.5s + var(--i, 0) * 70ms)}#view-inicio .home-main>:nth-child(2){--i: 1}#view-inicio .home-main>:nth-child(3){--i: 2}#view-inicio .home-main>:nth-child(4){--i: 3}#view-inicio .home-main>:nth-child(5){--i: 4}.pane-head{display:flex;flex:none;justify-content:space-between;align-items:center;gap:12px;padding:clamp(5px,1.1svh,9px) var(--pad-x);background:var(--bg-sunk);border-bottom:1px solid var(--line);font-size:.72rem;color:var(--text-3)}.pane-file{font-family:var(--font-ui);font-size:inherit;font-weight:500;letter-spacing:0;color:var(--text-2)}.pane--empty{align-items:center;justify-content:center;gap:10px;padding:24px var(--pad-x);background:transparent;border-style:dashed;text-align:center}.empty-bot{display:block;width:clamp(130px,22svh,210px);height:auto;margin-bottom:6px}.empty-z{animation:zzz 3.6s steps(6,end) infinite;animation-delay:calc(var(--n) * -1.8s)}@keyframes zzz{0%{opacity:0;transform:translateY(2px)}25%,65%{opacity:1}to{opacity:0;transform:translate(1px,-2px)}}.empty-title{font-size:.82rem;color:var(--text-2)}.empty-hint{margin-bottom:6px;font-size:.74rem;color:var(--text-3)}.empty-cmd{color:var(--accent)}.pane-close{display:inline-grid;flex:none;place-items:center;width:20px;height:20px;margin-block:-2px;border:1px solid var(--line-strong);border-radius:3px;color:var(--text-3);transition:color .2s ease,border-color .2s ease}.pane-close:hover{border-color:var(--accent);color:var(--accent)}.pane-body{display:flex;flex:1;flex-direction:column;min-height:0;overflow:auto;padding:clamp(10px,2.2svh,24px) var(--pad-x);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.pane--flush .pane-body{padding:0}.pane-inner{width:100%;margin-block:auto}.pane--flush .pane-inner,.pane--fill .pane-inner{display:flex;flex:1;flex-direction:column;margin-block:0;min-height:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:0 16px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--bg-elev);font-size:.78rem;font-weight:600;color:var(--text);transition:border-color .2s ease,background-color .2s ease,transform .15s ease,filter .2s ease}.btn:hover{border-color:var(--text-3);background:var(--bg-hover)}.btn:active{transform:translateY(1px) scale(.98)}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn--primary:hover{background:var(--accent);border-color:var(--accent);filter:brightness(1.08)}.btn--accent{border-color:var(--accent-line);color:var(--accent)}.btn--accent:hover{border-color:var(--accent);background:var(--accent-soft)}.btn--small{min-height:30px;padding:0 10px;font-size:.72rem}.badge{display:inline-flex;align-items:center;gap:6px;padding:1px 8px;border:1px solid var(--line-strong);border-radius:2px;font-size:.66rem;font-weight:500;color:var(--text-2);white-space:nowrap}.badge--live{border-color:color-mix(in srgb,var(--ok) 40%,transparent);color:var(--ok)}.badge--live:before{content:"";width:6px;height:6px;background:currentColor}.tag-row{display:flex;flex-wrap:wrap;gap:6px}.tag{display:inline-flex;align-items:center;gap:7px;padding:3px 9px;border:1px solid var(--line);border-radius:3px;background:var(--bg-sunk);font-size:clamp(.74rem,1.7svh,.84rem);color:var(--text-2);transition:border-color .2s ease,color .2s ease}.tag:hover{border-color:var(--accent);color:var(--accent)}.tag--main{color:var(--text)}.legend-line{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px 18px;margin-bottom:2px;font-size:clamp(.72rem,1.7svh,.84rem);color:var(--text-3)}.legend{display:inline-flex;align-items:center;gap:8px}.level{display:inline-flex;flex:none;gap:2px}.level i{width:5px;height:9px;background:var(--line-strong)}.level i.on{background:var(--accent)}.tag .level{margin-left:2px}.level--lg{display:flex;width:100%;gap:3px}.level--lg i{flex:1;height:8px}.legend-dot{display:inline-block;width:6px;height:6px;flex:none;background:var(--accent)}.bullets li{position:relative;padding-left:18px;color:var(--text-2);font-size:clamp(.82rem,1.9svh,.88rem)}.bullets li+li{margin-top:clamp(2px,1svh,10px)}.bullets li:before{content:"–";position:absolute;left:0;color:var(--text-3)}.box{background:var(--bg-sunk);border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden}.box-label{padding:5px 14px;border-bottom:1px solid var(--line);font-size:.66rem;color:var(--text-3)}.box-body{padding:clamp(8px,1.6svh,16px) 14px}.box-title{padding:5px 14px;border-bottom:1px solid var(--line);font-family:var(--font-ui);font-size:.66rem;font-weight:400;letter-spacing:0;color:var(--text-3)}.home{display:grid;grid-template-columns:minmax(0,1fr) clamp(260px,46%,600px);align-items:center;gap:clamp(16px,3vw,44px)}.home-main,.home-side{min-width:0}.eyebrow{margin-bottom:clamp(12px,3.2svh,28px);font-size:.74rem;color:var(--text-3)}.home h1{font-size:clamp(1.8rem,min(4.4vw,8.4svh),3.4rem);line-height:1.02;letter-spacing:-.045em}.h1-last{color:var(--text-3)}.prompt{display:inline-flex;align-items:center;gap:10px;margin-top:clamp(18px,4.4svh,40px);font-size:clamp(.95rem,2.2svh,1.15rem);font-weight:500}.prompt-sign{color:var(--accent);font-weight:600}.hero-desc{max-width:60ch;margin-top:clamp(14px,3.4svh,30px);font-size:clamp(.82rem,2svh,.92rem);line-height:1.6;color:var(--text-2)}.actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:clamp(22px,5svh,44px)}.about-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:clamp(12px,2.4svh,22px)}.about-grid .box-body{padding-inline:14px}@media(min-width:1200px){.about-grid .box-body{padding-inline:clamp(16px,1.8vw,26px)}}.prose p{max-width:none;font-size:clamp(.84rem,1.9svh,.92rem);color:var(--text-2)}.prose strong{color:var(--accent);font-weight:600}.timeline{display:flex;flex-direction:column;align-items:center;gap:clamp(8px,1.6svh,14px)}.tl-now{position:relative;z-index:1;padding:2px 12px;border:1px solid var(--accent-line);border-radius:var(--radius-sm);background:var(--bg-elev);font-size:.68rem;color:var(--accent)}.tl-list{position:relative;display:grid;gap:clamp(12px,2.4svh,24px);width:100%}.tl-list:before{content:"";position:absolute;inset:calc(-1*clamp(8px,1.6svh,14px)) auto 0 50%;width:1px;background:var(--line-strong)}.tl-item{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 72px minmax(0,1fr);align-items:start}.tl-card{grid-column:1;grid-row:1}.tl-item.is-right .tl-card{grid-column:3}.tl-card .box-body{display:grid;gap:4px;padding:clamp(10px,1.8svh,16px) clamp(14px,1.4vw,20px)}.tl-card h3{font-size:clamp(.98rem,2.3svh,1.1rem)}.tl-card .bullets{margin-top:6px}.tl-mark{position:relative;z-index:1;grid-column:2;grid-row:1;display:flex;flex-direction:column;align-items:center;gap:8px;padding-top:36px}.tl-node{width:11px;height:11px;border:1.5px solid var(--text-3);border-radius:50%;background:var(--bg-elev)}.is-current .tl-node{border-color:var(--accent);background:var(--accent)}.tl-year{padding:1px 8px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--bg-elev);font-size:.68rem;color:var(--text-2)}.is-current .tl-year{border-color:var(--accent-line);color:var(--accent)}@media(min-width:901px){.tl-item+.tl-item{margin-top:calc(-1*clamp(16px,4svh,40px))}}.tl-item:before{content:"";position:absolute;top:41px;width:30px;border-top:1px dotted var(--text-3)}.tl-item.is-left:before{left:calc(50% - 36px)}.tl-item.is-right:before{left:calc(50% + 6px)}.log-org{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:.8rem;color:var(--text-2)}.log-date{font-size:.7rem;color:var(--text-3)}.kv-list{display:grid;flex:1;grid-auto-rows:1fr;min-height:0}.kv{display:grid;grid-template-columns:clamp(112px,9vw,170px) minmax(0,1fr);gap:clamp(12px,1.2vw,24px);align-items:center;padding:clamp(5px,1.4svh,14px) 0;border-bottom:1px solid var(--line)}.kv:last-child{border-bottom:0}.kv dt{font-size:clamp(.78rem,1.9svh,.88rem);color:var(--text-3)}.kv .tag-row{gap:clamp(6px,1.1svh,12px)}.kv .tag{gap:8px;padding:clamp(3px,.8svh,7px) clamp(8px,.8vw,13px);font-size:clamp(.8rem,2svh,.92rem)}.kv .tag .level i{width:clamp(4px,.4vw,6px);height:clamp(9px,1.5svh,13px)}.kv .tag .level{gap:2px}.kv dd{display:flex;flex-wrap:wrap;align-items:center;gap:12px;min-width:0}.kv-link{display:inline-flex;align-items:center;gap:8px;min-width:0;font-size:.84rem;overflow-wrap:anywhere;border-bottom:1px solid var(--line-strong);transition:color .2s ease,border-color .2s ease}.kv-link:hover{color:var(--accent);border-color:var(--accent)}.tabs{display:flex;flex:none;padding:clamp(8px,1.6svh,14px) clamp(14px,2vw,24px) 0;overflow-x:auto;scrollbar-width:none;background:var(--bg-sunk);border-bottom:1px solid var(--line)}.tabs::-webkit-scrollbar{display:none}.tab{position:relative;display:inline-flex;align-items:center;gap:10px;flex:none;min-height:38px;padding:0 18px;border-right:1px solid var(--line);font-size:.76rem;color:var(--text-3);transition:color .2s ease,background-color .2s ease}.tab:hover{color:var(--text);background:var(--bg-hover)}.tab[aria-selected=true]{background:var(--bg-elev);color:var(--text)}.tab:after{content:"";position:absolute;inset:auto 0 0;height:2px;background:var(--accent);opacity:.45;transform:scaleX(0);transition:transform .25s var(--ease),opacity .25s ease}.tab:hover:after{transform:scaleX(1)}.tab[aria-selected=true]:after{opacity:1;transform:scaleX(1)}.tab:focus-visible{outline-offset:-3px}.tab-num{font-size:.68rem;color:var(--text-3)}.tab[aria-selected=true] .tab-num{color:var(--accent)}.project-stack{display:grid;flex:1;align-content:center;min-height:0;padding:clamp(10px,2.2svh,22px) clamp(14px,2vw,24px)}@media(min-width:901px){.project-stack{container-type:size}}.project{grid-area:1 / 1;display:grid;--thumb-w: 60cqw;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:clamp(18px,2.6vw,36px);visibility:hidden}.project.is-selected{visibility:visible;animation:fade .35s ease-out both}#view-proyectos:not([hidden]){animation-name:fade}.project-thumb{--ratio: 1.6;width:min(var(--thumb-w),calc((100cqh - 32px) * var(--ratio) + 2px));display:flex;flex-direction:column;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--bg-sunk);overflow:hidden}.thumb-bar{display:flex;flex:none;align-items:center;gap:5px;height:24px;padding:0 10px;border-bottom:1px solid var(--line-strong);background:var(--bg-elev);font-size:.66rem;color:var(--text-3)}.thumb-bar i{width:7px;height:7px;border-radius:50%;background:var(--line-strong)}.thumb-bar span{margin-left:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.thumb-shot{aspect-ratio:var(--ratio);overflow:hidden}.project-thumb img{width:100%;height:100%;object-fit:contain;filter:grayscale(.85);transition:filter .4s ease}.project:hover .project-thumb img{filter:none}.thumb-fallback{display:grid;place-items:center;height:100%;background:repeating-linear-gradient(135deg,transparent 0 9px,var(--line) 9px 10px);font-size:.82rem;color:var(--text-3)}.thumb-fallback span{padding:4px 10px;background:var(--bg-sunk);border:1px solid var(--line);border-radius:3px}.project-body{display:flex;flex-direction:column;min-width:0}.project-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px}.project-top h3{font-size:clamp(1.05rem,2.2vw,1.25rem)}.project-desc{max-width:70ch;margin-top:clamp(12px,2.4svh,24px);font-size:clamp(.8rem,1.8svh,.92rem);line-height:1.6;color:var(--text-2)}.project-body .bullets li{font-size:clamp(.76rem,1.7svh,.88rem);line-height:1.6}.project-body .bullets{margin-top:clamp(16px,3.4svh,34px)}.project-body .bullets li+li{margin-top:clamp(6px,1.8svh,16px)}.project-body .tag-row{margin-top:clamp(18px,3.8svh,38px)}.project-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:clamp(20px,4.6svh,46px)}@container (max-height: 495px),(max-width: 1150px){.project{--thumb-w: 56cqw}}@container (max-height: 495px){.project-body .bullets{margin-top:14px}.project-body .bullets li+li{margin-top:9px}.project-body .tag-row{margin-top:18px}.project-actions{margin-top:22px}}@container (max-height: 385px){.project{--thumb-w: 50cqw}.project-desc{display:none}}@container (max-height: 310px){.project{--thumb-w: 46cqw}}@container (max-height: 240px),(max-width: 760px){.project{grid-template-columns:minmax(0,1fr)}.project-thumb{display:none}}.extra-grid{display:grid;flex:1;min-height:0}.extra-col{display:flex;flex:1;flex-direction:column;gap:clamp(8px,1.6svh,16px);min-width:0}.extra-col .box{display:flex;flex:1;flex-direction:column;min-height:min-content}.extra-col .box:first-child{flex:none}.extra-col .box:last-child{flex:1}.extra-col .box-title{padding-block:clamp(5px,1.1svh,9px)}.extra-col .box-body{flex:1;padding:clamp(12px,2.2svh,22px) clamp(16px,1.8vw,24px)}.langs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:space-evenly;gap:clamp(10px,1.8svh,16px) clamp(28px,4vw,56px)}.lang{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:6px 12px}.lang-name{font-family:var(--font-display);font-size:clamp(1rem,2.2svh,1.2rem);font-weight:700;letter-spacing:-.02em}.lang-label{font-size:clamp(.72rem,1.5svh,.82rem);color:var(--accent)}.lang .level{grid-column:1 / -1}.level--lg i{height:clamp(7px,1.2svh,10px)}.hobbies{display:flex;flex-wrap:wrap;gap:clamp(7px,1.1svh,10px) clamp(6px,.5vw,10px)}.hobby{display:inline-flex;align-items:center;gap:7px;padding:clamp(4px,.9svh,7px) clamp(8px,.7vw,12px);border:1px solid var(--accent-line);border-radius:3px;background:var(--accent-soft);font-size:clamp(.74rem,1.45svh,.86rem);color:var(--text);transition:border-color .2s ease,background-color .2s ease}.hobby svg{flex:none;width:1.2em;height:1.2em;color:var(--accent)}.hobby:hover{border-color:var(--accent)}.extra-col .kv-list{display:flex;flex-direction:column}.extra-col .kv{flex:1 1 auto;grid-template-columns:clamp(110px,9.5vw,150px) minmax(0,1fr);padding-block:clamp(4px,.8svh,9px)}.extra-col .kv dt{font-size:clamp(.74rem,1.6svh,.86rem)}.mascot-card{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(8px,2svh,18px);min-width:0}.bubble{position:relative;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:min(30ch,100%);min-height:calc(2.9em + 18px);padding:8px 14px;background:var(--bg-elev);border:1px solid var(--accent-line);border-radius:var(--radius-sm);font-size:clamp(.8rem,1.9svh,.95rem);line-height:1.45;text-align:center;color:var(--text)}.bubble:after{content:"";position:absolute;top:100%;left:50%;width:8px;height:8px;background:var(--bg-elev);border-right:1px solid var(--accent-line);border-bottom:1px solid var(--accent-line);transform:translate(-50%,-4px) rotate(45deg)}.mascot-btn{display:block;width:100%;max-width:650px;border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.svc-grid{display:grid;flex:1;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:clamp(8px,1.6svh,16px);min-height:0}.svc{display:flex;flex-direction:column;justify-content:center;gap:clamp(6px,1.4svh,12px);min-width:0;padding:clamp(12px,2.4svh,22px);background:var(--bg-sunk);border:1px solid var(--line);border-radius:var(--radius-sm);transition:border-color .2s ease}.svc:hover{border-color:var(--accent-line)}.svc-head{display:flex;align-items:center;gap:12px}.svc-head h3{font-size:clamp(1rem,2.4svh,1.06rem)}.svc-icon{display:grid;flex:none;place-items:center;width:38px;height:38px;border:1px solid var(--accent-line);border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent)}.svc p{font-size:clamp(.82rem,1.9svh,.88rem);color:var(--text-2)}.svc-tags{margin-top:clamp(2px,.8svh,8px)}.contact-wrap{display:flex;flex:1;flex-direction:column;gap:clamp(10px,2.4svh,22px);min-height:0}.contact-title{max-width:32ch;font-size:clamp(1.25rem,3.4svh,2rem);letter-spacing:-.03em;text-wrap:balance}.contact-lead{margin-top:clamp(6px,1.4svh,12px);color:var(--text-2)}.contact-cards{display:grid;flex:1;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:1fr;gap:clamp(8px,1.6svh,16px);min-height:0}.contact-card{position:relative;display:flex;align-items:center;gap:14px;min-width:0;padding:clamp(10px,2.2svh,20px);background:var(--bg-sunk);border:1px solid var(--line);border-radius:var(--radius-sm);transition:border-color .2s ease,background-color .2s ease}.contact-card:hover,.contact-card:focus-within{border-color:var(--accent-line);background:var(--bg-hover)}.contact-icon{display:grid;flex:none;place-items:center;width:40px;height:40px;border:1px solid var(--accent-line);border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent)}.contact-info{min-width:0}.contact-label{font-size:.7rem;color:var(--text-3)}.contact-value{font-size:.92rem;font-weight:600;overflow-wrap:anywhere}.contact-value:after{content:"";position:absolute;inset:0}.contact-card:hover .contact-value{color:var(--accent)}@media(min-width:901px){.contact-card{gap:clamp(14px,2.2svh,24px);padding:clamp(10px,2.2svh,28px)}.contact-icon{width:clamp(40px,5.2svh,64px);height:clamp(40px,5.2svh,64px)}.contact-icon svg{width:clamp(20px,2.6svh,30px);height:clamp(20px,2.6svh,30px)}.contact-label{margin-bottom:2px;font-size:clamp(.7rem,1.65svh,.84rem)}.contact-value{font-size:clamp(.92rem,2svh,1.02rem)}.contact-lead{font-size:clamp(.88rem,1.9svh,1.02rem)}}.legal{padding-top:clamp(6px,1.4svh,12px);border-top:1px solid var(--line);font-size:.68rem;color:var(--text-3)}.px-g{fill:var(--px-rim-hi)}.px-r{fill:var(--px-rim)}.px-o{fill:var(--px-frame)}.px-k{fill:var(--px-visor)}.px-E{fill:var(--px-eye)}.mascot--encapuchado .px-E{fill:var(--accent)}.px-E.eye-ok{fill:var(--ok)}.px-E.eye-acc{fill:var(--accent)}.px-E.eye-dim{fill:var(--accent);fill-opacity:.55}.px-E.eye-okd{fill:var(--ok);fill-opacity:.45}.px-t{fill:var(--px-frame);fill-opacity:.7}.px-u,.px-v,.px-U,.px-V{animation:ghost-flicker 3.2s steps(1) infinite}.px-U{fill:var(--accent);fill-opacity:.16;animation-delay:-2.2s}.px-V{fill:var(--ok);fill-opacity:.12;animation-delay:-.4s}.px-u{fill:var(--accent);fill-opacity:.3}.px-v{fill:var(--ok);fill-opacity:.22;animation-delay:-1.1s}.px-p{fill:var(--ok)}.px-n{fill:var(--ok);fill-opacity:.6}.px-scan{fill:#000;fill-opacity:.1;pointer-events:none}.face-sleeping .px-p{opacity:.45}@keyframes ghost-flicker{0%,90%,to{opacity:1}92%{opacity:0}95%{opacity:.5}}.px-m{fill:var(--px-edge)}.px-b{fill:var(--px-body)}.px-a{fill:var(--accent)}.px-s{fill:var(--px-shadow)}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-1px)}}@keyframes blink-eyes{0%,92%,to{transform:scaleY(1)}95%{transform:scaleY(.1)}}@keyframes look{0%,40%{transform:translate(0)}45%,60%{transform:translate(-1px)}65%,85%{transform:translate(1px)}90%,to{transform:translate(0)}}@keyframes led{0%,60%{opacity:1}61%,to{opacity:.25}}@keyframes type{0%{transform:scaleX(.15)}70%,to{transform:scaleX(1)}}.creature-gaze{transform:translate(calc(var(--gaze-x, 0) * 1px),calc(var(--gaze-y, 0) * 1px))}.face-console .mascot--campana .creature-gaze{transform:none}.creature-look{animation:look 9s steps(1) infinite}.creature-gaze[data-tracking=true] .creature-look{animation:none}.creature-eyes{transform-box:fill-box;transform-origin:center;animation:blink-eyes 5s infinite}.scene{display:block;width:100%;max-width:650px;height:auto}.scene-bot{animation:bob 2.4s steps(2,end) infinite}.bot-campana.face-curious .scene-bot,.bot-campana.face-happy .scene-bot{animation:bob-happy 1.2s steps(2,end) infinite}.bot-encapuchado .scene-bot{animation:bob 5.2s steps(2,end) infinite}.bot-glitch .scene-bot{animation:glitch-idle 7s steps(1,end) infinite}.bot-glitch.face-curious .scene-bot,.bot-glitch.face-happy .scene-bot{animation-duration:2.6s}@keyframes bob-happy{0%,to{transform:translateY(0)}50%{transform:translateY(-2px)}}@keyframes glitch-idle{0%,31%,35%,64%,66%,91%,95%,to{transform:translate(0)}32%{transform:translate(1px)}33%{transform:translate(-1px)}34%{transform:translate(1px,-1px)}65%{transform:translate(-1px)}92%{transform:translate(1px)}93%{transform:translate(-1px,-1px)}94%{transform:translate(-1px)}}.face-surprised .creature-gaze{transform:translate(clamp(-1px,var(--gaze-x, 0) * 1px,1px),clamp(-1px,var(--gaze-y, 0) * 1px,1px))}.face-surprised .scene-bot{animation:hop .45s steps(3,end) 1}.face-sleeping .px-o{fill:var(--px-rim)}.face-sleeping .px-E{fill:var(--text-3)}.face-sleeping .mascot--encapuchado .px-t,.face-sleeping .mascot--encapuchado .px-a{opacity:.45}.face-sleeping .scene-bot,.face-sleeping .creature-eyes{animation:none}.face-sleeping .creature-gaze{transform:none}.face-dizzy .scene-bot,.face-angry .scene-bot{animation:wobble .25s steps(2,end) infinite}.face-dizzy .creature-look,.face-angry .creature-look{animation:none}@keyframes hop{0%,to{transform:translateY(0)}40%{transform:translateY(-2px)}}@keyframes wobble{0%,to{transform:translate(-1px)}50%{transform:translate(1px)}}.sc-box{fill:var(--bg-elev);stroke:var(--line-strong);stroke-width:1}.sc-slot,.sc-floor,.sc-desk{fill:var(--line-strong)}.sc-art--a{fill:var(--accent)}.sc-art--e{fill:var(--px-eye)}.sc-art--g{fill:var(--px-rim-hi)}.sc-art--o{fill:var(--px-frame)}.sc-art--k{fill:var(--ok);fill-opacity:.85}.sc-art--m{fill:var(--px-edge)}.sc-screen{fill:var(--bg)}.sc-line{fill:var(--text-3);transform-box:fill-box;transform-origin:left;animation:type 7s steps(8) infinite}.sc-line--a{fill:var(--accent)}.sc-line.l2{animation-delay:-2s}.sc-line.l3{animation-delay:-4s}.sc-line.l4{animation-delay:-5.5s}.scene--busy .sc-line{animation-duration:1.4s}.sc-led{fill:var(--accent);animation:led 2.4s steps(1) infinite}.sc-led--b{animation-delay:-.8s}.sc-led--c{animation-delay:-1.6s}.sc-led--ok{fill:var(--ok)}.sc-cursor{fill:var(--accent);animation:blink 1s steps(1) infinite}.sc-aura{opacity:.2;animation:aura 3.2s steps(4,end) infinite}.sc-aura--a{fill:var(--accent)}.sc-aura--b{fill:var(--px-eye)}.sc-aura--c{fill:var(--px-rim-hi)}.face-sleeping .sc-aura-ring{display:none}.sc-ash{opacity:0;animation:ash 4s steps(8,end) infinite}.sc-ash--m{fill:var(--px-rim-hi)}.sc-ash--b{fill:var(--px-edge)}.sc-ash--acc{fill:var(--accent)}@keyframes ash{0%{opacity:0;transform:translate(0)}12%{opacity:.95}to{opacity:0;transform:translate(calc(var(--ax) * 1px),calc(var(--ay) * 1px))}}.sc-shine,.sc-shine-arm{opacity:0;animation-duration:var(--secs);animation-delay:var(--delay);animation-iteration-count:infinite;animation-timing-function:steps(1)}.sc-shine{animation-name:shine}.sc-shine-arm{animation-name:shine-arm}.sc-shine--b rect{fill:var(--px-eye)}.sc-shine--a rect{fill:var(--accent)}@keyframes shine{0%,to{opacity:0}12%{opacity:1}46%{opacity:.5}54%{opacity:0}}@keyframes shine-arm{0%,12%{opacity:0}12.1%,40%{opacity:.9}40.1%,to{opacity:0}}.sc-noise{opacity:0;animation:noise 2.4s steps(1) infinite}.sc-noise--ok{fill:var(--ok)}.sc-noise--a{fill:var(--accent)}.sc-noise--b{fill:var(--px-eye)}@keyframes noise{0%,28%{opacity:var(--o)}28.1%,52%{opacity:0}52.1%,66%{opacity:calc(var(--o) * .6)}66.1%,to{opacity:0}}.sc-bit{animation:twinkle .9s steps(5,end) both}.sc-bit--a{fill:var(--accent)}.sc-bit--b{fill:var(--px-eye)}.sc-bit--c,.sc-bit--m{fill:var(--px-rim-hi)}.sc-bit--ok{fill:var(--ok)}.is-hop .scene-bot{animation:hop .45s steps(3,end) 1}.creature-shadow{transform-box:fill-box;transform-origin:center}.is-hop .creature-shadow,.face-surprised .creature-shadow{animation:shadow-hop .45s steps(3,end) 1}.bot-campana.is-hop .scene-bot,.bot-campana.is-hop .creature-shadow{animation:none}@keyframes px-in{0%{opacity:0}}.is-intro .sc-dash .px{animation:px-in .01s steps(1,end) backwards;animation-delay:calc(.6s + var(--pd, 0) * 1.1s)}.is-intro .creature-shadow{animation:fade .4s ease-out 1.7s backwards}.is-intro .sc-aura-ring{animation:fade .6s ease-out 2s backwards}.is-intro .bubble{animation:fade .4s ease-out 2.2s backwards}.bot-campana.is-hop .mascot--campana{transform-box:fill-box;transform-origin:50% 0;animation:ring .45s steps(1,end) 1}@keyframes ring{0%{transform:rotate(-3deg)}20%{transform:rotate(3deg)}40%{transform:rotate(-2deg)}60%{transform:rotate(1deg)}80%,to{transform:rotate(0)}}.sc-ghost{display:none}.bot-encapuchado.is-hop .scene-bot{animation:none}.bot-encapuchado.is-hop .sc-dash,.bot-encapuchado.is-hop .creature-shadow{animation:dash .45s steps(1,end) 1}.bot-encapuchado.is-hop .sc-ghost{display:inline;animation:dash-ghost .45s steps(1,end) 1}@keyframes dash{0%{transform:translate(calc(var(--dash, 1) * 3px))}30%{transform:translate(calc(var(--dash, 1) * 2px))}55%{transform:translate(calc(var(--dash, 1) * 1px))}80%,to{transform:translate(0)}}@keyframes dash-ghost{0%{opacity:.4}30%{opacity:.25}55%{opacity:.12}80%,to{opacity:0}}.sc-tear{display:none}.bot-glitch.is-hop .scene-bot,.bot-glitch.is-hop .creature-shadow{animation:none}.bot-glitch.is-hop .sc-dash{visibility:hidden;animation:tear-show .45s steps(1,end) 1}.bot-glitch.is-hop .sc-tear{display:inline;animation:tear-flicker .45s steps(1,end) 1}.bot-glitch.is-hop .sc-tear-band--0{animation:tear-0 .45s steps(1,end) 1}.bot-glitch.is-hop .sc-tear-band--1{animation:tear-1 .45s steps(1,end) 1}.bot-glitch.is-hop .sc-tear-band--2{animation:tear-2 .45s steps(1,end) 1}@keyframes tear-0{0%{transform:translate(3px)}20%{transform:translate(-2px)}40%{transform:translate(1px)}60%,to{transform:translate(0)}}@keyframes tear-1{0%{transform:translate(-3px)}20%{transform:translate(3px)}40%{transform:translate(-1px)}60%,to{transform:translate(0)}}@keyframes tear-2{0%{transform:translate(2px)}20%{transform:translate(-1px)}40%{transform:translate(1px)}60%,to{transform:translate(0)}}@keyframes tear-flicker{0%{opacity:1}40%{opacity:.55}60%,to{opacity:1;visibility:hidden}}@keyframes tear-show{0%,59.9%{visibility:hidden}60%,to{visibility:visible}}@keyframes shadow-hop{0%,to{transform:scaleX(1)}40%{transform:scaleX(.7)}}@keyframes aura{0%,to{opacity:.2;transform:translate(0)}50%{opacity:.85;transform:translate(calc(var(--ox) * 1px),calc(var(--oy) * 1px))}}@keyframes twinkle{0%{opacity:0;transform:translate(0)}25%,55%{opacity:1}to{opacity:0;transform:translate(calc(var(--dx) * 1px),calc(var(--dy) * 1px))}}@media(prefers-reduced-motion:reduce){.sc-aura,.sc-ash,.sc-noise,.sc-shine,.sc-bit{display:none}}.console{position:relative;z-index:var(--z-console);flex:none}.console-in{display:flex;align-items:center;gap:10px;height:40px;padding:0 12px;background:var(--bg-sunk);border:1px solid var(--line-strong);border-radius:var(--radius);transition:border-color .2s ease}.console-in:focus-within{border-color:var(--accent)}.console-label{display:inline-flex;flex:none;gap:8px;font-size:.78rem;color:var(--text-3);white-space:nowrap}.prompt-user{color:var(--text-2)}.console-input{flex:1;min-width:0;background:transparent;border:0;outline:0;color:var(--text);font:inherit;font-size:.82rem;caret-color:var(--accent)}.console-input::placeholder{color:var(--text-3)}.console-kbd{padding:1px 7px;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:3px;font:inherit;font-size:.68rem;color:var(--text-3)}.console-out{position:absolute;inset:auto 0 calc(100% + 8px) 0;display:flex;flex-direction:column;max-height:min(46svh,340px);background:var(--bg-elev);border:1px solid var(--accent-line);border-radius:var(--radius);overflow:hidden;animation:rise .25s var(--ease) both}.console-out.is-leaving{animation:out-fade .25s var(--ease) forwards}@keyframes out-fade{to{opacity:0;transform:translateY(6px)}}.console-out-head{display:flex;flex:none;justify-content:space-between;align-items:center;padding:2px 6px 2px 12px;background:var(--bg-sunk);border-bottom:1px solid var(--line);font-size:.66rem;color:var(--text-3)}.console-out-body{overflow:auto;padding:10px 14px;font-size:.8rem;line-height:1.55;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.out-echo{margin-bottom:6px;color:var(--text-2)}.out-head{margin-bottom:4px;font-weight:600;color:var(--accent)}.out-kv{display:grid;grid-template-columns:18ch minmax(0,1fr);gap:14px}.out-key{color:var(--accent)}.out-dim{color:var(--text-3)}.out-ok{color:var(--ok)}.out-err{color:var(--err)}.out-link{color:var(--accent);border-bottom:1px solid var(--accent-line)}@media(min-width:901px){.console{display:flex;flex-direction:column;padding-top:8px;background:var(--bg-sunk);border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;transition:border-color .2s ease}.console:focus-within{border-color:var(--accent)}.console-log{position:relative;height:calc(var(--log-lines, 4) * 1lh);padding:0 14px;overflow-y:auto;font-size:.78rem;line-height:20px;color:var(--text-2);scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent}.console-log-inner{display:flex;flex-direction:column;justify-content:flex-end;min-height:100%}.console .console-in,.console .console-in:focus-within{border:0;border-top:1px solid var(--line);border-radius:0;background:transparent}.console-out{display:none}.console-log p,.console-log .out-head{margin:0}}@media(min-width:901px)and (max-height:700px){.console{--log-lines: 3}}@media(min-width:901px)and (min-height:900px){.console{--log-lines: 5}}@media(min-width:901px)and (min-height:1100px){.console{--log-lines: 6}}@media(max-width:900px){.console-log{display:none}}.loader{position:fixed;inset:0;z-index:var(--z-loader);background:var(--bg);transition:opacity .5s ease,visibility .5s ease}.loader.is-done{opacity:0;visibility:hidden;pointer-events:none}.boot{position:relative;min-height:100svh;cursor:pointer}.boot-screen{zoom:var(--ui-zoom);min-height:calc(100svh / var(--ui-zoom))}.bios{position:relative;display:flex;flex-direction:column;min-height:calc(100svh / var(--ui-zoom));padding:clamp(12px,3svh,28px) clamp(16px,3vw,36px);font-size:clamp(.72rem,2.1svh,.9rem);line-height:1.5;color:var(--text-2)}.bios-head{color:var(--text);font-weight:600}.bios-gap{margin-top:1.4em}.bios-indent{padding-left:2.5ch}.bios-ok{color:var(--ok)}.bios-foot{margin-top:auto;color:var(--text-2)}.bios-box{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 clamp(16px,3vw,40px);margin-bottom:8px;padding:8px 14px;border:1px solid var(--line-strong);outline:1px solid var(--line);outline-offset:3px}.bios-kv{display:grid;grid-template-columns:13ch minmax(0,1fr);gap:8px}.bios-table{display:grid;grid-template-columns:7ch minmax(0,1.2fr) minmax(0,1fr) 8ch;max-width:640px;margin-top:4px;border-bottom:1px solid var(--line-strong);color:var(--text)}.bios-table>span{padding-bottom:2px;border-bottom:1px solid var(--line-strong);color:var(--accent)}.bios-table-row{display:contents}.bios-load{display:grid;place-content:center;justify-items:center;gap:10px;min-height:calc(100svh / var(--ui-zoom));padding:24px;text-align:center}.boot-scene{width:min(480px,90vw);margin-bottom:4px}.boot-title{font-family:var(--font-display);font-size:clamp(1.4rem,5vw,1.9rem);font-weight:700;letter-spacing:-.04em;color:var(--text)}.boot-status{min-height:1.5em;font-size:.8rem;color:var(--text-2)}.bios-pick{position:absolute;inset:0;zoom:var(--ui-zoom);display:grid;place-content:center;justify-items:center;gap:6px;padding:24px clamp(16px,3vw,36px);background:var(--bg);text-align:center}.pick-title{font-family:var(--font-display);font-size:clamp(1.2rem,4svh,1.7rem);font-weight:700;letter-spacing:-.03em;color:var(--text)}.pick-title .cursor{width:.35em}.pick-hint{font-size:.8rem;color:var(--text-2)}.pick-list{display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(10px,2vw,22px);margin-top:clamp(14px,4svh,32px)}.pick-card{display:grid;grid-template-rows:1fr auto auto;justify-items:center;gap:8px;padding:clamp(12px,2.4svh,20px) clamp(16px,2vw,26px);border:1px solid var(--line-strong);border-radius:3px;background:var(--bg-elev);color:var(--text-2);transition:color .2s ease,border-color .2s ease,background-color .2s ease}.pick-card:hover,.pick-card:focus-visible{border-color:var(--accent);background:var(--accent-soft);color:var(--text)}.pick-art{display:block;align-self:end;height:clamp(76px,18svh,150px)}.pick-card:hover .pick-bot,.pick-card:focus-visible .pick-bot{animation:bob 2.4s steps(2,end) infinite}.pick-name{font-size:1.05rem;font-weight:600}.pick-key{font-size:.72rem;color:var(--text-3)}.boot-bar{width:min(420px,80vw);height:4px;background:var(--line);overflow:hidden}.boot-bar-fill{height:100%;background:var(--accent);transform-origin:left}.boot-percent{font-size:.72rem;color:var(--text-3)}@media(max-width:720px){.bios-box{grid-template-columns:1fr}}@media(min-width:1600px)and (min-height:814px){:root{--ui-zoom: 1.1}}@media(min-width:1800px)and (min-height:890px){:root{--ui-zoom: 1.2}}@media(min-width:2100px)and (min-height:1000px){:root{--ui-zoom: 1.35}}@media(min-width:2500px)and (min-height:1180px){:root{--ui-zoom: 1.6}}@media(min-width:3200px)and (min-height:1480px){:root{--ui-zoom: 2}}@media(min-width:901px)and (max-height:640px){.btn{min-height:34px}.bullets li{font-size:.78rem}.tag{padding-block:2px}.tab{min-height:34px}}@media(min-width:901px)and (max-height:660px){.box-label{display:none}.extra-col .box-body{padding:12px 18px}.lang-name{font-size:1rem}.level--lg i{height:7px}.bubble{padding:5px 10px}}@media(min-width:901px)and (max-height:540px){.svc-tags{display:none}}@media(min-width:901px)and (max-height:560px){:root{--frame-y: 4px}.console-in{height:36px}.pane-head,.side-link{padding-block:4px}.sidebar{gap:8px;padding-block:10px}.profile{padding-bottom:8px}.side-nav ul{gap:2px}.side-actions{padding-top:8px}.pane-body,.box-body{padding-block:6px}.prose p{line-height:1.5}.eyebrow{margin-bottom:6px}}@media(max-width:900px){.app{height:auto;padding:0}.window{display:block;height:auto;max-width:none;border:0;border-radius:0;overflow:visible}.titlebar{position:fixed;inset:0 0 auto;z-index:var(--z-bar);height:44px;background:var(--bg)}.titlebar-inner{padding-inline:12px}.tb-extra,.tb-path{display:none}.shell{display:flex;flex-direction:column;gap:10px;width:auto;padding:56px 12px 76px}.sidebar{display:contents}.profile{order:1;flex-direction:row;justify-content:flex-start;padding:12px;background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius)}.avatar{width:56px}.side-nav{position:sticky;top:44px;z-index:calc(var(--z-bar) - 1);order:2;margin-inline:-12px;padding-inline:12px;background:var(--bg);border-bottom:1px solid var(--line)}.side-nav ul{display:flex;gap:4px;padding-block:6px;overflow-x:auto;scrollbar-width:none}.side-link{white-space:nowrap}.workspace{display:block;order:3}.side-actions{order:4;margin:0;padding:4px 0 0;border-top:0}.pane{display:block;overflow:visible}.pane[hidden]{display:none}.pane-body{display:block;overflow:visible;padding:16px}.pane--flush .pane-body{padding:0}.console{position:fixed;inset:auto 0 0;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--line)}.console-out{inset:auto 12px 100%;max-height:50svh}.prompt-user,.console-kbd{display:none}.home h1{font-size:clamp(1.8rem,10vw,2.6rem)}:root{--pad-x: 16px}.home{grid-template-columns:1fr;gap:32px}.tabs{flex-wrap:wrap}.eyebrow{margin-bottom:16px}.prompt{margin-top:24px}.hero-desc{margin-top:16px}.actions{gap:12px;margin-top:28px}.about-grid,.contact-grid,.langs{grid-template-columns:1fr}.pane--fill .pane-inner,.pane--flush .pane-inner{display:block}.svc-grid,.contact-cards,.kv-list{grid-auto-rows:auto}.tl-now{align-self:flex-start}.tl-list:before{inset:calc(-1*clamp(8px,1.6svh,14px)) auto 0 5px}.tl-item{grid-template-columns:12px minmax(0,1fr);column-gap:12px}.tl-card,.tl-item.is-right .tl-card{grid-column:2}.tl-mark{grid-column:1;padding-top:16px}.tl-year,.tl-item:before{display:none}.svc{justify-content:flex-start}.contact-wrap{gap:16px}.project{grid-template-columns:1fr}.project-stack{padding:16px}.project-thumb{width:100%}}@media(max-width:720px){.contact-card{flex-wrap:wrap}.contact-info{flex:1 1 calc(100% - 54px)}.contact-value{font-size:.84rem}.svc-grid,.contact-cards{grid-template-columns:1fr}.kv,.extra-col .kv,.kv-list--compact .kv{grid-template-columns:1fr;gap:8px}.out-kv{grid-template-columns:1fr;gap:0}.bios-kv{grid-template-columns:11ch minmax(0,1fr)}}@media(max-width:600px){html{font-size:calc(100% + 1px)}.bios{font-size:clamp(calc(.72rem - 1px),2.1svh,calc(.9rem - 1px))}}@media(max-width:600px){.home h1{font-size:clamp(1.6rem,8vw,2rem)}.prompt{font-size:.95rem}.bubble{font-size:.82rem}.hero-desc,.prose p,.project-desc,.contact-lead{font-size:.8rem}.bullets li,.project-body .bullets li,.svc p,.kv dt{font-size:.78rem}.kv .tag{font-size:.76rem}.tl-card h3{font-size:.95rem}.svc-head h3,.project-top h3{font-size:.92rem}.lang-name{font-size:.95rem}.contact-title{font-size:clamp(1.2rem,6vw,1.5rem)}}@media(max-width:600px){.pick-list{flex-wrap:nowrap;gap:8px;width:100%;max-width:420px}.pick-card{flex:1 1 0;min-width:0;gap:6px;padding:14px 6px 10px}.pick-art{width:100%;height:auto}.pick-name{font-size:.95rem}}@media(max-width:600px){.tabs{flex-wrap:nowrap;padding:10px 8px 0}.tab{min-height:44px;padding-inline:14px;border-right:0}.tab:not([aria-selected=true]){gap:0;min-width:40px;justify-content:center;padding-inline:8px}.tab:not([aria-selected=true]) .tab-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}@media(max-width:600px){.side-nav ul{gap:2px;justify-content:space-between}.side-link{gap:8px;padding:11px 9px;font-size:.78rem}.side-link[aria-current=page]{padding-inline:12px}.side-link:not([aria-current=page]){gap:0}.side-link:not([aria-current=page]) .side-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.legend-line{justify-content:flex-start;margin-bottom:8px}#view-skills .kv{gap:12px;padding:18px 0}#view-skills .kv .tag-row{gap:10px 8px}#view-skills .kv .tag{padding:7px 11px}}@media(max-width:380px){.side-link:not([aria-current=page]){padding-inline:7px}.side-link[aria-current=page]{padding-inline:10px}}@media(max-width:340px){.side-link:not([aria-current=page]){padding-inline:4px}.side-link[aria-current=page]{gap:6px;padding-inline:7px}}@media(max-width:900px){.pane--empty:not([hidden]){display:flex;min-height:52svh}}@media(hover:none){.pick-key{display:none}}@media(prefers-reduced-motion:reduce){.log-line{animation-delay:0s!important}*,*:before,*:after{animation-delay:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important}}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2) format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2) format("woff2"),url(/assets/space-grotesk-latin-600-normal-BflQw4A9.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2) format("woff2"),url(/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff) format("woff")}
