/* ============ Yeisson Rubiano — Desktop Portfolio ============
   Sistema gráfico: CURUBA Brand Book 2026 × cameramodafashiontrust
   Papel / tinta / grises · ABC Whyte Inktrap · títulos en altas
   ============================================================== */
@font-face{
  font-family:"Whyte"; font-style:normal; font-weight:100 900; font-display:swap;
  src:url("assets/fonts/WhyteInktrap-Variable.woff2") format("woff2");
}
@font-face{
  font-family:"Whyte"; font-style:italic; font-weight:300 500; font-display:swap;
  src:url("assets/fonts/WhyteInktrap-Italic.woff2") format("woff2");
}
@font-face{
  font-family:"Retrogression"; font-style:normal; font-weight:400; font-display:swap;
  src:url("assets/fonts/Retrogression.woff2") format("woff2");
}
:root{
  --paper:#FAFAF8;
  --ink:#0A0A0A;
  --g300:#B9B9B4;
  --g500:#8A8A86;
  --g700:#4A4A47;
  --line:rgba(10,10,10,0.16);
  --rule:#0A0A0A;
  --bar-h:54px;
  --dock-h:72px;
  --font:"Whyte","Helvetica Neue",Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,monospace;
  --retro:"Retrogression",monospace;
  --win-bg:var(--paper);
  --shadow:14px 14px 0 rgba(10,10,10,0.07), 0 2px 10px rgba(10,10,10,0.10);
}
body.night{
  --paper:#0A0A0A;
  --ink:#F4F4F0;
  --g300:#4A4A47;
  --g500:#8A8A86;
  --g700:#C9C9C4;
  --line:rgba(244,244,240,0.18);
  --rule:#F4F4F0;
  --shadow:14px 14px 0 rgba(0,0,0,0.5), 0 2px 10px rgba(0,0,0,0.6);
}
*{ box-sizing:border-box; margin:0; padding:0; }
html,body{ height:100%; }
body{
  font-family:var(--font); color:var(--ink); font-size:15px; line-height:1.5;
  font-weight:400; -webkit-font-smoothing:antialiased; overflow:hidden;
  background:var(--paper);
}
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }
button{ font:inherit; color:inherit; }
::selection{ background:var(--ink); color:var(--paper); }
.vchar{ display:inline-block; will-change:font-variation-settings; }

/* tracked caption — the CURUBA label voice */
.cap, .menubar__item, .dcard__label, .dcard__head, .fside-item, .window__title,
.hint, .lb__count, .lb__close, .fproj__back{
  text-transform:uppercase; letter-spacing:0.2em; font-weight:500;
}

