/* ============ SELF-HOSTED FONTS (replaces Google Fonts CDN) ============ */
/* big-shoulders-regular - latin */
@font-face {
  font-display: swap;
  font-family: 'Big Shoulders';
  font-style: normal;
  font-weight: 400;
  src: url('../fonts/big-shoulders-v4-latin_latin-ext-regular.woff') format('woff');
}
/* big-shoulders-500 - latin */
@font-face {
  font-display: swap;
  font-family: 'Big Shoulders';
  font-style: normal;
  font-weight: 500;
  src: url('../fonts/big-shoulders-v4-latin_latin-ext-500.woff') format('woff');
}
/* big-shoulders-600 - latin */
@font-face {
  font-display: swap;
  font-family: 'Big Shoulders';
  font-style: normal;
  font-weight: 600;
  src: url('../fonts/big-shoulders-v4-latin_latin-ext-600.woff') format('woff');
}
/* big-shoulders-700 - latin */
@font-face {
  font-display: swap;
  font-family: 'Big Shoulders';
  font-style: normal;
  font-weight: 700;
  src: url('../fonts/big-shoulders-v4-latin_latin-ext-700.woff') format('woff');
}
/* big-shoulders-800 - latin */
@font-face {
  font-display: swap;
  font-family: 'Big Shoulders';
  font-style: normal;
  font-weight: 800;
  src: url('../fonts/big-shoulders-v4-latin_latin-ext-800.woff') format('woff');
}
/* source-serif-4-regular - latin */
@font-face {
  font-display: swap;
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 400;
  src: url('../fonts/source-serif-4-v14-latin_latin-ext-regular.woff2') format('woff2');
}
/* source-serif-4-italic - latin */
@font-face {
  font-display: swap;
  font-family: 'Source Serif 4';
  font-style: italic;
  font-weight: 400;
  src: url('../fonts/source-serif-4-v14-latin_latin-ext-italic.woff2') format('woff2');
}
/* source-serif-4-500 - latin */
@font-face {
  font-display: swap;
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 500;
  src: url('../fonts/source-serif-4-v14-latin_latin-ext-500.woff2') format('woff2');
}
/* source-serif-4-500italic - latin */
@font-face {
  font-display: swap;
  font-family: 'Source Serif 4';
  font-style: italic;
  font-weight: 500;
  src: url('../fonts/source-serif-4-v14-latin_latin-ext-500italic.woff2') format('woff2');
}
/* source-serif-4-600 - latin */
@font-face {
  font-display: swap;
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 600;
  src: url('../fonts/source-serif-4-v14-latin_latin-ext-600.woff2') format('woff2');
}
/* source-serif-4-600italic - latin */
@font-face {
  font-display: swap;
  font-family: 'Source Serif 4';
  font-style: italic;
  font-weight: 600;
  src: url('../fonts/source-serif-4-v14-latin_latin-ext-600italic.woff2') format('woff2');
}
/* ibm-plex-mono-regular - latin */
@font-face {
  font-display: swap;
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  src: url('../fonts/ibm-plex-mono-v20-latin_latin-ext-regular.woff2') format('woff2');
}
/* ibm-plex-mono-italic - latin */
@font-face {
  font-display: swap;
  font-family: 'IBM Plex Mono';
  font-style: italic;
  font-weight: 400;
  src: url('../fonts/ibm-plex-mono-v20-latin_latin-ext-italic.woff2') format('woff2');
}
/* ibm-plex-mono-500 - latin */
@font-face {
  font-display: swap;
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  src: url('../fonts/ibm-plex-mono-v20-latin_latin-ext-500.woff2') format('woff2');
}
/* ibm-plex-mono-500italic - latin */
@font-face {
  font-display: swap;
  font-family: 'IBM Plex Mono';
  font-style: italic;
  font-weight: 500;
  src: url('../fonts/ibm-plex-mono-v20-latin_latin-ext-500italic.woff2') format('woff2');
}
  /* ================= TOKENS ================= */
  :root{
    --bg:#333F49;
    --bg-alt:#3D4A54;
    --bg-raised:#47555F;
    --text:#F5F1E8;
    --text-dim:#BAC2C8;
    --accent:#C9825A;      /* burnt terracotta */
    --accent-soft:#A6683F;
    --accent-2:#93A6AC;    /* muted slate-blue */
    --line:rgba(245,241,232,0.16);
    --line-strong:rgba(245,241,232,0.3);
    --shadow: 0 20px 60px rgba(0,0,0,0.4);
    --font-display:'Big Shoulders', sans-serif;
    --font-body:'Source Serif 4', serif;
    --font-mono:'IBM Plex Mono', monospace;
    --nav-h: 76px;
    --ease: cubic-bezier(.16,.8,.24,1);
  }
  html[data-theme="light"]{
    --bg:#F7F4EE;
    --bg-alt:#EFEAE0;
    --bg-raised:#FFFFFF;
    --text:#333F49;
    --text-dim:#6B747C;
    --accent:#C0704A;
    --accent-soft:#D98E63;
    --accent-2:#5C6A74;
    --line:rgba(51,63,73,0.12);
    --line-strong:rgba(51,63,73,0.24);
    --shadow: 0 20px 60px rgba(51,63,73,0.14);
  }
  *{box-sizing:border-box;}
  html{scroll-behavior:smooth; overflow-x:hidden; width:100%;}
  @media (prefers-reduced-motion: reduce){
    html{scroll-behavior:auto;}
    *{animation-duration:0.001ms !important; animation-iteration-count:1 !important; transition-duration:0.001ms !important;}
  }
  body{
    margin:0;
    background:var(--bg);
    color:var(--text);
    font-family:var(--font-body);
    font-size:calc(var(--body-scale, 1) * var(--user-scale, 1) * 17px);
    line-height:1.6;
    -webkit-font-smoothing:antialiased;
    transition:background .4s var(--ease), color .4s var(--ease);
    opacity:0;
    animation:tomoPageFadeIn .5s ease-out forwards;
    overflow-x:hidden;
    -webkit-user-select:none;
    -moz-user-select:none;
    -ms-user-select:none;
    user-select:none;
  }
  @keyframes tomoPageFadeIn{ from{ opacity:0; } to{ opacity:1; } }
  @media (prefers-reduced-motion: reduce){
    body{ animation:none; opacity:1; }
    *{ scroll-behavior:auto !important; }
  }

  /* Smoother cross-page navigation (e.g. D.U.K. ↔ pagrindinis puslapis)
     in browsers that support the View Transitions API. Falls back to a
     normal, instant page load everywhere else — no downside. */
  ::view-transition-old(root), ::view-transition-new(root){
    animation-duration:.35s;
    animation-timing-function:var(--ease);
  }
  @media (prefers-reduced-motion: reduce){
    ::view-transition-old(root), ::view-transition-new(root){ animation:none; }
  }
  input, textarea{
    -webkit-user-select:text;
    -moz-user-select:text;
    -ms-user-select:text;
    user-select:text;
  }
  img{
    -webkit-user-drag:none;
    user-drag:none;
    -khtml-user-drag:none;
    -moz-user-drag:none;
    -o-user-drag:none;
  }
  a{color:inherit;}
  img{max-width:100%; display:block;}
  ::selection{background:var(--accent); color:#171016;}
  :focus-visible{
    outline:2px solid var(--accent);
    outline-offset:3px;
    border-radius:2px;
  }
  .wrap{
    max-width:var(--site-width, 1320px);
    margin:0 auto;
    padding:0 6vw;
  }
  .eyebrow{
    font-family:var(--font-mono);
    font-size:12.5px;
    letter-spacing:0.16em;
    text-transform:uppercase;
    color:var(--accent);
    display:flex;
    align-items:center;
    gap:10px;
  }
  .eyebrow::before{
    content:"";
    width:22px; height:1px;
    background:var(--accent);
    display:inline-block;
  }
  h1,h2,h3{
    font-family:var(--font-display);
    font-weight:700;
    letter-spacing:0.005em;
    margin:0;
  }
  /* ================= NAV ================= */
  .nav{
    position:fixed; top:0; left:0; right:0;
    height:var(--nav-h);
    z-index:200;
    display:flex; align-items:center;
    background:linear-gradient(to bottom, rgba(23,31,46,0.72), rgba(23,31,46,0));
    backdrop-filter:blur(6px);
    transition:background .3s var(--ease), backdrop-filter .3s var(--ease);
  }
  html[data-theme="light"] .nav{
    background:linear-gradient(to bottom, rgba(242,236,221,0.82), rgba(242,236,221,0));
  }
  .nav.scrolled{
    background:var(--bg);
    box-shadow:0 1px 0 var(--line);
  }
  html[data-theme="light"] .nav.scrolled{ background:var(--bg); }
  .nav:not(.scrolled) .brand,
  .nav:not(.scrolled) .nav-links a,
  .nav:not(.scrolled) .lang-switch a,
  .nav:not(.scrolled) .theme-toggle,
  .nav:not(.scrolled) .menu-btn{
    color:#F5F1E6;
  }
  .nav:not(.scrolled) .lang-switch a{ opacity:.75; }
  .nav:not(.scrolled) .lang-switch a.active{ color:#E39D74; opacity:1; }
  .nav:not(.scrolled) .nav-links a:hover,
  .nav:not(.scrolled) .nav-links a:focus-visible,
  .nav:not(.scrolled) .lang-switch a:hover{ color:#E39D74; }
  .nav:not(.scrolled) .theme-toggle{ border-color:rgba(245,241,230,0.4); }
  .nav:not(.scrolled) .theme-toggle:hover{ border-color:#E39D74; }
  .nav .wrap{
    width:100%;
    display:flex;
    align-items:center;
    justify-content:space-between;
  }
  .brand{
    font-family:var(--font-display);
    font-weight:800;
    font-size:26px;
    letter-spacing:0.03em;
    text-decoration:none;
    display:flex; align-items:baseline; gap:6px;
  }
  .brand .dot{color:var(--accent); font-size:26px; line-height:0;}
  .brand-tomo, .brand-lt{transition:color .3s var(--ease);}
  .brand:hover .brand-tomo, .brand:focus-visible .brand-tomo{color:var(--accent);}
  .brand:hover .brand-lt, .brand:focus-visible .brand-lt{color:#14100B;}
  .nav-links{
    display:flex; align-items:center; gap:38px;
    list-style:none; margin:0; padding:0;
  }
  .nav-links a{
    text-decoration:none;
    font-family:var(--font-mono);
    font-size:13px;
    font-weight:500;
    letter-spacing:0.08em;
    text-transform:uppercase;
    color:var(--text);
    position:relative;
    padding-bottom:4px;
    white-space:nowrap;
  }
  .nav-links a::after{
    content:"";
    position:absolute; left:0; right:100%; bottom:0;
    height:1px; background:var(--accent);
    transition:right .3s var(--ease);
  }
  .nav-links a:hover, .nav-links a:focus-visible{color:var(--accent);}
  .nav-links a:hover::after, .nav-links a:focus-visible::after{right:0;}
  .nav-links a.is-current{color:var(--accent);}
  .nav-links a.is-current::after{right:0;}
  .nav:not(.scrolled) .nav-links a.is-current{color:#E39D74;}
  .mobile-drawer a.is-current{color:var(--accent);}
  .nav-controls{display:flex; align-items:center; gap:22px;}
  .lang-switch{display:flex; gap:10px; font-family:var(--font-mono); font-size:12px; letter-spacing:.06em;}
  .lang-switch a{text-decoration:none; color:var(--text); opacity:.7; text-shadow:0 1px 6px rgba(0,0,0,0.35);}
  .lang-switch a.active{color:var(--accent); opacity:1;}
  .lang-switch a:hover{color:var(--accent); opacity:1;}
  /* ================= ACCESSIBILITY PANEL ================= */
  .a11y-wrap{ position:relative; }
  .a11y-toggle{
    width:38px; height:38px;
    border-radius:50%;
    border:1px solid var(--line-strong);
    background:transparent;
    color:var(--text);
    cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    transition:border-color .2s, color .2s;
  }
  .nav:not(.scrolled) .a11y-toggle{ color:#F5F1E6; border-color:rgba(245,241,230,0.4); }
  .a11y-toggle:hover, .a11y-toggle:focus-visible{ border-color:var(--accent); color:var(--accent); }

  .a11y-panel{
    position:absolute; top:calc(100% + 12px); right:0; z-index:210;
    width:max-content;
    background:var(--bg-raised);
    border-radius:12px;
    box-shadow:var(--shadow);
    padding:14px;
    opacity:0; visibility:hidden; transform:translateY(-8px);
    transition:opacity .2s var(--ease), transform .2s var(--ease), visibility .2s;
  }
  .a11y-panel.is-open{ opacity:1; visibility:visible; transform:translateY(0); }
  .a11y-row{
    display:flex; align-items:center; justify-content:flex-start; gap:2px;
  }
  .a11y-row + .a11y-row{ margin-top:14px; padding-top:14px; border-top:1px solid var(--line); }
  .a11y-row-label{ font-size:13.5px; color:var(--text); white-space:nowrap; }
  .a11y-btn-group{ display:flex; gap:6px; width:fit-content; flex-shrink:0; }
  .a11y-btn{
    width:32px; height:32px;
    padding:0; margin:0;
    border-radius:8px;
    border:1px solid var(--line-strong);
    background:transparent;
    color:var(--text);
    cursor:pointer;
    font-family:var(--font-mono);
    font-size:12px; font-weight:600;
    line-height:1;
    display:flex; align-items:center; justify-content:center;
    transition:border-color .2s, color .2s;
  }
  .a11y-btn:hover, .a11y-btn:focus-visible{ border-color:var(--accent); color:var(--accent); }

  .theme-toggle{
    width:38px; height:38px;
    border-radius:50%;
    border:1px solid var(--line-strong);
    background:transparent;
    color:var(--text);
    cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    transition:border-color .25s, transform .25s;
  }
  .theme-toggle:hover, .theme-toggle:focus-visible{border-color:var(--accent); transform:rotate(20deg);}
  .theme-toggle svg{width:17px; height:17px;}
  .theme-toggle .sun{display:none;}
  html[data-theme="light"] .theme-toggle .moon{display:none;}
  html[data-theme="light"] .theme-toggle .sun{display:block;}
  .menu-btn{
    display:none;
    width:40px; height:40px;
    border:none; background:transparent; color:var(--text);
    cursor:pointer;
    flex-direction:column; justify-content:center; gap:5px;
  }
  .menu-btn span{width:22px; height:1.5px; background:currentColor; margin:0 auto; transition:transform .25s, opacity .25s;}
  .menu-btn[aria-expanded="true"] span:nth-child(1){transform:translateY(6.5px) rotate(45deg);}
  .menu-btn[aria-expanded="true"] span:nth-child(2){opacity:0;}
  .menu-btn[aria-expanded="true"] span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg);}
  /* ================= HERO ================= */
  .hero{
    position:relative;
    height:100svh; min-height:560px;
    display:flex; align-items:flex-end;
    overflow:hidden;
    isolation:isolate;
  }
  .hero-slide{
    position:absolute; inset:0;
    background-size:cover; background-position:center;
    opacity:0;
    transition:opacity 1.6s var(--ease);
  }
  .hero-slide.is-active{opacity:1;}
  .hero-slide::after{
    content:"";
    position:absolute; inset:0;
    background:linear-gradient(180deg,
      rgba(10,14,22, calc(var(--hero-overlay, 0.6) / 0.6 * 0.34)) 0%,
      rgba(10,14,22, calc(var(--hero-overlay, 0.6) / 0.6 * 0.24)) 40%,
      rgba(10,14,22, calc(var(--hero-overlay, 0.6) / 0.6 * 0.88)) 100%);
  }
  .viewfinder{
    position:absolute; inset:26px;
    z-index:5;
    pointer-events:none;
  }
  .vf-corner{position:absolute; width:26px; height:26px; border-color:rgba(238,233,222,0.78);}
  .vf-corner.tl{top:0; left:0; border-top:1.5px solid; border-left:1.5px solid;}
  .vf-corner.tr{top:0; right:0; border-top:1.5px solid; border-right:1.5px solid;}
  .vf-corner.bl{bottom:0; left:0; border-bottom:1.5px solid; border-left:1.5px solid;}
  .vf-corner.br{bottom:0; right:0; border-bottom:1.5px solid; border-right:1.5px solid;}
  .vf-meta{
    position:absolute; top:14px; left:14px; right:14px;
    display:flex; justify-content:space-between;
    font-family:var(--font-mono);
    font-size:11px; letter-spacing:.08em;
    color:rgba(238,233,222,0.82);
  }
  .hero-content{
    position:relative; z-index:6;
    width:100%;
    padding:0 6vw 8vh;
  }
  .hero-frame-index{
    font-family:var(--font-mono);
    font-size:13px;
    color:var(--accent);
    letter-spacing:.14em;
    margin-bottom:18px;
    display:block;
  }
  .hero h1{
    font-size:calc(var(--heading-scale, 1) * var(--user-scale, 1) * clamp(48px, 9vw, 108px));
    line-height:0.92;
    color:#F7F3E8;
    max-width:16ch;
  }
  .hero-sub{
    font-family:var(--font-body);
    font-style:italic;
    color:#DDD6C7;
    font-size:clamp(15px, 1.6vw, 19px);
    margin-top:16px;
    max-width:40ch;
  }
  .hero-cta{
    margin-top:34px;
    display:inline-flex; align-items:center; gap:10px;
    text-decoration:none;
    font-family:var(--font-mono);
    font-size:13px; letter-spacing:.1em; text-transform:uppercase;
    color:#F7F3E8;
    border-bottom:1px solid var(--accent);
    padding-bottom:6px;
  }
  .hero-cta svg{width:14px; height:14px; transition:transform .25s;}
  .hero-cta:hover svg, .hero-cta:focus-visible svg{transform:translateX(5px);}
  .hero-dots{
    position:absolute; bottom:28px; right:6vw; z-index:7;
    display:flex; gap:10px;
  }
  .hero-dots button{
    width:26px; height:2px; border:none; padding:0; cursor:pointer;
    background:rgba(238,233,222,0.35);
    transition:background .3s;
  }
  .hero-dots button.is-active{background:var(--accent);}
  .scroll-cue{
    position:absolute; bottom:26px; left:6vw; z-index:7;
    display:flex; align-items:center; gap:10px;
    font-family:var(--font-mono); font-size:11px; letter-spacing:.12em;
    color:rgba(238,233,222,0.75);
    text-decoration:none;
  }
  .scroll-cue .line{width:1px; height:34px; background:rgba(238,233,222,0.4); position:relative; overflow:hidden;}
  .scroll-cue .line::after{
    content:""; position:absolute; top:-100%; left:0; width:100%; height:100%;
    background:var(--accent); animation:scrollcue 2.2s ease-in-out infinite;
  }
  @keyframes scrollcue{ 0%{top:-100%;} 60%{top:100%;} 100%{top:100%;} }
  /* ================= SECTION LABEL PATTERN ================= */
  section{position:relative;}
  .section-pad{padding:var(--section-spacing, 130px) 0;}
  .section-head{
    display:flex; justify-content:space-between; align-items:flex-end;
    gap:40px; margin-bottom:64px; flex-wrap:wrap;
  }
  .section-head h2{
    font-size:calc(var(--heading-scale, 1) * var(--user-scale, 1) * clamp(36px, 5vw, 58px));
    line-height:0.98;
  }
  /* ================= ABOUT ================= */
  .about{background:var(--bg-alt);}
  .about-grid{
    display:grid;
    grid-template-columns: 0.9fr 1.3fr;
    gap:70px;
    align-items:start;
  }
  .about-plate{
    font-family:var(--font-mono);
    border:1px solid var(--line-strong);
    padding:28px;
    position:sticky; top:calc(var(--nav-h) + 24px);
  }
  .about-plate .plate-row{
    display:flex; justify-content:space-between;
    padding:10px 0;
    border-bottom:1px dashed var(--line);
    font-size:12.5px;
    color:var(--text-dim);
  }
  .about-plate .plate-row:last-child{border-bottom:none;}
  .about-plate .plate-row span:last-child{color:var(--text); text-align:right;}
  .about-body p{
    font-size:calc(var(--body-scale, 1) * var(--user-scale, 1) * 19px);
    line-height:1.75;
    color:var(--text-dim);
    margin:0 0 26px;
  }
  .about-body p.lede{
    font-size:calc(var(--body-scale, 1) * var(--user-scale, 1) * 24px);
    color:var(--text);
    font-style:italic;
    line-height:1.5;
    border-left:2px solid var(--accent);
    padding-left:24px;
    margin-bottom:36px;
  }
  /* ================= GALLERY ================= */
  .gallery{background:var(--bg);}
  .cat-tiles{
    display:grid;
    grid-template-columns:repeat(4, 1fr);
    grid-auto-rows:150px;
    gap:14px;
  }
  .cat-tiles .cat-tile:nth-child(1){ grid-column:span 2; grid-row:span 2; }
  .cat-tiles .cat-tile:nth-child(4){ grid-column:span 2; }
  body.layout-uniform .cat-tiles .cat-tile:nth-child(1),
  body.layout-uniform .cat-tiles .cat-tile:nth-child(4){ grid-column:span 1; grid-row:span 1; }
  body.layout-uniform .cat-tiles .cat-tile:nth-child(1) .cat-tile-name{ font-size:22px; }
  .cat-tile{
    position:relative;
    overflow:hidden;
    border-radius:var(--radius, 12px);
    background:var(--bg-raised);
    display:block;
    text-decoration:none;
    cursor:pointer;
    border:none;
    padding:0;
    font-family:inherit;
  }
  .cat-tile img{
    width:100%; height:100%; object-fit:cover;
    transition:transform .6s var(--ease), filter .4s;
    filter:saturate(0.9) brightness(0.82);
  }
  .cat-tile:hover img, .cat-tile:focus-visible img{ transform:scale(1.06); filter:saturate(1) brightness(0.7); }
  .cat-tile-overlay{
    position:absolute; inset:0;
    display:flex; flex-direction:column; justify-content:flex-end;
    padding:20px;
    background:linear-gradient(180deg, transparent 40%, rgba(4,6,10,0.85) 100%);
  }
  .cat-tile-name{
    font-family:var(--font-display); font-size:22px; font-weight:700;
    color:#FFFFFF; text-shadow:0 1px 6px rgba(0,0,0,0.4);
  }
  .cat-tiles .cat-tile:nth-child(1) .cat-tile-name{ font-size:32px; }
  .cat-tile-count{
    font-family:var(--font-mono); font-size:11.5px; color:#DDD6C7; margin-top:4px;
  }
  .cat-tile-random{
    display:flex; align-items:center; justify-content:center; gap:10px;
    flex-direction:column;
    background:transparent;
    border:1px dashed var(--line-strong) !important;
    color:var(--text-dim);
  }
  .cat-tile-random:hover, .cat-tile-random:focus-visible{
    border-color:var(--accent) !important; color:var(--accent);
  }
  .cat-tile-random .cat-tile-name{ color:inherit; text-shadow:none; font-size:14px; letter-spacing:.05em; text-transform:uppercase; }
  .cat-back-btn{
    display:inline-flex; align-items:center; gap:8px;
    font-family:var(--font-mono); font-size:13px; letter-spacing:.06em; text-transform:uppercase;
    color:var(--text-dim); text-decoration:none;
    margin-bottom:20px;
    transition:color .2s;
  }
  .cat-back-btn:hover, .cat-back-btn:focus-visible{ color:var(--accent); }
  .page-embed{ margin-top:24px; }
  .page-embed img{ max-width:100%; height:auto; }
  @media (max-width:900px){
    .cat-tiles{grid-template-columns:repeat(2,1fr); grid-auto-rows:170px;}
    .cat-tiles .cat-tile:nth-child(1){ grid-column:span 2; grid-row:span 2; }
    .cat-tiles .cat-tile:nth-child(4){ grid-column:span 1; }
  }
  @media (max-width:600px){
    .cat-tiles{grid-template-columns:1fr; grid-auto-rows:190px;}
    .cat-tiles .cat-tile:nth-child(1){ grid-column:span 1; grid-row:span 1; }
  }
  .filters{
    display:flex; flex-wrap:wrap; gap:10px;
    margin-bottom:32px;
  }
  .filter-btn{
    font-family:var(--font-mono);
    font-size:12.5px; letter-spacing:.06em; text-transform:uppercase;
    background:transparent;
    border:1px solid var(--line-strong);
    color:var(--text-dim);
    padding:9px 18px;
    cursor:pointer;
    transition:all .25s var(--ease);
  }
  .filter-btn:hover, .filter-btn:focus-visible{color:var(--text); border-color:var(--text-dim);}
  .filter-btn.is-active{
    background:var(--accent); border-color:var(--accent); color:#1B140C;
  }
  .filter-btn.random-btn{
    display:inline-flex; align-items:center; gap:7px;
  }
  .filter-btn.random-btn svg{ flex-shrink:0; }
  /* ================= TRAVEL MAP ================= */
  .travel-map{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    flex-wrap:wrap;
    gap:22px 10px;
    position:relative;
    margin:8px 0 52px;
    padding-top:16px;
  }
  .travel-map::before{
    content:"";
    position:absolute; top:16px; left:4%; right:4%; height:1px;
    background-image:linear-gradient(to right, var(--line-strong) 50%, transparent 0%);
    background-size:9px 1px; background-repeat:repeat-x;
    z-index:0;
  }
  .map-point{
    position:relative; z-index:1;
    background:none; border:none; cursor:pointer;
    display:flex; flex-direction:column; align-items:center; gap:9px;
    padding:0 4px;
    flex:1 1 auto;
    min-width:110px;
  }
  .map-dot{
    width:11px; height:11px; border-radius:50%;
    background:var(--bg); border:2px solid var(--accent);
    transition:all .25s var(--ease);
  }
  .map-point:hover .map-dot, .map-point:focus-visible .map-dot, .map-point.is-active .map-dot{
    background:var(--accent);
    box-shadow:0 0 0 5px rgba(201,130,90,0.18);
  }
  .map-city{
    font-family:var(--font-display); font-size:15px; font-weight:600;
    color:var(--text); transition:color .2s;
  }
  .map-coord{
    font-family:var(--font-mono); font-size:10.5px; letter-spacing:.04em;
    color:var(--text-dim);
  }
  .map-point:hover .map-city, .map-point:focus-visible .map-city, .map-point.is-active .map-city{
    color:var(--accent);
  }
  /* ================= POPULAR BADGE ================= */
  .g-popular-badge{
    display:none;
    position:absolute; top:14px; left:14px; z-index:2;
    font-family:var(--font-mono); font-size:10.5px; letter-spacing:.05em;
    background:var(--accent); color:#1B140C;
    padding:5px 10px; border-radius:20px;
    white-space:nowrap;
  }
  .g-item.is-popular .g-popular-badge{ display:inline-block; }
  .g-price-badge{
    position:absolute; top:14px; right:14px; z-index:2;
    font-family:var(--font-mono); font-size:10.5px; letter-spacing:.05em;
    background:var(--bg-raised); color:var(--accent);
    border:1px solid var(--accent);
    padding:5px 10px; border-radius:20px;
    white-space:nowrap;
  }
  .gallery-pagination{
    display:flex; flex-wrap:wrap; gap:8px;
    margin-top:32px;
  }
  .gallery-pagination a, .gallery-pagination span{
    font-family:var(--font-mono); font-size:13px;
    min-width:38px; height:38px; padding:0 10px;
    display:inline-flex; align-items:center; justify-content:center;
    border:1px solid var(--line-strong);
    color:var(--text-dim);
    text-decoration:none;
    transition:all .2s var(--ease);
  }
  .gallery-pagination a:hover, .gallery-pagination a:focus-visible{
    border-color:var(--accent); color:var(--accent);
  }
  .gallery-pagination .is-current{
    background:var(--accent); border-color:var(--accent); color:#1B140C;
  }
  .grid{
    display:grid;
    grid-template-columns:repeat(var(--gallery-cols, 5), 1fr);
    gap:var(--gallery-gap, 6px);
    transition:opacity .25s var(--ease);
  }
  .g-item{
    position:relative;
    aspect-ratio:var(--photo-ratio, 1/1);
    overflow:hidden;
    border-radius:var(--radius, 12px);
    background:var(--bg-raised);
    cursor:pointer;
    opacity:0; transform:translateY(24px);
    transition:opacity .7s var(--ease), transform .7s var(--ease);
  }
  .g-item.in-view{opacity:1; transform:translateY(0);}
  .g-item.is-hidden{display:none;}
  .g-item img{
    width:100%; height:100%; object-fit:cover;
    transition:transform .7s var(--ease), filter .5s;
    filter:var(--photo-filter, saturate(0.94) contrast(1.02)) blur(14px);
    opacity:0.4;
  }
  .g-item img.is-loaded{
    filter:var(--photo-filter, saturate(0.94) contrast(1.02)) blur(0);
    opacity:1;
    transition:transform .7s var(--ease), filter .6s var(--ease), opacity .6s var(--ease);
  }
  .g-item:hover img, .g-item:focus-visible img{transform:scale(1.06);}
  .g-caption{
    position:absolute; left:0; right:0; bottom:0;
    padding:18px 20px;
    background:linear-gradient(180deg, transparent, rgba(4,6,10,0.94) 60%);
    opacity:0; transform:translateY(8px);
    transition:opacity .35s, transform .35s;
  }
  .g-item:hover .g-caption, .g-item:focus-visible .g-caption{opacity:1; transform:translateY(0);}
  .g-caption .frame{
    font-family:var(--font-mono); font-size:11px; letter-spacing:.1em;
    color:#EAAE86; display:block; margin-bottom:4px;
    text-shadow:0 1px 4px rgba(0,0,0,0.5);
  }
  .g-caption .title{
    font-family:var(--font-display); font-size:19px; color:#FFFFFF; font-weight:600;
    text-shadow:0 1px 4px rgba(0,0,0,0.5);
  }
  .g-mark{
    position:absolute; top:14px; right:14px;
    width:8px; height:8px; border-radius:50%;
    border:1px solid rgba(238,233,222,0.6);
    opacity:0; transition:opacity .3s;
  }
  .g-item:hover .g-mark, .g-item:focus-visible .g-mark{opacity:1; background:var(--accent); border-color:var(--accent);}
  /* ================= CONTACT ================= */
  .contact{background:var(--bg-alt);}
  .contact-grid{
    display:grid;
    grid-template-columns:0.9fr 1.3fr;
    gap:70px;
  }
  .contact-info p{color:var(--text-dim); font-size:calc(var(--body-scale, 1) * var(--user-scale, 1) * 18px); font-family:var(--font-body); max-width:44ch; margin-bottom:30px;}
  .contact-detail{
    display:flex; gap:14px; align-items:baseline;
    font-family:var(--font-mono); font-size:14px;
    margin-bottom:14px;
  }
  .contact-detail span:first-child{color:var(--accent); min-width:90px; letter-spacing:.08em; text-transform:uppercase; font-size:11.5px;}
  .contact-detail a{text-decoration:none; border-bottom:1px solid var(--line-strong);}
  .contact-detail a:hover, .contact-detail a:focus-visible{border-color:var(--accent); color:var(--accent);}
  .field{margin-bottom:22px;}
  .field label{
    display:block; font-family:var(--font-mono); font-size:11.5px;
    letter-spacing:.1em; text-transform:uppercase; color:var(--text-dim);
    margin-bottom:8px;
  }
  .field input, .field textarea{
    width:100%;
    background:transparent;
    border:none; border-bottom:1px solid var(--line-strong);
    color:var(--text);
    font-family:var(--font-body); font-size:16px;
    padding:10px 2px;
    resize:vertical;
    transition:border-color .25s;
  }
  .field textarea{min-height:110px;}
  .field input:focus, .field textarea:focus{
    outline:none; border-bottom-color:var(--accent);
  }
  /* ================= PHONE INPUT (intl-tel-input) ================= */
  .iti{
    --iti-hover-color: transparent;
    --iti-border-color: var(--line-strong);
    --iti-flag-width: 18px;
    width:100%;
  }
  .iti input.iti__tel-input{
    width:100%;
    background:transparent;
    border:none; border-bottom:1px solid var(--line-strong);
    color:var(--text);
    font-family:var(--font-body); font-size:16px;
    padding:10px 2px 10px 52px;
  }
  .iti input.iti__tel-input:focus{
    outline:none; border-bottom-color:var(--accent);
  }
  .iti__selected-flag{
    background:transparent !important;
    border-radius:0;
  }
  .iti__selected-flag:hover, .iti__selected-flag:focus-visible{
    background:rgba(245,241,232,0.06) !important;
  }
  .iti__country-list{
    background:var(--bg-raised);
    border:1px solid var(--line-strong);
    color:var(--text);
    font-family:var(--font-body);
    box-shadow:var(--shadow);
  }
  .iti__country.iti__highlight{
    background:var(--accent) !important;
    color:#1B140C !important;
  }
  .iti__dial-code{ color:var(--text-dim); }
  .iti__divider{ border-bottom-color:var(--line-strong); }
  .iti__search-input{
    background:var(--bg) !important;
    border:1px solid var(--line-strong) !important;
    color:var(--text) !important;
    font-family:var(--font-body) !important;
    caret-color:var(--accent);
    padding-left:40px !important;
  }
  .iti__search-input::placeholder{
    color:var(--text-dim) !important;
    opacity:1;
  }
  .iti__search-icon-svg{
    stroke:var(--text-dim) !important;
  }
  .send-btn{
    font-family:var(--font-mono); font-size:13px; letter-spacing:.1em; text-transform:uppercase;
    background:var(--accent); color:#1B140C;
    border:none; padding:15px 34px;
    cursor:pointer;
    transition:transform .2s, background .2s, opacity .2s;
  }
  .send-btn:hover, .send-btn:focus-visible{transform:translateY(-2px); background:var(--accent-soft); color:#F7F3E8;}
  .send-btn:disabled{opacity:.6; cursor:progress; transform:none;}
  .form-note{
    font-family:var(--font-mono); font-size:12.5px; color:var(--text-dim);
    margin-top:14px;
    min-height:1.2em;
  }
  .form-note.is-success{color:var(--accent-2);}
  .form-note.is-error{color:#C15C4A;}
  /* ================= FOOTER ================= */
  footer{
    padding:44px 0;
    border-top:1px solid var(--line);
  }
  .footer-inner{
    display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:16px;
  }
  .footer-inner small{color:var(--text-dim); font-family:var(--font-mono); font-size:12px;}
  .footer-links{display:flex; gap:26px; list-style:none; margin:0; padding:0;}
  .footer-links a{
    text-decoration:none; color:var(--text-dim); font-family:var(--font-mono); font-size:12px;
    letter-spacing:.06em; text-transform:uppercase;
  }
  .footer-links a:hover, .footer-links a:focus-visible{color:var(--accent);}
  /* ================= LIGHTBOX ================= */
  .lightbox{
    position:fixed; inset:0; z-index:500;
    background:rgba(10,14,22,0.94);
    display:flex; align-items:center; justify-content:center;
    opacity:0; visibility:hidden;
    transition:opacity .3s var(--ease);
    padding:5vw;
  }
  .lightbox.is-open{opacity:1; visibility:visible;}
  .lightbox img{
    max-width:100%; max-height:88vh; box-shadow:var(--shadow);
    opacity:0; transform:scale(0.97);
    transition:opacity .28s var(--ease), transform .28s var(--ease);
  }
  .lightbox img.is-ready{ opacity:1; transform:scale(1); }
  .lightbox-spinner{
    position:absolute;
    width:38px; height:38px;
    border:2px solid rgba(245,241,232,0.25);
    border-top-color:#F5F1E8;
    border-radius:50%;
    opacity:0;
    transition:opacity .25s var(--ease);
    animation:lightboxSpin .8s linear infinite;
    pointer-events:none;
  }
  .lightbox.is-loading .lightbox-spinner{ opacity:1; }
  @keyframes lightboxSpin{ to{ transform:rotate(360deg); } }
  @media (prefers-reduced-motion: reduce){
    .lightbox-spinner{ animation-duration:1.6s; }
  }
  .lightbox-caption{
    position:absolute; bottom:6vh; left:5vw; right:5vw; text-align:center;
    font-family:var(--font-mono); font-size:12.5px; letter-spacing:.08em; color:#DDD6C7;
  }
  .lightbox-exif{
    position:absolute; bottom:calc(6vh - 22px); left:5vw; right:5vw; text-align:center;
    font-family:var(--font-mono); font-size:11px; letter-spacing:.06em; color:#93A6AC;
    overflow-wrap:break-word;
  }
  .lightbox-description{
    position:absolute; bottom:calc(6vh + 26px); left:50%; transform:translateX(-50%);
    max-width:min(60ch, 80vw); max-height:16vh; overflow-y:auto;
    text-align:center; font-family:var(--font-body); font-size:13.5px; line-height:1.6;
    color:#DDD6C7; background:rgba(10,14,22,0.55); border-radius:8px;
    padding:10px 16px; display:none;
  }
  .lightbox-description.has-content{ display:block; }
  .lightbox-buy-btn{
    position:absolute; bottom:calc(6vh + 60px); left:50%; transform:translateX(-50%);
    display:none; align-items:center; gap:8px;
    background:var(--accent); color:#1B140C; text-decoration:none;
    font-family:var(--font-mono); font-size:13px; font-weight:600; letter-spacing:.04em;
    padding:10px 20px; border-radius:6px;
    transition:background .2s, transform .2s;
  }
  .lightbox-buy-btn:hover, .lightbox-buy-btn:focus-visible{
    background:var(--accent-soft); transform:translateX(-50%) translateY(-2px);
  }
  .lightbox-share-btn{
    position:absolute; top:26px; right:80px;
    background:rgba(10,14,22,0.5); border:1px solid rgba(255,255,255,0.2);
    color:#F7F3E8; width:40px; height:40px; border-radius:50%;
    display:flex; align-items:center; justify-content:center; cursor:pointer;
    transition:background .2s, border-color .2s;
  }
  .lightbox-share-btn:hover, .lightbox-share-btn:focus-visible{
    background:rgba(10,14,22,0.75); border-color:var(--accent);
  }
  .lightbox-close{
    position:absolute; top:26px; right:32px;
    background:none; border:none; color:#F7F3E8; cursor:pointer;
    width:38px; height:38px;
  }
  .lightbox-close svg{width:22px; height:22px;}
  .lightbox-nav{
    position:absolute; top:50%; transform:translateY(-50%);
    background:none; border:none; color:#F7F3E8; cursor:pointer;
    padding:14px;
  }
  .lightbox-nav.prev{left:14px;}
  .lightbox-nav.next{right:14px;}
  .lightbox-nav svg{width:24px; height:24px;}
  /* ================= REVEAL ================= */
  .reveal{opacity:0; transform:translateY(26px); transition:opacity .8s var(--ease), transform .8s var(--ease);}
  .reveal.in-view{opacity:1; transform:translateY(0);}
  /* ================= RESPONSIVE ================= */
  @media (max-width:1100px){
    .grid{grid-template-columns:repeat(3,1fr);}
  }
  @media (max-width:960px){
    .nav-links, .nav-controls .lang-switch{display:none;}
    .menu-btn{display:flex;}
  }
  @media (max-width:900px){
    .about-grid, .contact-grid{grid-template-columns:1fr; gap:40px;}
    .about-plate{position:static;}
    .grid{grid-template-columns:repeat(2,1fr);}
  }
  @media (max-width:720px){
    .section-pad{padding:90px 0;}
    .grid{grid-template-columns:repeat(2,1fr);}
    .hero-content{padding-bottom:12vh;}
    .section-head{flex-direction:column; align-items:flex-start; gap:14px;}
    .footer-links{flex-wrap:wrap; row-gap:12px;}
    .footer-inner{flex-direction:column; align-items:flex-start;}
  }
  @media (max-width:480px){
    .grid{grid-template-columns:1fr;}
  }
  /* mobile drawer */
  .mobile-drawer{
    position:fixed; top:var(--nav-h); right:0; left:auto; bottom:auto;
    width:min(78vw,200px);
    max-height:calc(100vh - var(--nav-h));
    background:var(--bg-raised);
    z-index:300;
    padding:34px 24px;
    transform:translateX(100%);
    transition:transform .4s var(--ease);
    box-shadow:var(--shadow);
    overflow-y:auto;
    -webkit-overflow-scrolling:touch;
  }
  .mobile-drawer.is-open{transform:translateX(0);}
  .mobile-drawer ul{list-style:none; padding:0; margin:0 0 26px; display:flex; flex-direction:column; gap:22px;}
  .drawer-close{ display:none; }
  .mobile-drawer a{
    text-decoration:none; color:var(--text); font-family:var(--font-display);
    font-size:21px; font-weight:600;
  }
  .drawer-scrim{
    position:fixed; inset:0; z-index:290;
    background:rgba(10,14,22,0.5);
    opacity:0; visibility:hidden; transition:opacity .3s;
  }
  .drawer-scrim.is-open{opacity:1; visibility:visible;}
  /* ================= BACK TO TOP ================= */
  .back-to-top{
    position:fixed;
    right:6vw; bottom:34px;
    z-index:150;
    width:46px; height:46px;
    border-radius:50%;
    border:1px solid var(--line-strong);
    background:var(--bg-raised);
    color:var(--text);
    display:flex; align-items:center; justify-content:center;
    cursor:pointer;
    opacity:0; visibility:hidden; transform:translateY(12px);
    transition:opacity .35s var(--ease), transform .35s var(--ease), border-color .25s, background .3s var(--ease);
    box-shadow:var(--shadow);
  }
  .back-to-top.is-visible{opacity:1; visibility:visible; transform:translateY(0);}
  .back-to-top:hover, .back-to-top:focus-visible{border-color:var(--accent); color:var(--accent);}
  .back-to-top svg{width:18px; height:18px;}
  @media (max-width:720px){
    .back-to-top{right:20px; bottom:20px; width:42px; height:42px;}
  }
  /* ================= SEARCH ================= */
  .search-toggle{
    background:none; border:none; color:var(--text); cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    width:34px; height:34px; opacity:.8; transition:opacity .2s, color .2s;
  }
  .search-toggle:hover, .search-toggle:focus-visible{ opacity:1; color:var(--accent); }
  .search-overlay{
    position:fixed; inset:0; z-index:200;
    background:rgba(10,14,22,0.85);
    display:flex; flex-direction:column; align-items:center;
    padding:12vh 20px 20px;
    opacity:0; visibility:hidden; transition:opacity .25s var(--ease);
  }
  .search-overlay.is-open{ opacity:1; visibility:visible; }
  .search-box{
    width:100%; max-width:560px;
    background:var(--bg-raised); border-radius:12px;
    display:flex; align-items:center; gap:12px;
    padding:16px 20px; color:var(--text);
  }
  .search-box svg{ flex-shrink:0; opacity:.6; }
  .search-box input{
    flex:1; background:none; border:none; outline:none;
    font-family:var(--font-body); font-size:17px; color:var(--text);
  }
  .search-box button{ background:none; border:none; color:var(--text-dim); cursor:pointer; opacity:.7; }
  .search-box button:hover{ opacity:1; color:var(--accent); }
  .search-results{
    width:100%; max-width:560px; margin-top:10px;
    background:var(--bg-raised); border-radius:12px;
    max-height:50vh; overflow-y:auto;
    display:none;
  }
  .search-results.has-results{ display:block; }
  .search-result-item{
    display:flex; align-items:center; gap:10px;
    padding:14px 20px; text-decoration:none; color:var(--text);
    border-bottom:1px solid var(--line);
    font-family:var(--font-body); font-size:15px;
  }
  .search-result-item:last-child{ border-bottom:none; }
  .search-result-item:hover, .search-result-item:focus-visible{ background:var(--bg-alt); color:var(--accent); }
  .search-result-type{
    font-family:var(--font-mono); font-size:10px; text-transform:uppercase;
    color:var(--accent); letter-spacing:.05em; flex-shrink:0;
    border:1px solid var(--accent); border-radius:4px; padding:2px 6px;
  }
  .search-empty{ padding:16px 20px; color:var(--text-dim); font-size:14px; }
  /* ================= FAVORITES ================= */
  .g-fav-btn{
    position:absolute; top:10px; left:10px; z-index:5;
    background:rgba(10,14,22,0.5); border:none; color:#fff;
    width:32px; height:32px; border-radius:50%;
    font-size:16px; line-height:1; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
    opacity:.85; transition:opacity .2s, transform .15s, color .2s;
  }
  .g-fav-btn:hover{ transform:scale(1.1); opacity:1; }
  .g-fav-btn.is-fav{ color:var(--accent); opacity:1; }
  .cat-tile-favorites{
    display:flex; align-items:center; justify-content:center;
    flex-direction:column; gap:8px;
    background:transparent; border:1px solid var(--accent) !important;
    color:var(--accent);
  }
  /* Google reCAPTCHA v3 badge — hidden per user preference. Per
     Google's terms, the required disclosure is shown as text near
     the form instead (see .recaptcha-notice). */
  .grecaptcha-badge{
    visibility:hidden !important;
  }
  .recaptcha-notice{
    font-family:var(--font-mono);
    font-size:11px;
    line-height:1.7;
    color:var(--text-dim);
    margin-top:16px;
  }
  .recaptcha-notice a{
    color:var(--text-dim);
    text-decoration:underline;
    text-underline-offset:2px;
  }
  .recaptcha-notice a:hover, .recaptcha-notice a:focus-visible{
    color:var(--accent);
  }
  .visually-hidden{
    position:absolute !important; width:1px; height:1px; padding:0; margin:-1px;
    overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
  }
  /* ================= COOKIE NOTICE ================= */
  .cookie-notice{
    position:fixed;
    left:0; right:0; bottom:0;
    z-index:600;
    background:var(--bg-raised);
    border-top:1px solid var(--line-strong);
    box-shadow:var(--shadow);
    transform:translateY(110%);
    transition:transform .5s var(--ease);
  }
  .cookie-notice.is-visible{ transform:translateY(0); }
  .cookie-notice-inner{
    max-width:1180px;
    margin:0 auto;
    padding:22px 6vw;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:28px;
    flex-wrap:wrap;
  }
  .cookie-notice p{
    margin:0;
    font-size:14.5px;
    line-height:1.6;
    color:var(--text-dim);
    max-width:62ch;
  }
  .cookie-notice-actions{
    display:flex; gap:12px; flex-shrink:0;
  }
  .cookie-decline, .cookie-accept{
    font-family:var(--font-mono);
    font-size:12.5px; letter-spacing:.08em; text-transform:uppercase;
    padding:11px 22px;
    cursor:pointer;
    transition:all .25s var(--ease);
    border-radius:2px;
  }
  .cookie-decline{
    background:transparent;
    border:1px solid var(--line-strong);
    color:var(--text-dim);
  }
  .cookie-decline:hover, .cookie-decline:focus-visible{
    border-color:var(--text-dim); color:var(--text);
  }
  .cookie-accept{
    background:var(--accent);
    border:1px solid var(--accent);
    color:#1B140C;
  }
  .cookie-accept:hover, .cookie-accept:focus-visible{
    background:var(--accent-soft); border-color:var(--accent-soft); color:#F5F1E8;
  }
  @media (max-width:720px){
    .cookie-notice-inner{ flex-direction:column; align-items:stretch; text-align:left; }
    .cookie-notice-actions{ justify-content:flex-end; }
  }
