/* 고익수성형외과 — shared components (direction C) */
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{margin:0;font-weight:800;letter-spacing:-.045em;line-height:var(--lh-tight)}
p{margin:0}
::selection{background:var(--teal);color:var(--on-primary)}

.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}
.rule{height:1px;background:var(--line);border:0;margin:0}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(10px);border-bottom:var(--hairline)}
.site-header .bar{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--s-6);height:72px}
.brand{display:block;font-weight:800;font-size:19px;letter-spacing:-.03em;white-space:nowrap}
.brand small{display:block;font-family:var(--font-num);font-size:12px;letter-spacing:.1em;color:var(--muted);font-weight:400;margin-top:1px}
.site-nav{display:flex;justify-content:center;gap:var(--s-5);font-size:var(--fs-sm)}
.site-nav a{padding:10px 0;border-bottom:2px solid transparent;transition:border-color .18s,color .18s}
.site-nav a:hover,.site-nav a[aria-current]{border-color:var(--teal)}
.header-tools{display:flex;align-items:center;gap:var(--s-3);font-family:var(--font-num);font-size:var(--fs-xs);white-space:nowrap}
.header-tools .tel{color:var(--ink-2);padding:10px 2px}
.lang-switch{display:inline-flex;align-items:center;gap:6px;border:var(--hairline);background:transparent;color:var(--ink);padding:9px 11px;font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.04em;cursor:pointer}
.lang-switch:hover{border-color:var(--teal);color:var(--teal)}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;background:var(--teal);color:var(--on-primary);padding:13px 22px;font-size:var(--fs-sm);font-weight:600;border:1px solid var(--teal);cursor:pointer;transition:background .18s,border-color .18s;text-align:center}
.btn:hover{background:var(--teal-ink);border-color:var(--teal-ink)}
.btn-line{background:transparent;color:var(--ink);border-color:var(--line)}
.btn-line:hover{border-color:var(--ink);background:transparent;color:var(--ink)}
.link{display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-sm);font-weight:600;color:var(--teal);min-height:44px}
.link:hover{color:var(--teal-ink);text-decoration:underline;text-underline-offset:4px}

/* ---------- section heads ---------- */
.section{padding:var(--section-y) 0}
.section + .section{border-top:var(--hairline)}
.section-head{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap);align-items:end;margin-bottom:var(--s-6)}
.section-head .head-main{grid-column:1/span 8}
.section-head .head-aside{grid-column:9/span 4;font-size:var(--fs-sm);color:var(--muted);line-height:1.8;margin:0}
.kicker{display:flex;align-items:center;gap:10px;font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.16em;color:var(--muted);text-transform:uppercase;margin-bottom:var(--s-4)}
.kicker::before{content:"";width:26px;height:1px;background:var(--teal)}
.kicker b{color:var(--teal);font-weight:600}
.section h2{font-size:var(--fs-h2)}

/* ---------- hero ---------- */
.hero{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap);padding:clamp(40px,5vw,72px) 0 clamp(32px,4vw,56px)}
.split{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);gap:var(--gap);align-items:start}
.hero-copy{grid-column:1/span 7;align-self:start}
.hero h1{font-size:var(--fs-h1);margin-bottom:var(--s-5);text-wrap:balance}
.hero h1 mark{background:linear-gradient(transparent 63%,var(--teal-soft) 63%);color:inherit;padding:0 2px}
.lede{font-size:var(--fs-md);color:var(--ink-2);max-width:36em;line-height:1.85;margin-bottom:var(--s-6)}
.hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:var(--s-6)}
.hero-meta{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line-strong)}
.hero-meta div{padding:var(--s-4) var(--s-4) 0 0;border-right:var(--hairline)}
.hero-meta div:last-child{border-right:0}
.hero-meta b{display:block;font-family:var(--font-num);font-size:var(--fs-num);font-weight:600;letter-spacing:-.03em;color:var(--teal);line-height:1.15}
.hero-meta span{font-size:var(--fs-xs);color:var(--muted)}

/* portrait plate in hero */
.hero-plate{grid-column:8/span 5;align-self:end;justify-self:end;margin:0;width:100%;max-width:360px}
.hero-plate .plate-body{position:relative;background:var(--surface);border:var(--hairline);padding:14px}
.hero-plate img{width:100%;height:auto;object-fit:contain;filter:var(--img-filter)}
.hero-plate .plate-cap{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px var(--s-3);padding:11px 2px 0;border-top:none;font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.02em;color:var(--muted)}
.hero-plate .plate-cap span{white-space:nowrap}
.hero-plate .plate-cap b{font-family:var(--font-sans);font-size:var(--fs-sm);letter-spacing:0;color:var(--ink);font-weight:600}

/* ---------- wide bleed photo ---------- */
.bleed-photo{position:relative;height:clamp(220px,23vw,360px);overflow:hidden;border-top:var(--hairline);border-bottom:var(--hairline);background:var(--surface-2)}
.bleed-photo img{width:100%;height:100%;object-fit:cover;object-position:68% 42%;filter:var(--img-filter-quiet)}
.bleed-photo figcaption{position:absolute;bottom:var(--s-4);right:max(var(--pad),calc((100vw - var(--max)) / 2 + var(--pad)));background:var(--glass);padding:6px 10px;font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.06em;color:var(--ink-2)}

/* ---------- info strip ---------- */
.strip{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line-strong);border-bottom:var(--hairline)}
.strip > div{padding:var(--s-4) var(--s-5);border-right:var(--hairline)}
.strip > div:last-child{border-right:0}
.strip dt{font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.14em;color:var(--muted);margin-bottom:6px}
.strip dd{margin:0;font-size:var(--fs-sm);font-weight:500;line-height:1.6}

/* ---------- practice table ---------- */
.practice{width:100%;table-layout:fixed;border-collapse:collapse;border-top:1px solid var(--line-strong)}
.practice tr{transition:background .18s}
.practice tr:hover{background:var(--surface-2)}
.practice td{padding:var(--s-5) var(--s-3) var(--s-5) 0;border-bottom:var(--hairline);vertical-align:top}
.practice .t-no{width:52px;font-family:var(--font-num);font-size:var(--fs-xs);color:var(--teal);letter-spacing:.08em}
.practice .t-name{width:200px;font-size:var(--fs-lg);font-weight:700;letter-spacing:-.02em;white-space:nowrap}
.practice .t-name small{display:block;font-family:var(--font-num);font-size:12px;font-weight:400;letter-spacing:.08em;color:var(--muted);margin-top:3px}
.practice .t-en{width:150px;font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.1em;color:var(--muted);padding-top:calc(var(--s-5) + 4px)}
.practice .t-desc{font-size:var(--fs-sm);color:var(--muted);line-height:1.7}
.practice .t-go{width:28px;text-align:right;color:var(--muted);font-size:var(--fs-md)}

/* ---------- generic photo plate ---------- */
.plate{margin:0;background:var(--surface)}
.plate .plate-img{overflow:hidden;background:var(--surface-2)}
.plate img{width:100%;height:100%;object-fit:cover;filter:var(--img-filter)}
.plate figcaption{display:flex;justify-content:space-between;gap:var(--s-3);padding:10px 12px;border-top:var(--hairline);font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.05em;color:var(--muted);line-height:1.6}
.ratio-1{aspect-ratio:1/1}
.ratio-4x3{aspect-ratio:4/3}
.ratio-3x4{aspect-ratio:3/4}
.ratio-16x9{aspect-ratio:16/9}