/* ---------------- Desktop ---------------- */
.desktop{
  position:fixed; inset:0; overflow:hidden;
  background:var(--paper);
  transition:background .45s ease;
}
/* faint 12-col editorial grid (retícula) */
.desktop::before{
  content:""; position:absolute; inset:var(--bar-h) 0 0 0; pointer-events:none;
  background:repeating-linear-gradient(90deg, var(--line) 0 1px, transparent 1px calc(100%/12));
  opacity:0.22;
}
/* giant cropped watermark */
.wm{
  position:absolute; left:0; right:0; bottom:-0.1em; z-index:1;
  font-weight:180; font-size:clamp(100px,16.5vw,270px); line-height:0.74;
  letter-spacing:-0.015em; text-transform:uppercase; white-space:nowrap; text-align:center;
  color:var(--ink); opacity:0.055; pointer-events:none; user-select:none;
}
@keyframes spin{ to{ transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce){ .mark svg, .dock__item--ast svg{ animation:none !important; } }

/* ---------------- Dock (desktop bar with icons) ---------------- */
.dock{
  position:absolute; left:50%; bottom:12px; transform:translateX(-50%); z-index:8000;
  display:flex; align-items:center; gap:7px; padding:8px;
  background:var(--paper); border:1px solid var(--ink);
  box-shadow:6px 6px 0 rgba(10,10,10,0.10);
}
body.night .dock{ box-shadow:6px 6px 0 rgba(0,0,0,0.5); }
/* each icon lives in an identical rounded container — mac toolbar style */
.dock__item{
  position:relative; width:40px; height:40px; flex:0 0 auto;
  display:flex; align-items:center; justify-content:center;
  background:var(--paper); border:1px solid var(--ink); border-radius:10px;
  cursor:pointer; color:var(--ink);
  transition:transform .22s cubic-bezier(.2,.8,.2,1), background .18s, color .18s;
}
.dock__item svg{ width:20px; height:20px; display:block; }
.dock__item:hover{ transform:translateY(-7px) scale(1.18); background:var(--ink); color:var(--paper); }
.dock__item--ast svg{ animation:spin 12s linear infinite; }
.dock__tip{
  position:absolute; bottom:calc(100% + 12px); left:50%; transform:translateX(-50%) scale(0.92);
  font-size:8px; letter-spacing:0.2em; text-transform:uppercase; font-weight:500;
  background:var(--paper); color:var(--ink); border:1px solid var(--ink);
  padding:4px 9px; white-space:nowrap; opacity:0; pointer-events:none;
  transition:opacity .18s, transform .18s;
}
.dock__item:hover .dock__tip{ opacity:1; transform:translateX(-50%) scale(1); }

/* ---------------- Index dropdown ---------------- */
.idxmenu{
  position:fixed; top:var(--bar-h); left:0; right:0; z-index:8900;
  background:var(--paper); border-bottom:1px solid var(--rule);
  max-height:calc(100vh - var(--bar-h)); overflow-y:auto;
  opacity:0; transform:translateY(-10px); pointer-events:none;
  transition:opacity .22s ease, transform .26s cubic-bezier(.2,.8,.2,1);
}
.idxmenu.open{ opacity:1; transform:translateY(0); pointer-events:auto; }
.idxmenu__grid{
  display:grid; grid-template-columns:repeat(6,1fr); gap:0;
  padding:clamp(18px,2.4vw,34px) clamp(16px,2.4vw,34px) clamp(24px,3vw,40px);
}
.idxmenu__col{ display:flex; flex-direction:column; padding:0 clamp(10px,1.4vw,22px); border-left:1px solid var(--line); min-width:0; }
.idxmenu__cat{
  text-align:left; background:none; border:none; cursor:pointer; color:var(--ink);
  font-size:10px; letter-spacing:0.22em; text-transform:uppercase; font-weight:500;
  padding:0 0 12px; border-bottom:1px solid var(--rule); margin-bottom:10px;
}
.idxmenu__cat:hover{ font-style:italic; }
.idxmenu__p{
  display:flex; gap:8px; align-items:baseline; text-align:left; background:none; border:none;
  cursor:pointer; color:var(--g700); font-size:12.5px; font-weight:400; padding:4px 0;
  transition:color .15s, padding-left .2s; min-width:0;
}
.idxmenu__p i{ font-style:normal; font-family:var(--mono); font-size:8.5px; color:var(--g500); flex:0 0 auto; }
.idxmenu__p:hover{ color:var(--ink); font-style:italic; padding-left:6px; }

/* ---------------- Menu bar ---------------- */
.menubar{
  position:fixed; top:0; left:0; right:0; height:var(--bar-h); z-index:9000;
  display:flex; align-items:center; justify-content:space-between;
  padding:0 18px; gap:16px;
  background:var(--paper); color:var(--ink);
  border-bottom:1px solid var(--rule);
}
.menubar__left, .menubar__right{ display:flex; align-items:center; gap:22px; min-width:0; }
.mark{
  display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px;
  color:var(--ink); flex:0 0 auto; margin-right:-8px;
  background:none; border:none; padding:0; cursor:pointer;
}
/* glyph height matches the name text and the day/night switch (~19px) */
.mark svg{ width:19px; height:19px; animation:spin 12s linear infinite; transform-origin:50% 50%; transition:transform .3s; }
.mark:hover svg{ animation-duration:3s; }
.menubar.idx-open .mark svg{ animation-duration:3s; }
.menubar__name{
  font-weight:480; font-size:19px; letter-spacing:0.05em; text-transform:uppercase;
  line-height:1; white-space:nowrap; cursor:default; color:var(--ink);
  border-bottom:1.5px solid var(--ink); padding-bottom:3px;
}
.menubar__item{
  font-size:10px; color:var(--ink); cursor:pointer;
  background:none; border:none; opacity:0.62; transition:opacity .2s; white-space:nowrap;
  padding:4px 0;
}
.menubar__item:hover{ opacity:1; }
.menubar .lang{ display:flex; gap:6px; align-items:center; font-size:10px; letter-spacing:0.14em; font-weight:500; }
.menubar .lang button{ background:none; border:none; cursor:pointer; color:var(--g500); padding:0; letter-spacing:inherit; }
.menubar .lang button.is-active{ color:var(--ink); border-bottom:1px solid var(--ink); }
.menubar .lang .sep{ opacity:0.35; }
.menubar__clock{ font-family:var(--mono); font-size:10.5px; letter-spacing:0.06em; color:var(--ink); opacity:0.8; white-space:nowrap; }

/* day/night switch — ink square flips */
.switch{
  width:34px; height:18px; border-radius:0; border:1px solid var(--ink);
  background:transparent; position:relative; cursor:pointer; flex:0 0 auto;
}
.switch__knob{
  position:absolute; top:2px; left:2px; width:12px; height:12px;
  background:var(--ink);
  transition:transform .28s cubic-bezier(.65,0,.2,1);
}
body.night .switch__knob{ transform:translateX(16px) rotate(180deg); }

/* ---------------- Desktop icons — folder shape (one continuous line) ---------------- */
.icons{ position:absolute; inset:var(--bar-h) 0 var(--dock-h) 0; z-index:10; }
.dicon{
  position:absolute; width:172px; cursor:pointer; user-select:none; touch-action:none;
}
.dicon:nth-child(4n+1){ transform:rotate(-1.1deg); }
.dicon:nth-child(4n+2){ transform:rotate(0.9deg); }
.dicon:nth-child(4n+3){ transform:rotate(-0.6deg); }
.dicon:nth-child(4n+4){ transform:rotate(1.2deg); }
.dicon:hover{ transform:rotate(0deg) translateY(-4px); z-index:55; }
.dicon, .dcard, .dcard__img img{ transition:transform .3s cubic-bezier(.2,.8,.2,1), filter .45s ease; }
.dicon.dragging{ z-index:60; transform:rotate(0deg) scale(1.04); }
.dcard{
  display:block; position:relative; width:172px; height:121px;
}
.dcard, .dcard *{ pointer-events:none; }
.dcard__shape{ position:absolute; inset:0; width:100%; height:100%; }
.dcard__shape path{
  fill:var(--paper); stroke:var(--ink); stroke-width:1.5;
  vector-effect:non-scaling-stroke; stroke-linejoin:round;
}
.dicon:hover .dcard{ filter:drop-shadow(5px 5px 0 rgba(10,10,10,0.13)); }
body.night .dicon:hover .dcard{ filter:drop-shadow(5px 5px 0 rgba(0,0,0,0.55)); }
/* index number lives on the folder tab — detached from the vector line, centred */
.dcard__no{
  position:absolute; top:0; left:5px; width:56px; height:15px;
  display:flex; align-items:center; justify-content:center;
  font-size:7px; letter-spacing:0.2em; text-indent:0.2em; font-weight:500; color:var(--ink);
  padding-top:3px;
}
/* purely typographic composition — the cover image lives only in the hover preview */
.dcard__row{
  position:absolute; left:19px; right:16px; top:27px; bottom:14px;
  display:flex; align-items:center;
}
.dcard__txt{ flex:1; min-width:0; display:flex; flex-direction:column; gap:8px; }
.dcard__label{
  font-size:13px; line-height:1.35; text-align:left; color:var(--ink);
  letter-spacing:0.12em;
}
.dcard__count{
  font-style:normal; font-family:var(--mono); font-size:8px; letter-spacing:0.14em;
  text-transform:uppercase; color:var(--g500);
}
/* INFO folder: Retrogression monogram (typographic, not a photo) */
.dcard--doc .dcard__row{ gap:12px; }
.dcard__mono{
  flex:0 0 52px; height:100%; display:flex; align-items:center; justify-content:center;
  font-family:var(--retro); font-size:28px; line-height:1; color:var(--ink);
  border:1px solid var(--line);
}

/* hover preview card */
.preview{
  position:fixed; z-index:8500; pointer-events:none;
  width:212px; padding:6px 6px 8px; background:var(--paper);
  border:1px solid var(--ink); box-shadow:8px 8px 0 rgba(10,10,10,0.10);
  transform:translateX(-50%) rotate(-1.6deg) scale(0.96);
  opacity:0; transition:opacity .16s ease, transform .22s cubic-bezier(.2,.9,.25,1.15);
}
.preview.show{ opacity:1; transform:translateX(-50%) rotate(-1.2deg) scale(1); }
.preview img{ width:100%; height:250px; object-fit:cover; background:var(--g300); }
.preview__cap{
  font-size:8.5px; letter-spacing:0.2em; text-transform:uppercase; font-weight:500;
  margin-top:7px; text-align:center; color:var(--ink);
}

/* ---------------- Windows ---------------- */
.window{
  position:absolute; z-index:100; display:flex; flex-direction:column;
  background:var(--paper); border-radius:0; overflow:hidden;
  border:1px solid var(--ink); box-shadow:var(--shadow);
  animation:winin .34s cubic-bezier(.2,.85,.25,1);
}
@keyframes winin{ from{ opacity:0; transform:translateY(14px) scale(0.988); } }
@media (prefers-reduced-motion: reduce){ .window{ animation:none; } }
.window.doc-win{ width:min(640px,86vw); height:auto; max-height:78vh; }
.window.finder-win{ width:min(1060px,90vw); height:min(78vh,730px); }
.window__bar{
  height:42px; flex:0 0 42px; display:flex; align-items:center; gap:12px;
  padding:0 14px; border-bottom:1px solid var(--rule);
  background:var(--paper); cursor:grab; touch-action:none;
}
.window__bar:active{ cursor:grabbing; }
.window__ctl{ display:flex; gap:7px; flex:0 0 auto; }
.wdot{
  width:15px; height:15px; border-radius:0; border:1px solid var(--ink);
  background:transparent; color:var(--ink);
  font-size:9px; line-height:1; font-weight:500; font-family:var(--font);
  display:flex; align-items:center; justify-content:center; padding:0;
  cursor:pointer; transition:background .15s, color .15s, transform .2s;
}
.wdot:hover{ background:var(--ink); color:var(--paper); transform:scale(1.12); }
.wdot--close{ background:var(--ink); color:var(--paper); }
.wdot--close:hover{ transform:rotate(90deg) scale(1.12); }
/* minimized: rolled up to the title bar */
.window.is-min{ height:auto !important; min-height:0; }
.window.is-min .window__body{ display:none; }
/* expanded: fills the desktop between menubar and dock */
.window.is-max{
  left:1.5vw !important; top:calc(var(--bar-h) + 12px) !important;
  width:97vw !important; height:calc(100vh - var(--bar-h) - var(--dock-h) - 28px) !important;
  max-height:none !important;
}
.window__title{
  font-size:10.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--ink);
}
.window__title small{
  font-weight:400; color:var(--g500); font-size:9px; letter-spacing:0.18em; margin-left:12px;
}
.window__body{ flex:1 1 auto; overflow:hidden; display:flex; min-height:0; }

