@import url('https://fonts.googleapis.com/css2?family=Manrope:wght@300;400;500;600&display=swap');
@import url('https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick.css');
@import url('https://cdn.jsdelivr.net/npm/slick-carousel@1.8.1/slick/slick-theme.css');
/* 00. Foundations */
:root {
    --black:#0a0a0a;
    --white:#f2f1ee;
    --muted:#aaa8a4;
    --line:#323232;
    --accent:#ff000d;
    --section-dark-background:#080909;
    --section-dark-text:#ecebe8;
    --section-dark-muted:#b8b7b3;
    --section-dark-subtle:#8d8d8a;
    --section-dark-border:#2c2d2b;
    --section-light-background:var(--white);
    --section-light-text:#171717;
    --section-light-muted:#76736e;
    --section-light-subtle:#777;
    --section-light-border:#cbc9c5;
}

* {
    box-sizing:border-box;
}

html {
    scroll-behavior:smooth;
}

body {
    margin:0;
    background:var(--black);
    color:var(--white);
    font:14px/1.6 Manrope, Arial, sans-serif;
}

a {
    color:inherit;
    text-decoration:none;
}

a[href],
button:not(:disabled),
input[type="file"],
input[type="radio"],
input[type="checkbox"],
label:has(input[type="file"]),
label:has(input[type="radio"]),
label:has(input[type="checkbox"]),
select {
    cursor:pointer;
}

button, input, textarea, select {
    font:inherit;
}

button {
    justify-self:start;
    padding:12px 17px;
    border:1px solid currentColor;
    background:transparent;
    color:inherit;
    cursor:pointer;
}

input, textarea, select {
    padding:9px 0;
    border:0;
    border-bottom:1px solid currentColor;
    outline:0;
    background:transparent;
    color:inherit;
}

/* 01. Shared shell */
.page {
    min-height:100vh;
    margin-left:190px;
}

.menu-button {
    display:none;
}

.menu-backdrop {
    display:none;
}

.mobile-logo {
    display:none;
}

.site-header {
    position:absolute;
    top:24px;
    right:28px;
    z-index:10;
}

.language-switch {
    position:absolute;
    top:0;
    right:0;
    display:flex;
    align-items:center;
    gap:6px;
    margin:0;
    padding:7px 9px;
    background:rgb(5 5 5 / .72);
    color:var(--white);
    font-size:11px;
    letter-spacing:.12em;
}

.language-switch a {
    opacity:.45;
}

.language-switch a.active {
    opacity:1;
    text-decoration:underline;
}

.language-switch:hover {
    color:var(--accent);
}

.sidebar {
    position:fixed;
    inset:0 auto 0 0;
    z-index:4;
    display:flex;
    flex-direction:column;
    width:190px;
    padding:34px 28px;
    border-right:1px solid #292929;
    background:#050505;
    color:var(--white);
}

.logo {
    display:inline-block;
    width:100%;
    max-width:107.2px;
    line-height:0;
}

.logo img {
    display:block;
    width:100%;
    height:auto;
}

.logo .logo-on-light {
    display:none;
}

.sidebar nav {
    display:grid;
    gap:16px;
    margin-top:83px;
    font-size:11px;
    text-transform:uppercase;
}

.sidebar nav a small {
    display:inline-block;
    width:30px;
}

.sidebar nav a.active {
    color:var(--accent);
    font-weight:600;
}

.sidebar nav a:hover {
    color:var(--accent);
}

.sidebar nav a.active::after {
    margin-left:10px;
    content:'●';
    font-size:8px;
}

.sidebar-bottom {
    margin-top:auto;
    font-size:11px;
}

.sidebar-bottom span,
.sidebar-bottom small {
    color:var(--muted);
}

.sidebar-bottom small {
    white-space:nowrap;
}

.sidebar-bottom p {
    margin:38px 0 24px;
}

.sidebar-socials {
    display:flex;
    flex-wrap:wrap;
    gap:10px 14px;
}

.sidebar-socials a {
    display:inline-block;
    line-height:0;
}

.sidebar-socials img {
    display:block;
    width:18px;
    height:18px;
    object-fit:contain;
    filter:invert(1);
}

.sidebar-socials a:hover img {
    filter:invert(13%) sepia(99%) saturate(7068%) hue-rotate(357deg) brightness(101%) contrast(126%);
}

.site-footer {
    margin:0;
    padding:0;
}

.back-to-top {
    position:fixed;
    right:30px;
    bottom:28px;
    z-index:8;
    display:grid;
    width:42px;
    height:42px;
    padding:0;
    place-items:center;
    border:1px solid rgb(242 241 238 / .7);
    border-radius:50%;
    background:rgb(5 5 5 / .5);
    color:var(--white);
    font-size:23px;
    line-height:1;
    opacity:0;
    pointer-events:none;
    transition:opacity .2s, background .2s, color .2s, border-width .2s;
}

.back-to-top.is-visible {
    opacity:1;
    pointer-events:auto;
}

.back-to-top:hover {
    border-color:var(--accent);
    border-width:2.375px;
    background:rgb(5 5 5 / .8);
    color:var(--accent);
    font-weight:900;
    -webkit-text-stroke:1.375px currentColor;
}