/* ---------- before / after diptych ---------- */
.diptych{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line)}
.diptych figure{position:relative;margin:0;background:var(--surface);overflow:hidden}
.diptych img{width:100%;aspect-ratio:1/1;object-fit:cover;object-position:50% 38%;filter:var(--img-filter)}
.diptych .tag{position:absolute;left:0;bottom:0;background:var(--glass);color:var(--ink-2);font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.06em;padding:4px 8px}
.case-card{border:var(--hairline);background:var(--surface)}
.case-card .case-cap{display:grid;grid-template-columns:auto 1fr auto;gap:var(--s-3);align-items:baseline;padding:14px 14px 16px}
.case-card .case-no{font-family:var(--font-num);font-size:var(--fs-xs);color:var(--teal)}
.case-card h3{font-size:var(--fs-md);letter-spacing:-.02em}
.case-card h3 small{display:block;font-family:var(--font-num);font-size:var(--fs-xs);font-weight:400;letter-spacing:.1em;color:var(--muted);margin-top:4px;text-transform:uppercase}
.case-card .case-meta{font-family:var(--font-num);font-size:var(--fs-xs);color:var(--muted);letter-spacing:.05em}
.cases{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-4)}
.case-archive{display:flex;flex-direction:column;justify-content:flex-start;gap:var(--s-3);padding:var(--s-5);background:var(--teal-soft);border:var(--hairline);min-height:300px}
.case-archive .archive-label{font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.16em;color:var(--teal)}
.case-archive .archive-title{font-size:var(--fs-xl);font-weight:800;letter-spacing:-.03em;line-height:1.2}
.case-archive .archive-desc{font-size:var(--fs-sm);color:var(--ink-2);line-height:1.75;max-width:24em}
.case-archive:hover{border-color:var(--teal)}

/* ---------- gallery strip ---------- */
.gallery-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;background:var(--line);border:var(--hairline)}
.gallery-strip figure{margin:0;background:var(--surface)}
.gallery-strip .g-img{overflow:hidden}
.gallery-strip img{width:100%;aspect-ratio:4/3;object-fit:cover;filter:var(--img-filter)}
.gallery-strip figcaption{padding:10px 12px;font-size:var(--fs-xs);color:var(--muted);line-height:1.6}

/* ---------- books ---------- */
.book-list{border-top:1px solid var(--line-strong)}
.book-row{display:grid;grid-template-columns:64px minmax(0,1fr) 120px 96px;gap:var(--s-5);align-items:center;padding:var(--s-4) 4px;border-bottom:var(--hairline);transition:background .18s}
.book-row:hover{background:var(--surface-2)}
.book-row .cover{width:56px;height:74px;object-fit:cover;border:1px solid var(--line);background:var(--surface-2)}
.book-row h3{font-size:var(--fs-md);font-weight:700;letter-spacing:-.01em;line-height:1.4}
.book-row .ed{font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.12em;color:var(--muted);text-transform:uppercase}
.book-row .by{font-family:var(--font-num);font-size:var(--fs-xs);color:var(--muted);text-align:right}

/* ---------- hours + place ---------- */
.visit{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap)}
.hours{grid-column:1/span 5;margin-top:var(--s-5);border-top:1px solid var(--line-strong)}
.hours div{display:grid;grid-template-columns:1fr auto;gap:var(--s-4);padding:11px 0;border-bottom:var(--hairline);font-size:var(--fs-sm)}
.hours span:last-child{font-family:var(--font-num);font-size:var(--fs-sm);letter-spacing:.03em}
.hours .closed span:last-child{color:var(--signal)}
.hours .note{padding-top:var(--s-3);border-bottom:0;font-size:var(--fs-xs);color:var(--muted);grid-template-columns:1fr}
.place{grid-column:7/span 6;margin-top:var(--s-5);border:var(--hairline);background:var(--surface);padding:var(--s-5)}
.place .addr{font-size:var(--fs-md);font-weight:600;line-height:1.6;margin-bottom:var(--s-3)}
.place dl{margin:0;font-size:var(--fs-sm);color:var(--ink-2)}
.place dl > div{display:grid;grid-template-columns:92px 1fr;gap:var(--s-3);padding:7px 0;border-top:var(--hairline)}
.place dt{font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.12em;color:var(--muted);padding-top:3px}
.place dd{margin:0}
.place .channels{display:flex;gap:8px;flex-wrap:wrap;margin-top:var(--s-4)}
.place .channels a{border:var(--hairline);padding:10px 14px;font-size:var(--fs-xs);min-height:44px;display:inline-flex;align-items:center;transition:border-color .18s,color .18s}
.place .channels a:hover{border-color:var(--teal);color:var(--teal)}

/* ---------- footer ---------- */
.site-footer{border-top:var(--hairline);padding:var(--s-6) 0 var(--s-8);font-size:var(--fs-xs);color:var(--muted);line-height:1.9}
.site-footer .cols{display:grid;grid-template-columns:1.6fr 2fr 1fr;gap:var(--s-6)}
.site-footer b{display:block;color:var(--ink);font-size:var(--fs-sm);margin-bottom:4px}
.site-footer a:hover{color:var(--teal);text-decoration:underline;text-underline-offset:3px}

/* ---------- inner page: page head / prose / toc ---------- */
.page-head{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--gap);padding:clamp(32px,4vw,56px) 0 var(--s-6);align-items:end}
.page-head .main{grid-column:1/span 8}
.page-head h1{font-size:clamp(30px,3.6vw,46px);margin-bottom:var(--s-4)}
.page-head .sub{font-size:var(--fs-sm);color:var(--muted);max-width:38em;line-height:1.8;margin:0}
.page-head .aside{grid-column:9/span 4;border-top:1px solid var(--line-strong);padding-top:var(--s-3);font-size:var(--fs-xs);color:var(--muted);line-height:1.8}
.breadcrumb{display:flex;gap:8px;align-items:center;font-family:var(--font-num);font-size:var(--fs-xs);color:var(--muted);padding-top:var(--s-4)}
.breadcrumb a:hover{color:var(--teal)}
.layout{display:grid;grid-template-columns:220px minmax(0,1fr);gap:var(--gap);padding-bottom:var(--s-8)}
.toc{position:sticky;top:96px;align-self:start;border-top:1px solid var(--line-strong);padding-top:var(--s-3);font-size:var(--fs-xs);line-height:1.7}
.toc a{display:block;padding:7px 0;color:var(--muted);border-bottom:1px solid transparent}
.toc a:hover{color:var(--teal)}
.prose{max-width:38em}
.prose section{padding:var(--s-6) 0;border-top:var(--hairline)}
.prose section:first-child{border-top:0;padding-top:0}
.prose h2{font-size:var(--fs-xl);margin-bottom:var(--s-4);letter-spacing:-.03em}
.prose h3{font-size:var(--fs-md);margin:var(--s-5) 0 var(--s-2)}
.prose p{margin-bottom:var(--s-4);color:var(--ink-2);font-size:var(--fs-body);line-height:1.85}
.prose ul,.prose ol{margin:0 0 var(--s-4);padding-left:1.3em;color:var(--ink-2);font-size:var(--fs-body);line-height:1.85}
.prose li{margin-bottom:6px}
.prose img{width:100%;height:auto;border:var(--hairline)}
.prose table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);margin:0 0 var(--s-4)}
.prose th,.prose td{border:1px solid var(--line);padding:9px 11px;text-align:left;vertical-align:top}
.prose th{background:var(--surface-2);font-weight:600}
.prose blockquote{margin:0 0 var(--s-4);padding:var(--s-4) var(--s-5);border-left:3px solid var(--teal);background:var(--teal-soft);color:var(--ink-2);font-size:var(--fs-body)}
.prose .figure{margin:var(--s-5) 0;border:var(--hairline);background:var(--surface);max-width:640px}
.prose .figure img{width:100%;height:auto;border:0}
.prose .figure figcaption{padding:10px 12px;border-top:var(--hairline);font-size:var(--fs-xs);color:var(--muted)}
.prose .gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:var(--s-4) 0}
.prose .gallery img{width:100%;aspect-ratio:1;object-fit:cover;border:var(--hairline)}
.pager{display:flex;justify-content:space-between;gap:var(--s-4);border-top:var(--hairline);padding-top:var(--s-4);font-size:var(--fs-sm)}