/* ---------------- Finder ---------------- */
.finder{ display:flex; flex:1; min-height:0; width:100%; }
.finder__side{
  flex:0 0 208px; border-right:1px solid var(--rule);
  background:var(--paper); padding:18px 0 14px; overflow-y:auto;
}
.finder__side h4{
  font-size:8.5px; text-transform:uppercase; letter-spacing:0.26em; color:var(--g500);
  font-weight:500; margin:0 16px 10px;
}
.fside-item{
  display:flex; align-items:center; gap:10px; width:100%;
  padding:10px 16px; border:none; border-bottom:1px solid var(--line);
  background:none; border-radius:0; cursor:pointer;
  font-size:9.5px; color:var(--ink); text-align:left;
  transition:background .18s, color .18s, padding-left .18s;
}
.fside-item:first-of-type{ border-top:1px solid var(--line); }
.fside-item:hover{ padding-left:21px; }
.fside-item.active{ background:var(--ink); color:var(--paper); }
.fside-dot{ flex:0 0 5px; width:5px; height:5px; background:currentColor; }
.finder__main{ flex:1; overflow-y:auto; min-width:0; -webkit-overflow-scrolling:touch; background:var(--paper); }

/* list view — editorial index (CMFT) */
.flist{ padding:clamp(18px,2.6vw,34px) clamp(18px,3vw,40px) 30px; }
.frow{
  display:flex; align-items:baseline; gap:18px; width:100%;
  padding:clamp(14px,1.8vw,20px) 4px; background:none; border:none; border-radius:0;
  border-bottom:1px solid var(--line); cursor:pointer; text-align:left; color:var(--ink);
}
.frow:first-child{ border-top:1px solid var(--rule); }
.frow__no{
  font-family:var(--mono); font-size:9.5px; color:var(--g500);
  flex:0 0 26px; letter-spacing:0.06em;
}
.frow__year{ font-family:var(--mono); font-size:9.5px; color:var(--g500); flex:0 0 44px; letter-spacing:0.06em; }
.frow__name{
  font-size:clamp(19px,2.5vw,27px); font-weight:300; letter-spacing:0.01em;
  text-transform:uppercase; line-height:1.05;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
  transition:font-style .1s, transform .25s cubic-bezier(.2,.8,.2,1);
}
.frow:hover .frow__name{ font-style:italic; transform:translateX(10px); }
.frow__chev{
  margin-left:auto; color:var(--ink); font-size:17px; font-weight:300;
  transition:transform .25s cubic-bezier(.2,.8,.2,1); opacity:0.35;
}
.frow:hover .frow__chev{ transform:translateX(6px); opacity:1; }
.fempty{ padding:44px 4px; color:var(--g500); font-size:13px; font-family:var(--retro); }

