/* ============================================================
   DK VISUALS v2 — base: tokens, overlays, cursor, loader,
   nav, fullscreen menu, chapter rail, lightbox, tweaks
   ============================================================ */
:root{
  --bg:#070705;
  --bg-2:#0d0c0a;
  --ink:#f3efe6;
  --ink-2:rgba(243,239,230,.6);
  --ink-3:rgba(243,239,230,.32);
  --line:rgba(243,239,230,.13);
  --accent:#c9a36a;
  --accent-soft:rgba(201,163,106,.16);
  --ease:cubic-bezier(.16,1,.3,1);
  --serif:"Cormorant Garamond",Georgia,serif;
  --sans:"Space Grotesk",-apple-system,system-ui,sans-serif;
  --mono:"Space Mono",ui-monospace,monospace;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:auto}
body{
  background:var(--bg);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:300;
  -webkit-font-smoothing:antialiased;
  overflow-x:clip;
  line-height:1.5;
  cursor:none;
}
body.is-loading{overflow:hidden;height:100vh}
@media (hover:none),(pointer:coarse){ body{cursor:auto} }
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:none}
@media (hover:none),(pointer:coarse){ button{cursor:pointer} }
::selection{background:var(--accent);color:#000}

/* ---------- shared type ---------- */
.k-label{font-family:var(--mono);font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--accent)}
.k-label .dim{color:var(--ink-3)}
.k-mono{font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}
em{font-family:var(--serif);font-style:italic;font-weight:400}

/* masked line reveal */
.lr{display:block;overflow:hidden}
.lr>span{display:block;transform:translateY(115%);transition:transform 1.15s var(--ease)}
.in .lr>span, .lr.in>span{transform:translateY(0)}
.lr[data-d="1"]>span{transition-delay:.08s}
.lr[data-d="2"]>span{transition-delay:.16s}
.lr[data-d="3"]>span{transition-delay:.24s}

[data-reveal]{opacity:0;transform:translateY(34px);transition:opacity 1s ease,transform 1.1s var(--ease)}
[data-reveal].in{opacity:1;transform:none}
[data-reveal][data-d="1"]{transition-delay:.1s}
[data-reveal][data-d="2"]{transition-delay:.2s}
[data-reveal][data-d="3"]{transition-delay:.3s}

/* ---------- film grain + vignette ---------- */
.grain{
  position:fixed;inset:-50%;z-index:9000;pointer-events:none;
  opacity:.055;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 7s steps(6) infinite;
}
.no-grain .grain{display:none}
@keyframes grain{
  0%{transform:translate(0,0)}10%{transform:translate(-4%,-4%)}
  30%{transform:translate(3%,-2%)}50%{transform:translate(-2%,4%)}
  70%{transform:translate(4%,2%)}90%{transform:translate(-3%,3%)}
  100%{transform:translate(0,0)}
}
.vignette{position:fixed;inset:0;z-index:8000;pointer-events:none;
  box-shadow:inset 0 0 240px 40px rgba(0,0,0,.66)}

/* ---------- custom cursor ---------- */
.cursor,.cursor-dot{position:fixed;top:0;left:0;z-index:10000;pointer-events:none;
  border-radius:50%;will-change:transform;mix-blend-mode:difference}
.cursor{width:38px;height:38px;border:1px solid var(--ink);
  transform:translate(-50%,-50%);transition:width .35s var(--ease),height .35s var(--ease),background .35s,border-color .35s,opacity .3s}
.cursor-dot{width:5px;height:5px;background:var(--ink);transform:translate(-50%,-50%)}
.cursor.is-hover{width:64px;height:64px;background:var(--ink);border-color:transparent}
.cursor.is-view{width:96px;height:96px;background:var(--accent);border-color:transparent;mix-blend-mode:normal}
.cursor .clabel{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:#000;text-transform:uppercase;opacity:0;transition:opacity .2s;mix-blend-mode:normal}
.cursor.is-view .clabel{opacity:1}
@media (hover:none),(pointer:coarse){ .cursor,.cursor-dot{display:none} }

/* ============================================================
   LOADER — counter + name + curtain
   ============================================================ */
#loader{position:fixed;inset:0;z-index:11000;display:flex;align-items:center;justify-content:center}
#loader .pane{position:absolute;left:0;right:0;height:50.5%;background:#040403;transition:transform 1.05s cubic-bezier(.76,0,.24,1)}
#loader .pane.t{top:0;transform-origin:top}
#loader .pane.b{bottom:0;transform-origin:bottom}
#loader .ld-center{position:relative;z-index:2;text-align:center}
#loader .ld-name{font-family:var(--serif);font-weight:500;font-size:clamp(44px,7.5vw,108px);line-height:1;letter-spacing:.04em}
#loader .ld-name .lr>span{transform:translateY(115%)}
#loader.named .ld-name .lr>span{transform:translateY(0)}
#loader .ld-sub{margin-top:18px;font-family:var(--mono);font-size:10px;letter-spacing:.4em;text-transform:uppercase;color:var(--ink-3);
  opacity:0;transition:opacity 1s ease .5s}
