:root{--color-bg:#eeeae2;--color-paper:#f6f4ee;--color-ink:#17150f;--color-ink-soft:#5b554b;--color-rule:#8d7d63;--color-line:#b4a993;--color-accent:#3c4735;--color-accent-strong:#29321f;--color-backdrop:#eeeae2e6;--t-display:clamp(2.4rem, 1.8rem + 2.5vw, 3.6rem);--t-title:clamp(2rem, 1.5rem + 2.5vw, 3.2rem);--t-section:clamp(1.5rem, 1.2rem + 1.4vw, 2rem);--t-item:clamp(1.25rem, 1.05rem + 1vw, 1.7rem);--t-card:1.25rem;--t-wordmark:clamp(1.25rem, .5rem + 3.5vw, 1.55rem);--t-lead:clamp(1.15rem, .95rem + 1vw, 1.55rem);--t-body:clamp(1.05rem, .98rem + .35vw, 1.2rem);--t-small:.98rem;--t-label:.8125rem;--t-ui:.875rem;--t-nav:clamp(.8125rem, .75rem + .35vw, .9375rem);--track-label:.03em;--leading-body:1.55;--leading-tight:1.15;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.25rem;--sp-6:1.5rem;--sp-7:2rem;--sp-8:2.5rem;--flow-xs:clamp(1rem, 2.5vw, 1.75rem);--flow-sm:clamp(1.5rem, 3.5vw, 2.5rem);--flow-md:clamp(1.75rem, 4.5vw, 3rem);--flow-lg:clamp(2.5rem, 6vw, 4rem);--flow-xl:clamp(3rem, 8vw, 6rem);--measure:49ch;--page-max:72rem;--gutter:clamp(1.25rem, 5vw, 3rem);--rule-hair:1px;--touch:44px;--dur-fast:.15s;--dur-base:.25s;--dur-slow:.4s;--dur-image:.3s;--dur-press:.1s;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.65, 0, .35, 1);--shift-reveal:6px;--lift-card:-2px;--zoom-image:1.03;--reveal-step:50ms}@supports (color:light-dark(#000, #fff)){:root{--color-bg:light-dark(#eeeae2,#1d1b16);--color-paper:light-dark(#f6f4ee,#26231d);--color-ink:light-dark(#17150f,#ece6d9);--color-ink-soft:light-dark(#5b554b,#b2a891);--color-rule:light-dark(#8d7d63,#7a6c56);--color-line:light-dark(#b4a993,#4b4436);--color-accent:light-dark(#3c4735,#a9ba95);--color-accent-strong:light-dark(#29321f,#c5d2b6);--color-backdrop:light-dark(#eeeae2e6,#1d1b16e6)}}*,:before,:after{box-sizing:border-box}*{margin:0}dialog{margin:auto}html{color-scheme:light dark;-webkit-text-size-adjust:100%;text-size-adjust:100%}html[data-theme=light]{color-scheme:light}html[data-theme=dark]{color-scheme:dark}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background-color:var(--color-bg);min-height:100vh;color:var(--color-ink);font-family:var(--font-body);font-size:var(--t-body);line-height:var(--leading-body);flex-direction:column;display:flex}img,picture,svg{max-width:100%;height:auto;display:block}button{font:inherit;border-radius:0}[hidden]{display:none!important}h1,h2,h3,h4{font-family:var(--font-display);font-weight:500;line-height:var(--leading-tight);text-wrap:balance}p,li{text-wrap:pretty}[id]{scroll-margin-top:var(--sp-7)}:focus-visible{outline:var(--rule-hair) solid var(--color-ink);outline-offset:3px}main:focus{outline:none}.nowrap{white-space:nowrap}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}main{width:100%;max-width:var(--page-max);padding:var(--flow-md) var(--gutter) var(--flow-xl);flex:1;margin-inline:auto}.page-head{max-width:var(--measure);margin-bottom:var(--flow-md)}.page-head h1{font-size:var(--t-title)}.lead{margin-top:var(--sp-4);font-size:var(--t-lead);color:var(--color-ink-soft)}.updated{margin-top:var(--sp-4);font-family:var(--font-mono);font-size:var(--t-ui);letter-spacing:var(--track-label);color:var(--color-ink-soft)}.block+.block{margin-top:var(--flow-lg)}.block__head{justify-content:space-between;align-items:baseline;gap:var(--sp-3);padding-bottom:var(--sp-3);margin-bottom:var(--sp-5);border-bottom:var(--rule-hair) solid var(--color-rule);flex-wrap:wrap;display:flex}.block__head h2{font-size:var(--t-section)}a{color:var(--color-ink);text-decoration-line:underline;text-decoration-thickness:var(--rule-hair);text-underline-offset:.18em;text-decoration-color:var(--color-rule);transition:color var(--dur-fast) var(--ease-out), text-decoration-color var(--dur-fast) var(--ease-out)}a:focus-visible{color:var(--color-accent);text-decoration-color:currentColor}.link-draw{text-decoration:none;display:inline-block;position:relative}.link-draw:after{content:"";height:var(--rule-hair);transform-origin:0;transition:transform var(--dur-base) var(--ease-out);background-color:currentColor;position:absolute;bottom:-.1em;left:0;right:0;transform:scaleX(0)}.link-draw:focus-visible:after{transform:scaleX(1)}.button{align-items:center;gap:var(--sp-2);min-height:var(--touch);padding:0 var(--sp-4);border:var(--rule-hair) solid var(--color-ink);color:var(--color-ink);font-family:var(--font-mono);font-size:var(--t-ui);letter-spacing:var(--track-label);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out), color var(--dur-fast) var(--ease-out), border-color var(--dur-fast) var(--ease-out);background-color:#0000;font-weight:500;line-height:1;text-decoration:none;display:inline-flex}.button:focus-visible{background-color:var(--color-ink);color:var(--color-bg)}.button[aria-pressed=true]{background-color:var(--color-accent);border-color:var(--color-accent);color:var(--color-paper)}.arrow-ne{transition:transform var(--dur-fast) var(--ease-out);display:inline-block}.button:focus-visible .arrow-ne{transform:translate(2px,-2px)}.tag{border:var(--rule-hair) solid var(--color-rule);font-family:var(--font-mono);font-size:var(--t-label);letter-spacing:var(--track-label);color:var(--color-ink-soft);padding:.15em .5em;line-height:1.4;display:inline-block}.tag--muted{border-style:dashed}.tag--accent{border-color:var(--color-accent);color:var(--color-accent)}.tags{gap:var(--sp-2);flex-wrap:wrap;padding:0;list-style:none;display:flex}.card-grid{gap:var(--sp-6);grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));padding:0;list-style:none;display:grid}.card{background-color:var(--color-paper);border:var(--rule-hair) solid var(--color-rule);height:100%;transition:transform var(--dur-base) var(--ease-out), border-color var(--dur-base) var(--ease-out);flex-direction:column;display:flex;position:relative}.card__media{aspect-ratio:4/3;background-color:var(--color-bg);display:block;overflow:hidden}.card__media img{object-fit:cover;width:100%;height:100%;transition:transform var(--dur-slow) var(--ease-out), opacity var(--dur-image) var(--ease-out)}.card__media--whole img{object-fit:contain;padding:var(--sp-4)}.card__body{gap:var(--sp-2);padding:var(--sp-4);flex-direction:column;display:flex}.card__title{font-size:var(--t-card)}.card__summary{font-size:var(--t-small)}.card__title a{color:inherit;text-decoration:none}.card__link:after{content:"";position:absolute;inset:0}.card__meta{font-family:var(--font-mono);font-size:var(--t-ui);color:var(--color-ink-soft)}.card:has(:focus-visible){border-color:var(--color-ink);transform:translateY(var(--lift-card))}.card:has(:focus-visible) .card__media img{transform:scale(var(--zoom-image))}.entries{gap:var(--flow-sm);max-width:var(--measure);flex-direction:column;padding:0;list-style:none;display:flex}.entry__title{font-size:var(--t-item);transition:color var(--dur-fast) var(--ease-out)}.entry__title a{color:inherit;text-decoration:none}.entry:has(:focus-visible) .entry__title{color:var(--color-accent)}.entry__meta{margin-top:var(--sp-2);font-family:var(--font-mono);font-size:var(--t-ui);color:var(--color-ink-soft)}.entry__summary{margin-top:var(--sp-3)}.entry__block{margin-top:var(--sp-4)}.entry__label{margin-bottom:var(--sp-2);font-family:var(--font-mono);font-size:var(--t-label);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--color-ink-soft)}.entry__block ul:not(.tags){padding-left:1.1em}.prose{max-width:var(--measure)}.prose>*+*{margin-top:var(--sp-4)}.prose h2,.prose h3{margin-top:var(--flow-sm)}.prose ul,.prose ol{padding-left:1.2em}.prose code{font-family:var(--font-mono);font-size:.9em}.meta-list{align-items:baseline;gap:var(--sp-2) var(--sp-5);max-width:var(--measure);padding:var(--sp-4) 0;border-block:var(--rule-hair) solid var(--color-rule);grid-template-columns:max-content 1fr;display:grid}.meta-list dt{font-family:var(--font-mono);font-size:var(--t-ui);color:var(--color-ink-soft)}.pager{justify-content:space-between;align-items:center;gap:var(--sp-4);margin-top:var(--flow-lg);padding-top:var(--sp-4);border-top:var(--rule-hair) solid var(--color-rule);font-family:var(--font-mono);font-size:var(--t-ui);flex-wrap:wrap;display:flex}.pager a{min-height:var(--touch);align-items:center;display:inline-flex}@keyframes reveal{0%{opacity:0;transform:translateY(var(--shift-reveal))}}@keyframes reveal-fade{0%{opacity:0}}html[data-reveal=initial] [data-reveal]:not([data-reveal-state]){animation:reveal var(--dur-slow) var(--ease-out) both;animation-delay:calc(var(--reveal-i,0) * var(--reveal-step))}[data-reveal-state=pending]{opacity:0;transform:translateY(var(--shift-reveal))}[data-reveal-state=shown]{opacity:1;transition:opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out);transform:none}img[data-fade]{opacity:0;transition:opacity var(--dur-image) var(--ease-out)}img[data-fade][data-loaded]{opacity:1}::view-transition-old(root),::view-transition-new(root){animation-duration:var(--dur-base);animation-timing-function:var(--ease-out)}::view-transition-old(site-header){display:none}::view-transition-new(site-header){animation:none}::view-transition-group(site-nav-indicator){animation-duration:var(--dur-base);animation-timing-function:var(--ease-out)}.project-cover,[data-project-media]{view-transition-class:portada}::view-transition-group(*.portada){animation-duration:var(--dur-base);animation-timing-function:var(--ease-out)}::view-transition-old(*.portada),::view-transition-new(*.portada){object-fit:cover;height:100%;overflow:clip}html:is([data-lang-switch],[data-theme-switch]) .site-header,html:is([data-lang-switch],[data-theme-switch]) .site-nav__indicator,html:is([data-lang-switch],[data-theme-switch]) .project-cover,html:is([data-lang-switch],[data-theme-switch]) [data-project-media]{view-transition-name:none!important}html[data-theme-switch]::view-transition{background-color:var(--color-rule)}html[data-theme-switch] :not(.theme-toggle__track,.theme-toggle__knob){transition:none!important}html:is([data-theme-switch=night],[data-theme-switch=day])::view-transition-old(root),html:is([data-theme-switch=night],[data-theme-switch=day])::view-transition-new(root){mix-blend-mode:normal;animation-duration:var(--dur-slow);animation-timing-function:var(--ease-in-out);animation-fill-mode:both}html[data-theme-switch=night]::view-transition-new(root){animation-name:noche-nueva}html[data-theme-switch=night]::view-transition-old(root){animation-name:noche-vieja}html[data-theme-switch=day]::view-transition-new(root){animation-name:dia-nuevo}html[data-theme-switch=day]::view-transition-old(root){animation-name:dia-viejo}@keyframes noche-nueva{0%{clip-path:inset(0 0 100%)}to{clip-path:inset(0)}}@keyframes noche-vieja{0%{clip-path:inset(var(--rule-hair) 0 0 0)}to{clip-path:inset(calc(100% + var(--rule-hair)) 0 0 0)}}@keyframes dia-nuevo{0%{clip-path:inset(100% 0 0)}to{clip-path:inset(0)}}@keyframes dia-viejo{0%{clip-path:inset(0 0 var(--rule-hair) 0)}to{clip-path:inset(0 0 calc(100% + var(--rule-hair)) 0)}}@media (prefers-color-scheme:dark){html:not([data-theme=light]) :is(.cert .card__media img,.cert-dialog img){filter:brightness(.88)}}html[data-theme=dark] :is(.cert .card__media img,.cert-dialog img){filter:brightness(.88)}@media print{html,html[data-theme]{color-scheme:light}[data-reveal-state=pending],img[data-fade]{opacity:1;transform:none}}@media (hover:hover){a:hover{color:var(--color-accent);text-decoration-color:currentColor}.link-draw:hover:after{transform:scaleX(1)}.button:hover{background-color:var(--color-ink);color:var(--color-bg)}.button:hover .arrow-ne{transform:translate(2px,-2px)}.button[aria-pressed=true]:hover{background-color:var(--color-accent-strong);border-color:var(--color-accent-strong);color:var(--color-paper)}.card:hover{border-color:var(--color-ink);transform:translateY(var(--lift-card))}.card:hover .card__media img{transform:scale(var(--zoom-image))}.entry:hover .entry__title{color:var(--color-accent)}}@media (hover:none){a:active,button:active{opacity:.7;transition:opacity var(--dur-press) linear}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.card:hover,.card:has(:focus-visible),.card:hover .card__media img,.card:has(:focus-visible) .card__media img,.button:hover .arrow-ne,.button:focus-visible .arrow-ne{transform:none}.link-draw:after{opacity:0;transition:opacity var(--dur-fast) linear;transform:none}.link-draw:hover:after,.link-draw:focus-visible:after{opacity:1}html[data-reveal=initial] [data-reveal]:not([data-reveal-state]){animation-name:reveal-fade}[data-reveal-state=pending],[data-reveal-state=shown]{transform:none}}
