:root{--bg:#faf6f0;--surface:#fffdf9;--surface-2:#f3ede4;--text:#2c2721;--text-muted:#6e675d;--border:#e6ded2;--border-strong:#d5cabb;--accent:#a05c3b;--accent-hover:#8a4c2f;--accent-soft:#f2e4da;--focus:#a05c3b;--shadow:0 1px 3px #3c302312, 0 4px 16px #3c30230f;--shadow-lg:0 4px 12px #3c30231a, 0 12px 40px #3c30231f;--radius:10px;--radius-sm:6px;--content-width:1080px;--text-width:46rem;--header-height:3.5rem;--font-sans:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;color-scheme:light}:root[data-theme=dark]{--bg:#211d19;--surface:#292420;--surface-2:#322c26;--text:#ece6dd;--text-muted:#a89d8f;--border:#3b342c;--border-strong:#4d443a;--accent:#d09a78;--accent-hover:#dfae90;--accent-soft:#3a2f27;--focus:#d09a78;--shadow:0 1px 3px #0000004d, 0 4px 16px #00000040;--shadow-lg:0 4px 12px #0006, 0 12px 40px #0006;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:1rem;line-height:1.65}img,video{max-width:100%;height:auto;display:block}a{color:var(--accent);text-decoration:none;transition:color .15s}a:hover{color:var(--accent-hover);text-underline-offset:3px;text-decoration:underline}h1,h2,h3{letter-spacing:-.015em;text-wrap:balance;margin:0 0 .6em;font-weight:700;line-height:1.25}h1{font-size:clamp(1.7rem,4vw,2.4rem)}h2{font-size:clamp(1.3rem,3vw,1.7rem)}h3{font-size:clamp(1.1rem,2.2vw,1.25rem)}p{margin:0 0 1em}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:2px}.container{max-width:var(--content-width);margin-inline:auto;padding-inline:clamp(1rem,4vw,2rem)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{background:var(--surface);color:var(--text);z-index:100;border-radius:0 0 var(--radius-sm) 0;padding:.5rem 1rem;position:absolute;top:0;left:-999px}.skip-link:focus{left:0}.btn{border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font:inherit;cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:.5rem;padding:.55rem 1.1rem;font-size:.95rem;font-weight:600;line-height:1.2;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn svg{flex-shrink:0;display:block}.btn:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff8f2}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover);color:#fff8f2}:root[data-theme=dark] .btn-primary{color:#241b14}.site-header{z-index:50;background:color-mix(in srgb, var(--bg) 88%, transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0}.site-header .inner{height:var(--header-height);align-items:center;gap:1rem;display:flex}.wordmark{letter-spacing:.01em;color:var(--text);font-size:1.15rem;font-weight:700}.wordmark:hover{color:var(--accent);text-decoration:none}.site-nav{align-items:center;gap:.25rem;margin-left:auto;display:flex}.site-nav a{height:2.1rem;color:var(--text-muted);border-radius:var(--radius-sm);align-items:center;padding:0 .7rem;font-weight:500;line-height:1;display:inline-flex}.site-nav a:hover{color:var(--text);background:var(--surface-2);text-decoration:none}.site-nav a[aria-current=page]{color:var(--text);font-weight:600}.icon-btn{border-radius:var(--radius-sm);width:2.1rem;height:2.1rem;color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;display:inline-flex}.icon-btn:hover{color:var(--text);background:var(--surface-2)}.lang-switch{position:relative}.lang-switch summary{cursor:pointer;border-radius:var(--radius-sm);height:2.1rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;align-items:center;padding:0 .6rem;font-size:.9rem;font-weight:600;line-height:1;list-style:none;display:inline-flex}.lang-switch summary::-webkit-details-marker{display:none}.lang-switch summary:hover{color:var(--text);background:var(--surface-2)}.lang-switch[open] summary{color:var(--text)}.lang-menu{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow);flex-direction:column;min-width:8rem;padding:.25rem;display:flex;position:absolute;top:calc(100% + .35rem);right:0}.lang-menu a{border-radius:var(--radius-sm);color:var(--text);padding:.4rem .7rem;font-size:.95rem}.lang-menu a:hover{background:var(--surface-2);text-decoration:none}.lang-menu a[aria-current=true]{color:var(--accent);font-weight:700}.intro{grid-template-columns:1fr minmax(180px,260px);align-items:center;gap:clamp(1.5rem,5vw,3.5rem);padding-block:clamp(2rem,6vw,4.5rem) clamp(2rem,5vw,3.5rem);display:grid}.intro-portrait img{border-radius:var(--radius);box-shadow:var(--shadow);aspect-ratio:1;object-fit:cover;width:100%}.intro .handle{color:var(--text-muted);letter-spacing:.02em;margin-bottom:.35rem;font-size:.95rem;font-weight:600}.intro .role{color:var(--accent);margin-bottom:1rem;font-weight:600}.intro-text{max-width:38rem;color:var(--text)}.intro-actions{flex-wrap:wrap;gap:.6rem;margin-top:1.25rem;display:flex}@media (width<=640px){.intro{grid-template-columns:1fr}.intro-portrait{order:-1;max-width:220px}}.section{padding-block:clamp(1.5rem,4vw,3rem)}.section-title{align-items:baseline;gap:1rem;margin-bottom:1.25rem;display:flex}.section-title h2{margin:0}.section-title .more{color:var(--text-muted);margin-left:auto;font-size:.95rem}.bio{max-width:var(--text-width)}.work-grid{grid-template-columns:repeat(3,1fr);gap:clamp(1rem,2.5vw,1.75rem);margin:0;padding:0;list-style:none;display:grid}@media (width<=900px){.work-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=540px){.work-grid{grid-template-columns:1fr}}.project-card{color:var(--text);display:block}.project-card:hover{color:var(--text);text-decoration:none}.project-card .cover{aspect-ratio:1;border-radius:var(--radius);background:var(--surface-2);border:1px solid var(--border);display:block;position:relative;overflow:hidden}.project-card .cover picture{width:100%;height:100%;display:block}.project-card .cover img{object-fit:cover;width:100%;height:100%;transition:transform .35s}@media (hover:hover) and (prefers-reduced-motion:no-preference){.project-card:hover .cover img{transform:scale(1.025)}}.project-card .card-title{margin:.7rem 0 .15rem;font-size:1.02rem;font-weight:600;line-height:1.35;display:block}.project-card .card-tags{display:flex}.card-tags{flex-wrap:wrap;gap:.35rem;margin-top:.35rem;display:flex}.tag-chip{color:var(--text-muted);background:var(--surface-2);border:1px solid var(--border);white-space:nowrap;border-radius:999px;padding:.1rem .6rem;font-size:.78rem}.locked-card .cover{background:radial-gradient(ellipse 90% 70% at 30% 20%, var(--accent-soft), transparent 60%), radial-gradient(ellipse 80% 90% at 80% 85%, var(--surface-2), transparent 65%), var(--surface);filter:none;place-items:center;display:grid}.locked-card .lock-badge{background:var(--surface);border:1px solid var(--border-strong);width:3rem;height:3rem;color:var(--text-muted);box-shadow:var(--shadow);border-radius:50%;place-items:center;display:grid}.locked-card .card-title{color:var(--text-muted);font-weight:600}.locked-card{cursor:pointer;text-align:left;font:inherit;background:0 0;border:0;width:100%;padding:0}.filters{flex-wrap:wrap;align-items:center;gap:1rem 2rem;margin-bottom:1.75rem;display:flex}.filter-group{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.filter-group .group-label{color:var(--text-muted);margin-right:.25rem;font-size:.85rem;font-weight:600}.filter-chip{font:inherit;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-muted);cursor:pointer;border-radius:999px;align-items:center;padding:.3rem .8rem;font-size:.88rem;line-height:1.3;transition:background .15s,color .15s,border-color .15s;display:inline-flex}.filter-chip:hover{color:var(--text)}.filter-chip[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff8f2}:root[data-theme=dark] .filter-chip[aria-pressed=true]{color:#241b14}.filters .unlock-area{margin-left:auto}.project-header{max-width:var(--text-width);margin-inline:auto;padding-block:clamp(1.5rem,4vw,3rem) 1rem}.project-meta{white-space:pre-line;color:var(--text-muted);margin:.75rem 0 0;font-size:.95rem}.project-blocks{flex-direction:column;padding-block:1rem clamp(2rem,5vw,3.5rem);display:flex}.block{width:100%;margin-inline:auto}.block-narrow{max-width:36rem}.block-standard{max-width:var(--text-width)}.block-wide{max-width:60rem}.block-full{max-width:var(--content-width)}.block figure{margin:0}.block img{border-radius:var(--radius);width:100%}.block video{border-radius:var(--radius);background:#000;width:100%}.block figcaption{color:var(--text-muted);margin-top:.5rem;font-size:.9rem}.block-image button.zoomable{cursor:zoom-in;border-radius:var(--radius);background:0 0;border:0;width:100%;padding:0;display:block}.project-nav{border-top:1px solid var(--border);justify-content:space-between;gap:1rem;padding-block:1.5rem 2.5rem;display:flex}.project-nav a{color:var(--text-muted);max-width:45%}.project-nav a:hover{color:var(--text)}.project-nav .dir{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:.8rem;display:block}.project-nav .title{font-weight:600}.project-nav .next{text-align:right;margin-left:auto}.site-footer{border-top:1px solid var(--border);color:var(--text-muted);margin-top:clamp(2rem,5vw,4rem);padding-block:2rem 2.5rem;font-size:.95rem}.contact-links{flex-wrap:wrap;gap:.75rem 1.25rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.contact-links a{color:var(--text);align-items:center;gap:.45rem;font-weight:500;line-height:1.2;display:inline-flex}.contact-links svg{color:var(--text-muted);flex-shrink:0;display:block}dialog{background:0 0;border:none;max-width:100vw;max-height:100vh;padding:0}dialog::backdrop{backdrop-filter:blur(3px);background:#18120c8c}.modal-card{background:var(--surface);color:var(--text);border-radius:var(--radius);border:1px solid var(--border);box-shadow:var(--shadow-lg);width:min(26rem,100vw - 2rem);padding:1.75rem}.modal-card h2{margin-bottom:.5rem;font-size:1.2rem}.modal-card .hint{color:var(--text-muted);font-size:.92rem}.modal-card form{flex-direction:column;gap:.75rem;margin-top:1rem;display:flex}.modal-card input[type=password]{font:inherit;border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--bg);color:var(--text);padding:.55rem .8rem}.modal-card .error{color:#b3413a;margin:0;font-size:.9rem}:root[data-theme=dark] .modal-card .error{color:#e08a84}.modal-actions{justify-content:flex-end;gap:.6rem;display:flex}.lightbox{width:100vw;height:100vh}.lightbox[open]{place-items:center;display:grid}.lightbox img{object-fit:contain;user-select:none;width:auto;max-width:calc(100vw - 2rem);height:auto;max-height:calc(100vh - 6rem)}.lightbox .lb-caption{color:#f5efe8;text-align:center;text-shadow:0 1px 4px #000000b3;max-width:min(60rem,100vw - 6rem);font-size:.9rem;position:fixed;bottom:1rem;left:50%;transform:translate(-50%)}.lightbox .lb-counter{color:#f5efe8;text-shadow:0 1px 4px #000000b3;font-size:.9rem;position:fixed;top:1rem;left:1.25rem}.lightbox .lb-btn{color:#f5efe8;cursor:pointer;background:#1e18128c;border:none;border-radius:50%;place-items:center;width:2.75rem;height:2.75rem;transition:background .15s;display:grid;position:fixed}.lightbox .lb-btn:hover{background:#1e1812cc}.lightbox .lb-close{top:1rem;right:1.25rem}.lightbox .lb-prev{top:50%;left:1.25rem;transform:translateY(-50%)}.lightbox .lb-next{top:50%;right:1.25rem;transform:translateY(-50%)}@media (width<=640px){.lightbox .lb-prev,.lightbox .lb-next{top:auto;bottom:3.5rem;transform:none}}.rich-text h2,.rich-text h3{margin-top:1.4em}.rich-text blockquote{border-left:3px solid var(--accent);color:var(--text-muted);margin:1.25em 0;padding:.25em 0 .25em 1.1em}.rich-text ul,.rich-text ol{margin:0 0 1em;padding-left:1.4em}.center-page{text-align:center;place-items:center;min-height:55vh;padding-block:3rem;display:grid}:root[data-theme=light] .icon-moon[data-astro-cid-nen7h5rs],:root[data-theme=dark] .icon-sun[data-astro-cid-nen7h5rs]{display:none}