#loader.named .ld-sub{opacity:1}
#loader .ld-count{position:absolute;right:clamp(22px,4vw,56px);bottom:clamp(20px,4vh,44px);z-index:2;
  font-family:var(--mono);font-size:clamp(48px,8vw,110px);line-height:1;color:var(--ink-3);font-weight:400;
  font-variant-numeric:tabular-nums}
#loader .ld-count i{font-style:normal;font-size:.35em;color:var(--accent);letter-spacing:.2em;vertical-align:.35em}
#loader .ld-line{position:absolute;left:0;bottom:0;height:2px;background:var(--accent);width:0;z-index:3}
body.loaded #loader .pane.t{transform:scaleY(0)}
body.loaded #loader .pane.b{transform:scaleY(0)}
body.loaded #loader .ld-center,body.loaded #loader .ld-count,body.loaded #loader .ld-line{opacity:0;transition:opacity .4s ease}
body.loaded #loader{pointer-events:none}
body.loader-gone #loader{display:none}

/* ============================================================
   NAV
   ============================================================ */
.nav{position:fixed;top:0;left:0;right:0;z-index:7000;
  display:flex;align-items:center;justify-content:space-between;
  padding:24px clamp(20px,4vw,52px);
  mix-blend-mode:difference;
  opacity:0;transform:translateY(-14px);transition:opacity .9s ease .25s,transform .9s var(--ease) .25s}
body.loaded .nav{opacity:1;transform:none}
.nav .brand{display:flex;align-items:center}
.nav .brand img{height:52px;width:auto}
.nav-right{display:flex;align-items:center;gap:clamp(18px,2.6vw,34px)}
.lang{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:12px;letter-spacing:.1em}
.lang button{opacity:.4;transition:opacity .3s;padding:2px}
.lang button.on{opacity:1}
.lang .sep{opacity:.3}
.menu-btn{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:11px;letter-spacing:.3em;text-transform:uppercase}
.menu-btn .mlines{display:flex;flex-direction:column;gap:5px;width:26px}
.menu-btn .mlines span{height:1px;background:var(--ink);transition:transform .4s var(--ease),opacity .3s}
body.menu-open .menu-btn .mlines span:nth-child(1){transform:translateY(3px) rotate(45deg)}
body.menu-open .menu-btn .mlines span:nth-child(2){transform:translateY(-3px) rotate(-45deg)}
@media(max-width:640px){ .menu-btn .mtxt{display:none} }
@media(max-width:640px){ .nav .brand img{height:44px} }

/* ---------- fullscreen menu ---------- */
.menu{position:fixed;inset:0;z-index:6900;background:#040403;
  clip-path:inset(0 0 100% 0);transition:clip-path .9s cubic-bezier(.76,0,.24,1);
  display:grid;grid-template-columns:1fr minmax(0,.85fr);align-items:stretch;overflow:hidden}
body.menu-open .menu{clip-path:inset(0 0 0% 0)}
.menu-links{display:flex;flex-direction:column;justify-content:center;gap:2px;
  padding:0 clamp(24px,6vw,110px)}
.menu-links a{display:flex;align-items:baseline;gap:clamp(14px,2vw,28px);padding:clamp(4px,1vh,10px) 0;
  border-bottom:1px solid transparent}
.menu-links a .no{font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--ink-3);min-width:34px}
.menu-links a .nm{font-family:var(--serif);font-weight:500;font-size:clamp(34px,5.6vh,58px);line-height:1.12;
  transition:transform .5s var(--ease),color .4s}
.menu-links a:hover .nm{transform:translateX(14px);color:var(--accent);font-style:italic}
.menu-links a .lr>span{transition:transform .9s var(--ease)}
.menu-links a:nth-child(1) .lr>span{transition-delay:.15s}
.menu-links a:nth-child(2) .lr>span{transition-delay:.21s}
.menu-links a:nth-child(3) .lr>span{transition-delay:.27s}
.menu-links a:nth-child(4) .lr>span{transition-delay:.33s}
.menu-links a:nth-child(5) .lr>span{transition-delay:.39s}
.menu-links a:nth-child(6) .lr>span{transition-delay:.45s}
.menu-links a:nth-child(7) .lr>span{transition-delay:.51s}
body:not(.menu-open) .menu-links .lr>span{transform:translateY(115%);transition-delay:0s!important;transition-duration:.4s}
body.menu-open .menu-links .lr>span{transform:translateY(0)}
.menu-vis{position:relative;overflow:hidden;border-left:1px solid var(--line)}
.menu-vis img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  opacity:0;transform:scale(1.07);transition:opacity .7s ease,transform 1.6s var(--ease);filter:saturate(.85) brightness(.8)}
.menu-vis img.show{opacity:1;transform:scale(1)}
.menu-foot{position:absolute;bottom:0;left:0;right:0;display:flex;justify-content:space-between;
  padding:22px clamp(24px,6vw,110px);font-family:var(--mono);font-size:10px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--ink-3)}