/* ---------- listing ---------- */
.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-4)}
.card{border:var(--hairline);background:var(--surface);padding:var(--s-4);display:flex;flex-direction:column;gap:var(--s-3);transition:border-color .18s}
.card:hover{border-color:var(--teal)}
.card h3{font-size:var(--fs-md);letter-spacing:-.01em}
.card p{font-size:var(--fs-xs);color:var(--muted);line-height:1.7;margin:0}
.card .card-more{margin-top:auto;font-family:var(--font-num);font-size:var(--fs-xs);color:var(--teal)}

/* ---------- Chinese typographic rhythm ---------- */
[lang="zh-CN"] h1,[lang="zh-CN"] h2,[lang="zh-CN"] h3{letter-spacing:-.02em;font-weight:700}
[lang="zh-CN"] .lede{line-height:1.9}
[lang="zh-CN"] .kicker{letter-spacing:.12em}
[lang="zh-CN"] .hero-meta b{letter-spacing:-.02em}

/* ---------- responsive ---------- */
@media (max-width:1020px){
  .site-nav{display:none}
  .hero-copy,.hero-plate,.section-head .head-main,.section-head .head-aside{grid-column:1/-1}
  .split{grid-template-columns:1fr}
  .hero-plate{margin-top:var(--s-3);max-width:520px}
  .strip{grid-template-columns:1fr 1fr}
  .strip > div:nth-child(2){border-right:0}
  .strip > div:nth-child(3),.strip > div:nth-child(4){border-top:var(--hairline)}
  .practice .t-en,.practice .t-desc{display:none}
  .practice .t-name{width:auto}
  .cases{grid-template-columns:1fr 1fr}
  .gallery-strip{grid-template-columns:1fr 1fr}
  .book-row{grid-template-columns:56px 1fr}
  .book-row .ed,.book-row .by{display:none}
  .hours,.place{grid-column:1/-1}
  .page-head .main,.page-head .aside{grid-column:1/-1}
  .layout{grid-template-columns:1fr}
  .toc{position:static;display:none}
  .card-grid{grid-template-columns:1fr 1fr}
  .site-footer .cols{grid-template-columns:1fr}
}
@media (max-width:600px){
  .site-header .bar{height:auto;padding-top:12px;padding-bottom:12px;grid-template-columns:1fr auto;gap:var(--s-3)}
  .header-tools .tel,.header-tools .btn{display:none}
  .brand{font-size:18px}
  .brand small{font-size:12px;letter-spacing:.02em}
  .hero{padding-top:24px}
  .hero-plate{max-width:320px}
  .hero-plate img{max-height:430px;object-fit:contain}
  .hero-meta b{font-size:24px}
  .cases{grid-template-columns:1fr}
  .card-grid{grid-template-columns:1fr}
  .bleed-photo{height:210px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto}}

/* ================= site additions (header nav / inner pages) ================= */
.nav-drop{position:relative}
.nav-drop > a{display:block}
.mega{position:absolute;top:calc(100% + 6px);left:50%;transform:translateX(-50%);display:none;grid-template-columns:repeat(4,minmax(150px,1fr));gap:var(--s-5);width:min(920px,86vw);padding:var(--s-5);background:var(--surface);border:var(--hairline);box-shadow:0 24px 60px -40px rgba(16,21,28,.45);z-index:50}
.nav-drop:hover .mega,.nav-drop:focus-within .mega{display:grid}
.mega-col{display:flex;flex-direction:column;gap:4px;min-width:0}
.mega-label{font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.1em;color:var(--teal);margin:0 0 6px;text-transform:uppercase}
.mega-col a{font-size:var(--fs-sm);color:var(--ink-2);padding:5px 0;border-bottom:1px solid transparent}
.mega-col a:hover{color:var(--teal);border-bottom-color:var(--teal)}
.menu-toggle{display:none;background:transparent;border:var(--hairline);width:42px;height:42px;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:5px}
.menu-toggle span{display:block;width:18px;height:1.5px;background:var(--ink)}
.mobile-menu{border-top:var(--hairline);background:var(--surface);padding:var(--s-4) 0 var(--s-5)}
.mobile-menu .wrap{display:flex;flex-direction:column;gap:2px}
.mobile-group{margin-top:var(--s-3)}
.mobile-link{display:flex;align-items:center;min-height:44px;font-size:var(--fs-sm);border-bottom:var(--hairline)}
.mobile-tools{display:flex;gap:8px;margin-top:var(--s-4)}

.page-head{scroll-margin-top:96px}
.prose section{scroll-margin-top:96px}
.page-hero{max-width:100%;height:clamp(200px,26vw,380px);overflow:hidden;border-top:var(--hairline);border-bottom:var(--hairline);margin:0}
.page-hero img{width:100%;height:100%;object-fit:cover;object-position:50% 40%;filter:var(--img-filter)}
.toc-title{font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.12em;color:var(--muted);margin:0 0 var(--s-2)}
.table-wrap{overflow-x:auto;margin:var(--s-3) 0 var(--s-4)}
.prose .compare-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-4);margin:var(--s-4) 0}
.compare-pair{margin:0}
.pair-imgs{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--line);border:var(--hairline)}
.pair-imgs > div{position:relative;background:var(--surface);overflow:hidden}
.pair-imgs img{width:100%;aspect-ratio:1;object-fit:cover;object-position:50% 40%;filter:var(--img-filter)}
.pair-imgs .tag{position:absolute;left:0;bottom:0;background:var(--glass);font-family:var(--font-num);font-size:var(--fs-xs);padding:4px 8px;color:var(--ink-2)}
.compare-pair figcaption{padding:8px 2px 0;font-size:var(--fs-xs);color:var(--muted)}
.gallery-wrap{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--s-3);margin:var(--s-4) 0}
.gallery-wrap figure{margin:0;border:var(--hairline);background:var(--surface)}
.gallery-wrap img{width:100%;aspect-ratio:1;object-fit:cover;filter:var(--img-filter)}
.gallery-wrap figcaption{padding:8px 10px;font-size:var(--fs-xs);color:var(--muted)}
.video-wrap{position:relative;width:100%;aspect-ratio:16/9;margin:var(--s-4) 0;background:#000}
.video-wrap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.contact-channels{display:flex;gap:8px;flex-wrap:wrap;margin:var(--s-5) 0}
.note{font-size:var(--fs-xs);color:var(--muted);line-height:1.8}
.spec-row{display:grid;grid-template-columns:52px 1fr;gap:var(--s-4);padding:var(--s-4) 0;border-bottom:var(--hairline)}
.spec-no{font-family:var(--font-num);font-size:var(--fs-xs);color:var(--teal);padding-top:4px}
.spec-row h3{font-size:var(--fs-lg);letter-spacing:-.02em;margin-bottom:6px}
.spec-row p{margin:0;font-size:var(--fs-sm);color:var(--muted);line-height:1.75}
.group-block{padding-top:var(--s-6);margin-top:var(--s-6);border-top:var(--hairline)}
.group-head{display:flex;align-items:baseline;gap:var(--s-4);margin-bottom:var(--s-4)}
.group-head h2{font-size:var(--fs-xl)}
.card-no{font-family:var(--font-num);font-size:var(--fs-xs);color:var(--teal)}
.case-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4)}
.case-link{margin:var(--s-4) 0 0;text-align:right}

