/* 작품 상세페이지 공통 스타일. 대문·아카이브 첫 화면과 같은 틀.
   넓은 화면: 왼쪽 그림, 오른쪽 제목·글·정보.  좁은 화면: 제목 → 그림 → 글 → 정보 순으로 쌓인다. */
:root{--bg:#fff;--ink:#202020;--muted:#737373;--soft:#767676;--line:#dedede;--rule:#c9c9c9;--wash:#f5f4f2;
  --display:"Roboto Condensed","Pretendard Variable",Pretendard,sans-serif;
  --body:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Malgun Gothic",sans-serif}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);margin:0;font-family:var(--body);-webkit-font-smoothing:antialiased;word-break:keep-all}
a{color:inherit;text-decoration:none}
a:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
::selection{background:#e6e1d6;color:#111}
img{max-width:100%}
.page{max-width:1500px;margin:auto;padding:0 5%}
.skip{z-index:3;background:#fff;padding:12px;position:absolute;top:-70px}
.skip:focus{top:10px}

header{border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:24px;height:116px}
.wordmark{display:flex;align-items:center;gap:16px;font-size:26px;font-weight:700;letter-spacing:.12em;font-family:var(--display)}
.wordmark>span{font-size:14px;font-weight:400;letter-spacing:-.04em;color:var(--muted);font-family:var(--body)}
.menu{display:flex;gap:28px;margin-left:46px;margin-right:auto;font-size:14px;color:#555}
.menu a{padding:10px 0}
.menu a:hover{color:#111;text-decoration:underline;text-underline-offset:5px}
.menu a.on{color:#111;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:7px;text-decoration-color:#bbb}
.contact{font-size:14px}
.contact:hover{text-decoration:underline;text-underline-offset:5px}

.crumb{display:flex;gap:10px;align-items:center;padding:26px 0 0;font-size:13px;color:var(--muted)}
.crumb a{padding:8px 0;text-decoration:underline #cecece;text-underline-offset:5px}
.crumb a:hover{color:#111}

main{display:grid;grid-template-columns:minmax(0,56%) minmax(0,1fr);gap:7%;padding:34px 0 0;align-items:start}
.hero img{width:100%;height:auto;display:block;background:var(--wash)}
.info h1{margin:0;font-size:clamp(28px,2.6vw,38px);font-weight:400;line-height:1.2;letter-spacing:-.045em;text-wrap:balance}
.en{margin:10px 0 0;font-family:var(--display);font-size:15px;letter-spacing:.08em;color:var(--muted)}
.story{margin:34px 0 0;display:flex;flex-direction:column;gap:18px;max-width:32em}
.story p{margin:0;font-size:15px;line-height:2;letter-spacing:-.025em;color:#444}
dl{margin:44px 0 0;border-top:1px solid var(--rule);font-size:14px}
dl div{display:grid;grid-template-columns:72px 1fr;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}
dt{color:var(--muted)}
dd{margin:0;font-variant-numeric:tabular-nums;line-height:1.6}
dd.code{font-family:var(--display);letter-spacing:.06em}

.sec{margin:96px 0 0;border-top:1px solid var(--line);padding-top:30px}
.sec-head{display:flex;justify-content:space-between;align-items:baseline;padding-bottom:24px;font-size:12px;color:var(--muted);letter-spacing:.02em}
.sec-head .all{color:#555;text-decoration:underline #cecece;text-underline-offset:5px}
.sec-head .all:hover{color:#111}
.parts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:20px}
.parts.n2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:760px}
.parts a{display:block}
.parts img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;display:block;background:var(--wash);transition:opacity .25s}
.parts a:hover img{opacity:.88}

.series{display:grid;gap:28px;grid-template-columns:repeat(3,minmax(0,1fr))}
.series.n1{grid-template-columns:minmax(0,820px);justify-content:center}
.series.n2{grid-template-columns:repeat(2,minmax(0,1fr))}
.series img{width:100%;height:auto;display:block}
.second{margin:96px auto 0;max-width:820px}
.second img{width:100%;height:auto;display:block}
.second.with-poem{max-width:none;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,56%);gap:7%;align-items:center}
.second.with-poem img{order:2}
.poem{margin:0;font-size:15px;line-height:2;letter-spacing:-.02em;color:#555}
.poem span{display:block}
.second:not(.with-poem) .poem{text-align:center}

.strip{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:20px}
.strip a{display:flex;flex-direction:column;gap:3px;min-width:0}
.strip img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;display:block;background:var(--wash);margin-bottom:8px;transition:opacity .25s}
.strip a:hover img{opacity:.84}
.strip b{font-size:14px;font-weight:400;letter-spacing:-.03em}
.strip small{font-size:11px;color:var(--soft);font-family:var(--display);letter-spacing:.06em}

.gal-head{padding:34px 0 0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px 40px;align-items:end}
.gal-head h1{margin:0;font-size:clamp(28px,2.6vw,38px);font-weight:400;line-height:1.2;letter-spacing:-.045em}
.gal-head p{margin:0;grid-column:1;color:var(--muted);font-size:14px;line-height:1.7;letter-spacing:-.025em;max-width:38em}
.tabs{grid-column:2;grid-row:1/3;display:flex;gap:22px;font-size:14px;color:var(--muted)}
.tabs a{padding:10px 0}
.tabs a:hover{color:#111}
.tabs a.on{color:#111;text-decoration:underline;text-underline-offset:6px;text-decoration-color:#bbb}
.gal{margin:54px 0 0;border-top:1px solid var(--line);padding-top:34px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:44px 28px}
.gal a{display:flex;flex-direction:column;gap:4px;min-width:0}
.gal img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;display:block;background:var(--wash);margin-bottom:9px;transition:opacity .25s}
.gal a:hover img{opacity:.84}
.gal b{font-size:14px;font-weight:400;letter-spacing:-.03em}
.gal small{font-size:11px;color:var(--soft);font-family:var(--display);letter-spacing:.06em}
.gal small.en{font-size:12px;letter-spacing:0;font-family:var(--body);color:var(--muted)}

/* ABOUT · WORK · 색 */
.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.about .titles{padding:0}
.about .info .story{margin-top:0}
.hero.door{display:flex;justify-content:center;align-items:flex-start}
.hero.door img{width:auto;max-width:136px;max-height:640px;background:none;margin-top:8px}
.story.lines{gap:26px;margin-top:34px}
.proj-note.frame{gap:26px}
.story hr{border:0;border-top:1px solid var(--line);width:28px;margin:10px 0}
.story b{font-weight:600;color:var(--ink)}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}
.cards img{width:100%;height:auto;display:block;margin-bottom:14px}
.cards b{display:block;font-family:var(--display);font-size:14px;font-weight:700;letter-spacing:.08em}
.cards p{margin:8px 0 0;color:var(--muted);font-size:14px;line-height:1.8;letter-spacing:-.025em}
.about{align-items:center}
.sec.logo-sec{margin-top:150px}
.second.flat.logo{margin:16px 0 0;padding:0;border:0;grid-template-columns:minmax(0,56%) minmax(0,1fr);gap:7%;align-items:center}
.second.logo img{order:0;width:420px;max-width:100%;height:auto;justify-self:center;margin:0}
.second.logo .story{margin-top:0}
.proj-note.frame{padding-left:63%;max-width:none;gap:22px}
.proj-note.frame p{max-width:34em}
.proj-note.frame b{font-weight:600;color:var(--ink)}
.second.flat{margin-top:0}
.second.flat .story{margin-top:0}
.lead{margin:44px 0 0;max-width:40em}
.lead .story{margin:0;max-width:none}
.lead.two{max-width:none;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,34%);gap:8%;align-items:start}
.lead.two .story{max-width:40em}
.swatch{display:inline-block;width:.34em;height:.34em;border-radius:50%;margin-right:.3em;vertical-align:.28em}
.tabs.colors{flex-wrap:wrap;gap:0 20px;justify-content:flex-end;max-width:420px}
.tabs.colors i{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:1px}
.color-list{border-top:1px solid var(--rule)}
.color-list a{display:grid;grid-template-columns:16px 1fr auto;gap:14px;align-items:center;padding:16px 0;border-bottom:1px solid var(--line)}
.color-list i{width:14px;height:14px;border-radius:50%}
.color-list b{font-size:22px;font-weight:400;letter-spacing:-.045em}
.color-list span{font-size:18px;font-weight:300;color:var(--muted);transition:transform .25s}
.color-list a:hover span{transform:translate(3px,-3px);color:#111}
.proj-head{display:grid;grid-template-columns:minmax(0,34%) minmax(0,1fr);gap:8%;align-items:baseline;padding-bottom:28px}
.proj-head h2{margin:0;font-size:clamp(22px,2.2vw,30px);font-weight:400;letter-spacing:-.045em;line-height:1.3}
.proj-head p{margin:0;color:var(--muted);font-size:14px;line-height:1.8;letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.proj-head p span{color:var(--rule);margin:0 6px}
.proj-note{margin:-6px 0 0;padding-left:42%;display:flex;flex-direction:column;gap:18px;max-width:none}
.proj-note p{margin:0;max-width:36em;font-size:15px;line-height:2;letter-spacing:-.025em;color:#444}
.proj-note+.photos{margin-top:34px}
.proj-video{margin:34px 0 14px;padding-left:42%}
.proj-video video{width:100%;height:auto;aspect-ratio:16/9;display:block;background:#000}
.proj-video figcaption{padding-top:10px;font-size:12px;color:var(--muted);letter-spacing:-.01em}
.photos{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.photos a{display:block}
.photos img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--wash);transition:opacity .25s}
.photos a:hover img{opacity:.86}

footer{margin-top:72px;border-top:1px solid var(--line);color:var(--muted);display:flex;justify-content:space-between;align-items:center;gap:24px;padding:26px 0 32px;font-size:12px}
footer p{margin:0}
footer a:hover{color:#111}
footer a>span{margin-left:8px}

@media (max-width:950px){
  main{grid-template-columns:minmax(0,52%) minmax(0,1fr);gap:6%}
  .menu{margin-left:20px;gap:18px}
  .parts{grid-template-columns:repeat(2,minmax(0,1fr))}
  .strip{grid-template-columns:repeat(3,minmax(0,1fr))}
  .gal{grid-template-columns:repeat(3,minmax(0,1fr))}
  .photos{grid-template-columns:repeat(3,minmax(0,1fr))}
  .lead.two{grid-template-columns:minmax(0,1fr) minmax(0,38%);gap:6%}
  footer p{display:none}
}
@media (max-width:600px){
  .page{padding:0 6%}
  header{height:auto;padding:22px 0 8px;flex-wrap:wrap;gap:0 16px}
  .wordmark{gap:12px;font-size:24px}
  .contact{padding:14px 0}
  .menu{order:3;flex-basis:100%;margin:10px 0 0;gap:26px;font-size:15px}
  .menu a{padding:13px 0}
  .crumb{padding-top:14px}
  .crumb a{padding:14px 0}
  main{display:flex;flex-direction:column;align-items:stretch;gap:0;padding-top:10px}
  .info{display:contents}
  .titles{order:1;padding-bottom:22px}
  .hero{order:2;margin:0 -6.82%}
  .story{order:3;margin-top:30px}
  dl{order:4;margin-top:34px;width:100%}
  .info h1{font-size:30px}
  .story p{font-size:15px;line-height:1.95}
  .sec{margin-top:64px;padding-top:24px}
  .parts{gap:10px}
  .cards{grid-template-columns:minmax(0,1fr);gap:34px}
  .lead{margin-top:30px}
  .lead.two{display:block}
  .color-list{margin-top:40px}
  .color-list a{padding:18px 0}
  .tabs.colors{justify-content:flex-start;max-width:none;gap:0 22px}
  .proj-head{display:block;padding-bottom:20px}
  .proj-note{padding-left:0;margin-top:0}
  .proj-video{padding-left:0;margin-top:26px}
  .proj-note p{font-size:15px;line-height:1.95}
  .proj-head p{margin-top:8px}
  .photos{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .second.flat img{margin-bottom:28px}
  .hero.door{margin:0}
  .hero.door img{max-width:76px;max-height:520px}
  .story.lines{gap:22px;margin-top:26px}

  .about{align-items:stretch}
  .about .info .story{margin-top:30px}
  .sec.logo-sec{margin-top:64px}
  .second.flat.logo{margin-top:8px;padding-top:0}
  .second.logo img{width:66%;margin:0 auto 28px}
  .proj-note.frame{padding-left:0}
  .gal-head{display:block;padding-top:10px}
  .gal-head h1{font-size:30px}
  .gal-head p{margin-top:12px;font-size:15px}
  .tabs{margin-top:18px;gap:26px;font-size:15px}
  .tabs a{padding:13px 0}
  .gal{margin-top:20px;padding-top:26px;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 14px}
  .gal b{font-size:15px}
  .series,.series.n1,.series.n2{grid-template-columns:minmax(0,1fr);gap:0;margin:0 -6.82%}
  .second,.second.with-poem{display:block;margin:64px 0 0}
  .second img{width:113.64%;max-width:none;margin:0 -6.82%}
  .poem{margin-top:34px;font-size:15px;line-height:1.95}
  .second:not(.with-poem) .poem{text-align:left}
  .strip{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0 -6.82%;padding:0 6.82%;scroll-padding:0 6.82%;-webkit-overflow-scrolling:touch;scrollbar-width:none}
  .strip::-webkit-scrollbar{display:none}
  .strip a{flex:0 0 42%;scroll-snap-align:start}
  .sec-head .all{padding:16px 0;margin:-16px 0}
  footer{display:block;margin-top:56px;padding:24px 0 28px;line-height:1.8}
  footer>a{display:block;margin-top:8px;font-size:13px}
}
/* 크게 보기 (view.js). 부분 그림·전시 사진을 누르면 흰 바탕 위에 크게 뜬다. */
html.v-lock{overflow:hidden;scrollbar-gutter:stable}
.viewer{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#fff;color:var(--ink);overflow:hidden}
.viewer[open]{display:grid;grid-template-rows:84px minmax(0,1fr) 92px;animation:v-in .2s ease-out}
.viewer::backdrop{background:transparent}
@keyframes v-in{from{opacity:0}}
.viewer button{appearance:none;background:none;border:0;margin:0;padding:0;font:inherit;color:#555;cursor:pointer;-webkit-tap-highlight-color:transparent}
.viewer button:hover{color:#111}
.viewer button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.v-top{display:flex;justify-content:flex-end;align-items:center;padding:0 5%}
.v-close{display:flex;align-items:center;gap:10px;min-height:44px;font-size:14px}
.v-close svg{width:13px;height:13px;fill:none;stroke:currentColor;stroke-width:1.6}
.v-stage{display:flex;align-items:center;justify-content:center;min-height:0;padding:0 5%}
.v-stage img{display:block;max-width:100%;max-height:100%;background:var(--wash);-webkit-user-select:none;user-select:none}
.v-bar{display:flex;justify-content:center;align-items:center;gap:18px;font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums;letter-spacing:.06em}
.v-bar.one{visibility:hidden}
.v-bar button{width:48px;height:48px;font-size:19px}
.v-count{min-width:4.5em;text-align:center}
@media (max-width:600px){
  .viewer[open]{grid-template-rows:64px minmax(0,1fr) 80px}
  .v-top{padding:0 6%}
  .v-stage{padding:0}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}.viewer[open]{animation:none}}