@media(max-width:860px){
  .menu{grid-template-columns:1fr}
  .menu-vis{display:none}
}

/* ============================================================
   CHAPTER RAIL (right edge)
   ============================================================ */
.rail{position:fixed;right:clamp(14px,2.2vw,30px);top:50%;transform:translateY(-50%);z-index:6500;
  display:flex;flex-direction:column;gap:14px;align-items:flex-end;
  opacity:0;transition:opacity .8s ease 1s}
body.loaded .rail{opacity:1}
body.menu-open .rail{opacity:0}
.rail a{display:flex;align-items:center;gap:10px;position:relative}
.rail .rl{font-family:var(--mono);font-size:9px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-2);
  opacity:0;transform:translateX(6px);transition:.35s;white-space:nowrap}
.rail a:hover .rl{opacity:1;transform:none}
.rail .rt{width:14px;height:1px;background:var(--ink-3);transition:width .4s var(--ease),background .3s}
.rail a.on .rt{width:30px;background:var(--accent)}
.rail a.on .rl{opacity:1;transform:none;color:var(--accent)}
@media(max-width:900px),(max-height:560px){ .rail{display:none} }

/* scroll progress hairline */
.sprog{position:fixed;top:0;left:0;height:2px;width:100%;z-index:7100;transform-origin:left;
  background:var(--accent);transform:scaleX(0);pointer-events:none}

/* ============================================================
   LIGHTBOX
   ============================================================ */
.lightbox{position:fixed;inset:0;z-index:10800;background:rgba(4,4,3,.96);
  display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .5s}
.lightbox.open{opacity:1;pointer-events:auto}
.lightbox img{max-width:88vw;max-height:84vh;object-fit:contain;transform:scale(.96);transition:transform .6s var(--ease);box-shadow:0 40px 120px rgba(0,0,0,.7)}
.lightbox.open img{transform:scale(1)}
.lb-close{position:absolute;top:28px;right:34px;font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--ink-2)}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:14px;letter-spacing:.2em;color:var(--ink-2);padding:20px;z-index:2}
.lb-prev{left:14px}.lb-next{right:14px}
.lb-meta{position:absolute;bottom:26px;left:0;right:0;text-align:center;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--ink-3)}

/* ============================================================
   TWEAKS panel
   ============================================================ */
#tweaks{position:fixed;top:50%;right:18px;transform:translateY(-50%);z-index:10900;
  width:248px;background:rgba(13,12,10,.94);border:1px solid var(--line);backdrop-filter:blur(14px);
  padding:18px;border-radius:14px;font-family:var(--sans);display:none;box-shadow:0 30px 80px rgba(0,0,0,.6)}
#tweaks.show{display:block}
#tweaks h4{font-family:var(--mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-2);margin-bottom:16px;display:flex;justify-content:space-between;align-items:center}
#tweaks .tw-close{color:var(--ink-3)}
.tw-row{margin-bottom:16px}
.tw-row:last-child{margin-bottom:2px}
.tw-row>label{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);display:block;margin-bottom:9px}
.tw-seg{display:flex;gap:5px;flex-wrap:wrap}
.tw-seg button{flex:1;min-width:fit-content;font-family:var(--mono);font-size:10px;letter-spacing:.06em;padding:8px 6px;
  border:1px solid var(--line);border-radius:7px;color:var(--ink-2);transition:.25s;text-transform:uppercase}
.tw-seg button.on{background:var(--ink);color:#000;border-color:var(--ink)}
.tw-sw{display:flex;gap:7px}
.tw-sw button{width:26px;height:26px;border-radius:50%;border:1px solid rgba(255,255,255,.2);transition:.25s}
.tw-sw button.on{box-shadow:0 0 0 2px var(--bg),0 0 0 3px var(--ink);transform:scale(1.08)}

/* gallery b/w tweak */
body.gallery-bw .arch-grid img{filter:grayscale(1) contrast(1.05)}

/* ============================================================
   REDUCED MOTION
   ============================================================ */
@media (prefers-reduced-motion: reduce){
  .grain{animation:none}
  [data-reveal]{opacity:1;transform:none;transition:none}
  .lr>span{transform:none!important;transition:none!important}
  *{scroll-behavior:auto!important}
}