/* 02. Shared type and links */
.eyebrow {
    color:#aaa;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
}

.rule {
    display:block;
    width:28px;
    margin:17px 0;
    border-top:1px solid currentColor;
}

.text-link {
    display:inline-block;
    margin-top:20px;
    padding-bottom:5px;
    border-bottom:1px solid #777;
    font-size:10px;
    letter-spacing:.08em;
    text-transform:uppercase;
}

.text-link b {
    margin-left:20px;
    font-size:19px;
    font-weight:300;
}

.text-link:hover {
    font-weight:800;
    -webkit-text-stroke:.2px currentColor;
}

.text-link:hover b {
    font-weight:900;
    -webkit-text-stroke:1px currentColor;
}

.text-link.view-link {
    font-size:13px;
}

.link-arrow {
    width:20px;
    height:20px;
    margin-left:12px;
    vertical-align:middle;
    filter:drop-shadow(0 0 .7px currentColor);
}

.hero .link-arrow,
.content-section:not(.light) .link-arrow {
    filter:invert(1) drop-shadow(0 0 .7px #fff);
}

.content-section {
    --section-background:var(--section-dark-background);
    --section-text:var(--section-dark-text);
    --section-muted:var(--section-dark-muted);
    --section-subtle:var(--section-dark-subtle);
    --section-border:var(--section-dark-border);
    --section-icon-filter:invert(1) grayscale(1);
    --section-decoration-filter:invert(1);
    background:var(--section-background);
    color:var(--section-text);
}

.content-section.light {
    --section-background:var(--section-light-background);
    --section-text:var(--section-light-text);
    --section-muted:var(--section-light-muted);
    --section-subtle:var(--section-light-subtle);
    --section-border:var(--section-light-border);
    --section-icon-filter:none;
    --section-decoration-filter:none;
}

.content-section .section-number {
    margin:0;
    color:var(--section-subtle);
    font-size:14px;
}

.content-section .section-title {
    margin:8px 0 0;
    font-size:29px;
    font-weight:300;
    line-height:1.05;
    text-transform:uppercase;
}

.content-section .rule {
    color:var(--section-subtle);
}

.content-section .section-muted {
    color:var(--section-muted);
}

.content-section .section-label {
    color:var(--section-text);
}

.content-section .text-link {
    border-bottom-color:var(--section-subtle);
    color:var(--section-text);
}

/* 03. Home — hero */
.hero {
    position:relative;
    isolation:isolate;
    min-height:720px;
    background:#050505;
}

.hero-copy {
    position:relative;
    z-index:1;
    min-height:720px;
    padding:11vw 8vw;
}

.hero h1,
.section-header h1 {
    margin:22px 0;
    font-size:clamp(48px, 6vw, 92px);
    font-weight:300;
    letter-spacing:-.06em;
    line-height:.94;
}

.hero h1 {
    text-indent:-.055em;
}

.subheading {
    position: relative;
    left: -.13em;
    font-size: .75em;
    color: var(--accent);
    opacity: 0.33;
}

.hero-redacted {
    display: inline-block;
    animation: signal-interference 5.8s steps(1, end) infinite;
    transform-origin: left center;
    will-change: opacity, transform, filter;
}

@keyframes signal-interference {
    0%,
    7%,
    7.8%,
    8.6%,
    41%,
    41.8%,
    42.6%,
    78%,
    100% {
        opacity: .33;
        transform: translate(0) skew(0deg);
        filter: none;
    }

    7.4% {
        opacity: .08;
        transform: translate(-.05em, .02em) skew(-11deg);
        filter: blur(.7px);
    }

    8.2% {
        opacity: .7;
        transform: translate(.07em, -.01em) skew(8deg);
        filter: contrast(1.5);
    }

    41.4% {
        opacity: .12;
        transform: translate(.03em, .01em) skew(13deg);
        filter: blur(.5px);
    }

    42.2% {
        opacity: .58;
        transform: translate(-.08em) skew(-7deg);
        filter: contrast(1.35);
    }

    78.4% {
        opacity: .16;
        transform: translate(.05em, -.02em) skew(6deg);
        filter: blur(.45px);
    }
}

.hero-copy > p:not(.eyebrow):not(.role) {
    max-width:310px;
    color:#bdbbb7;
}

.role {
    color:#d5d3cf;
    font-size:16px;
}

.hero-visual {
    position:absolute;
    inset:0;
    z-index:0;
    overflow:hidden;
}

.hero-visual::before {
    position:absolute;
    inset:0;
    z-index:0;
    background:
        image-set(
            url('/assets/img/hero-sky.webp') type('image/webp') 1x,
            url('/assets/img/hero-sky.jpg') type('image/jpeg') 1x
        ) center / cover;
    content:'';
}

.hero-visual::after {
    position:absolute;
    inset:0;
    z-index:3;
    background:
        linear-gradient(90deg, rgb(0 0 0 / .86) 0%, rgb(0 0 0 / .68) 31%, rgb(0 0 0 / .42) 56%, rgb(0 0 0 / .24) 100%),
        linear-gradient(180deg, rgb(0 0 0 / .18), rgb(0 0 0 / .36));
    content:'';
}

.hero-lightnings {
    position:absolute;
    inset:0;
    z-index:1;
}

.hero-lightning {
    --lightning-delay:0s;
    position:absolute;
    top:-4%;
    right:auto;
    left:-18%;
    width:clamp(260px, 21vw, 360px);
    height:auto;
    overflow:visible;
    --lightning-opacity:.48;
    opacity:0;
    filter:drop-shadow(0 0 1px rgb(255 255 255 / .7)) drop-shadow(0 0 5px rgb(255 255 255 / .3));
    stroke:#f4f4ef;
    stroke-linecap:round;
    stroke-linejoin:round;
    stroke-width:1.5;
    transform:rotate(-38deg);
    transform-origin:top center;
}

.hero-lightning .lightning-main {
    stroke-dasharray:600;
    stroke-dashoffset:600;
}

.hero-lightning.is-striking {
    animation:lightning-strike .72s steps(1, end);
}

.hero-lightning.is-striking .lightning-main {
    animation:lightning-draw .72s linear;
}

.hero-lightning .lightning-branch {
    opacity:.62;
    stroke-width:1.05;
}

.hero-lightning .lightning-twig {
    opacity:.4;
    stroke-width:.72;
}

.hero-lightning:nth-of-type(2) {
    top:-3%;
    right:auto;
    left:18%;
    width:clamp(230px, 17vw, 300px);
    --lightning-opacity:.58;
    transform:rotate(-7deg);
}

.hero-lightning:nth-of-type(3) {
    top:-5%;
    right:auto;
    left:45%;
    width:clamp(180px, 14vw, 240px);
    --lightning-opacity:.54;
    transform:rotate(-70deg);
}

.hero-flashes {
    position:absolute;
    inset:0;
    z-index:1;
    pointer-events:none;
}

.hero-mountain {
    position:absolute;
    inset:0;
    z-index:2;
    background:
        image-set(
            url('/assets/img/hero-mountain.webp') type('image/webp') 1x,
            url('/assets/img/hero-mountain.png') type('image/png') 1x
        ) center / cover;
}

.hero-flash {
    position:absolute;
    inset:0;
    opacity:0;
    background:linear-gradient(180deg, rgb(255 255 255 / .25), rgb(220 220 220 / .16));
}

.hero-flash.is-striking {
    animation:lightning-flash .72s steps(1, end);
}

@keyframes lightning-strike {
    0%, 5%, 31%, 40%, 75%, 100% {
        opacity:0;
    }

    6%, 30% {
        opacity:calc(var(--lightning-opacity) * .65);
    }

    41%, 74% {
        opacity:var(--lightning-opacity);
    }

}

@keyframes lightning-draw {
    0%, 5%, 31%, 40%, 75%, 100% {
        stroke-dashoffset:600;
    }

    23%, 30%, 63%, 74% {
        stroke-dashoffset:0;
    }
}

@keyframes lightning-flash {
    0%, 5%, 31%, 40%, 75%, 100% {
        opacity:0;
    }

    6%, 30% {
        opacity:.55;
    }

    41%, 74% {
        opacity:1;
    }
}

@media (prefers-reduced-motion: reduce) {
    .hero-redacted {
        animation: none;
    }

    .hero-lightning {
        animation:none;
    }

    .hero-lightning .lightning-main {
        animation:none;
        stroke-dashoffset:0;
    }

    .hero-visual::after {
        animation:none;
    }

    .hero-flash {
        animation:none;
    }
}

/* 04. Home — work, observations and laboratory */
.overview {
    display:grid;
    grid-template-columns:220px minmax(0, 1fr);
    margin-left:-190px;
    padding:55px 5vw;
    border-top:1px solid var(--section-border);
    scroll-margin-top:0;
}

.text-link.view-link:hover {
    border-bottom-color:var(--accent);
    color:var(--accent);
}

.text-link.view-link:hover .link-arrow {
    filter:invert(13%) sepia(99%) saturate(7068%) hue-rotate(357deg) brightness(101%) contrast(126%);
}

.section-intro .section-title {
    margin:5px 0;
    font-size:28px;
}

.section-description {
    max-width:190px;
    margin-top:30px;
    font-size:11px;
    line-height:1.7;
    text-wrap:balance;
}

.home-posts {
    position:relative;
    min-width:0;
    padding-bottom:40px;
}

.home-posts .cards {
    display:flex;
    flex-wrap:nowrap;
    gap:12px;
    max-width:none;
    overflow:hidden;
    scroll-behavior:smooth;
    scroll-snap-type:x mandatory;
    scrollbar-width:none;
}

.home-posts .cards::-webkit-scrollbar {
    display:none;
}

.project-card {
    min-width:0;
    scroll-snap-align:start;
}

.home-posts .project-card {
    flex:0 0 calc((100% - 36px) / 4);
}

.project-card img {
    display:block;
    width:100%;
    aspect-ratio:1;
    object-fit:cover;
    filter:brightness(.86);
    transition:.35s;
}

.project-card img.is-image-loading {
    filter:brightness(.86) blur(14px);
    transform:scale(1.02);
}

.entry-gallery img.is-image-loading {
    filter:blur(14px);
    transform:scale(1.02);
}

.project-card img.is-image-loaded {
    filter:brightness(.86);
    transform:none;
}

.entry-gallery img.is-image-loaded {
    filter:none;
    transform:none;
}

.project-card:hover img,
.project-card:focus-visible img {
    filter:brightness(.7);
    transform:scale(1.04);
}

.project-card h3 {
    margin:5px 0 2px;
    font-size:10px;
    font-weight:500;
    letter-spacing:.02em;
    text-transform:uppercase;
}

.content-section .project-card p,
.project-card small {
    margin:0;
    color:var(--section-muted);
    font-size:9px;
    line-height:1.4;
}

.home-posts-controls {
    position:absolute;
    right:0;
    bottom:0;
    display:flex;
    gap:7px;
}

.home-posts-controls button {
    display:grid;
    width:29px;
    height:29px;
    padding:0;
    place-items:center;
    border-radius:50%;
    font-size:15px;
    line-height:1;
    transition:opacity .2s, background .2s, color .2s, border-width .2s;
}

.home-posts-controls button:hover:not(:disabled) {
    border-color:var(--accent);
    border-width:2.375px;
    color:var(--accent);
    font-weight:900;
    -webkit-text-stroke:1.375px currentColor;
}

.home-posts-controls button:disabled {
    cursor:not-allowed;
    opacity:.28;
}

.home-posts-static .home-posts-controls {
    display:none;
}

/* 05. Home — about */
.about {
    display:grid;
    grid-template-columns:minmax(130px, .58fr) minmax(190px, 1fr) minmax(220px, 1.12fr) minmax(185px, .92fr) minmax(170px, .8fr);
    align-items:start;
    gap:28px;
    margin-left:-190px;
    padding:38px 5vw 34px;
    scroll-margin-top:0;
}

.about .rule {
    margin:23px 0 0;
}

.author-photo {
    min-height:322px;
    background:linear-gradient(90deg, #09090920, #09090970), url('/assets/img/about.jpg') center 25% / cover;
    filter:grayscale(1) contrast(.95) brightness(.68);
}

.about-copy h2 {
    margin:6px 0 20px;
    font-size:21px;
    font-weight:500;
    letter-spacing:0;
    line-height:1.45;
    text-transform:none;
}

.about-copy p,
.experience p,
.skills p {
    max-width:none;
    margin:0;
    font-size:11px;
    line-height:1.72;
}

.about-copy .text-link {
    margin-top:34px;
}

.about-copy .text-link b {
    font-size:18px;
}

.about-copy .text-link:hover {
    border-bottom-color:var(--accent);
    color:var(--accent);
    font-weight:400;
    -webkit-text-stroke:0;
}

.about-copy .text-link:hover b {
    font-weight:400;
    -webkit-text-stroke:0;
}

.experience,
.skills {
    min-height:338px;
    padding-left:26px;
    border-left:1px solid var(--section-border);
}

.experience .eyebrow,
.skills .eyebrow {
    margin:1px 0 15px;
    font-size:10px;
    font-weight:600;
}

.experience strong {
    display:block;
    margin-top:7px;
    color:var(--section-text);
    font-size:10px;
    font-weight:500;
    line-height:1.25;
}

.skills p:last-child {
    line-height:1.92;
}

.skills-list {
    display:grid;
    gap:4px;
    font-size:11px;
    line-height:1.55;
}

.skills-list span {
    display:block;
}

/* 06. Home — contacts */
.contacts {
    display:grid;
    grid-template-columns:minmax(0, 1.08fr) minmax(0, .92fr);
    gap:0;
    margin-left:-190px;
    padding:0;
    scroll-margin-top:0;
}

.contacts-panel {
    position:relative;
    display:grid;
    grid-template-columns:250px 1fr;
    gap:28px;
    height:calc(18.36vw + 134px);
    min-height:0;
    padding:38px 5vw;
    overflow:hidden;
}

.contacts-panel::before {
    position:absolute;
    top:145px;
    right:0;
    bottom:0;
    left:0;
    z-index:0;
    background:url('/assets/img/tush.svg') 32px top / calc(100% - 32px) auto no-repeat;
    content:"";
    filter:var(--section-decoration-filter);
    opacity:.18;
    pointer-events:none;
}

.contacts-panel > * {
    position:relative;
    z-index:1;
}

.contacts-heading .rule {
    margin-top:23px;
}

.contact-list {
    padding:27px 0 0 36px;
    border-left:1px solid var(--section-border);
    font-size:12px;
}

.contact-list p {
    margin:0 0 13px;
}

.contact-list .contact-icon {
    display:inline-block;
    width:18px;
    height:18px;
    margin-right:12px;
    vertical-align:-4px;
    object-fit:contain;
}

.contact-list .contact-icon {
    filter:var(--section-icon-filter);
}

.contact-list a {
    border-bottom:1px solid transparent;
}

.contact-list a:hover {
    border-bottom-color:currentColor;
    color:var(--accent);
}

.contact-list p:has(a):hover a {
    border-bottom-color:currentColor;
    color:var(--accent);
}

.contact-list p:hover .contact-icon {
    filter:invert(13%) sepia(99%) saturate(7068%) hue-rotate(357deg) brightness(101%) contrast(126%);
}

.contact-arrow {
    position:absolute;
    right:5vw;
    bottom:41px;
    color:var(--section-subtle);
    font-size:70px;
    font-weight:200;
    line-height:.7;
}

.contact-accent {
    color:var(--accent);
}

.contact-arrow:hover {
    color:var(--section-text);
}

.contact-visual {
    display:flex;
    align-items:end;
    min-height:292px;
    padding:38px 4vw;
    background:
        linear-gradient(90deg, rgb(6 6 6 / .58), rgb(6 6 6 / .06)),
        image-set(
            url('/assets/img/hero-mountains.webp') type('image/webp') 1x,
            url('/assets/img/hero-mountains.jpg') type('image/jpeg') 1x
        ) center / cover;
    color:var(--white);
}

.contact-visual p {
    margin:0;
    font-size:18px;
    font-weight:500;
    line-height:1.43;
}

/* 07. Section archive */
.section-header {
    position:relative;
    padding:48px 6vw 30px;
    border-bottom:1px solid var(--line);
}

.crumb,
.entry-meta {
    color:#aaa;
    font-size:11px;
}

.section-header > p:not(.crumb) {
    max-width:380px;
    color:#aaa;
}

.years {
    display:flex;
    gap:32px;
    margin-top:30px;
}

.years a {
    padding-bottom:8px;
}

.years a:hover {
    color:var(--accent);
}

.years .selected {
    border-bottom:1px solid currentColor;
}

.admin-add {
    display:inline-block;
    padding:11px 15px;
    border:1px solid currentColor;
    font-size:11px;
}

.section-header .admin-add {
    position:absolute;
    right:6vw;
    bottom:26px;
}

.feed {
    padding:0 6vw;
}

.entry {
    display:grid;
    grid-template-columns:minmax(0, 58%) minmax(0, 1fr);
    gap:34px;
    padding:26px 0;
    border-bottom:4px solid var(--line);
}

.entry-gallery {
    position:relative;
    min-width:0;
    overflow:visible;
}

.entry-gallery > img {
    display:block;
    width:100%;
    height:360px;
    object-fit:cover;
    cursor:zoom-in;
}

.entry-copy {
    padding-top:1px;
}

.entry-meta {
    display:flex;
    justify-content:space-between;
}

.entry h2 {
    margin-top:20px;
    font-size:18px;
    font-weight:400;
}

.entry-excerpt {
    margin:5px 0 0;
    color:#76736e;
    font-size:9px;
    line-height:1.4;
}

.entry-copy > .entry-body {
    max-width:400px;
    color:#c3c0bd;
}

.entry-camera {
    display:grid;
    gap:3px;
    margin:14px 0 20px;
    padding:13px 0;
    border-top:1px solid #555;
    border-bottom:1px solid #555;
    color:#e5e3df;
    font-size:12px;
    line-height:1.35;
}

.entry-camera small {
    color:var(--muted);
    font-size:10px;
    letter-spacing:.05em;
    white-space:pre-wrap;
}

.read-more {
    display:inline;
    margin-left:3px;
    padding:0 0 2px;
    border:0;
    border-bottom:1px solid #777;
    color:#ddd;
    font-size:11px;
    vertical-align:baseline;
    white-space:nowrap;
}

.read-more:hover {
    border-bottom-color:var(--accent);
    color:var(--accent);
}

/* 08. Section archive — Slick gallery */
.entry:has(.slick-main) {
    overflow:visible;
}

.entry-gallery.slick-gallery {
    display:block;
    min-width:0;
    width:100%;
}

.slick-main,
.slick-main .slick-list,
.slick-main .slick-slide {
    height:360px !important;
}

.slick-main {
    min-width:0;
    width:100%;
    overflow:hidden;
}

.entry-gallery .slick-main img {
    display:block;
    width:100%;
    height:360px !important;
    object-fit:cover;
    cursor:zoom-in;
}

.slick-nav {
    width:100%;
    margin-top:8px;
}

.slick-nav .slick-slide {
    margin-right:8px;
}

.slick-nav img {
    display:block;
    width:100%;
    height:92px !important;
    aspect-ratio:1;
    object-fit:cover;
    cursor:pointer;
}

.slick-nav .slick-thumb-repeat {
    opacity:0;
    pointer-events:none;
}

.slick-nav img.slick-current {
    border-top:1px solid;
    border-bottom:1px solid;
}

.slick-main .slick-prev,
.slick-main .slick-next {
    z-index:2;
    width:40px;
    height:40px;
    border-radius:50%;
    background:transparent;
    opacity:.5;
}

.slick-main .slick-prev {
    left:10px;
}

.slick-main .slick-next {
    right:10px;
}

.slick-main .slick-prev::before,
.slick-main .slick-next::before {
    color:var(--white);
    font-size:28px;
}

.slick-main .slick-prev:hover,
.slick-main .slick-next:hover {
    border-color:var(--accent);
    opacity:1;
}

.slick-main .slick-prev:hover::before,
.slick-main .slick-next:hover::before {
    color:var(--accent);
}

/* 08a. Archive gallery — fallback without Slick */
.entry-gallery.multiple {
    display:grid;
    grid-template-columns:repeat(5, 92px);
    grid-template-rows:260px 92px;
    gap:8px;
    width:492px;
    max-width:100%;
}

.entry-gallery.multiple > img {
    display:none;
    height:92px;
    aspect-ratio:1;
    object-fit:cover;
}

.entry-gallery.multiple > img.gallery-visible {
    display:block;
}

.entry-gallery.multiple > img.gallery-main {
    grid-column:1 / -1;
    height:260px;
    aspect-ratio:auto;
}

.gallery-controls {
    position:absolute;
    top:260px;
    right:0;
    left:0;
    z-index:2;
    height:92px;
    pointer-events:none;
}

.gallery-controls button {
    position:absolute;
    top:50%;
    display:grid;
    width:40px;
    height:40px;
    padding:0;
    place-items:center;
    border:0;
    border-radius:50%;
    background:rgb(0 0 0 / .5);
    color:var(--white);
    font-size:30px;
    line-height:1;
    pointer-events:auto;
    transform:translateY(-50%);
}

.gallery-controls button:first-child {
    left:8px;
}

.gallery-controls button:last-child {
    right:8px;
}

.gallery-controls button:hover {
    color:var(--accent);
}

/* 09. Lightbox */
.lightbox {
    position:fixed;
    inset:0;
    z-index:10;
    display:grid;
    place-items:center;
    background:#000e;
}

.lightbox[hidden] {
    display:none;
}

.lightbox img {
    max-width:88vw;
    max-height:90vh;
    object-fit:contain;
    transition:filter .25s ease, transform .25s ease;
}

.lightbox img.is-image-loading {
    filter:blur(14px);
    transform:scale(1.02);
}

.lightbox button {
    position:absolute;
    border:0;
    font-size:45px;
}

.lightbox .close {
    top:10px;
    right:20px;
}

.lightbox .prev {
    left:20px;
}

.lightbox .next {
    right:20px;
}

/* 10. Administration */
.admin,
.admin-login {
    min-height:100vh;
    background:var(--white);
    color:#111;
}

.admin main {
    max-width:1100px;
    padding:45px 5vw;
}

.admin table {
    width:100%;
    margin-top:30px;
    border-collapse:collapse;
    text-align:left;
}

.admin th,
.admin td {
    padding:14px;
    border-bottom:1px solid #ccc;
    font-size:12px;
}

.edit-form label,
.admin-login label {
    display:grid;
    gap:5px;
    font-size:11px;
}

.admin-images h2 {
    margin:0 0 12px;
    font-size:15px;
    font-weight:500;
}

.admin-images-grid {
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(130px, 1fr));
    gap:12px;
}

.admin-images-grid article {
    display:grid;
    gap:8px;
}

.admin-images-grid img {
    display:block;
    width:100%;
    aspect-ratio:1;
    object-fit:cover;
}

.form-row {
    display:grid;
    grid-template-columns:repeat(3, 1fr);
    gap:18px;
}

.admin-login {
    display:grid;
    place-items:center;
}

.admin-login form {
    display:grid;
    width:min(360px, 90vw);
    gap:15px;
}

.admin-login h1 {
    font-weight:300;
}

.error {
    color:#777;
    font-size:11px;
}

.error {
    color:#a22;
}

.admin-sections {
    display:flex;
    gap:18px;
    margin:25px 0;
}

.admin-sections a {
    padding-bottom:4px;
}

.admin-sections a.active {
    border-bottom:1px solid currentColor;
    font-weight:600;
}

.admin-actions {
    display:flex;
    align-items:center;
    gap:8px;
}

.admin-actions form {
    margin:0;
}

.admin-edit,
.admin-duplicate {
    padding:4px 0;
    border:0;
    font-size:11px;
    text-decoration:underline;
    text-underline-offset:3px;
    white-space:nowrap;
}

.admin-delete {
    padding:3px 5px;
    border:0;
    color:#9b2424;
    font-size:16px;
    line-height:1;
}

.admin-delete:hover {
    background:#f3dfdf;
}

.visually-hidden {
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    overflow:hidden;
    clip:rect(0, 0, 0, 0);
    white-space:nowrap;
    border:0;
}

.admin-header {
    display:flex;
    align-items:center;
    gap:20px;
    min-height:74px;
    padding:0 5vw;
    border-bottom:1px solid #c9c7c2;
}

.admin-header .logo {
    width:34px;
    max-width:34px;
    color:#111;
}

.admin-header .logo img {
    filter:none;
}

.admin-header strong {
    font-size:12px;
    font-weight:600;
    letter-spacing:.04em;
    text-transform:uppercase;
}

.admin-header nav {
    display:flex;
    gap:18px;
    margin-left:auto;
    font-size:12px;
}

.admin-header nav a,
.admin-back,
.admin-view-link,
.edit-form-actions a {
    text-decoration:underline;
    text-decoration-thickness:1px;
    text-underline-offset:4px;
}

.admin-page-heading {
    display:flex;
    align-items:end;
    justify-content:space-between;
    gap:24px;
    margin:34px 0 30px;
}

.admin-page-heading h1 {
    max-width:650px;
    margin:3px 0 0;
    font-size:32px;
    font-weight:400;
    line-height:1.15;
}

.admin-eyebrow {
    margin:0;
    color:#66625e;
    font-size:11px;
    letter-spacing:.08em;
    text-transform:uppercase;
}

.admin-view-link {
    flex:none;
    margin-bottom:3px;
    font-size:12px;
}

.admin-notice,
.admin-errors {
    max-width:1000px;
    margin:0 0 24px;
    padding:13px 16px;
    border-left:3px solid #111;
    background:#e7e5df;
    font-size:12px;
}

.admin-errors {
    border-left-color:#a22;
    background:#f2dddd;
}

.admin-errors p,
.admin-errors ul {
    margin:0;
}

.admin-errors ul {
    margin-top:5px;
    padding-left:18px;
}

.edit-form {
    display:grid;
    max-width:1000px;
    gap:26px;
    margin-top:0;
}

.admin-form-section {
    display:grid;
    gap:17px;
    padding:24px;
    border:1px solid #afada8;
    background:#f7f6f3;
}

.admin-section-heading h2 {
    margin:0;
    font-size:17px;
    font-weight:600;
}

.admin-section-heading p,
.admin-empty {
    margin:4px 0 0;
    color:#67635f;
    font-size:12px;
}

.edit-form label {
    display:grid;
    gap:7px;
    color:#262422;
    font-size:12px;
}

.edit-form label small {
    color:#67635f;
    font-size:11px;
    line-height:1.45;
}

.edit-form input,
.edit-form textarea,
.edit-form select {
    width:100%;
    padding:9px 0;
    border-color:#33312f;
    color:#111;
}

.edit-form textarea {
    min-height:90px;
    resize:vertical;
}

.form-row--two {
    grid-template-columns:repeat(2, minmax(0, 1fr));
}

.language-tabs {
    display:flex;
    gap:8px;
    border-bottom:1px solid #b4b1ab;
}

.language-tab {
    padding:8px 2px;
    border:0;
    border-bottom:2px solid transparent;
    color:#68645f;
    font-size:12px;
}

.language-tab.is-active {
    border-bottom-color:#111;
    color:#111;
    font-weight:600;
}

.language-panel {
    display:grid;
    gap:16px;
}

.language-panel[hidden] {
    display:none;
}

.translation-hint {
    margin:0;
    color:#67635f;
    font-size:12px;
    line-height:1.45;
}

.admin-translate {
    justify-self:start;
    padding:9px 13px;
    border:1px solid #33312f;
    background:transparent;
    color:#111;
    font-size:12px;
}

.admin-images-grid {
    grid-template-columns:repeat(auto-fill, minmax(210px, 1fr));
    gap:18px;
}

.admin-image-card {
    align-content:start;
    gap:11px;
    padding:10px;
    border:1px solid #c9c6c0;
    background:var(--white);
}

.admin-images-grid .admin-image-card img {
    aspect-ratio:4 / 3;
}

.admin-image-card label {
    font-size:11px;
}

.admin-image-card input[type="radio"] {
    width:auto;
    margin:0;
}

.admin-image-card .cover-control {
    display:flex;
    align-items:center;
    gap:7px;
    font-weight:600;
}

.admin-image-delete {
    margin-top:2px;
    padding:8px 10px;
    border-color:#9a3030;
    color:#8f2323;
    font-size:11px;
}

.upload-control input[type="file"] {
    padding:8px 0;
    border:0;
}

.edit-form-actions {
    display:flex;
    align-items:center;
    gap:18px;
}

.admin-save {
    padding:12px 17px;
    background:#111;
    color:var(--white);
}

/* 11. Responsive */
@media (min-width:761px) {
    .sidebar {
        position:absolute;
        top:0;
        bottom:auto;
        height:720px;
    }

    body:has(.section-header) .sidebar {
        position:fixed;
        inset:0 auto 0 0;
        height:auto;
        border-right-color:#d6d4d0;
        background:var(--white);
        color:#111;
    }

    body:has(.section-header) .sidebar-bottom span,
    body:has(.section-header) .sidebar-bottom small {
        color:#666;
    }

    body:has(.section-header) .sidebar-socials img {
        filter:none;
    }

    body:has(.section-header) .sidebar-socials a:hover img {
        filter:invert(13%) sepia(99%) saturate(7068%) hue-rotate(357deg) brightness(101%) contrast(126%);
    }

    body:has(.section-header) .logo-on-dark {
        display:none;
    }

    body:has(.section-header) .logo-on-light {
        display:block;
    }

}

@media (max-width:1080px) and (min-width:761px) {
    .about {
        grid-template-columns:130px minmax(160px, .8fr) minmax(200px, 1fr) minmax(170px, .85fr);
    }

    .skills {
        grid-column:4;
    }

    .about-copy h2 {
        font-size:18px;
    }

    .experience,
    .skills {
        padding-left:17px;
    }

    .contacts-panel {
        grid-template-columns:190px 1fr;
    }

    .entry {
        grid-template-columns:minmax(0, 52%) minmax(0, 1fr);
        gap:24px;
    }

}

@media (max-width:760px) {
    .menu-backdrop {
        position:fixed;
        z-index:3;
        inset:0;
        display:block;
        visibility:hidden;
        background:rgb(0 0 0 / .45);
        opacity:0;
        transition:opacity .3s, visibility 0s linear .3s;
    }

    body.menu-open .menu-backdrop {
        visibility:visible;
        opacity:1;
        transition:opacity .3s;
    }

    .mobile-logo {
        position:absolute;
        top:15px;
        left:20px;
        z-index:9;
        display:block;
        width:34px;
        height:34px;
    }

    .mobile-logo img {
        display:block;
        width:100%;
        height:100%;
    }

    body.menu-open .mobile-logo {
        display:none;
    }

    .sidebar {
        position:fixed;
        inset:0 auto 0 0;
        height:auto;
        width:260px;
        transform:translateX(-100%);
        transition:.3s;
    }

    .sidebar.open {
        transform:none;
    }

    .page {
        margin-left:0;
    }

    .menu-button {
        position:fixed;
        top:15px;
        right:15px;
        z-index:10;
        display:grid;
        width:34px;
        height:34px;
        padding:0;
        place-items:center;
        border:0;
        background:#111;
        color:#fff;
        font-size:20px;
        line-height:1;
    }

    .site-header {
        top:15px;
        right:55px;
    }

    .language-switch {
        display:grid;
        width:34px;
        height:34px;
        padding:0;
        place-items:center;
        font-size:10px;
        line-height:1;
    }

    .language-switch a:not(.active),
    .language-switch span {
        display:none;
    }

    .back-to-top {
        right:18px;
        bottom:18px;
        width:38px;
        height:38px;
        font-size:21px;
    }

    .hero,
    .hero-copy {
        min-height:0;
        height:56svh;
    }

    .hero-copy {
        padding:92px 25px 24px;
    }

    .hero h1 {
        margin:13px 0;
        font-size:clamp(38px, 12vw, 58px);
    }

    .hero-copy .role {
        margin:10px 0;
        font-size:12px;
    }

    .hero-copy > p:not(.eyebrow):not(.role) {
        max-width:235px;
        margin:7px 0;
        font-size:11px;
        line-height:1.45;
    }

    .hero-copy .text-link {
        margin-top:10px;
        font-size:9px;
    }

    .overview,
    .about,
    .contacts {
        margin-left:0;
    }

    .overview {
        display:block;
        padding:25px 25px 30px;
    }

    .section-intro {
        margin-bottom:25px;
    }

    .home-posts {
        padding-bottom:37px;
    }

    .home-posts .cards {
        gap:9px;
        overflow-x:auto;
        overscroll-behavior-x:contain;
        -webkit-overflow-scrolling:touch;
        touch-action:pan-x;
    }

    .home-posts .project-card {
        flex-basis:calc((100% - 9px) / 2);
    }

    .about {
        grid-template-columns:1fr 1fr;
        gap:22px;
        padding:35px 25px;
    }

    .about-heading,
    .author-photo,
    .about-copy {
        grid-column:1 / -1;
    }

    .about-heading h2,
    .contacts-heading h2 {
        font-size:26px;
    }

    .author-photo {
        min-height:0;
        aspect-ratio:1;
    }

    .about-copy h2 {
        font-size:19px;
    }

    .experience,
    .skills {
        min-height:0;
        padding-left:15px;
    }

    .contacts {
        grid-template-columns:1fr;
    }

    .contacts-panel {
        grid-template-columns:1fr;
        min-height:440px;
        padding:35px 25px;
    }

    .contacts-panel::before {
        display:block;
        top:auto;
        bottom:0;
        height:135px;
        background-position:center bottom;
        background-size:100% auto;
    }

    .contact-list {
        padding:24px 0 0 23px;
    }

    .contact-arrow {
        right:25px;
        bottom:38px;
    }

    .contact-visual {
        min-height:245px;
        padding:30px 25px;
    }

    .contact-visual p {
        font-size:16px;
    }

    .section-header {
        padding:78px 25px 25px;
    }

    .section-header .admin-add {
        position:static;
        margin-top:20px;
    }

    .years {
        gap:24px;
        overflow:auto;
    }

    .feed {
        padding:0 25px;
    }

    .entry {
        grid-template-columns:1fr;
        gap:18px;
    }

    .entry-gallery > img,
    .slick-main,
    .slick-main .slick-list,
    .slick-main .slick-slide,
    .entry-gallery .slick-main img {
        height:260px !important;
    }

    .entry-camera {
        font-size:8.1px;
    }

    .entry-camera small {
        font-size:8.1px;
    }

    .slick-nav .slick-slide {
        padding-right:5px;
    }

    .slick-nav img {
        height:auto !important;
        aspect-ratio:1;
    }

    .form-row {
        grid-template-columns:1fr;
    }

    .admin main {
        padding:30px 20px;
    }

    .admin table {
        display:block;
        overflow:auto;
    }

    .admin-header {
        gap:13px;
        min-height:62px;
        padding:0 20px;
    }

    .admin-header strong {
        display:none;
    }

    .admin-header nav {
        gap:13px;
        font-size:11px;
    }

    .admin-page-heading {
        display:grid;
        align-items:start;
        margin:26px 0 24px;
    }

    .admin-page-heading h1 {
        font-size:26px;
    }

    .admin-form-section {
        padding:18px;
    }

    .form-row--two {
        grid-template-columns:1fr;
        gap:14px;
    }

    .admin-images-grid {
        grid-template-columns:1fr;
    }

}