/* tap targets + measure */
.practice .t-go a,.breadcrumb a,.place dd a{display:inline-flex;align-items:center;justify-content:center;min-width:24px;min-height:24px;padding:4px 2px}
.practice .t-go a{min-width:32px;min-height:32px}
.practice .t-desc{max-width:none}
.practice .desc-inner{max-width:30em}
.group-head{flex-wrap:wrap}
.table-wrap table{min-width:640px}
.diptych .tag,.pair-imgs .tag{white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.group-head h2{max-width:24em}

/* home: promise band + video grid */
.promise-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap);border-top:1px solid var(--line-strong);padding-top:var(--s-5)}
.promise-no{font-family:var(--font-num);font-size:var(--fs-xs);color:var(--teal);letter-spacing:.08em}
.promise h3{font-size:var(--fs-md);letter-spacing:-.01em;margin:8px 0 6px}
.promise p{font-size:var(--fs-sm);color:var(--muted);line-height:1.8;margin:0}
.video-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-4)}
.video-card{display:flex;flex-direction:column;gap:10px;border:var(--hairline);background:var(--surface);padding:var(--s-4);min-height:150px;transition:border-color .18s}
.video-card:hover{border-color:var(--teal);background:var(--surface-2)}
.video-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.video-play{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;background:var(--teal);color:var(--on-primary);font-size:12px}
.video-cat{font-family:var(--font-num);font-size:var(--fs-xs);letter-spacing:.06em;color:var(--muted);text-align:right}
.video-title{font-size:var(--fs-sm);font-weight:600;line-height:1.55;flex:1}
.video-meta{font-family:var(--font-num);font-size:var(--fs-xs);color:var(--teal)}

@media (max-width:1020px){
  .site-nav{display:none}
  .menu-toggle{display:inline-flex}
  .prose .compare-grid{grid-template-columns:1fr}
  .case-list{grid-template-columns:1fr 1fr}
  .promise-grid{grid-template-columns:1fr 1fr}
  .video-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:600px){
  .header-tools .lang-switch{display:none}
  .group-head{flex-direction:column;align-items:flex-start;gap:6px}
  .group-head h2{font-size:var(--fs-lg)}
  .case-list{grid-template-columns:1fr}
  .mobile-tools .btn{flex:1}
  .promise-grid,.video-grid{grid-template-columns:1fr}
}

/* home promo cards */
.promo-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--s-4);margin-top:var(--s-6);border-top:1px solid var(--line-strong);padding-top:var(--s-5)}
.promo{display:flex;flex-direction:column;gap:6px;padding:var(--s-3);border:1px solid transparent;transition:border-color .18s,background .18s}
.promo:hover{border-color:var(--teal);background:var(--surface-2)}
.promo-no{font-family:var(--font-num);font-size:var(--fs-xs);color:var(--teal)}
.promo h3{font-size:var(--fs-md);letter-spacing:-.01em}
.promo p{font-size:var(--fs-xs);color:var(--muted);line-height:1.7;margin:0}
@media (max-width:1020px){.promo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.promo-grid{grid-template-columns:1fr}}

/* map block */
.map-block{position:relative;border:var(--hairline);background:var(--surface);margin-top:var(--s-6)}
.map-figure{margin:0;position:relative}
.map-figure a{display:block}
.map-figure img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;filter:saturate(.96)}
.map-figure figcaption{position:absolute;right:8px;bottom:8px;font-family:var(--font-num);font-size:11px;letter-spacing:.02em;color:var(--muted);background:var(--glass);padding:2px 6px}
.map-card{position:absolute;left:var(--s-4);bottom:var(--s-4);background:var(--glass-strong);border:var(--hairline);padding:var(--s-4);max-width:430px;display:flex;flex-direction:column;gap:6px}
.map-card .addr{font-size:var(--fs-sm);font-weight:600;line-height:1.55}
.map-card .note{font-size:var(--fs-xs);color:var(--muted);line-height:1.6}
.map-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.map-actions .btn{padding:9px 12px;font-size:var(--fs-xs);min-height:40px}
.foot-hours{font-size:var(--fs-xs);color:var(--muted);margin:8px 0 0;line-height:1.8}
.foot-links a{white-space:nowrap}
@media (max-width:760px){
  .map-card{position:static;max-width:none;border:0;border-top:var(--hairline);background:transparent;padding:var(--s-4)}
  .map-actions .btn{flex:1 1 auto;justify-content:center}
}

/* ================= article system v2 ================= */
.layout-article{grid-template-columns:240px minmax(0,1fr);gap:clamp(28px,4vw,64px)}
.article-body{max-width:none;min-width:0}
.article-body > section{padding:var(--s-7) 0;border-top:var(--hairline)}
.article-body > section:first-child{border-top:0;padding-top:0}
.article-body h2{position:relative;padding-top:var(--s-4);font-size:clamp(22px,2.2vw,30px);letter-spacing:-.03em;margin-bottom:var(--s-4)}
.article-body h2::before{content:"";position:absolute;top:0;left:0;width:34px;height:2px;background:var(--teal)}
.article-body p{max-width:40em;color:var(--ink-2);font-size:var(--fs-body);line-height:1.9;margin:0 0 var(--s-4)}
.article-body .note{max-width:none}

/* text + image row */
.fig-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,4vw,60px);align-items:center}
.fig-row.fig-reverse .fig-copy{order:2}
.fig-row.fig-reverse .fig-media{order:1}
.fig-copy h2{margin-top:0}
.fig-media{min-width:0}
.fig-figure{margin:0}
.fig-frame{border:var(--hairline);background:var(--surface);padding:12px;display:flex;justify-content:center;align-items:center}
.fig-frame img{max-width:100%;height:auto;display:block}
.fig-figure figcaption{padding-top:10px;font-size:var(--fs-xs);color:var(--muted);line-height:1.7}

/* documentation figure (single composite image) */
.doc-figure{margin:var(--s-5) 0 0;max-width:100%}
.doc-frame{border:var(--hairline);background:var(--surface);padding:12px;display:flex;justify-content:center}
.doc-frame img{max-width:100%;height:auto;display:block}
.doc-figure figcaption{padding-top:10px;font-size:var(--fs-xs);color:var(--muted);line-height:1.7}

/* photo grid */
.photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-4);margin-top:var(--s-4)}
.photo{margin:0}
.photo-frame{aspect-ratio:4/3;overflow:hidden;border:var(--hairline);background:var(--surface)}
.photo-frame img{width:100%;height:100%;object-fit:contain}
.photo figcaption{padding-top:8px;font-size:var(--fs-xs);color:var(--muted);line-height:1.6}

/* before / after record cards */
.record-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-5);margin-top:var(--s-4)}
.record{margin:0;border:var(--hairline);background:var(--surface);padding:8px}
.record-imgs{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--line)}
.record-img{position:relative;overflow:hidden;background:var(--surface-2)}
.record-img img{width:100%;aspect-ratio:1;object-fit:cover;display:block;transition:transform .3s ease}
.record:hover .record-img img{transform:scale(1.02)}
.record .chip{position:absolute;left:6px;top:6px;background:var(--glass);font-family:var(--font-num);font-size:12px;padding:2px 7px;color:var(--ink-2)}
.record figcaption{padding:10px 4px 4px;font-size:var(--fs-xs);color:var(--muted);line-height:1.6}

/* books */
.book-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-5);margin-top:var(--s-4)}
.book-card{margin:0;border:var(--hairline);background:var(--surface);display:grid;grid-template-columns:148px 1fr;gap:var(--s-4);padding:var(--s-4)}
.book-cover{aspect-ratio:3/4;overflow:hidden;background:var(--surface-2);border:1px solid var(--line)}
.book-cover img{width:100%;height:100%;object-fit:cover;display:block}
.book-card h3{font-size:var(--fs-md);letter-spacing:-.01em;line-height:1.5}
.book-card p{font-size:var(--fs-xs);color:var(--muted);line-height:1.75;margin:6px 0 0;max-height:6.4em;overflow:hidden}
.book-meta{display:block;margin-top:8px;font-family:var(--font-num);font-size:12px;color:var(--teal)}

