@import "https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,500&family=Inter:wght@400;500;600&family=JetBrains+Mono:wght@400;500&display=swap";.lang-switch{font-family:var(--font-mono);letter-spacing:.05em;flex-shrink:0;align-items:center;gap:5px;font-size:.7rem;display:flex}.lang-switch__btn{color:var(--ink-soft);background:0 0;border:none;padding:2px;transition:color .2s}.lang-switch__btn:hover{color:var(--ink)}.lang-switch__btn--active{color:var(--ink);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}.lang-switch__sep{color:var(--line)}.sidebar{border-right:1px solid var(--line);background:var(--bg);flex-direction:column;flex-shrink:0;width:300px;height:100vh;padding:44px 32px 28px;display:flex;position:sticky;top:0;overflow-y:auto}.sidebar__brand{margin-bottom:52px;display:block}.sidebar__logo{width:100%;max-width:260px;height:auto;display:block}.sidebar__nav{flex-direction:column;gap:4px;display:flex}.sidebar__link{font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);border-radius:var(--radius);align-items:center;gap:10px;padding:10px 6px;font-size:.8rem;transition:color .2s,transform .2s;display:flex}.sidebar__dot{background:var(--card-accent,var(--ink-soft));border-radius:50%;width:7px;height:7px;transition:transform .2s}.sidebar__link:hover{color:var(--ink);transform:translate(3px)}.sidebar__link--active{color:var(--ink)}.sidebar__link--active .sidebar__dot{transform:scale(1.35)}.sidebar__divider{background:var(--line);height:1px;margin:16px 6px}.sidebar__socials{gap:16px;margin-top:auto;padding-top:28px;display:flex}.sidebar__socials a{color:var(--ink-soft);transition:color .2s,transform .2s}.sidebar__socials a:hover{color:var(--accent);transform:translateY(-2px)}.sidebar__socials svg{width:19px;height:19px}.sidebar__bottom-row{justify-content:space-between;align-items:center;gap:10px;margin:12px 6px 0;display:flex}.sidebar__copy{font-family:var(--font-mono);color:var(--ink-soft);margin:0;font-size:.68rem}.sidebar__toggle,.sidebar__scrim{display:none}@media (width<=860px){.sidebar{z-index:60;width:min(78vw,300px);transition:transform .3s;position:fixed;top:0;left:0;transform:translate(-100%);box-shadow:20px 0 40px #1c1a171f}.sidebar--open{transform:translate(0)}.sidebar__toggle{z-index:70;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;justify-content:center;align-items:center;gap:5px;width:42px;height:42px;display:flex;position:fixed;top:18px;left:18px}.sidebar__toggle span{background:var(--ink);width:18px;height:2px;transition:transform .2s,opacity .2s;display:block}.sidebar__scrim{z-index:55;background:#1c1a1759;display:block;position:fixed;inset:0}}.card{text-align:left;background:0 0;border:none;width:100%;padding:0;display:block}.card__frame{border-radius:var(--radius);border-top:3px solid var(--card-accent);background:var(--bg-soft);transition:transform .4s cubic-bezier(.2,.7,.3,1),box-shadow .4s;display:block;position:relative;overflow:hidden}.card__frame img{width:100%;height:auto;display:block}.card__placeholder{aspect-ratio:4/5;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);justify-content:center;align-items:center;font-size:.75rem;display:flex}.card__overlay{opacity:0;background:linear-gradient(#0000 45%,#1c1a1799);align-items:flex-end;padding:16px;transition:opacity .3s;display:flex;position:absolute;inset:0}.card:hover .card__overlay,.card:focus-visible .card__overlay{opacity:1}.card__title{font-family:var(--font-display);color:#fdfcfa;font-size:.95rem}.card:hover .card__frame,.card:focus-visible .card__frame{transform:translateY(-4px);box-shadow:0 20px 32px -18px #1c1a174d}.masonry{column-count:4;column-gap:18px}.masonry__item{break-inside:avoid;margin-bottom:18px}@media (width<=1200px){.masonry{column-count:3}}@media (width<=760px){.masonry{column-count:2;column-gap:12px}.masonry__item{margin-bottom:12px}}@media (width<=480px){.masonry{column-count:1}}.lightbox{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1c1a17c7;justify-content:center;align-items:center;padding:20px;animation:.25s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.lightbox__panel{border-radius:var(--radius);width:94vw;max-width:1400px;height:92vh;animation:.3s cubic-bezier(.2,.7,.3,1) pop;position:relative;overflow:hidden}@keyframes pop{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.lightbox__close{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:#fff;z-index:2;background:#1c1a1799;border:none;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;font-size:1.5rem;line-height:1;transition:background .2s,transform .2s;display:flex;position:absolute;top:14px;right:14px}.lightbox__close:hover{background:var(--ink);transform:scale(1.06)}.lightbox__nav{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);color:#fff;z-index:2;background:#1c1a1780;border:none;border-radius:50%;justify-content:center;align-items:center;width:46px;height:46px;font-size:2rem;line-height:1;transition:background .2s,transform .2s;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.lightbox__nav:hover{background:var(--ink);transform:translateY(-50%)scale(1.08)}.lightbox__nav--prev{left:14px}.lightbox__nav--next{right:14px}@media (width<=640px){.lightbox__nav{width:38px;height:38px;font-size:1.6rem}}.lightbox__image{background:var(--bg-soft);border-top:4px solid var(--card-accent);cursor:zoom-in;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative;overflow:hidden}.lightbox__image img{object-fit:contain;width:100%;height:100%;transition:transform .2s}.lightbox__image--zoomed{cursor:zoom-out;justify-content:flex-start;align-items:flex-start;overflow:auto}.lightbox__image--zoomed img{object-fit:cover;width:auto;min-width:100%;max-width:none;height:auto;min-height:100%}.lightbox__placeholder{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);justify-content:center;align-items:center;font-size:.85rem;display:flex;position:absolute;inset:0}.home__eyebrow{margin:0 0 26px}.gallery__eyebrow{align-items:center;gap:8px;margin:0 0 26px;display:inline-flex}.gallery__dot{background:var(--card-accent);border-radius:50%;width:8px;height:8px}.about__hero{align-items:flex-start;gap:40px;margin-bottom:48px;display:flex}.about__photo{object-fit:cover;border:3px solid var(--paper);width:160px;height:160px;box-shadow:0 0 0 1px var(--line), 0 10px 24px #1c1a171a;border-radius:50%;flex-shrink:0}.about__intro{max-width:640px}.about__title{font-family:var(--font-display);margin:10px 0 20px;font-size:clamp(2.1rem,4.5vw,3rem);font-weight:500}.about__lede{color:var(--ink-soft);font-size:1.05rem;line-height:1.6}@media (width<=640px){.about__hero{text-align:center;flex-direction:column;align-items:center;gap:24px}.about__photo{width:130px;height:130px}}.about__facts{flex-wrap:wrap;gap:16px;margin:0 0 64px;padding:0;display:flex}.about__fact{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);min-width:150px;padding:14px 22px}.about__fact dt{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:4px;font-size:.72rem}.about__fact dd{font-family:var(--font-display);margin:0;font-size:1.02rem}.about__cv{max-width:720px}.cv__section{margin-bottom:52px}.cv__heading{font-family:var(--font-display);border-bottom:1px solid var(--line);margin:0 0 18px;padding-bottom:10px;font-size:1.35rem;font-weight:500}.cv__list{border-left:1px solid var(--line);margin:0;padding:0;list-style:none}.cv__item{padding:0 0 20px 24px;position:relative}.cv__item:last-child{padding-bottom:0}.cv__item:before{content:"";background:var(--accent);border-radius:50%;width:9px;height:9px;position:absolute;top:6px;left:-5px}.cv__year{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--accent);margin-bottom:3px;font-size:.75rem;display:block}.cv__text{color:var(--ink-soft);overflow-wrap:break-word;line-height:1.55}.cv__link{color:var(--accent);text-underline-offset:3px;text-decoration:underline}.cv__link:hover{opacity:.75}.about__outro{max-width:720px;margin-top:24px;overflow:hidden}.about__outro-tilt{background:var(--bg-soft);border:1px dashed var(--accent-soft);border-radius:var(--radius);padding:28px 30px;transform:rotate(-.4deg)}.about__outro p{font-family:var(--font-display);overflow-wrap:break-word;margin:0;font-size:1.1rem;line-height:1.55}.about__outro-link{color:var(--accent);text-underline-offset:4px;font-weight:600;text-decoration:underline}.about__outro-link:hover{opacity:.75}@media (width<=640px){.about__outro-tilt{padding:22px 20px;transform:none}}.contact__head{max-width:560px;margin-bottom:40px}.contact__title{font-family:var(--font-display);margin:10px 0 12px;font-size:clamp(2.1rem,4.5vw,2.8rem);font-weight:500}.contact__lede{color:var(--ink-soft)}.contact__grid{grid-template-columns:1.4fr 1fr;gap:40px;display:grid}@media (width<=800px){.contact__grid{grid-template-columns:1fr}}.contact__form{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:18px;padding:28px;display:flex}@media (width<=480px){.contact__form{padding:22px 18px}}.field{font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;color:var(--ink-soft);flex-direction:column;gap:6px;font-size:.75rem;display:flex}.field input,.field textarea{width:100%;font-family:var(--font-body);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);resize:vertical;padding:11px 13px;font-size:.95rem;transition:border-color .2s}.field input:focus,.field textarea:focus{border-color:var(--accent);outline:none}.contact__form .btn{border:none;align-self:flex-start}.contact__success{font-family:var(--font-display);color:var(--accent);font-size:1.1rem}.contact__aside{flex-direction:column;gap:20px;display:flex}.contact__card{background:var(--bg-soft);border-radius:var(--radius);padding:22px 24px}.contact__email{font-family:var(--font-display);margin-top:6px;font-size:1.1rem;transition:color .2s;display:block}.contact__email:hover{color:var(--accent)}.contact__socials{font-family:var(--font-mono);flex-direction:column;gap:8px;margin-top:8px;font-size:.85rem;display:flex}.contact__socials a:hover{color:var(--accent)}:root{--bg:#faf7f1;--bg-soft:#f3efe6;--paper:#fff;--ink:#1c1a17;--ink-soft:#6b655c;--line:#e4ddd0;--accent:#2c4a52;--accent-soft:#cfdbdb;--cat-1:#c9502f;--cat-2:#3d6b4f;--cat-3:#a8425c;--cat-4:#c99a2e;--cat-5:#345a8a;--font-display:"Fraunces", serif;--font-body:"Inter", sans-serif;--font-mono:"JetBrains Mono", monospace;--radius:2px}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}body{background:var(--bg);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0}#root{min-height:100vh}.app-shell{min-height:100vh;display:flex}.content{flex:1;min-width:0;padding:48px 44px 64px}@media (width<=860px){.content{padding:84px 20px 60px}}a{color:inherit;text-decoration:none}button{cursor:pointer;font-family:inherit}img{max-width:100%;display:block}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.btn{min-height:44px;font-family:var(--font-mono);letter-spacing:.05em;text-transform:uppercase;border-radius:var(--radius);border:1px solid var(--line);background:var(--paper);color:var(--ink);justify-content:center;align-items:center;gap:8px;padding:13px 26px;font-size:.8rem;transition:transform .2s,background .2s,color .2s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--paper)}.btn--primary:hover{background:var(--ink);border-color:var(--ink)}@media (width<=640px){.btn{width:100%}}.eyebrow{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-size:.72rem}.container{width:100%;max-width:1180px;margin:0 auto;padding:0 32px}@media (width<=640px){.container{padding:0 20px}}main{flex:1}.reveal{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(18px)}.reveal.is-visible{opacity:1;transform:translateY(0)}
