@font-face{font-family:Clash Display;src:url(/PORFOLIO/fonts/clash-display.woff2) format("woff2");font-weight:200 700;font-style:normal;font-display:swap}@font-face{font-family:Switzer;src:url(/PORFOLIO/fonts/switzer.woff2) format("woff2");font-weight:100 900;font-style:normal;font-display:swap}:root{--bg: #f7f6f3;--surface: #ffffff;--surface-sunk: #eeece6;--border: #dedbd3;--text: #1b1f1e;--text-muted: #646d6b;--text-dim: #646d6b;--accent: #1b1f1e;--accent-strong: #000000;--accent-wash: #e1ddd3;--accent-line: #7f7d74;--on-accent: #f7f6f3;--signal: #1b1f1e;--signal-line: #7f7d74;--a-ink: 86%;--a-ink-with: var(--text);--font-display: "Clash Display", "Avenir Next", system-ui, sans-serif;--font-text: "Switzer", system-ui, -apple-system, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--fs-micro: .72rem;--fs-xs: .8125rem;--fs-sm: .9375rem;--fs-base: clamp(1rem, .97rem + .16vw, 1.0625rem);--fs-lg: clamp(1.1rem, 1.04rem + .3vw, 1.25rem);--fs-xl: clamp(1.3rem, 1.16rem + .66vw, 1.62rem);--fs-2xl: clamp(1.6rem, 1.32rem + 1.35vw, 2.3rem);--fs-3xl: clamp(2rem, 1.62rem + 3.3vw, 3.9rem);--leading-tight: 1.15;--leading-normal: 1.5;--leading-relaxed: 1.65;--section: clamp(3.5rem, 2.2rem + 5.5vw, 6.5rem);--section-mayor: clamp(5rem, 3rem + 8.5vw, 10.5rem);--width: 62rem;--measure: 38rem;--radius: 10px;--radius-sm: 6px;--bottom-nav-h: 72px;--shadow: 0 1px 2px rgba(27, 31, 30, .05), 0 10px 30px -14px rgba(27, 31, 30, .22);--shadow-lift: 0 2px 4px rgba(27, 31, 30, .06), 0 18px 44px -18px rgba(27, 31, 30, .3);--sombra-escenario: rgba(27, 31, 30, .26);--transition: .18s cubic-bezier(.2, .7, .2, 1)}[data-theme=dark]{--bg: #121514;--surface: #1a1e1d;--surface-sunk: #232827;--border: rgba(236, 235, 230, .14);--text: #ecebe6;--text-muted: #868d8a;--text-dim: #8c9390;--accent: #ecebe6;--accent-strong: #ffffff;--accent-wash: #2b3130;--accent-line: #85837a;--on-accent: #121514;--signal: #ecebe6;--signal-line: #85837a;--a-ink: 45%;--a-ink-with: #ffffff;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 12px 34px -16px rgba(0, 0, 0, .7);--shadow-lift: 0 2px 6px rgba(0, 0, 0, .45), 0 22px 50px -20px rgba(0, 0, 0, .8);--sombra-escenario: rgba(0, 0, 0, .6)}body,.top-nav,.hero,.project-card,.log-row,.skill-tag,.tag,.btn-primary,.mobile-header,.mobile-nav{transition:background-color .25s ease,color .25s ease,border-color .25s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background-color:var(--bg);color:var(--text);font-family:var(--font-text);font-size:var(--fs-base);line-height:var(--leading-relaxed);-webkit-font-smoothing:antialiased;overflow-x:hidden}a{text-decoration:none;color:inherit}img{display:block;max-width:100%}h1,h2,h3{font-family:var(--font-display);font-weight:560;line-height:var(--leading-tight);letter-spacing:-.012em;word-spacing:.09em;text-wrap:balance}p{text-wrap:pretty}::selection{background:var(--accent);color:var(--on-accent)}html{scrollbar-gutter:stable}html{scrollbar-width:auto;scrollbar-color:var(--text-dim) transparent}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--text-dim);border:3px solid transparent;background-clip:padding-box;border-radius:999px;transition:background-color .2s ease}::-webkit-scrollbar-thumb:hover{background-color:var(--text-muted)}::-webkit-scrollbar-thumb:active{background-color:var(--accent)}::-webkit-scrollbar-corner{background:transparent}@media(pointer:coarse){html{scrollbar-width:none;scrollbar-gutter:auto}::-webkit-scrollbar{display:none}}#root{position:relative;z-index:1}.page{max-width:var(--width);margin:0 auto;padding:2.5rem 2rem 8rem}.skip-link{position:absolute;top:-100px;left:1rem;z-index:200;padding:.75rem 1.25rem;background:var(--surface);color:var(--text);border:1px solid var(--accent);border-radius:var(--radius);font-family:var(--font-mono);font-size:var(--fs-sm);transition:top .2s ease}.skip-link:focus,.skip-link:focus-visible{top:1rem}.top-nav{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:1rem 2.5rem;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}.top-nav-brand{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:560;color:var(--text);letter-spacing:-.01em;word-spacing:.09em;min-height:44px;display:inline-flex;align-items:center;transition:color var(--transition)}.top-nav-brand:hover{text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:5px}.top-nav-links{display:flex;align-items:center;gap:.25rem;flex-wrap:wrap}.top-nav-links a{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.11em;text-transform:uppercase;color:var(--text-muted);padding:.6rem .9rem;min-height:44px;display:inline-flex;align-items:center;border-radius:var(--radius);transition:color var(--transition),background var(--transition)}.top-nav-links a:hover,.top-nav-links a.active{color:var(--accent);background:var(--accent-wash)}.top-nav-actions{display:flex;align-items:center;gap:.4rem}.top-nav-actions a,.top-nav-actions button{color:var(--text-muted);display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border-radius:var(--radius);background:transparent;transition:color var(--transition),background var(--transition)}.top-nav-actions a:hover,.top-nav-actions button:hover{color:var(--accent);background:var(--accent-wash)}.hero{padding:clamp(2.5rem,1.5rem + 5vw,5rem) 0 calc(var(--section) * .7);margin-bottom:var(--section);border-bottom:1px solid var(--border)}.hero-inner{display:flex;flex-direction:column;align-items:flex-start;max-width:46rem}.hero-lead{font-family:var(--font-display);font-size:var(--fs-3xl);font-weight:560;color:var(--text);line-height:1.04;letter-spacing:-.025em;word-spacing:.09em;max-width:19ch;margin:0}.hero-lead em{font-style:normal;font-weight:700}.hero-lead em .mascara-i{text-decoration:underline;text-decoration-thickness:3px;text-underline-offset:.14em}.hero-sign{display:flex;align-items:baseline;flex-wrap:wrap;gap:.35rem .85rem;margin:1.35rem 0 0;line-height:1.35}.hero-name{font-family:var(--font-display);font-size:1.75rem;font-weight:560;color:var(--text);letter-spacing:-.015em;word-spacing:.09em}.hero-eyebrow{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;padding-left:.85rem;border-left:1px solid var(--border)}.hero-actions{display:flex;gap:.75rem;flex-wrap:wrap;margin-top:1.75rem}.hero-stats{display:flex;flex-wrap:wrap;gap:1.25rem 2.75rem;margin:2.25rem 0 0;padding-top:1.5rem;border-top:1px solid var(--border);width:100%;max-width:34rem}.hero-stat dd{margin:0}.btn-ghost{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.3rem;min-height:44px;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.06em;color:var(--text);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color var(--transition),background var(--transition),color var(--transition)}.btn-ghost:hover{border-color:var(--accent-line);background:var(--accent-wash);color:var(--accent)}:focus{outline:none}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius)}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.fade-in,.fade-in.cascada>*{opacity:1;transform:none}.mascara-i{animation:none;transform:none}}.section-label{font-family:var(--font-display);font-size:clamp(1.7rem,1.3rem + 1.2vw,2.4rem);font-weight:560;letter-spacing:-.01em;word-spacing:.09em;color:var(--text);display:flex;align-items:baseline;gap:1.1rem;margin:0 0 2.25rem}.section-label:after{content:"";flex:1;height:1px;background:var(--border);transform:translateY(-.35em)}section{margin-bottom:var(--section);scroll-margin-top:6rem}#experience,#skills{margin-bottom:var(--section-mayor)}.section-hint{font-size:var(--fs-sm);color:var(--text-dim);margin:-1.5rem 0 1.5rem}.project-source-badge{display:inline-flex;align-items:center;gap:.35rem;font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);margin-top:.6rem;letter-spacing:.06em}@keyframes hero-in{0%{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}.entra{animation:hero-in .7s cubic-bezier(.2,.7,.2,1) both}.entra-2{animation-delay:.44s}.entra-3{animation-delay:.56s}.entra-4{animation-delay:.68s}.mascara{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.16em;margin-bottom:-.16em}.mascara-i{display:inline-block;white-space:pre;animation:revelar-linea .72s cubic-bezier(.2,.7,.2,1) both;animation-delay:calc(var(--linea, 0) * .09s)}@keyframes revelar-linea{0%{transform:translateY(105%)}to{transform:translateY(0)}}.fade-in{opacity:0;transform:translateY(var(--recorrido, 26px));transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1)}.fade-in.visible{opacity:1;transform:none}.fade-in.cascada{opacity:1;transform:none;transition:none}.fade-in.cascada>*{opacity:0;transform:translateY(var(--recorrido, 18px));transition:opacity .66s ease,transform .66s cubic-bezier(.2,.7,.2,1)}.fade-in.cascada.visible>*{opacity:1;transform:none}.fade-in.cascada.visible>*:nth-child(1){transition-delay:0s}.fade-in.cascada.visible>*:nth-child(2){transition-delay:.07s}.fade-in.cascada.visible>*:nth-child(3){transition-delay:.14s}.fade-in.cascada.visible>*:nth-child(4){transition-delay:.21s}.fade-in.cascada.visible>*:nth-child(5){transition-delay:.28s}.fade-in.cascada.visible>*:nth-child(6){transition-delay:.35s}.fade-in.cascada.visible>*:nth-child(7){transition-delay:.42s}.fade-in.cascada.visible>*:nth-child(8){transition-delay:.49s}.fade-in.cascada.visible>*:nth-child(n+9){transition-delay:.56s}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){.fade-in{opacity:0;transform:translateY(var(--recorrido, 26px));transition:none;animation:revelar-scroll linear both;animation-timeline:view();animation-range:entry 5% entry 75%}.fade-in.cascada{animation:none;opacity:1;transform:none}.fade-in.cascada>*{transition:none;animation:revelar-scroll linear both;animation-timeline:view()}.fade-in.cascada>*:nth-child(1){animation-range:entry 0% entry 50%}.fade-in.cascada>*:nth-child(2){animation-range:entry 6% entry 56%}.fade-in.cascada>*:nth-child(3){animation-range:entry 12% entry 62%}.fade-in.cascada>*:nth-child(4){animation-range:entry 18% entry 68%}.fade-in.cascada>*:nth-child(5){animation-range:entry 24% entry 74%}.fade-in.cascada>*:nth-child(6){animation-range:entry 30% entry 80%}.fade-in.cascada>*:nth-child(7){animation-range:entry 36% entry 86%}.fade-in.cascada>*:nth-child(n+8){animation-range:entry 42% entry 92%}}}@keyframes revelar-scroll{0%{opacity:0;transform:translateY(var(--recorrido, 26px))}to{opacity:1;transform:none}}.section-label.fade-in{--recorrido: 12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){.project-card:hover,.shot-frame:hover{transform:none}.project-row:hover{padding-left:.6rem}}.about-grid{display:grid;grid-template-columns:auto 1fr;gap:3rem;align-items:start}.about-photo-wrap{position:relative;width:190px}.about-photo{position:sticky;top:96px;z-index:1;display:block;width:190px;height:240px;object-fit:cover;border-radius:8px;border:1px solid var(--border);filter:grayscale(1) contrast(1.03);transition:filter .3s}.about-photo:hover{filter:grayscale(.15) contrast(1)}.about-photo-placeholder{position:relative;z-index:1;width:190px;height:240px;border-radius:8px;background:var(--surface-sunk);display:flex;align-items:center;justify-content:center;font-size:3rem;border:1px solid var(--border)}.about-text p{font-size:var(--fs-base);color:var(--text-muted);margin-bottom:1.1rem;line-height:1.75;max-width:54ch}.about-text .about-note{font-size:var(--fs-sm);border-left:2px solid var(--accent-line);padding-left:1.15rem;margin-top:1.75rem}.about-text strong{color:var(--text);font-weight:600}.about-actions{display:flex;align-items:center;gap:1rem;margin-top:1.5rem;flex-wrap:wrap}.btn-primary{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.3rem;min-height:44px;background:var(--accent);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--on-accent);font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.06em;transition:background var(--transition),border-color var(--transition)}.btn-primary:hover{background:var(--accent-strong);border-color:var(--accent-strong)}.stat-num{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:560;color:var(--accent);line-height:1;letter-spacing:-.02em}.stat-label{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.06em;color:var(--text-dim);margin-top:.45rem;max-width:11rem;line-height:1.4}.log{border-top:1px solid var(--border)}.log-row{border-bottom:1px solid var(--border);position:relative}.log-row[open]{background:var(--surface)}.log-row>summary{display:grid;grid-template-columns:8.5rem minmax(0,1fr) auto;align-items:baseline;gap:0 1.75rem;padding:.9rem .75rem;min-height:44px;cursor:pointer;list-style:none;transition:background var(--transition)}.log-row>summary::-webkit-details-marker{display:none}.log-row>summary:hover{background:var(--surface)}.log-row>summary:hover .log-title,.log-row[open]>summary .log-title{text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:5px}.log-when{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.05em;color:var(--text-dim);line-height:1.6;white-space:pre-line;border-right:1px solid var(--border);padding-right:1rem;margin-right:-1rem;align-self:stretch}.log-row:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--accent);transform:scaleY(0);transform-origin:top;transition:transform .28s cubic-bezier(.2,.7,.2,1)}.log-row:hover:before,.log-row:focus-within:before,.log-row--abierta:before{transform:scaleY(1)}.log-row--destacada .log-title{font-size:var(--fs-lg)}.log-row--formacion .log-title{font-family:var(--font-text);font-size:var(--fs-sm);font-weight:500;color:var(--text-muted)}.log-title{display:block;font-family:var(--font-display);font-size:var(--fs-base);font-weight:560;letter-spacing:-.01em;word-spacing:.09em;color:var(--text);transition:color var(--transition)}.log-org{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted);margin-top:.2rem;display:flex;align-items:center;flex-wrap:wrap;gap:.5rem}.log-kind{font-size:var(--fs-micro);letter-spacing:.12em;text-transform:uppercase;color:var(--text-dim);border:1px solid var(--border);border-radius:999px;padding:.1rem .5rem}.log-chevron{color:var(--text-dim);flex-shrink:0;align-self:center;transition:transform var(--transition),color var(--transition)}.log-row[open] .log-chevron{transform:rotate(180deg);color:var(--accent)}.log-body-wrap{display:grid;grid-template-rows:0fr;transition:grid-template-rows .36s cubic-bezier(.2,.7,.2,1),opacity .3s ease;opacity:0}.log-row--abierta .log-body-wrap{grid-template-rows:1fr;opacity:1}.log-body-wrap>*{min-height:0;overflow:hidden}.log-body{padding:0 .75rem 1.2rem 11rem}.log-desc{font-size:var(--fs-sm);color:var(--text-muted);line-height:1.7;max-width:var(--measure);margin-bottom:.85rem}.tag-row{display:flex;flex-wrap:wrap;gap:.4rem}.tag{font-family:var(--font-mono);font-size:var(--fs-micro);padding:.25rem .6rem;border-radius:999px;background:transparent;color:var(--text-muted);border:1px solid var(--border);transition:color var(--transition),border-color var(--transition)}.pcar{position:relative;margin-inline:calc(50% - 50vw);padding-inline:1.5rem;overflow-x:clip}.pcar:after{content:"";position:absolute;inset:0;z-index:15;pointer-events:none;background:linear-gradient(90deg,var(--bg) 0,color-mix(in srgb,var(--bg) 55%,transparent) calc(50% - 36rem),transparent calc(50% - 28rem),transparent calc(50% + 28rem),color-mix(in srgb,var(--bg) 55%,transparent) calc(50% + 36rem),var(--bg) 100%)}@media(max-width:719px){.pcar:after{display:none}}.pcar-frame{position:relative;max-width:min(41rem,88vw);margin-inline:auto}.pcar-frame:before{content:"";position:absolute;left:4%;right:4%;bottom:-1.25rem;height:3.5rem;z-index:0;pointer-events:none;background:radial-gradient(50% 50% at 50% 50%,var(--sombra-escenario) 0%,transparent 72%)}.pcar-stage{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}.pcar-stage::-webkit-scrollbar{display:none}.pcar-cell{flex:0 0 100%;scroll-snap-align:center}.pcar--enhanced .pcar-stage{display:grid;grid-template-columns:1fr;grid-template-rows:1fr;place-items:start center;overflow:visible}.pcar--enhanced .pcar-cell{grid-area:1 / 1;flex-basis:auto;width:100%;cursor:pointer;position:relative;--ad: max(var(--d), -1 * var(--d));--adc: min(var(--ad), 2);transform:translate(calc(var(--d) * (100% + 1.5rem)));opacity:calc(1 - var(--adc) * .25);z-index:calc(10 - var(--adc));transition:transform .72s cubic-bezier(.16,.84,.24,1),opacity .72s cubic-bezier(.16,.84,.24,1),z-index 0s .3s}.pcar--enhanced .pcar-cell[data-d="0"]{cursor:default}.pcar--enhanced .pcar-cell:not([data-d="0"]) a{pointer-events:none}.pcar-arrow{display:none;align-items:center;justify-content:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;box-shadow:var(--shadow);transition:background var(--transition),border-color var(--transition),color var(--transition),transform var(--transition)}.pcar-arrow:hover{background:var(--accent);border-color:var(--accent);color:var(--on-accent);transform:scale(1.06)}.pcar-arrow--wide{position:absolute;top:38%;z-index:20}.pcar-arrow--wide:hover{transform:scale(1.06)}.pcar-arrow--prev{left:-4.25rem}.pcar-arrow--next{right:-4.25rem}@media(min-width:900px){.pcar-arrow--wide{display:flex}}@media(max-width:899px){.pcar-arrow--narrow{display:flex}}.pcar-nav{display:flex;align-items:center;justify-content:center;gap:.75rem;margin-top:1.5rem}.pcar-dots{display:flex;align-items:center;gap:.1rem}.pcar-dot{display:inline-flex;align-items:center;justify-content:center;width:26px;height:44px;border:none;background:none;padding:0;cursor:pointer}.pcar-dot-mark{display:block;width:7px;height:7px;border-radius:50%;background:var(--border);transition:background var(--transition),transform var(--transition)}.pcar-dot:hover .pcar-dot-mark{background:var(--text-dim)}.pcar-dot[aria-current=true] .pcar-dot-mark{background:var(--accent);transform:scale(1.45)}@media(max-width:719px){.pcar--enhanced .pcar-cell{--adc: min(var(--ad), 1);transform:translate(calc(var(--d) * 100%)) scale(calc(1 - var(--adc) * .22));opacity:calc(1 - var(--adc))}}@media(prefers-reduced-motion:reduce){.pcar--enhanced .pcar-cell{transform:none;opacity:0;transition:opacity .2s linear}.pcar--enhanced .pcar-cell[data-d="0"]{opacity:1}}.pcar-cell{--a: var(--accent)}.project-card{position:relative;display:flex;flex-direction:column;overflow:hidden;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);text-decoration:none;color:inherit;transition:border-color var(--transition),box-shadow var(--transition),transform var(--transition)}.project-card:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--a);z-index:2}.project-card:hover,.project-card:focus-visible{border-color:color-mix(in oklab,var(--a) 45%,var(--border));box-shadow:var(--shadow-lift);transform:translateY(-3px)}.project-card:hover .project-title,.project-card:focus-visible .project-title{color:color-mix(in oklab,var(--a) var(--a-ink),var(--a-ink-with))}.project-card:hover .arrow-icon,.project-card:focus-visible .arrow-icon{opacity:1;transform:translate(0)}.project-shot{position:relative;aspect-ratio:16 / 10;overflow:hidden;border-bottom:1px solid var(--border);background:color-mix(in oklab,var(--a) 10%,var(--surface-sunk))}.project-img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center;filter:saturate(.88) brightness(.98);transition:transform .3s cubic-bezier(.2,.7,.2,1),filter .35s ease}.project-card:hover .project-img{transform:scale(1.025);filter:none}.project-shot--type{display:grid;place-content:center;text-align:center;padding:1.25rem;background:repeating-linear-gradient(90deg,color-mix(in oklab,var(--a) 16%,transparent) 0 1px,transparent 1px 2.25rem),color-mix(in oklab,var(--a) 9%,var(--surface-sunk))}.project-shot-word{font-family:var(--font-display);font-size:clamp(1.5rem,1.1rem + 1.6vw,2.2rem);font-weight:560;letter-spacing:-.02em;line-height:1.1;color:color-mix(in oklab,var(--a) var(--a-ink),var(--a-ink-with))}.project-body{display:flex;flex-direction:column;flex:1;padding:1.1rem 1.25rem 1.25rem}.project-meta{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.55rem}.project-kind{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.12em;text-transform:uppercase;color:color-mix(in oklab,var(--a) var(--a-ink),var(--a-ink-with));border:1px solid color-mix(in oklab,var(--a) 32%,var(--border));border-radius:999px;padding:.15rem .6rem}.project-year{font-family:var(--font-mono);font-size:var(--fs-micro);font-weight:400;color:var(--text-dim)}.project-title{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:560;letter-spacing:-.01em;word-spacing:.09em;color:var(--text);display:flex;align-items:center;gap:.4rem;transition:color var(--transition)}.arrow-icon{opacity:0;transform:translate(-4px,4px);transition:opacity var(--transition),transform var(--transition);flex-shrink:0}.project-tagline{font-size:var(--fs-base);color:var(--text);line-height:1.45;margin-top:.5rem}.project-desc{font-size:var(--fs-sm);color:var(--text-muted);line-height:1.6;margin-top:.6rem;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}.project-stack{display:flex;flex-wrap:wrap;gap:.3rem;margin-top:.85rem;list-style:none;padding:0}.project-stack li{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--text-dim);background:var(--surface-sunk);padding:.18rem .45rem;border-radius:var(--radius-sm)}.project-foot{margin-top:auto;padding-top:.95rem}.project-foot .project-badges{margin-top:0}.skills-group{margin-bottom:2rem}.skills-group-label{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);margin-bottom:.75rem}.skills-row{display:flex;flex-wrap:wrap;gap:.45rem}.skill-tag{font-family:var(--font-text);font-weight:500;font-size:var(--fs-xs);padding:.4rem .75rem;border-radius:999px;background:transparent;color:var(--text-muted);border:1px solid var(--border);transition:color var(--transition),border-color var(--transition),background var(--transition);cursor:default;display:inline-flex;align-items:center;line-height:1}.skill-tag:hover{color:var(--accent);border-color:var(--accent-line);background:var(--accent-wash)}.contact-text{font-size:var(--fs-base);color:var(--text-muted);max-width:460px;margin-bottom:1.5rem;line-height:1.75}.contact-cta-wrap{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;margin-bottom:2rem}.contact-cta-micro{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-muted)}.contact-link{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-muted);margin-bottom:.7rem;transition:color var(--transition);width:fit-content}.contact-link:hover{color:var(--accent);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:4px}.contact-links{display:flex;flex-direction:column}.footer-credit{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-dim);margin-top:4rem;line-height:1.7}.footer-credit a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-decoration-color:var(--accent-line);text-underline-offset:3px;transition:text-decoration-color var(--transition)}.footer-credit a:hover{text-decoration-color:currentColor}.mobile-header{display:none;position:fixed;top:0;left:0;right:0;height:60px;background:color-mix(in srgb,var(--bg) 92%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--border);z-index:100;padding:0 1rem 0 1.25rem;align-items:center;justify-content:space-between;gap:1rem}.mobile-header-brand{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:560;color:var(--text);letter-spacing:-.01em;word-spacing:.09em}.mobile-header-actions{display:inline-flex;align-items:center;gap:.25rem}.mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;background:color-mix(in srgb,var(--bg) 96%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--border);z-index:100;padding:.5rem .4rem calc(.5rem + env(safe-area-inset-bottom));justify-content:space-around;gap:.25rem}.mobile-nav a{display:flex;flex:1 1 0;min-width:0;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;color:var(--text-muted);padding:.45rem .15rem;min-height:52px;border-radius:var(--radius);transition:color var(--transition),background var(--transition)}.mobile-nav a span{line-height:1;max-width:100%}.mobile-nav a.active{color:var(--accent);background:var(--accent-wash)}@media(hover:hover){.mobile-nav a:hover{color:var(--accent);background:var(--accent-wash)}}@media(max-width:800px){.top-nav{display:none}.page{padding:calc(60px + 1.5rem) 1.1rem calc(var(--bottom-nav-h) + env(safe-area-inset-bottom) + 1.5rem)}.hero{padding:2rem 0 2.5rem;margin-bottom:2.5rem}.hero-lead{max-width:none}.hero-name{font-size:1.4rem}.hero-sign{margin-top:1.1rem}.hero-eyebrow{padding-left:0;border-left:none;flex-basis:100%}.hero-stats{gap:1.1rem 2rem;margin-top:1.75rem;padding-top:1.25rem}section{margin-bottom:4rem;scroll-margin-top:4.5rem}.section-label{margin-bottom:1.5rem}.about-grid{grid-template-columns:1fr;gap:1.5rem}.about-photo-wrap{width:120px}.about-photo,.about-photo-placeholder{width:120px;height:150px}.log-row>summary{grid-template-columns:minmax(0,1fr) auto;gap:.3rem .75rem;padding:.9rem .3rem}.log-when{grid-column:1 / -1;border-right:none;padding-right:0;margin-right:0;white-space:normal}.log-body{padding:0 .3rem 1.1rem}.pcar{padding-inline:1.1rem}.pcar-frame{max-width:100%}.pcar-nav{margin-top:1.1rem}.mobile-header,.mobile-nav{display:flex}.detail-wrapper{padding:calc(60px + 1rem) 1.1rem calc(var(--bottom-nav-h) + env(safe-area-inset-bottom) + 1.5rem)}}@media(max-width:480px){.hero-name{font-size:1.3rem}.mobile-nav a{font-size:.62rem;letter-spacing:.01em;padding:.4rem .1rem}.mobile-header{padding:0 .6rem 0 1rem}.pcar-dot{width:20px}}.theme-toggle{background:none;border:none;display:inline-flex;align-items:center;justify-content:center;color:var(--text-muted);cursor:pointer;min-width:44px;min-height:44px;border-radius:var(--radius);transition:color var(--transition),background var(--transition)}.theme-toggle:hover{color:var(--accent);background:var(--accent-wash)}.lang-switch{display:inline-flex;align-items:center;gap:.15rem;min-height:44px}.lang-switch button{background:none;border:none;font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.1em;color:var(--text-muted);cursor:pointer;transition:color var(--transition),background var(--transition);line-height:1;padding:.6rem .5rem;min-width:32px;min-height:44px;border-radius:var(--radius)}.lang-switch button:hover,.lang-switch button.active{color:var(--accent);background:var(--accent-wash)}.lang-switch span{color:var(--text-dim);opacity:.5;padding:0 .1rem}.lang-switch span{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-dim);opacity:.5}.detail-wrapper{max-width:800px;margin:0 auto;padding:3rem 2rem 8rem;position:relative;z-index:1}.detail-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:3.5rem}.detail-back{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;color:var(--text-dim);transition:color var(--transition)}.detail-back:hover{color:var(--accent);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:4px}.detail-topbar-actions{display:flex;align-items:center;gap:1rem}.detail-hero{margin-bottom:3.5rem}.detail-meta{display:flex;align-items:center;gap:.9rem;margin-bottom:1rem}.detail-year{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-dim)}.detail-status{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.08em;text-transform:uppercase;padding:.18rem .55rem;border-radius:4px}.detail-status--production{background:var(--signal);color:var(--on-accent);border:1px solid var(--signal)}.detail-status--wip{background:var(--accent-wash);color:var(--accent);border:1px solid var(--accent-line)}.detail-status--mvp,.detail-status--archived{background:var(--surface-sunk);color:var(--text-dim);border:1px solid var(--border)}.detail-title{font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:560;color:var(--text);line-height:1.05;margin-bottom:.75rem;letter-spacing:-.02em;word-spacing:.09em}.detail-tagline{font-size:var(--fs-base);color:var(--text-muted);margin-bottom:1.5rem;line-height:1.65;max-width:600px}.detail-tags{margin-bottom:1.5rem}.detail-links{display:flex;gap:1rem;flex-wrap:wrap}.detail-content{border-top:1px solid var(--border);padding-top:3rem}.detail-section{margin-bottom:3rem}.detail-body{font-size:var(--fs-base);color:var(--text-muted);line-height:1.8;max-width:660px}.detail-challenges{list-style:none;display:flex;flex-direction:column;gap:.9rem}.detail-challenge-item{display:flex;align-items:flex-start;gap:.8rem;font-size:var(--fs-base);color:var(--text-muted);line-height:1.7}.detail-challenge-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);margin-top:.6em;flex-shrink:0}.detail-summary{margin-bottom:2.5rem;padding:1.4rem 1.6rem;border-left:3px solid var(--accent);background:var(--accent-wash);border-radius:0 8px 8px 0}.detail-summary-text{font-size:var(--fs-lg, var(--fs-base));color:var(--text);line-height:1.75;max-width:680px;margin-top:.7rem}.detail-results{list-style:none;display:flex;flex-direction:column;gap:.8rem}.detail-result-item{display:flex;align-items:flex-start;gap:.7rem;font-size:var(--fs-base);color:var(--text);line-height:1.7}.detail-next{margin-top:5rem;padding-top:2rem;border-top:1px solid var(--border);display:flex;justify-content:space-between;gap:1.5rem}.detail-next-link--next{text-align:right;margin-left:auto}.detail-result-check{color:var(--accent);font-weight:700;margin-top:.05em;flex-shrink:0}.detail-testimonial{margin:0;padding:1.4rem 1.6rem;border:1px solid var(--border);border-radius:8px;max-width:680px}.detail-testimonial-quote{font-size:var(--fs-base);color:var(--text);line-height:1.75;font-style:italic}.detail-testimonial-author{margin-top:.9rem;font-family:var(--font-mono);font-size:var(--fs-sm, .85rem);color:var(--text-muted)}.detail-testimonial-role{color:var(--accent)}.carousel{position:relative}.detail-screenshots{display:flex;flex-wrap:nowrap;gap:1.6rem;align-items:flex-start;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scroll-padding:2px;padding-bottom:.7rem;scrollbar-width:thin;scrollbar-color:var(--border) transparent;-webkit-overflow-scrolling:touch}.detail-screenshots::-webkit-scrollbar{height:6px}.detail-screenshots::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.detail-screenshots::-webkit-scrollbar-track{background:transparent}.detail-screenshots:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:4px}.shot{margin:0;display:flex;flex-direction:column;gap:.7rem;flex:0 0 auto;scroll-snap-align:start}.shot--desktop{width:min(440px,80vw)}.shot--mobile{width:200px}.carousel-arrow{position:absolute;top:42%;transform:translateY(-50%);z-index:2;width:40px;height:40px;display:none;align-items:center;justify-content:center;font-size:1.5rem;line-height:1;color:var(--text);background:color-mix(in srgb,var(--surface) 86%,transparent);border:1px solid var(--border);border-radius:50%;cursor:pointer;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);transition:border-color var(--transition),color var(--transition),background var(--transition)}.carousel--scrollable .carousel-arrow{display:flex}.carousel-arrow:hover{border-color:var(--accent);color:var(--accent)}.carousel-arrow--prev{left:-8px}.carousel-arrow--next{right:-8px}.shot-frame{display:block;width:100%;padding:0;background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden;cursor:zoom-in;position:relative;transition:transform var(--transition),border-color var(--transition),box-shadow var(--transition)}.shot-frame:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 14px 34px #00000038}.shot--desktop .shot-chrome{display:block;height:26px;background:var(--surface-sunk);border-bottom:1px solid var(--border)}.shot--desktop .shot-chrome:before{content:"";position:absolute;top:9px;left:12px;width:8px;height:8px;border-radius:50%;background:#ff5f57;box-shadow:14px 0 #febc2e,28px 0 #28c840}.shot--mobile .shot-frame{border-radius:22px;padding:10px 8px;background:var(--surface-sunk)}.shot--mobile .shot-chrome{display:block;width:44px;height:4px;margin:0 auto 8px;border-radius:3px;background:var(--border)}.shot-img{display:block;width:100%;height:auto;object-fit:cover;object-position:top;opacity:0;transition:opacity .5s ease}.shot-img.is-loaded{opacity:1}.shot--desktop .shot-img{aspect-ratio:16 / 10}.shot--mobile .shot-img{aspect-ratio:9 / 19;border-radius:14px}.shot-caption{font-family:var(--font-mono);font-size:var(--fs-xs);color:var(--text-dim);text-align:center;line-height:1.4}.lightbox-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;gap:.5rem;padding:2.5rem 1rem;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);animation:lightbox-in .2s ease}@keyframes lightbox-in{0%{opacity:0}to{opacity:1}}.lightbox-figure{margin:0;display:flex;flex-direction:column;gap:.9rem;max-height:100%;align-items:center}.lightbox-img{display:block;max-width:100%;object-fit:contain;border:1px solid var(--border);border-radius:10px;box-shadow:0 24px 60px #0006;background:var(--surface)}.lightbox-figure--desktop .lightbox-img{max-height:78vh;width:min(1100px,92vw)}.lightbox-figure--mobile .lightbox-img{max-height:82vh}.lightbox-caption{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-muted);text-align:center}.lightbox-counter{color:var(--text-dim)}.lightbox-close,.lightbox-nav{flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:50%;cursor:pointer;transition:border-color var(--transition),color var(--transition),transform var(--transition)}.lightbox-close:hover,.lightbox-nav:hover{border-color:var(--accent);color:var(--accent)}.lightbox-nav{width:44px;height:44px;font-size:1.6rem;line-height:1}.lightbox-close{position:absolute;top:1.1rem;right:1.1rem;width:40px;height:40px;font-size:1rem}.detail-video-wrap{position:relative;width:100%;padding-top:56.25%;border-radius:8px;overflow:hidden;border:1px solid var(--border);background:var(--surface)}.detail-video{position:absolute;inset:0;width:100%;height:100%;border:none}.detail-screenshots-placeholder{padding:3rem;border:1px dashed var(--border);border-radius:6px;text-align:center;font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--text-dim)}.detail-next{margin-top:5rem;padding-top:2rem;border-top:1px solid var(--border)}.detail-next-link{display:flex;flex-direction:column;gap:.3rem}.detail-next-link:hover .detail-next-title{color:var(--accent);text-decoration:underline;text-decoration-thickness:1.5px;text-underline-offset:5px}.detail-next-label{font-family:var(--font-mono);font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim)}.detail-next-title{font-family:var(--font-display);font-size:var(--fs-lg);color:var(--text);transition:color var(--transition)}.detail-not-found{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:70vh;gap:1.5rem;font-family:var(--font-mono);color:var(--text-muted);position:relative;z-index:1}.not-found-wrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;text-align:center;position:relative;z-index:1;padding:2rem}.not-found-code{font-family:var(--font-mono);font-size:6rem;font-weight:600;color:var(--text-dim);line-height:1;margin-bottom:1rem}.not-found-message{font-size:var(--fs-base);color:var(--text-muted);margin-bottom:2rem}.not-found-back{font-family:var(--font-mono);font-size:var(--fs-sm);letter-spacing:.08em;color:var(--accent);border:1px solid var(--accent-line);padding:.55rem 1.2rem;border-radius:var(--radius);transition:background var(--transition),border-color var(--transition);display:inline-block}.not-found-back:hover{background:var(--accent-wash);border-color:var(--accent)}.project-badges{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;margin-top:.7rem}.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.2rem .55rem;border-radius:999px;border:1px solid var(--border);font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.04em;line-height:1.5;color:var(--text-dim);background:transparent}.badge--live{color:var(--on-accent);border-color:var(--signal);background:var(--signal)}.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge--working{color:var(--text-dim);border-color:var(--border);background:var(--surface-sunk)}.badge--wip{color:var(--accent);border-color:var(--accent-line);background:var(--accent-wash)}.badge--code{color:var(--text-muted)}.badge--private,.badge--soon{color:var(--text-dim)}.btn-muted{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem 1.2rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-dim);font-family:var(--font-mono);font-size:var(--fs-sm);letter-spacing:.06em;cursor:default;-webkit-user-select:none;user-select:none}@media(max-width:600px){.detail-wrapper{padding:calc(60px + 1rem) 1.1rem calc(80px + env(safe-area-inset-bottom))}.detail-title{font-size:var(--fs-2xl)}.detail-screenshots{gap:1.1rem}.shot--desktop{width:86vw}.shot--mobile{width:64vw;max-width:230px}.carousel--scrollable .carousel-arrow{display:none}.lightbox-nav{width:38px;height:38px}}@media(prefers-reduced-motion:reduce){.detail-screenshots{scroll-behavior:auto}.shot-img{transition:none}}
