/* 모자이크 벽의 공통 골격. 시안들은 이 위에 "조건을 어떻게 보여줄지"만 다르게 얹는다.
   색은 포스터만 갖는다 — 크롬은 끝까지 무채색. */
*{box-sizing:border-box;margin:0}
:root{
  --bg:#0A0A0B; --ink:#EDEDEF; --ink2:#9C9CA4; --ink3:#6A6A72;
  --line:#1D1D21; --panel:rgba(14,14,16,.92); --gap:2px;
  /* ⚠️ 이 한 줄이 없으면 브라우저는 페이지를 밝다고 보고 UA 기본색을 검정으로 준다.
     <button>·<input>은 color 를 상속하지 않으므로(font:inherit 로는 안 따라온다)
     색을 명시하지 않은 컨트롤의 글씨가 검은 배경 위에 검게 사라진다 — 검색 결과가 그랬다. */
  color-scheme:dark;
}
html,body{height:100%;overflow:hidden}
body{background:var(--bg);color:var(--ink);
  font-family:Pretendard,"Inter",system-ui,sans-serif;-webkit-font-smoothing:antialiased}

/* 숫자는 자릿수가 바뀌어도 흔들리지 않아야 한다 */
.num{font-family:"Inter",sans-serif;font-variant-numeric:tabular-nums;letter-spacing:-.045em;font-weight:500}
.lbl{font-family:"Inter",sans-serif;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink3)}

.wall{position:relative;overflow:hidden;min-height:0}
/* 하단 독이 떠 있는 만큼 아래를 비운다. 가운데 정렬도 그만큼 위로 올라간다 */
.grid{display:grid;gap:var(--gap);padding:var(--gap) var(--gap) calc(var(--gap) + var(--dockh,0px));
  height:100%;place-content:center;
  transition:none;
  grid-template-columns:repeat(var(--cols,14),var(--tw,60px))}
.t{position:relative;aspect-ratio:3/4.05;overflow:hidden;cursor:pointer;background:#17171b}
/* 아직 그림이 안 붙은 타일 — 빈 칸이 아니라 "오는 중"으로 보이게 */
.t img[data-src]{opacity:0}
.t img{transition:opacity .25s}
.t img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .5s cubic-bezier(.16,1,.3,1),filter .3s}
.t:hover img{transform:scale(1.07);filter:brightness(1.18)}
.t.out{display:none}
.t .cap{position:absolute;inset:auto 0 0 0;padding:18px 7px 6px;font-size:10px;line-height:1.3;
  background:linear-gradient(0deg,rgba(10,10,11,.95) 30%,transparent);opacity:0;transition:opacity .22s;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.t:hover .cap{opacity:1}
.t.big .cap{opacity:1;font-size:12px;padding:24px 10px 9px}
.ghosts{position:absolute;inset:0;pointer-events:none;z-index:5}
.ghost{position:absolute;overflow:hidden}
.ghost img{width:100%;height:100%;object-fit:cover;display:block}
.empty{position:absolute;inset:0;display:grid;place-items:center;color:var(--ink2);font-size:13px}
.empty[hidden]{display:none}

/* 상세 */
.sheet{position:fixed;inset:0;z-index:60;background:rgba(10,10,11,.9);display:none;place-items:center;padding:24px}
.sheet.open{display:grid}
.card{background:#111113;border:1px solid var(--line);max-width:640px;width:100%;
  max-height:84vh;overflow:auto;display:grid;grid-template-columns:200px 1fr}
/* 포스터 비율은 제각각이다. 3:4.05 틀에 cover 로 넣으면 위아래가 잘린다 —
   상세는 작품을 보는 자리이므로 자르지 않고 제 비율로 둔다. */
.card>img{width:100%;height:auto;align-self:start;display:block;background:#18181b}
.cin{padding:26px}
.cin h2{font-size:22px;font-weight:500;line-height:1.28;letter-spacing:-.02em}
.cin .meta,.cpick .meta{font-size:12px;color:var(--ink2);margin-top:9px}
.row{display:flex;gap:12px;font-size:12.5px;padding:9px 0;border-top:1px solid var(--line)}
.row dt{color:var(--ink3);width:52px;flex:none}
.row dd{margin:0;flex:1;line-height:1.6}
.book{display:inline-block;margin-top:18px;background:var(--ink);color:var(--bg);
  padding:9px 17px;font-size:12.5px;text-decoration:none}
.x{position:fixed;top:18px;right:22px;background:none;border:0;color:var(--ink2);font-size:26px;
  cursor:pointer;line-height:1;z-index:61}
/* ⚠️ 여기서 포스터를 16:9로 눌러 위아래를 잘라내고 있었다(1500×2122 → 349×196).
   좁은 화면 배치는 home.html 의 820px 규칙이 맡는다. */
