/* ==========================================================================
   NOVA PLASTIC SURGERY — landing (ko + virtual en/cn/ja/tw)
   팔레트: 로고 목업(오프화이트 종이·차콜 잉크·딥 플럼) 에서 출발. 액센트는 샴페인 하나.
   타이포: 라틴 디스플레이 Bodoni Moda(로고의 디돈 계열) / CJK 헤드라인 Noto Serif(KR·JP·SC·TC) 300
           본문 Pretendard(ko·en) / Noto Sans JP·SC·TC
   ========================================================================== */
:root{
  --paper:#F4F1EC; --paper-2:#EAE5DE; --paper-3:#FBF9F6;
  --ink:#2A2626; --ink-2:#4A4445; --ink-muted:#6A6263;
  --night:#1E1219; --plum-900:#2C1B24; --plum-800:#3B242D; --plum-700:#4A2A3C; --plum-600:#6B3A4B;
  --accent:#CBB08A; --accent-2:#E3D3B6; --line:#D9D1C8; --line-dark:rgba(244,241,236,.14);
  --font-body:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,system-ui,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;
  --font-display:"Noto Serif KR",Georgia,"Times New Roman",serif;
  --font-latin:"Bodoni Moda","Didot","Bodoni 72",Georgia,serif;
  --fs-cap:.75rem; --fs-sm:.875rem; --fs-body:1rem; --fs-lead:1.125rem;
  --fs-h3:clamp(1.25rem,1.05rem + .8vw,1.625rem);
  --fs-h2:clamp(1.9rem,1.3rem + 2.4vw,3.25rem);
  --fs-hero:clamp(2.3rem,1.15rem + 3.3vw,4rem);
  --fs-statement:clamp(1.7rem,1.2rem + 2.6vw,3.6rem);
  --lh-tight:1.18; --lh-snug:1.45; --lh-body:1.9;
  --container:80rem; --narrow:46rem; --gutter:clamp(1.25rem,.6rem + 3.2vw,4rem);
  --sec:clamp(5rem,3rem + 8vw,10rem); --sec-sm:clamp(3rem,2rem + 4vw,6rem);
  --dur-1:.28s; --dur-2:.6s; --dur-3:1.1s; --ease:cubic-bezier(.22,.61,.36,1);
  --header-h:4.5rem;
}
html[lang="ja"]{--font-body:"Noto Sans JP","Hiragino Sans","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;--font-display:"Noto Serif JP","Hiragino Mincho ProN","Yu Mincho",serif}
html[lang="zh-CN"]{--font-body:"Noto Sans SC","PingFang SC","Microsoft YaHei",sans-serif;--font-display:"Noto Serif SC","Songti SC",serif}
html[lang="zh-TW"]{--font-body:"Noto Sans TC","PingFang TC","Microsoft JhengHei",sans-serif;--font-display:"Noto Serif TC","Songti TC",serif}
html[lang="en"]{--font-display:"Bodoni Moda",Georgia,serif;--lh-tight:1.08}

/* ---------- base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;background:var(--night)}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}
html[lang="ko"] body{word-break:keep-all}
html[lang="ja"] body,html[lang="zh-CN"] body,html[lang="zh-TW"] body{line-break:strict;overflow-wrap:anywhere}
img,svg{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}
h1,h2,h3,p{margin:0}
ul,ol{list-style:none;margin:0;padding:0}
em{font-style:normal;color:var(--plum-600)}
.dark em{color:var(--accent)}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
::selection{background:var(--plum-600);color:var(--paper)}

.container{width:min(100% - 2*var(--gutter),var(--container));margin-inline:auto}
.narrow{width:min(100% - 2*var(--gutter),var(--narrow));margin-inline:auto}

/* ---------- typography ---------- */
.display{font-family:var(--font-display);font-weight:300;line-height:var(--lh-tight);letter-spacing:-.01em}
html[lang="en"] .display{font-weight:400;letter-spacing:-.005em}
.latin{font-family:var(--font-latin);font-weight:400;font-style:italic;letter-spacing:.02em}
.kicker{display:flex;align-items:center;gap:.6rem;font-family:var(--font-latin);font-style:italic;font-size:clamp(.85rem,.8rem + .3vw,1.05rem);letter-spacing:.06em;color:var(--plum-600);margin-bottom:1.5rem}
.kicker .star{width:.8em;height:.8em;flex:none;color:currentColor}
.dark .kicker{color:var(--accent)}
.h2{font-size:var(--fs-h2)}
.h3{font-size:var(--fs-h3);font-weight:400;line-height:var(--lh-snug)}
.lead{font-size:var(--fs-lead);line-height:1.8;color:var(--ink-2)}
.dark .lead{color:rgba(244,241,236,.78)}
.body{color:var(--ink-2)}
.dark .body{color:rgba(244,241,236,.72)}
.muted{color:var(--ink-muted);font-size:var(--fs-sm)}
.dark .muted{color:rgba(244,241,236,.5)}
.num{font-family:var(--font-latin);font-style:italic;font-size:.9em;letter-spacing:.04em}

/* ---------- sections ---------- */
.sec{position:relative;padding-block:var(--sec)}
.sec--sm{padding-block:var(--sec-sm)}
.paper{background:var(--paper);color:var(--ink)}
.paper-2{background:var(--paper-2);color:var(--ink)}
.dark{background:var(--plum-900);color:var(--paper)}
.night{background:var(--night);color:var(--paper)}
.rule{height:1px;background:var(--line);border:0;margin:0}
.dark .rule,.night .rule{background:var(--line-dark)}

/* ---------- reveal motion ---------- */
.rv{opacity:0;transform:translateY(22px);transition:opacity var(--dur-3) var(--ease),transform var(--dur-3) var(--ease)}
.rv.in{opacity:1;transform:none}
.rv-d1{transition-delay:.12s}.rv-d2{transition-delay:.24s}.rv-d3{transition-delay:.36s}.rv-d4{transition-delay:.48s}
@media (prefers-reduced-motion:reduce){.rv{opacity:1;transform:none;transition:none}html{scroll-behavior:auto}}

/* ---------- star motif ---------- */
.star{width:1em;height:1em;fill:currentColor}

/* ---------- header ---------- */
.hd{position:fixed;inset:0 0 auto 0;z-index:60;height:var(--header-h);display:flex;align-items:center;color:var(--ink);transition:background var(--dur-2) var(--ease),color var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease)}
.hd__in{width:min(100% - 2*var(--gutter),var(--container));margin-inline:auto;display:flex;align-items:center;justify-content:space-between;gap:1.5rem}
.hd.solid{background:rgba(244,241,236,.92);color:var(--ink);backdrop-filter:saturate(160%) blur(12px);-webkit-backdrop-filter:saturate(160%) blur(12px);box-shadow:0 1px 0 var(--line)}
.brand{display:flex;align-items:baseline;gap:.55rem;line-height:1}
.brand__word{font-family:var(--font-latin);font-style:normal;font-weight:400;font-size:1.65rem;letter-spacing:.01em;position:relative}
.brand__word .star{position:absolute;top:-.35em;right:-.75em;width:.55em;height:.55em;color:var(--accent)}
.brand__sub{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;opacity:.75;font-weight:500}
.nav{display:flex;gap:clamp(1rem,.5rem + 1.6vw,2.2rem);font-size:.9rem;font-weight:500;letter-spacing:.01em}
.nav a{opacity:.78;transition:opacity var(--dur-1) var(--ease);white-space:nowrap}
.nav a:hover,.nav a.on{opacity:1}
.hd__r{display:flex;align-items:center;gap:1.1rem}
.lang{position:relative}
.lang__btn{display:flex;align-items:center;gap:.4rem;font-size:.8rem;letter-spacing:.1em;font-weight:500;padding:.5rem .2rem;opacity:.85}
.lang__btn svg{width:.9rem;height:.9rem}
.lang__menu{position:absolute;right:0;top:calc(100% + .4rem);min-width:9.5rem;background:var(--paper);color:var(--ink);border:1px solid var(--line);box-shadow:0 18px 40px rgba(30,18,25,.18);padding:.4rem;display:none;z-index:70}
.lang.open .lang__menu{display:block}
.lang__menu a{display:flex;justify-content:space-between;align-items:center;padding:.55rem .75rem;font-size:.85rem;border-radius:2px}
.lang__menu a:hover{background:var(--paper-2)}
.lang__menu a.on{color:var(--plum-600);font-weight:600}
.lang__menu a.on::after{content:"";width:.35rem;height:.35rem;background:var(--accent);border-radius:50%}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;padding:.85rem 1.5rem;border:1px solid currentColor;font-size:.9rem;font-weight:500;letter-spacing:.04em;border-radius:2px;transition:background var(--dur-1) var(--ease),color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease)}
.btn:hover{transform:translateY(-1px)}
.btn--solid{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.btn--solid:hover{background:var(--plum-700);border-color:var(--plum-700)}
.dark .btn--solid,.night .btn--solid{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.dark .btn--solid:hover,.night .btn--solid:hover{background:var(--accent);border-color:var(--accent)}
.btn--ghost:hover{background:var(--paper-2)}
.hd .btn{padding:.6rem 1.1rem;font-size:.82rem}
.burger{display:none;width:2.4rem;height:2.4rem;position:relative}
.burger span{position:absolute;left:.5rem;right:.5rem;height:1px;background:currentColor;transition:transform var(--dur-2) var(--ease),opacity var(--dur-1)}
.burger span:nth-child(1){top:.85rem}.burger span:nth-child(2){top:1.2rem}.burger span:nth-child(3){top:1.55rem}
.menu-open .burger span:nth-child(1){transform:translateY(.35rem) rotate(45deg)}
.menu-open .burger span:nth-child(2){opacity:0}
.menu-open .burger span:nth-child(3){transform:translateY(-.35rem) rotate(-45deg)}
.drawer{position:fixed;inset:0;z-index:55;background:var(--night);color:var(--paper);padding:calc(var(--header-h) + 2rem) var(--gutter) 3rem;display:none;flex-direction:column;gap:2rem;overflow:auto}
.menu-open .drawer{display:flex}
.drawer .nav{flex-direction:column;gap:1.4rem;font-family:var(--font-display);font-weight:300;font-size:1.9rem}
.drawer__langs{display:flex;flex-wrap:wrap;gap:.6rem 1.4rem;font-size:.9rem;letter-spacing:.06em}
.drawer__langs a.on{color:var(--accent)}
.menu-open{overflow:hidden}
.menu-open .hd{background:transparent;color:var(--paper);box-shadow:none}
@media (max-width:960px){.nav,.hd .btn,.hd .lang{display:none}.burger{display:block}}

/* ---------- footer ---------- */
.ft{background:var(--night);color:rgba(244,241,236,.72);padding:var(--sec-sm) 0 2.5rem;font-size:var(--fs-sm)}
.ft__top{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:3rem;padding-bottom:3rem;border-bottom:1px solid var(--line-dark)}
.ft__brand .brand{color:var(--paper);margin-bottom:1.2rem}
.ft h3{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem;font-weight:500}
.ft address{font-style:normal;line-height:1.9}
.ft__legal{display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;padding-top:1.5rem;font-size:var(--fs-cap);color:rgba(244,241,236,.45)}
.ft__legal a:hover{color:var(--paper)}
.ft__disc{margin-top:1.2rem;font-size:var(--fs-cap);color:rgba(244,241,236,.45);line-height:1.7}
@media (max-width:820px){.ft__top{grid-template-columns:1fr;gap:2rem}}

/* ---------- quick (mobile bottom bar) ---------- */
.quick{position:fixed;left:0;right:0;bottom:0;z-index:50;display:none;background:rgba(30,18,25,.94);color:var(--paper);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-top:1px solid var(--line-dark)}
.quick a{flex:1;display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.6rem .4rem calc(.6rem + env(safe-area-inset-bottom));font-size:.7rem;letter-spacing:.04em}
.quick a svg{width:1.15rem;height:1.15rem;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.quick a.hi{background:var(--accent);color:var(--night)}
@media (max-width:960px){.quick{display:flex}body{padding-bottom:3.6rem}}

/* ==========================================================================
   layout helpers
   ========================================================================== */
.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(1.5rem,1rem + 3vw,5rem);row-gap:2.5rem;align-items:start}
.c4{grid-column:span 4}.c5{grid-column:span 5}.c6{grid-column:span 6}.c7{grid-column:span 7}.c8{grid-column:span 8}.c12{grid-column:1/-1}
.sticky{position:sticky;top:calc(var(--header-h) + 2rem)}
@media (max-width:900px){.grid{grid-template-columns:1fr;row-gap:3rem}.c4,.c5,.c6,.c7,.c8{grid-column:1/-1}.sticky{position:static}}
.sechead{max-width:44rem;margin-bottom:clamp(3rem,2rem + 4vw,6rem)}
.sechead .sub{margin-top:2rem;font-size:.85rem;letter-spacing:.1em;color:var(--plum-600);font-weight:500}
.dark .sechead .sub{color:var(--accent)}
.sechead .body{margin-top:1.1rem;font-size:1.0625rem}
.sechead--center{margin-inline:auto;text-align:center}
.sechead--center .body{text-align:left}
.quote{position:relative;padding-left:1.5rem;border-left:2px solid var(--plum-600);font-family:var(--font-display);font-weight:300;font-size:clamp(1.15rem,1rem + .7vw,1.45rem);line-height:1.6;color:var(--ink)}
.dark .quote{border-color:var(--accent);color:var(--paper)}
.quote cite{display:block;margin-top:.9rem;font-style:normal;font-family:var(--font-body);font-size:var(--fs-cap);letter-spacing:.08em;color:var(--ink-muted)}
.dark .quote cite{color:rgba(244,241,236,.55)}
.q{color:var(--plum-600)}
.dark .q{color:var(--accent-2)}
.dl{border-top:1px solid var(--line)}
.dl > div{display:grid;grid-template-columns:8rem 1fr;gap:1.5rem;padding:1.1rem 0;border-bottom:1px solid var(--line);font-size:.95rem}
.dl dt{font-size:var(--fs-cap);letter-spacing:.12em;color:var(--ink-muted);padding-top:.2rem;text-transform:uppercase}
.dl dd{margin:0;color:var(--ink)}
.dark .dl,.dark .dl > div{border-color:var(--line-dark)}
.dark .dl dt{color:rgba(244,241,236,.5)}.dark .dl dd{color:var(--paper)}
@media (max-width:520px){.dl > div{grid-template-columns:1fr;gap:.3rem}}
.fig{position:relative;overflow:hidden;background:var(--paper-2)}
.fig img{width:100%;height:100%;object-fit:cover}
.fig--outline::before{content:"";position:absolute;inset:0;border:1px solid var(--plum-600);transform:translate(-14px,-14px);pointer-events:none;z-index:2;opacity:.8}
.cap{margin-top:.9rem;font-size:var(--fs-cap);letter-spacing:.06em;color:var(--ink-muted)}
.dark .cap{color:rgba(244,241,236,.5)}
.reg{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:1.2;stroke-linecap:round}

/* ==========================================================================
   hero
   ========================================================================== */
.hero{position:relative;min-height:100svh;display:flex;align-items:flex-end;padding-top:calc(var(--header-h) + 2rem);overflow:hidden;background:var(--paper)}
.hero__in{display:grid;grid-template-columns:8fr 4fr;column-gap:clamp(2rem,1rem + 4vw,6rem);align-items:end;width:min(100% - 2*var(--gutter),var(--container));margin-inline:auto}
.hero__copy{padding-bottom:clamp(3.5rem,4rem + 3vw,7rem)}
.hero__kicker{display:flex;align-items:center;gap:.7rem;font-size:var(--fs-cap);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-muted);margin-bottom:2.2rem}
.hero__kicker .reg{width:.9rem;height:.9rem;color:var(--plum-600)}
.hero__title{font-size:var(--fs-hero);max-width:14em}
html[lang="en"] .hero__title{max-width:11em}
.hero__title .l{display:block;opacity:0;transform:translateY(10px);transition:opacity var(--dur-3) var(--ease),transform var(--dur-3) var(--ease)}
.hero__title .l:nth-child(2){transition-delay:.22s}
.lit .hero__title .l{opacity:1;transform:none}
.hero__sub{margin-top:2.6rem;font-size:.85rem;letter-spacing:.12em;color:var(--plum-600);font-weight:500}
.hero__body{margin-top:1.1rem;max-width:32em;font-size:var(--fs-lead);color:var(--ink-2);line-height:1.85}
.hero__cta{margin-top:2.4rem;display:flex;flex-wrap:wrap;gap:.8rem 1rem}
.hero__fig{position:relative;height:74svh;min-height:26rem;clip-path:inset(0 0 8% 0);opacity:.6;transition:clip-path var(--dur-3) var(--ease) .15s,opacity var(--dur-3) var(--ease) .15s}
.lit .hero__fig{clip-path:inset(0 0 0 0);opacity:1}
.hero__fig img{width:100%;height:100%;object-fit:cover;object-position:50% 35%}
.hero__marks{position:absolute;inset:0;width:100%;height:100%;color:rgba(244,241,236,.85);font-family:var(--font-latin);font-style:italic;font-size:11px;letter-spacing:.06em}
.hero__marks .ln{stroke:currentColor;stroke-width:1;opacity:.5;stroke-dasharray:120;stroke-dashoffset:120;transition:stroke-dashoffset 1.2s var(--ease) .7s}
.hero__marks .reg{stroke-width:1.1;opacity:0;transition:opacity .6s var(--ease) 1.2s}
.hero__marks text{fill:currentColor;opacity:0;transition:opacity .6s var(--ease) 1.5s}
.lit .hero__marks .ln{stroke-dashoffset:0}.lit .hero__marks .reg,.lit .hero__marks text{opacity:1}
.hero__scroll{display:flex;flex-direction:column;align-items:center;gap:.6rem;width:max-content;margin-top:3rem;font-size:var(--fs-cap);letter-spacing:.18em;color:var(--ink-muted);text-transform:uppercase}
.hero__scroll::after{content:"";width:1px;height:3.5rem;background:var(--ink-muted);opacity:.5;animation:scrollln 2.4s var(--ease) infinite}
@keyframes scrollln{0%{transform:scaleY(0);transform-origin:top}45%{transform:scaleY(1);transform-origin:top}55%{transform:scaleY(1);transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}
@media (max-width:900px){
  .hero{align-items:flex-start;padding-top:calc(var(--header-h) + 1.5rem)}
  .hero__in{grid-template-columns:1fr;row-gap:2rem}
  .hero__copy{padding-bottom:0;order:1}
  .hero__fig{order:2;height:auto;aspect-ratio:4/5;min-height:0;margin-bottom:0}
  .hero__scroll{display:none}
}
@media (prefers-reduced-motion:reduce){.hero__title .l,.hero__fig,.hero__marks .ln,.hero__marks .reg,.hero__marks text{opacity:1;transform:none;clip-path:none;stroke-dashoffset:0;transition:none}.hero__scroll::after{animation:none}}

/* ==========================================================================
   manifesto
   ========================================================================== */
.mani .sechead{max-width:52rem}
.mani__cards{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);margin-top:clamp(3rem,2rem + 3vw,5rem)}
.mani__card{background:var(--paper);padding:clamp(1.8rem,1.2rem + 2vw,2.8rem)}
.mani__card svg{width:6rem;height:6rem;margin-bottom:1.6rem;stroke:var(--ink);fill:none;stroke-width:1;stroke-linecap:round}
.mani__card svg .hi{stroke:var(--plum-600);stroke-width:1.6}
.mani__card svg path{stroke-dasharray:400;stroke-dashoffset:400;transition:stroke-dashoffset 1.1s var(--ease)}
.in .mani__card svg path{stroke-dashoffset:0}
.in .mani__card:nth-child(2) svg path{transition-delay:.25s}
.mani__card h3{font-family:var(--font-display);font-weight:400;font-size:1.3rem;margin-bottom:.7rem}
.mani__card p{font-size:.95rem;color:var(--ink-muted);line-height:1.8}
@media (max-width:700px){.mani__cards{grid-template-columns:1fr}}

/* ==========================================================================
   layers (anatomy cross-section)
   ========================================================================== */
.layers .sechead{margin-bottom:0}
.xs{display:flex;flex-direction:column;gap:0;border-top:1px solid var(--line-dark)}
.xs__row{display:grid;grid-template-columns:minmax(0,1fr) 1.5rem minmax(0,1.15fr);align-items:center;gap:0;padding:0;border-bottom:1px solid var(--line-dark);transition:background var(--dur-1) var(--ease)}
.xs__row.hot{background:rgba(244,241,236,.04)}
.xs__band{height:6.5rem;position:relative;overflow:hidden}
.xs__band svg{width:100%;height:100%;display:block;overflow:visible}
.xs__band path{fill:none;stroke:rgba(244,241,236,.35);stroke-width:1}
.xs__band .fill{fill:rgba(244,241,236,.05);stroke:none}
.xs__row[data-layer="smas"] .xs__band .fill{fill:rgba(203,176,138,.16)}
.xs__row[data-layer="smas"] .xs__band path:not(.fill){stroke:var(--accent);stroke-width:1.6}
.xs__row[data-layer="lig"] .xs__band .tie{stroke:var(--accent-2);stroke-dasharray:3 4;opacity:.8}
.xs__row.hot .xs__band path:not(.fill){stroke:var(--accent)}
.xs__lead{height:1px;border-top:1px dashed rgba(244,241,236,.35);position:relative}
.xs__lead::after{content:"";position:absolute;right:-.35rem;top:-.35rem;width:.7rem;height:.7rem;background:radial-gradient(circle,var(--accent) 0 1px,transparent 1.5px)}
.xs__txt{padding:1.3rem 0 1.3rem 1.4rem}
.xs__n{font-family:var(--font-latin);font-style:italic;font-size:.8rem;letter-spacing:.1em;color:var(--accent);margin-bottom:.35rem}
.xs__txt h3{font-family:var(--font-display);font-weight:400;font-size:1.15rem;color:var(--paper);margin-bottom:.4rem}
.xs__txt p{font-size:.9rem;line-height:1.75;color:rgba(244,241,236,.68)}
.xs__cap{margin-top:1.2rem}
.xs__row{opacity:0;transform:translateY(var(--dy,14px));transition:opacity .9s var(--ease),transform .9s var(--ease),background var(--dur-1)}
.in .xs__row{opacity:1;transform:none}
.in .xs__row:nth-child(1){transition-delay:.45s}.in .xs__row:nth-child(2){transition-delay:.3s}.in .xs__row:nth-child(3){transition-delay:.15s}.in .xs__row:nth-child(4){transition-delay:0s}
@media (max-width:600px){.xs__row{grid-template-columns:1fr;gap:0}.xs__band{height:4.2rem}.xs__lead{display:none}.xs__txt{padding:.6rem 0 1.3rem}}

/* ==========================================================================
   craft (incision plan)
   ========================================================================== */
.plan{position:relative;aspect-ratio:1;background-color:var(--paper-2);background-image:linear-gradient(var(--line) .5px,transparent .5px),linear-gradient(90deg,var(--line) .5px,transparent .5px);background-size:1.5rem 1.5rem;border:1px solid var(--line)}
.plan .plan__svg{position:absolute;inset:0;width:100%;height:100%;font-family:var(--font-latin);font-style:italic;font-size:11px;letter-spacing:.04em}
.plan .ear{fill:none;stroke:var(--ink);stroke-width:1}
.plan .hair{fill:none;stroke:var(--ink-muted);stroke-width:1;stroke-dasharray:3 4}
.plan .inc{fill:none;stroke:var(--plum-600);stroke-width:1.6;stroke-linecap:round;stroke-dasharray:900;stroke-dashoffset:900;transition:stroke-dashoffset 1.6s var(--ease) .2s}
.in .plan .inc{stroke-dashoffset:0}
.plan .dim{stroke:var(--ink-muted);stroke-width:.8;fill:none}
.plan text{fill:var(--ink-muted)}
.plan .arr{stroke:var(--ink);stroke-width:1;fill:none;opacity:0;transform:translate(-4px,4px);transition:opacity .6s var(--ease) 1.3s,transform .6s var(--ease) 1.3s}
.in .plan .arr{opacity:1;transform:none}
.plan .ann{opacity:0;transition:opacity .6s var(--ease)}
.in .plan .ann{opacity:1}
.in .plan .ann:nth-of-type(1){transition-delay:.9s}.in .plan .ann:nth-of-type(2){transition-delay:1.05s}.in .plan .ann:nth-of-type(3){transition-delay:1.2s}.in .plan .ann:nth-of-type(4){transition-delay:1.35s}
.plan__tag{position:absolute;top:.9rem;right:1rem;display:flex;align-items:center;gap:.5rem;font-family:var(--font-latin);font-style:italic;font-size:.75rem;letter-spacing:.1em;color:var(--ink-muted)}
.plan__tag .reg{width:.9rem;height:.9rem}
.list{border-top:1px solid var(--line)}
.list > li{display:grid;grid-template-columns:2.6rem 1fr;gap:1rem;padding:1.6rem 0;border-bottom:1px solid var(--line);transition:border-color var(--dur-1)}
.list > li:hover{border-color:var(--ink)}
.list .n{font-family:var(--font-latin);font-style:italic;font-size:.85rem;letter-spacing:.08em;color:var(--ink-muted);padding-top:.35rem;transition:color var(--dur-1)}
.list > li:hover .n{color:var(--plum-600)}
.list h3{font-family:var(--font-display);font-weight:400;font-size:1.25rem;margin-bottom:.5rem}
.list p{font-size:.95rem;color:var(--ink-muted);line-height:1.8}
.craft__quote{margin-top:2.5rem}

/* ==========================================================================
   doctor
   ========================================================================== */
.doc__fig{aspect-ratio:3/4;max-width:28rem;margin-top:1rem}
.doc__mono{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:2rem;background:linear-gradient(180deg,rgba(30,18,25,0) 40%,rgba(30,18,25,.55));color:var(--paper)}
.doc__mono b{font-family:var(--font-display);font-weight:300;font-size:1.6rem;display:block}
.doc__mono span{font-size:var(--fs-cap);letter-spacing:.12em;opacity:.8}
.doc .body + .body{margin-top:1.2rem}
.doc__dl{margin-top:3rem}

/* ==========================================================================
   scope
   ========================================================================== */
.cells{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.cell{background:var(--paper);padding:2.4rem 2.2rem;min-height:15rem;transition:background var(--dur-1) var(--ease)}
.cell:hover{background:var(--paper-2)}
.cell__n{display:flex;align-items:center;gap:.6rem;font-family:var(--font-latin);font-style:italic;font-size:.8rem;letter-spacing:.1em;color:var(--ink-muted);margin-bottom:1.3rem}
.cell__n .reg{width:.85rem;height:.85rem;color:var(--ink);transition:transform var(--dur-1) var(--ease)}
.cell:first-child .cell__n .reg{color:var(--plum-600)}
.cell:hover .cell__n .reg{transform:rotate(45deg)}
.cell h3{font-family:var(--font-display);font-weight:400;font-size:1.25rem;margin-bottom:.7rem}
.cell p{font-size:.92rem;color:var(--ink-muted);line-height:1.8}
@media (max-width:960px){.cells{grid-template-columns:1fr 1fr}}
@media (max-width:600px){.cells{grid-template-columns:1fr}.cell{min-height:0}}

/* ==========================================================================
   academic record
   ========================================================================== */
.rec{position:relative;border-top:1px solid var(--line-dark);margin-top:1rem}
.rec::before{content:"";position:absolute;left:-2rem;top:0;bottom:0;width:1px;background:linear-gradient(var(--accent) var(--fill,0%),rgba(244,241,236,.22) 0);transition:--fill 1s}
.rec__row{display:grid;grid-template-columns:15rem 1fr;gap:2rem;padding:1.9rem 0;border-bottom:1px solid var(--line-dark)}
.rec__when{font-size:var(--fs-cap);letter-spacing:.12em;color:var(--accent);line-height:1.7}
.rec__when span{display:block;font-size:.9rem;letter-spacing:0;color:rgba(244,241,236,.7);margin-top:.3rem}
.rec__what{font-family:var(--font-display);font-weight:300;font-size:clamp(1.15rem,1rem + .6vw,1.45rem);line-height:1.5;color:var(--paper)}
.rec__row--sm .rec__what{font-family:var(--font-body);font-size:.95rem;font-weight:400;color:rgba(244,241,236,.78);line-height:1.8}
@media (max-width:700px){.rec__row{grid-template-columns:1fr;gap:.6rem}.rec::before{left:-1rem}}

/* ==========================================================================
   process timeline
   ========================================================================== */
.tl{position:relative;padding-left:2.4rem}
.tl::before{content:"";position:absolute;left:.4rem;top:.5rem;bottom:.5rem;width:1px;background:var(--line)}
.tl__fill{position:absolute;left:.4rem;top:.5rem;width:1px;height:0;background:var(--ink);transition:height .2s linear}
.tl > li{position:relative;padding-bottom:3rem;max-width:36rem}
.tl > li:last-child{padding-bottom:0}
.tl .reg{position:absolute;left:-2.4rem;top:.45rem;width:.85rem;height:.85rem;color:var(--ink);opacity:.35;transition:opacity var(--dur-2)}
.tl > li.on .reg{opacity:1}
.tl > li:nth-child(3) .reg{color:var(--plum-600)}
.tl h3{font-family:var(--font-display);font-weight:400;font-size:1.3rem;margin-bottom:.5rem}
.tl h3 .n{font-family:var(--font-latin);font-style:italic;font-size:.8em;letter-spacing:.08em;color:var(--ink-muted);margin-right:.6rem}
.tl p{font-size:.95rem;color:var(--ink-muted);line-height:1.8}
.proc__fig{aspect-ratio:1;max-width:22rem;margin-top:2.5rem}

/* ==========================================================================
   contact + form
   ========================================================================== */
.contact{padding-bottom:var(--sec-sm)}
.contact .h2{font-size:clamp(2rem,1.3rem + 2.4vw,3.6rem)}
.contact__cta{display:flex;flex-wrap:wrap;gap:.9rem;margin-top:2.4rem}
.form{margin-top:3rem;max-width:34rem}
.form__row{position:relative;margin-bottom:1.6rem}
.form label{display:block;font-size:var(--fs-cap);letter-spacing:.12em;color:var(--ink-muted);margin-bottom:.35rem;text-transform:uppercase}
.form input,.form textarea{width:100%;background:transparent;border:0;border-bottom:1px solid var(--line-3,#BFB6AC);padding:.7rem 0;font:inherit;color:var(--ink);border-radius:0;outline:0;transition:border-color var(--dur-1)}
.form input:focus,.form textarea:focus{border-color:var(--ink)}
.form textarea{min-height:6rem;resize:vertical}
.form__hp{position:absolute;left:-9999px;opacity:0}
.form__foot{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-top:.5rem}
.form__priv{font-size:var(--fs-cap);color:var(--ink-muted);max-width:22rem;line-height:1.6}
.form__msg{margin-top:1rem;font-size:.9rem;min-height:1.4rem}
.form__msg.ok{color:var(--plum-600)}.form__msg.err{color:#8a3b3b}
.contact__fig{aspect-ratio:1;max-width:20rem;margin:3.5rem 0 0 auto}
.chan{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.4rem}
.chan a{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .95rem;border:1px solid var(--line);font-size:.82rem;letter-spacing:.04em;border-radius:2px;transition:border-color var(--dur-1),background var(--dur-1)}
.chan a:hover{border-color:var(--ink);background:var(--paper-2)}
.chan svg{width:1rem;height:1rem;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}

/* ---------- additions: dictionary, mini record, notices ---------- */
.dict{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:3rem}
.dict > div{background:var(--paper-2);padding:1.6rem 1.6rem 1.6rem 0}
.dict > div + div{padding-left:1.6rem}
.dict dt{display:flex;align-items:baseline;gap:.7rem;font-family:var(--font-display);font-size:1.15rem;margin-bottom:.5rem}
.dict dt .latin{font-size:1.25rem;font-style:normal;letter-spacing:.06em}
.dict dt small{font-size:var(--fs-cap);letter-spacing:.08em;color:var(--ink-muted);font-family:var(--font-body)}
.dict dd{margin:0;font-size:.92rem;color:var(--ink-2);line-height:1.75}
@media (max-width:600px){.dict{grid-template-columns:1fr}.dict > div{padding:1.3rem 0}.dict > div + div{padding-left:0}}
.rec-mini{margin-top:2.6rem;padding-left:1.4rem;border-left:1px solid var(--line)}
.rec-mini__label{display:flex;align-items:center;gap:.5rem;font-family:var(--font-latin);font-style:italic;font-size:.78rem;letter-spacing:.14em;color:var(--ink-muted);margin-bottom:.8rem}
.rec-mini__label .reg{width:.8rem;height:.8rem;color:var(--plum-600)}
.rec-mini__list li{display:grid;grid-template-columns:5.5rem 1fr;gap:1rem;padding:.45rem 0;font-size:.92rem;color:var(--ink-2)}
.rec-mini__list .num{color:var(--plum-600)}
.acad__close{max-width:40rem;margin:3rem auto 0}
.notice{margin-top:2.5rem;padding:1rem 1.2rem;border:1px solid var(--line);font-size:var(--fs-sm);color:var(--ink-muted);line-height:1.7;background:var(--paper)}
.ft__tag{font-family:var(--font-display);font-weight:300;font-size:1.05rem;color:var(--paper);margin:-.2rem 0 1rem;opacity:.9}

/* ---------- polish ---------- */
.sticky .h2{font-size:clamp(1.7rem,1.15rem + 1.8vw,2.5rem)}
@media (max-width:600px){
  .h2 br{display:none}
  .hero__title .l{display:inline}
  .hero__title .l + .l::before{content:" "}
  .hero__kicker{font-size:.68rem;letter-spacing:.14em}
  .kicker{font-size:.85rem}
}
/* CJK headline widths */
html[lang="ja"] .hero__title{font-size:clamp(2.1rem,1rem + 2.9vw,3.3rem);max-width:none}
html[lang="zh-CN"] .hero__title,html[lang="zh-TW"] .hero__title{max-width:none}
html[lang="ja"] .display{letter-spacing:0}
html[lang="en"] .h2{font-size:clamp(1.8rem,1.2rem + 2.1vw,2.95rem)}
html[lang="ja"] .h2{font-size:clamp(1.7rem,1.15rem + 1.9vw,2.75rem)}
html[lang="ja"] .contact .h2{font-size:clamp(1.9rem,1.2rem + 2.2vw,3.2rem)}

/* ---------- QA fixes ---------- */
@media (max-width:600px){
  /* CJK: 저자 지정 줄바꿈을 유지(단어 중간 분리 방지). ko/en 은 br 을 숨기고 공백으로 흐르게 둔다 */
  html[lang="ja"] .h2 br,html[lang="zh-CN"] .h2 br,html[lang="zh-TW"] .h2 br{display:inline}
  html[lang="ja"] .hero__title .l,html[lang="zh-CN"] .hero__title .l,html[lang="zh-TW"] .hero__title .l{display:block}
  html[lang="ja"] .hero__title .l + .l::before,html[lang="zh-CN"] .hero__title .l + .l::before,html[lang="zh-TW"] .hero__title .l + .l::before{content:none}
}
html[lang="en"] .quote,html[lang="en"] .rec__what,html[lang="en"] .display{font-optical-sizing:none}
html[lang="ja"] .hero__title{font-size:clamp(2.1rem,.9rem + 2.5vw,2.8rem)}
html[lang="ja"] .hero__sub,html[lang="ja"] .sechead .sub{word-break:keep-all;overflow-wrap:normal}
html[lang="zh-CN"] .hero__body,html[lang="zh-TW"] .hero__body{text-wrap:pretty}
.hero__copy{padding-bottom:clamp(3rem,3rem + 2vw,5rem)}