/* consult card in the article sidebar */
.aside-card{margin-top:var(--s-4);border:var(--hairline);background:var(--surface);padding:var(--s-4)}
.aside-kicker{font-family:var(--font-num);font-size:12px;letter-spacing:.14em;color:var(--teal);margin:0 0 6px}
.aside-phone{display:block;font-family:var(--font-num);font-size:17px;letter-spacing:.02em;color:var(--ink);margin-bottom:8px}
.aside-note{font-size:12px;color:var(--muted);line-height:1.7;margin:0}
.aside-links{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.aside-links a{border:1px solid var(--line);padding:8px 10px;font-size:12px;min-height:36px;display:inline-flex;align-items:center}
.aside-links a:hover{border-color:var(--teal);color:var(--teal)}
.toc{display:flex;flex-direction:column;max-height:none;overflow:visible}
.toc-links{max-height:calc(100vh - 360px);overflow:auto;margin-bottom:var(--s-2)}
.toc::-webkit-scrollbar{width:4px}
.toc::-webkit-scrollbar-thumb{background:var(--line)}

/* project cards with images (listing) */
.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--s-5)}
.project-card{display:flex;flex-direction:column;border:var(--hairline);background:var(--surface);transition:border-color .18s}
.project-card:hover{border-color:var(--teal)}
.project-thumb{aspect-ratio:4/3;overflow:hidden;background:var(--surface-2)}
.project-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}
.project-card:hover .project-thumb img{transform:scale(1.03)}
.project-body{padding:var(--s-4);display:flex;flex-direction:column;gap:6px}
.project-body h3{font-size:var(--fs-md);letter-spacing:-.01em}
.project-body p{font-size:var(--fs-xs);color:var(--muted);line-height:1.75;margin:0}
.project-more{margin-top:auto;padding-top:8px;font-family:var(--font-num);font-size:12px;color:var(--teal)}
.project-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-4);margin:var(--s-6) 0 var(--s-4)}
.project-head h2{font-size:var(--fs-xl)}

@media (max-width:1020px){
  .layout-article{grid-template-columns:1fr}
  .toc{max-height:none}
  .fig-row{grid-template-columns:1fr;gap:var(--s-4)}
  .fig-row.fig-reverse .fig-copy,.fig-row.fig-reverse .fig-media{order:0}
  .record-grid{grid-template-columns:1fr 1fr}
  .photo-grid{grid-template-columns:1fr 1fr}
  .book-grid{grid-template-columns:1fr}
  .project-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:600px){
  .record-grid{grid-template-columns:1fr}
  .photo-grid{grid-template-columns:1fr}
  .project-grid{grid-template-columns:1fr}
  .book-card{grid-template-columns:96px 1fr;gap:var(--s-3)}
  .aside-card{display:none}
}