/* project view */
.fproj{ padding:clamp(20px,3vw,46px) clamp(20px,3.4vw,54px) 18px; }
.fproj__back{
  display:inline-flex; align-items:center; gap:8px; background:none; border:none; cursor:pointer;
  font-size:9px; color:var(--g500); padding:2px 8px 2px 0;
  margin-bottom:clamp(24px,3.6vw,48px); transition:color .2s;
}
.fproj__back:hover{ color:var(--ink); }
.fproj__head{ padding-bottom:clamp(6px,1.5vw,16px); }
.fproj__top{
  display:flex; justify-content:space-between; align-items:baseline; gap:16px;
  padding-bottom:12px; border-bottom:1px solid var(--rule);
  font-size:9px; letter-spacing:0.24em; text-transform:uppercase; font-weight:500; color:var(--g500);
  font-variant-numeric:tabular-nums;
}
.fproj__title{
  font-size:clamp(42px,6.8vw,88px); font-weight:250; letter-spacing:-0.005em; line-height:0.92;
  text-transform:uppercase; color:var(--ink); margin-top:clamp(18px,3vw,36px);
  overflow-wrap:break-word;
}
.fproj__meta{
  display:flex; justify-content:space-between; align-items:baseline; gap:16px; flex-wrap:wrap;
  margin-top:clamp(16px,2.4vw,26px); padding-top:13px; border-top:2px solid var(--rule);
  font-size:9.5px; letter-spacing:0.2em; text-transform:uppercase; font-weight:500; color:var(--g700);
}
/* numbered editorial sections */
.fsec{
  display:grid; grid-template-columns:210px 1fr; gap:clamp(20px,4vw,60px);
  padding:clamp(24px,3.4vw,44px) 0; border-top:1px solid var(--line);
}
.fsec__label{
  display:flex; gap:12px; align-items:baseline; align-content:start;
  font-size:9.5px; letter-spacing:0.22em; text-transform:uppercase; color:var(--ink); font-weight:500;
  padding-top:6px; height:fit-content;
}
.fsec__no{ font-family:var(--mono); font-size:9px; color:var(--g300); letter-spacing:0.04em; }
.fsec__body{ font-size:14.5px; font-weight:400; line-height:1.62; color:var(--g700); max-width:58ch; }
.fsec__body p{ margin:0; }
.ytwrap{ position:relative; width:100%; aspect-ratio:16/9; background:#000; overflow:hidden; }
.ytwrap iframe{ position:absolute; inset:0; width:100%; height:100%; border:0; }
.fsec--gallery{ grid-template-columns:1fr; gap:16px; }
.fsec--gallery .fsec__label{ padding-top:0; }
.fsec--gallery .fsec__body{ max-width:none; }
.gallery__cols{ columns:2; column-gap:14px; }
@media(max-width:640px){ .gallery__cols{ columns:1; } }
.shot{ break-inside:avoid; margin-bottom:14px; background:var(--g300); cursor:zoom-in; overflow:hidden; }
.shot img{ width:100%; height:auto; transition:opacity .6s ease, transform .5s cubic-bezier(.2,.8,.2,1); opacity:0; }
.shot img.loaded{ opacity:1; }
.shot:hover img{ transform:scale(1.02); }

/* doc windows */
.doc{ padding:clamp(24px,3vw,38px); overflow-y:auto; }
.doc h2{
  font-weight:280; font-size:clamp(24px,3vw,34px); line-height:1.02; letter-spacing:0;
  text-transform:uppercase; max-width:22ch; color:var(--ink);
  padding-bottom:14px; border-bottom:1px solid var(--rule);
}
.doc p{ margin-top:18px; font-size:14px; line-height:1.68; color:var(--g700); max-width:56ch; }
.doc .rows{ margin-top:26px; display:flex; flex-direction:column; gap:0; }
.doc .rows h3{
  font-size:8.5px; text-transform:uppercase; letter-spacing:0.26em; color:var(--g500);
  font-weight:500; margin-bottom:8px;
}
.doc .rows a{
  font-size:14px; width:fit-content; padding:7px 0; border-bottom:1px solid var(--line);
  width:100%; transition:padding-left .2s;
}
.doc .rows a:hover{ padding-left:8px; font-style:italic; }
.doc .rows > span{ font-size:12.5px; color:var(--g500); padding:7px 0; }
.cvrow{ display:flex; gap:14px; align-items:baseline; padding:7px 0; border-bottom:1px solid var(--line); }
.cvrow em{
  font-style:normal; flex:0 0 82px; font-family:var(--mono); font-size:10px; color:var(--g500);
  font-variant-numeric:tabular-nums; letter-spacing:0.04em;
}
.cvrow span{ font-size:13px; line-height:1.55; color:var(--g700); }

/* ---------------- Lightbox ---------------- */
.lb{ position:fixed; inset:0; z-index:9500; background:var(--paper);
  display:none; align-items:center; justify-content:center; cursor:zoom-out; }
.lb.open{ display:flex; }
.lb img{ max-width:92vw; max-height:86vh; width:auto; object-fit:contain; border:1px solid var(--ink); }
.lb__bar{ position:fixed; top:0; left:0; right:0; height:44px; display:flex; align-items:center; justify-content:space-between; padding:0 18px; border-bottom:1px solid var(--line); }
.lb__count{ font-family:var(--mono); font-size:9.5px; color:var(--g500); }
.lb__close{ font-size:9.5px; color:var(--g500); cursor:pointer; background:none; border:none; }
.lb__close:hover{ color:var(--ink); }
.lb__arrow{ position:fixed; top:0; bottom:0; width:30vw; max-width:240px; z-index:2; }
.lb__arrow.left{ left:0; cursor:w-resize; }
.lb__arrow.right{ right:0; cursor:e-resize; }

/* ---------------- Hint ---------------- */
.hint{
  position:fixed; left:50%; bottom:calc(var(--dock-h) + 18px); transform:translateX(-50%); z-index:50;
  font-size:9px; color:var(--ink);
  background:var(--paper); border:1px solid var(--ink);
  padding:7px 16px; pointer-events:none;
  transition:opacity .5s;
}

/* ---------------- Mobile ---------------- */
@media (max-width:600px){
  .menubar{ padding:0 10px; gap:6px; }
  .menubar__left{ gap:9px; min-width:0; }
  .menubar__right{ gap:9px; }
  .menubar__name{ font-size:11px; letter-spacing:0.04em; padding-bottom:2px; border-bottom-width:1px; }
  .mark{ width:24px; height:24px; }
  .mark svg{ width:12px; height:12px; }
  .menubar__clock{ display:none; }
  .m-hide{ display:none; }
  .menubar__item{ font-size:9px; letter-spacing:0.12em; }
  .menubar .lang{ font-size:9px; gap:4px; }
  .switch{ width:30px; height:16px; }
  body.night .switch__knob{ transform:translateX(14px) rotate(180deg); }
  .wm{ font-size:24vw; }

  .idxmenu__grid{ grid-template-columns:1fr 1fr; row-gap:22px; }
  .dock{ gap:4px; padding:5px 6px; max-width:96vw; }
  .dock__item{ width:32px; height:32px; border-radius:8px; }
  .dock__item svg{ width:17px; height:17px; }

  .icons{ position:absolute; display:grid; grid-template-columns:repeat(2,1fr); gap:12px 6px; padding:16px 8px calc(var(--dock-h) + 16px); align-content:start; justify-items:center; overflow-y:auto; }
  .dicon{ position:static !important; width:auto; touch-action:auto; }
  .dicon:nth-child(4n+1),.dicon:nth-child(4n+2),.dicon:nth-child(4n+3),.dicon:nth-child(4n+4){ transform:none; }
  .preview{ display:none; }
  .finder__side{ display:none; }

  .window.finder-win, .window.doc-win{ left:2vw !important; top:62px !important; }
  .window.finder-win{ width:96vw; height:80vh; }
  .window.doc-win{ width:96vw; max-height:78vh; }

  .flist{ padding:14px 14px 24px; }
  .frow{ gap:10px; }
  .frow__year{ display:none; }
  .fproj{ padding:16px 16px 8px; }
  .fproj__back{ margin-bottom:20px; }
  .fproj__title{ font-size:clamp(30px,10.5vw,46px); margin-top:16px; }
  .fproj__top{ font-size:8px; letter-spacing:0.18em; }
  .fproj__meta{ font-size:8.5px; letter-spacing:0.12em; margin-top:14px; }
  .fsec{ grid-template-columns:1fr; gap:10px; padding:20px 0; }
  .fsec__label{ padding-top:0; }
  .doc{ padding:20px 18px; }
  .cvrow{ gap:10px; }
  .cvrow em{ flex-basis:64px; }
}

/* single column folders on very narrow phones */
@media (max-width:360px){
  .icons{ grid-template-columns:1fr; }
}