/* home book shelf + project card fallback */
.book-shelf{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--s-4)}
.shelf-item{display:flex;flex-direction:column;gap:8px;padding:var(--s-3);border:1px solid var(--line);background:var(--surface);transition:border-color .18s}
.shelf-item:hover{border-color:var(--teal)}
.shelf-cover{display:block;aspect-ratio:3/4;overflow:hidden;background:var(--surface-2);border:1px solid var(--line)}
.shelf-cover img{width:100%;height:100%;object-fit:cover;display:block}
.shelf-title{font-size:13px;font-weight:600;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.shelf-meta{font-family:var(--font-num);font-size:12px;color:var(--muted);line-height:1.5}
.project-thumb-empty{display:flex;align-items:center;justify-content:center;background:var(--teal-soft);font-family:var(--font-num);font-size:30px;color:var(--teal)}
@media (max-width:1020px){.book-shelf{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){.book-shelf{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* project index rows */
.project-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s-3)}
.project-row{display:grid;grid-template-columns:112px minmax(0,1fr);gap:var(--s-4);align-items:start;border:1px solid var(--line);background:var(--surface);padding:var(--s-3);transition:border-color .18s}
.project-row:hover{border-color:var(--teal)}
.row-thumb{display:block;width:112px;height:112px;overflow:hidden;background:var(--surface-2);border:1px solid var(--line)}
.row-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.row-thumb-empty{display:flex;align-items:center;justify-content:center;font-family:var(--font-num);font-size:24px;color:var(--teal);background:var(--teal-soft)}
.row-body{display:flex;flex-direction:column;gap:3px;min-width:0;overflow:hidden}
.row-no{font-family:var(--font-num);font-size:12px;color:var(--teal);letter-spacing:.06em}
.row-body h3{font-size:var(--fs-md);letter-spacing:-.01em}
.row-body p{font-size:var(--fs-xs);color:var(--muted);line-height:1.65;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.row-go{margin-top:4px;font-family:var(--font-num);font-size:12px;color:var(--teal)}
.project-head{display:grid;grid-template-columns:1fr auto;align-items:end;gap:8px 24px;margin:var(--s-6) 0 var(--s-4);border-top:var(--hairline);padding-top:var(--s-4)}
.project-head .ph-main{display:flex;flex-direction:column;gap:4px}
.project-head h2{font-size:var(--fs-xl)}
.project-head .link{align-self:end;padding-bottom:4px}
@media (max-width:1020px){.project-list{grid-template-columns:1fr}}
@media (max-width:600px){.project-row{grid-template-columns:88px 1fr}.row-thumb{width:88px;height:88px}}

/* ================= director carousel ================= */
.hero-plate{max-width:430px}
.carousel{position:relative;background:var(--surface-2);border:1px solid var(--line);overflow:hidden}
.carousel-track{position:relative;aspect-ratio:4/5;width:100%}
.carousel-slide{position:absolute;inset:0;margin:0;opacity:0;transform:scale(1.015);transition:opacity .55s ease,transform .7s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.carousel-slide.is-active{opacity:1;transform:none;pointer-events:auto;z-index:2}
.carousel-slide img{width:100%;height:100%;object-fit:cover;object-position:50% 18%;display:block}
.carousel-dots{position:absolute;top:12px;right:12px;display:flex;gap:6px;z-index:4}
.carousel-dot{width:24px;height:24px;padding:0;border:0;background:transparent;cursor:pointer;position:relative}
.carousel-dot::after{content:"";position:absolute;left:3px;right:3px;top:50%;height:3px;margin-top:-1.5px;background:rgba(255,255,255,.5)}
.carousel-dot.is-active::after{background:var(--surface)}
.carousel-dot.is-active{background:transparent}
.carousel-ui{position:absolute;left:0;right:0;bottom:0;z-index:4;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;background:linear-gradient(transparent,rgba(16,21,28,.5));color:var(--on-primary)}
.carousel-nav{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.65);background:rgba(16,21,28,.28);color:var(--on-primary);font-size:16px;line-height:1;cursor:pointer;transition:background .18s,border-color .18s}
.carousel-nav:hover{background:rgba(16,21,28,.6);border-color:var(--on-primary)}
.carousel-count{font-family:var(--font-num);font-size:12px;letter-spacing:.1em}
.hero-plate .plate-cap{border-top:0;padding-top:12px}

/* ================= spacing pass: no full-bleed images, generous gutters ================= */
.hero{padding:clamp(44px,5.5vw,84px) 0 clamp(28px,3.5vw,48px)}
.hero h1{margin-bottom:var(--s-5)}
.bleed-photo{max-width:var(--max);width:calc(100% - 2 * var(--pad));margin:clamp(24px,3vw,40px) auto 0;height:clamp(240px,24vw,380px);border:1px solid var(--line)}
.bleed-photo figcaption{left:var(--s-4);bottom:var(--s-4);right:auto}
.article-body > section{padding:clamp(44px,5vw,68px) 0}
.article-body h2{margin-bottom:var(--s-4)}
.article-body p{margin-bottom:var(--s-4)}
.doc-figure{max-width:680px;margin:clamp(28px,3.5vw,44px) auto 0}
.doc-frame{padding:clamp(10px,1.2vw,18px)}
.fig-row{padding:clamp(40px,5vw,64px) 0;gap:clamp(32px,5vw,72px)}
.fig-frame{padding:clamp(8px,1vw,14px)}
.photo-grid{gap:var(--s-5)}
.record-grid{gap:var(--s-5)}
.record{padding:10px}
.page-hero{max-width:var(--max);width:calc(100% - 2 * var(--pad));height:clamp(240px,26vw,380px);margin:clamp(20px,3vw,32px) auto 0;border:1px solid var(--line)}
.map-block{margin-top:clamp(32px,4vw,56px)}
@media (max-width:600px){
  .hero-plate{max-width:100%}
  .bleed-photo,.page-hero{width:calc(100% - 2 * var(--pad))}
  .article-body > section{padding:36px 0}
  .doc-figure{max-width:100%}
}

/* ================= contact icons / WeChat ================= */
.icon-sprite{position:absolute;width:0;height:0;overflow:hidden}
.ico{width:18px;height:18px;flex:none;display:inline-block;vertical-align:-3px}
.btn .ico{margin-right:2px}
.contact-pill{display:inline-flex;align-items:center;gap:9px;min-height:46px;padding:11px 18px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:var(--fs-sm);font-weight:600;line-height:1.2;transition:transform .18s,border-color .18s,box-shadow .18s;white-space:nowrap}
.contact-pill:hover{transform:translateY(-1px);border-color:var(--teal);box-shadow:0 6px 18px rgba(16,21,28,.09)}
.contact-pill .ico{width:19px;height:19px}
.contact-pill.is-kakao{background:#fee500;border-color:#fee500;color:#191919}
.contact-pill.is-kakao:hover{border-color:#e2c900}
.contact-pill.is-naver{background:#03c75a;border-color:#03c75a;color:var(--on-primary)}
.contact-pill.is-naver:hover{border-color:#02a94c}
.contact-pill.is-wechat{background:#07c160;border-color:#07c160;color:#0b2415}
.contact-pill.is-wechat:hover{border-color:#06a94f}
.contact-pill.is-line .ico{color:var(--teal)}
.contact-channels{display:flex;flex-wrap:wrap;gap:12px;margin-top:var(--s-5)}
.place .channels{gap:10px}

/* WeChat band (home) */
.wx-band{display:grid;grid-template-columns:200px minmax(0,1fr) 150px;gap:clamp(24px,3vw,44px);align-items:center;margin-top:clamp(28px,3.5vw,44px);border:1px solid var(--line);background:var(--surface);padding:clamp(20px,2.4vw,32px)}
.wx-band-qr{margin:0;text-align:center}
.wx-band-qr img{width:100%;max-width:200px;height:auto;border:1px solid var(--line);background:var(--surface)}
.wx-band-qr figcaption{font-size:var(--fs-xs);color:var(--muted);margin-top:10px}
.wx-kicker{font-family:var(--font-num);font-size:12px;letter-spacing:.14em;color:var(--teal);margin:0 0 8px}
.wx-band-body h3{font-size:clamp(20px,2vw,26px);letter-spacing:-.02em;margin:0 0 10px}
.wx-band-body p{font-size:var(--fs-sm);color:var(--muted);line-height:1.8;margin:0 0 var(--s-4);max-width:38em}
.wx-band-actions{display:flex;align-items:center;flex-wrap:wrap;gap:14px}
.wx-band-note{font-family:var(--font-num);font-size:12px;color:var(--muted);letter-spacing:.02em}
.wx-facts{list-style:none;margin:0;padding:0 0 0 22px;border-left:1px solid var(--line);display:flex;flex-direction:column;gap:16px;justify-content:center;align-self:stretch}
.wx-facts li{display:flex;flex-direction:column;gap:2px}
.wx-facts b{font-family:var(--font-num);font-size:19px;color:var(--ink);letter-spacing:-.01em}
.wx-facts span{font-size:12px;color:var(--muted)}

/* WeChat panel (contact page) */
.wx-panel{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:clamp(24px,3vw,40px);align-items:center;border:1px solid var(--line);background:var(--surface);padding:clamp(20px,2.6vw,34px);margin:var(--s-5) 0}
.wx-panel h3{font-size:clamp(20px,2vw,26px);letter-spacing:-.02em;margin:0 0 10px}
.wx-panel-body p{font-size:var(--fs-sm);color:var(--muted);line-height:1.8;margin:0 0 var(--s-4);max-width:36em}
.wx-panel-qr{margin:0;text-align:center}
.wx-panel-qr img{width:100%;max-width:220px;border:1px solid var(--line)}
.wx-panel-qr figcaption{font-size:var(--fs-xs);color:var(--muted);margin-top:10px}
.wx-btn{margin-top:2px}

/* aside QR */
.aside-qr{display:block;width:100%;height:auto;border:1px solid var(--line);margin-top:14px;background:var(--surface)}
.aside-qr-note{font-size:12px;color:var(--muted);text-align:center;margin:8px 0 0}
.aside-links .contact-pill{width:100%;justify-content:flex-start;min-height:42px;padding:9px 12px;font-size:12px}

/* floating WeChat button + dialog */
.wx-fab{position:fixed;right:24px;bottom:24px;z-index:70;display:inline-flex;align-items:center;gap:9px;min-height:50px;padding:0 20px;border:1px solid #0b8f47;background:#07c160;color:#0b2415;font-size:var(--fs-sm);font-weight:600;letter-spacing:.01em;box-shadow:0 10px 26px rgba(16,21,28,.22);cursor:pointer;transition:transform .18s,box-shadow .18s}
.wx-fab:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(16,21,28,.28)}
.wx-fab .ico{width:21px;height:21px}
.wx-dialog{border:0;padding:0;background:transparent;max-width:none;width:auto;color:var(--ink)}
.wx-dialog::backdrop{background:rgba(16,21,28,.55)}
.wx-card{position:relative;width:min(92vw,392px);background:var(--bg);border:1px solid var(--line);padding:clamp(24px,4vw,36px);text-align:center}
.wx-card h2{font-size:24px;letter-spacing:-.02em;margin:0 0 8px}
.wx-note{font-size:var(--fs-sm);color:var(--muted);line-height:1.75;margin:0 0 var(--s-5)}
.wx-qr{display:block;width:min(60vw,236px);height:auto;margin:0 auto var(--s-3);border:1px solid var(--line);background:var(--surface)}
.wx-hint{font-size:var(--fs-xs);color:var(--muted);margin:0 0 var(--s-4)}
.wx-close{position:absolute;top:6px;right:6px;width:44px;height:44px;border:0;background:transparent;color:var(--muted);font-size:26px;line-height:1;cursor:pointer}
.wx-close:hover{color:var(--ink)}
.foot-contact{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:var(--fs-sm);color:var(--ink-2)}
.foot-contact .ico{width:17px;height:17px;color:var(--teal)}
.foot-copy{display:block;margin-top:12px;font-size:var(--fs-xs);color:var(--muted)}

@media (max-width:760px){
  .wx-band{grid-template-columns:1fr;text-align:left}
  .wx-facts{display:none}
  .wx-band-qr img{max-width:170px}
  .wx-panel{grid-template-columns:1fr}
  .wx-panel-qr{order:-1;text-align:left}
  .wx-panel-qr img{max-width:170px}
  .wx-fab{right:14px;bottom:14px;min-height:46px;padding:0 16px;font-size:13px}
  .wx-dialog{margin:auto}
}

html.wx-lock,html.wx-lock body{overflow:hidden}

/* galleries that hold one or two images should not sit in a 3-up grid */
.photo-grid.photo-single{grid-template-columns:minmax(0,1fr);max-width:560px;margin-left:auto;margin-right:auto}
.photo-grid.photo-double{grid-template-columns:repeat(2,minmax(0,1fr));max-width:760px}
.photo-single .photo-frame{aspect-ratio:auto;display:flex;justify-content:center;padding:clamp(10px,1.2vw,18px)}
.photo-single .photo-frame img{width:auto;max-width:100%;height:auto}
.photo-single figcaption{text-align:left}
@media (max-width:600px){.photo-grid.photo-double{grid-template-columns:1fr}}

/* FAQ (home) + medical reviewer byline */
.faq-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--s-6);border-top:1px solid var(--line-strong)}
.faq-item{border-bottom:1px solid var(--line);padding:var(--s-4) 0}
.faq-item summary{display:flex;align-items:center;justify-content:space-between;gap:16px;cursor:pointer;list-style:none;font-size:var(--fs-md);font-weight:600;letter-spacing:-.01em;line-height:1.5;min-height:44px}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";font-family:var(--font-num);font-size:22px;color:var(--teal);line-height:1;flex:none;transition:transform .2s}
.faq-item[open] summary::after{transform:rotate(45deg)}
.faq-a p{margin:10px 0 4px;font-size:var(--fs-sm);color:var(--muted);line-height:1.85;max-width:38em}
.byline{display:flex;align-items:center;gap:8px;margin:var(--s-3) 0 0;font-size:var(--fs-xs);color:var(--muted);letter-spacing:.01em}
.byline::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--teal);flex:none}
.byline a{color:var(--ink);border-bottom:1px solid var(--line-strong)}
.byline a:hover{color:var(--teal);border-color:var(--teal)}
@media (max-width:900px){.faq-list{grid-template-columns:1fr}}

.faq-item:not([open]) .faq-a{display:none}

.btn-sm{padding:9px 14px;font-size:var(--fs-xs);min-height:44px;gap:6px;font-weight:500}

.map-others{display:flex;flex-wrap:wrap;gap:8px;width:100%;margin-top:2px;padding-top:2px}

/* home cases: one composite image per card, equal frame height */
.case-card{display:flex;flex-direction:column;height:100%}
.case-media{margin:0;height:220px;background:var(--surface-2);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:center;overflow:hidden}
.case-media img{width:100%;height:100%;object-fit:contain;display:block}
.case-card .case-cap{display:flex;align-items:baseline;gap:12px;padding:14px;flex:1;min-height:76px}
.case-card .case-cap h3{flex:1;font-size:var(--fs-md)}
.case-card .case-cap .case-meta{margin-left:auto;white-space:nowrap}
.case-archive{display:flex;flex-direction:column;justify-content:center;gap:10px;padding:24px}
.case-archive .archive-link{margin-top:6px}
@media (max-width:600px){.case-media{height:180px}}

/* clinic strip: no empty grid tracks / gray background */
.gallery-strip{grid-template-columns:repeat(4,1fr);gap:16px;background:transparent;border:0;align-items:start}
.gallery-strip figure{background:var(--surface);border:1px solid var(--line)}
.gallery-strip .g-img{background:var(--surface)}
.gallery-strip img{aspect-ratio:auto;height:auto;object-fit:contain;background:var(--surface)}
.gallery-strip figcaption{padding:10px 12px}
.gallery-1{grid-template-columns:1fr}
.gallery-1 figure{max-width:1000px}
.gallery-1 img{aspect-ratio:auto;height:auto;max-height:560px;object-fit:contain}
.gallery-2{grid-template-columns:1fr 1fr}
.gallery-3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:760px){
  .gallery-1,.gallery-2,.gallery-3{grid-template-columns:1fr}
  .gallery-1 img{max-height:none}
}

.gallery-strip .g-img{width:100%;overflow:hidden;background:var(--surface)}
.gallery-strip .g-img img{width:100%;height:100%;object-fit:contain;object-position:center;display:block;background:var(--surface)}
.gallery-1 .g-img{max-height:560px}

.gallery-strip:not(.gallery-1) .g-img{aspect-ratio:4/3 !important}
.gallery-strip:not(.gallery-1) .g-img img{object-fit:contain}

/* YouTube embeds (official iframe) */
.video-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.video-item{margin:0;border:1px solid var(--line);background:var(--surface)}
.video-frame{position:relative;aspect-ratio:16/9;background:#000;overflow:hidden}
.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.video-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--on-primary);background:#121718;font-size:13px}
.video-item figcaption{padding:12px 14px;font-size:13px;line-height:1.6;color:var(--ink-2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:56px}
@media (max-width:1020px){.video-grid{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.video-grid{grid-template-columns:1fr}}

.video-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.video-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;z-index:1;background:transparent}

/* ================= GLASS THEME (soft light + frosted surfaces) ================= */
body{
  background-color:var(--bg);
  background-image:var(--bg-glow);
  background-attachment:fixed;
  background-repeat:no-repeat;
  background-size:cover;
  color:var(--ink);
}
h1,h2,h3,h4{font-weight:600;letter-spacing:-.025em}
::selection{background:var(--teal);color:var(--on-primary)}
a:hover{color:var(--teal)}

/* floating + card surfaces only; article body stays solid */
.site-header{
  background:var(--glass);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(1.15);
  backdrop-filter:blur(var(--blur)) saturate(1.15);
  border-bottom:1px solid var(--glass-border);
  box-shadow:0 1px 0 rgba(255,255,255,.55), var(--shadow-soft);
}
.mega,
.case-card,
.project-row,
.book-card,
.record,
.video-item,
.wx-band,
.wx-panel,
.shelf-item,
.aside-card,
.map-card,
.wx-card,
.case-archive{
  background:var(--glass);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(1.1);
  backdrop-filter:blur(var(--blur)) saturate(1.1);
  border:1px solid var(--glass-border);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
}
.mega{border-radius:var(--radius-lg)}
.case-card,.project-row,.book-card,.record,.video-item,.shelf-item,.map-card{overflow:hidden}
.wx-card{background:var(--glass-strong);border-radius:var(--radius-lg)}

/* buttons + small controls */
.btn{border-radius:var(--radius);box-shadow:0 8px 20px rgba(204,69,32,.20)}
.btn:hover{box-shadow:0 10px 26px rgba(204,69,32,.26)}
.btn-line{background:var(--glass);border-color:var(--glass-border);box-shadow:var(--shadow-soft)}
.btn-line:hover{border-color:var(--teal);background:var(--glass)}
.lang-switch,.contact-pill{border-radius:var(--radius-sm);background:var(--glass);border-color:var(--glass-border);box-shadow:var(--shadow-soft)}
.contact-pill:hover{box-shadow:var(--shadow)}
.contact-pill.is-kakao,.contact-pill.is-naver,.contact-pill.is-wechat{box-shadow:var(--shadow-soft)}
.link{color:var(--accent)}
.link:hover{color:#1E4F82}
.toc a:hover{color:var(--accent)}

/* image plates keep a clean white bed, rounded like the cards */
.page-hero,.bleed-photo,.map-figure,.carousel,.case-media,
.fig-frame,.doc-frame,.photo-frame,.gallery-strip figure,.gallery-strip .g-img,
.hero-plate .plate-body,.wx-band-qr img,.wx-panel-qr img,.wx-qr,.aside-qr{
  background:var(--photo-bg);
  border-radius:var(--radius);
  overflow:hidden;
}
.fig-frame,.doc-frame,.photo-frame,.hero-plate .plate-body{padding:12px}
.map-figure img,.page-hero img,.bleed-photo img{border-radius:0}

/* frosted tags instead of paper chips */
.diptych .tag,.pair-imgs .tag,.record .chip,.bleed-photo figcaption,.map-figure figcaption{
  background:var(--glass);
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
  border:1px solid var(--glass-border);
  border-radius:999px;
  color:var(--ink-2);
}
.carousel-nav,.carousel-ui,.carousel-dots{border-radius:0}
.carousel{border:1px solid var(--glass-border)}
.wx-fab{border-radius:var(--radius);box-shadow:var(--shadow)}
.wx-dialog::backdrop{background:rgba(16,21,28,.55);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.wx-close{border-radius:50%}

/* accent roles: primary = actions, accent = links / figures / large numerals */
.kicker::before{background:var(--accent)}
.kicker b{color:var(--teal)}
.hero-meta b{color:var(--accent)}
.article-body h2::before{background:var(--teal)}
.article-body a,.prose a{color:var(--accent)}
.practice .t-no,.project-more,.row-no,.row-go,.faq-item summary::after{color:var(--accent)}
.case-no,.aside-kicker,.wx-kicker{color:var(--teal)}
.byline::before{background:var(--accent)}

/* section rhythm: keep solid reading column, soften separators */
.section + .section{border-top:1px solid var(--line)}
.strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.hero-meta{border-top:1px solid var(--line)}
.site-footer{background:transparent}

@media (max-width:760px){
  body{background-attachment:scroll}
  .site-header{background:var(--glass-strong)}
}

/* button text must stay legible inside the reading column */
.btn,.btn .ico{color:var(--on-primary)}
.article-body .btn,.prose .btn,.article-body .btn .ico,.prose .btn .ico{color:var(--on-primary)}
.article-body .btn-line,.prose .btn-line,.article-body .btn-line .ico,.prose .btn-line .ico{color:var(--ink)}
.kicker b,.case-no,.archive-label,.aside-kicker,.wx-kicker{color:var(--accent)}

.btn-line,.btn-line .ico{color:var(--ink)}
.btn-line:hover,.btn-line:hover .ico{color:var(--ink)}
.byline a{display:inline-flex;align-items:center;min-height:32px;padding:4px 2px}
.wx-band-body h3{font-size:clamp(18px,1.8vw,24px);text-wrap:balance}

/* ---------- mega menu hover bridge ---------- */
.nav-drop::after{content:"";position:absolute;left:-28px;right:-28px;top:100%;height:14px;background:transparent;z-index:49}
.mega{top:calc(100% + 4px);margin-top:0}

/* ---------- lightbox ---------- */
main img.zoomable{cursor:zoom-in}
main img.zoomable:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:6px}
.lightbox{border:0;padding:0;width:100vw;height:100vh;max-width:100vw;max-height:100vh;margin:0;background:transparent;color:var(--ink)}
.lightbox::backdrop{background:rgba(16,21,28,.72);-webkit-backdrop-filter:blur(12px) saturate(1.1);backdrop-filter:blur(12px) saturate(1.1)}
.lightbox-figure{position:absolute;inset:0;margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:56px 24px}
.lightbox img{max-width:min(1120px,92vw);max-height:80vh;width:auto;height:auto;border-radius:var(--radius);box-shadow:0 24px 70px rgba(16,21,28,.45);transform:scale(.965);opacity:0;transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .22s ease;background:var(--photo-bg)}
.lightbox.is-open img{transform:none;opacity:1}
.lightbox figcaption{max-width:min(760px,88vw);padding:10px 16px;border-radius:999px;background:var(--glass);border:1px solid var(--glass-border);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);color:var(--ink-2);font-size:var(--fs-xs);line-height:1.6;text-align:center;opacity:0;transform:translateY(6px);transition:opacity .25s .05s,transform .25s .05s}
.lightbox.is-open figcaption{opacity:1;transform:none}
.lightbox-close{position:fixed;top:18px;right:18px;z-index:2;width:48px;height:48px;border-radius:50%;border:1px solid var(--glass-border);background:var(--glass);color:var(--ink);font-size:26px;line-height:1;cursor:pointer;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow-soft);transition:transform .18s,background .18s}
.lightbox-close:hover{transform:rotate(90deg);background:var(--surface)}
html.lightbox-open{overflow:hidden}
@media (max-width:600px){
  .lightbox-figure{padding:64px 16px 40px}
  .lightbox img{max-height:74vh;border-radius:14px}
}

/* ================= refined premium pass (solid cards, ink CTAs, copper accents) ================= */
h1,h2,h3{letter-spacing:-.03em}

/* cards back to solid surfaces with a light hairline; glass stays on true overlays only */
.case-card,
.project-row,
.book-card,
.record,
.video-item,
.wx-band,
.wx-panel,
.shelf-item,
.aside-card,
.map-card,
.case-archive{
  background:var(--surface);
  -webkit-backdrop-filter:none;
  backdrop-filter:none;
  border:1px solid var(--line);
  border-radius:var(--radius);
  box-shadow:var(--shadow-soft);
}
.mega,
.wx-card,
.site-header,
.lightbox-close{
  background:var(--glass);
  -webkit-backdrop-filter:blur(var(--blur)) saturate(1.08);
  backdrop-filter:blur(var(--blur)) saturate(1.08);
  border:1px solid var(--glass-border);
  box-shadow:var(--shadow);
}
.site-header{box-shadow:0 1px 0 rgba(255,255,255,.55), var(--shadow-soft)}

/* ink primary buttons, quiet secondary */
.btn{background:var(--teal);border-color:var(--teal);color:var(--on-primary);box-shadow:0 6px 16px rgba(16,24,32,.14)}
.btn:hover{background:var(--teal-ink);border-color:var(--teal-ink);box-shadow:0 8px 20px rgba(16,24,32,.18)}
.btn-line{background:var(--surface);border-color:var(--line);color:var(--ink);box-shadow:none}
.btn-line:hover{border-color:var(--ink);background:var(--surface)}

/* copper is now the only small-text accent */
.kicker b,.case-no,.archive-label,.aside-kicker,.wx-kicker,.hero-meta b,.project-more,.row-no,.row-go,.faq-item summary::after,.case-archive .link{color:var(--accent)}
.kicker::before,.article-body h2::before,.byline::before{background:var(--accent)}
.link{color:var(--accent)}
.link:hover{color:#6E4329}
.toc-links a:hover{color:var(--accent)}
.article-body a,.prose a{color:var(--accent)}
.hero h1 mark{background:linear-gradient(transparent 64%,var(--teal-soft) 64%)}

/* floating consult button: ink glass, WeChat green stays as icon cue */
.wx-fab{background:var(--ink);border-color:var(--ink);color:#fff;box-shadow:var(--shadow)}
.wx-fab:hover{background:#0B1217;border-color:#0B1217;box-shadow:var(--shadow)}
.wx-fab .ico{color:#3DDC84}

/* pills: quiet solid, brand pills untouched */
.contact-pill{background:var(--surface);border-color:var(--line);box-shadow:none}
.contact-pill:hover{box-shadow:var(--shadow-soft);border-color:var(--accent)}
.lang-switch{background:var(--surface);border-color:var(--line);box-shadow:none}

/* softer photo frames + tags */
.page-hero,.bleed-photo,.map-figure,.carousel,.case-media,.fig-frame,.doc-frame,.photo-frame,.gallery-strip figure,.gallery-strip .g-img,.hero-plate .plate-body,.wx-band-qr img,.wx-panel-qr img,.wx-qr,.aside-qr{border-color:var(--line)}

/* typographic contrast: quieter meta, stronger headings */
.section-head .head-aside,.lede{color:var(--muted)}
.hero h1{letter-spacing:-.035em}
.section h2{letter-spacing:-.03em}

/* lightbox stage: fill the viewport on every screen */
.lightbox-figure{padding:28px 16px}
.lightbox img{max-width:94vw;max-height:86vh;width:auto;height:auto;object-fit:contain;image-rendering:auto}
@media (max-width:600px){.lightbox img{max-width:96vw;max-height:82vh}}

@media (max-width:600px){
  .lightbox-figure{padding:10px 0 18px}
  .lightbox img{max-width:100vw;max-height:84vh;border-radius:0}
  .lightbox figcaption{margin:0 16px}
}

/* mega menu: nearly opaque so the list stays crisp over the soft background */
.site-nav .mega{
  background:rgba(247,249,252,.965);
  -webkit-backdrop-filter:blur(24px) saturate(1.08);
  backdrop-filter:blur(24px) saturate(1.08);
  border:1px solid rgba(255,255,255,.92);
  box-shadow:0 18px 44px rgba(16,24,32,.16);
}
.site-nav .mega-col a{color:var(--ink-2)}
.site-nav .mega-col a:hover{color:var(--accent);border-bottom-color:var(--accent)}
