:root {
  --ink: #201c17;
  --body: #5e564c;
  --muted: #857b6e;
  --paper: #f0e7d4;
  --bright: #fbf7ee;
  --red: #c7402c;
  --line: #e1d5bb;
  --serif: "Nanum Myeongjo", serif;
  --sans: "Noto Sans KR", sans-serif;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  background: var(--bright);
  color: var(--ink);
  font: 400 17px/1.75 var(--sans);
  word-break: keep-all;
  overflow-wrap: break-word;
  -webkit-font-smoothing: antialiased;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
button { color: inherit; font: inherit; }
h1, h2, h3, p, figure, dl, dd { margin: 0; }
h1, h2, h3 { font-family: var(--serif); font-weight: 800; }
.skip-link { position: fixed; top: -80px; left: 16px; z-index: 20; background: var(--red); color: var(--bright); padding: 8px 16px; }
.skip-link:focus { top: 16px; }
:focus-visible { outline: 2px solid var(--red); outline-offset: 5px; }

.site-header {
  width: min(calc(100% - 64px), 1200px);
  min-height: 104px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 32px;
  border-bottom: 1px solid var(--line);
}
.brand { display: flex; align-items: center; gap: 16px; font-weight: 700; }
.brand img { width: 42px; }
.site-header nav { display: flex; align-items: center; gap: 32px; font-size: 15px; }
.site-header nav a { border-bottom: 1px solid transparent; }
.site-header nav a:hover { border-color: currentColor; }
.site-header .nav-contact { color: var(--red); }

.hero {
  width: min(calc(100% - 64px), 1200px);
  margin: 0 auto;
  min-height: 660px;
  display: grid;
  grid-template-columns: 112px minmax(0, 1.65fr) minmax(260px, .75fr);
  align-items: center;
  gap: 48px;
  padding: 104px 0 128px;
}
.hero-mark { align-self: stretch; border-right: 8px solid var(--red); display: flex; flex-direction: column; justify-content: space-between; padding: 24px 24px 24px 0; color: var(--red); font: 800 46px/1 var(--serif); }
.hero-copy, .hero-aside { min-width: 0; }
.hero-note, .kicker { color: var(--muted); font-size: 15px; }
.hero-copy h1 { margin-top: 32px; max-width: 820px; font-size: clamp(52px, 6.3vw, 84px); line-height: 1.14; letter-spacing: -.045em; text-wrap: balance; }
.hero-aside { align-self: end; padding-bottom: 16px; }
.hero-aside p { max-width: 320px; color: var(--body); }
.text-link { display: inline-block; margin-top: 32px; color: var(--red); border-bottom: 1px solid var(--red); font-size: 15px; }

.opening-work { background: var(--ink); color: var(--bright); padding: 104px max(32px, calc((100vw - 1200px) / 2)); }
.opening-caption { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; align-items: end; margin-bottom: 64px; }
.opening-caption .kicker { color: rgba(251,247,238,.68); }
.opening-caption h2 { margin-top: 16px; font-size: 46px; }
.opening-caption > p { justify-self: end; max-width: 400px; color: rgba(251,247,238,.72); }
.evidence { position: relative; display: block; border: 1px solid rgba(251,247,238,.22); }
.evidence img { width: 100%; }
.evidence span { position: absolute; right: 0; bottom: 0; background: var(--red); color: var(--bright); padding: 16px 32px; }
.case-facts { display: grid; grid-template-columns: 2fr 1fr 1fr; border-bottom: 1px solid rgba(251,247,238,.22); }
.case-facts p { display: grid; gap: 8px; padding: 32px 32px 32px 0; }
.case-facts p + p { border-left: 1px solid rgba(251,247,238,.22); padding-left: 32px; }
.case-facts strong { color: rgba(251,247,238,.58); font-size: 13px; font-weight: 400; }

.section { width: min(calc(100% - 64px), 1200px); margin: 0 auto; padding: 128px 0; }
.work-index { display: grid; grid-template-columns: minmax(280px, .75fr) minmax(0, 1.65fr); gap: 104px; }
.section-title-block { align-self: start; position: sticky; top: 40px; }
.section-title-block h2 { margin-top: 24px; font-size: 46px; line-height: 1.25; }
.index-list { border-top: 2px solid var(--ink); }
.index-row { display: grid; grid-template-columns: 80px 180px 1fr 120px; gap: 24px; align-items: baseline; padding: 32px 0; border-bottom: 1px solid var(--line); }
.index-row h3 { font-size: 28px; }
.index-row > p { color: var(--body); }
.index-kind, .index-state, .index-link { font-size: 13px; }
.index-action { display: grid; justify-items: end; gap: 8px; text-align: right; }
.index-link { color: var(--red); border-bottom: 1px solid var(--red); }

.book-case { width: min(calc(100% - 64px), 1200px); margin: 0 auto; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(360px, .85fr); background: var(--paper); }
.book-image { position: relative; height: 520px; overflow: hidden; }
.book-image img { width: 100%; height: 100%; object-fit: cover; object-position: center 42%; }
.book-image figcaption { position: absolute; left: 0; bottom: 0; background: var(--bright); padding: 16px 32px; color: var(--muted); font-size: 13px; }
.book-copy { align-self: center; padding: 64px 56px; }
.book-copy h2 { margin: 18px 0 28px; font-size: clamp(44px, 5vw, 62px); line-height: 1.08; letter-spacing: -.04em; }
.book-lede { color: var(--ink); font: 800 24px/1.45 var(--serif); }
.book-copy > p:not(.kicker, .book-lede) { margin-top: 20px; max-width: 420px; color: var(--body); }
.book-copy dl { margin-top: 28px; border-top: 1px solid var(--line); }
.book-copy dl div { display: grid; grid-template-columns: 96px 1fr; padding: 12px 0; border-bottom: 1px solid var(--line); }
.book-copy dt { color: var(--muted); }

.method { display: grid; grid-template-columns: minmax(280px, .75fr) minmax(0, 1.65fr); gap: 104px; }
.method-list { border-top: 2px solid var(--ink); }
.method-list article { display: grid; grid-template-columns: 220px 1fr; gap: 48px; padding: 48px 0; border-bottom: 1px solid var(--line); }
.method-list h3 { font-size: 28px; }
.method-list p { color: var(--body); max-width: 540px; }
.method-list .method-detail { grid-column: 2; color: var(--muted); font-size: 15px; }

.contact { background: var(--red); color: var(--bright); padding: 128px max(32px, calc((100vw - 1200px) / 2)); display: grid; grid-template-columns: 1.15fr .85fr; gap: 104px; }
.contact-heading img { width: 72px; margin-bottom: 48px; }
.contact :focus-visible { outline-color: var(--bright); }
.contact .kicker { color: rgba(251,247,238,.72); }
.contact h2 { margin-top: 24px; font-size: clamp(42px, 5vw, 64px); line-height: 1.2; }
.contact-panel { align-self: end; }
.contact-panel > p { color: rgba(251,247,238,.82); max-width: 480px; }
.topic-label { margin-top: 32px; color: rgba(251,247,238,.72); font-size: 13px; }
.topic-picker { display: flex; gap: 24px; margin-top: 8px; border-bottom: 1px solid rgba(251,247,238,.35); }
.topic-picker button { border: 0; border-bottom: 3px solid transparent; background: none; padding: 8px 0 16px; cursor: pointer; color: rgba(251,247,238,.68); }
.topic-picker button[aria-pressed="true"] { color: var(--bright); border-color: var(--bright); }
.contact-form { display: grid; gap: 16px; margin-top: 32px; }
.contact-form label { display: grid; gap: 8px; font-size: 15px; }
.contact-form input:not([type="checkbox"]), .contact-form textarea { width: 100%; border: 0; border-radius: 0; background: var(--bright); color: var(--ink); padding: 16px; font: inherit; }
.contact-form textarea { min-height: 160px; resize: vertical; }
.contact-form textarea::placeholder { color: var(--muted); }
.contact-form .agree { display: flex; gap: 8px; align-items: baseline; }
.contact-form .agree input { accent-color: var(--ink); }
.agree-note { margin: 0; padding: 16px 0 0; list-style: none; border-top: 1px solid rgba(251,247,238,.35); color: rgba(251,247,238,.82); font-size: 13px; }
.agree-note a { color: var(--bright); border-bottom: 1px solid var(--bright); font-weight: 700; }
.hp { position: absolute; left: -9999px; }
.mail-button { display: block; width: 100%; border: 0; background: var(--ink); color: var(--bright); padding: 16px 32px; text-align: center; cursor: pointer; }
.mail-button:disabled { opacity: .6; cursor: wait; }
.form-status { min-height: 32px; font-size: 15px; }
.direct-mail { margin-top: 32px; text-align: center; color: rgba(251,247,238,.76); font-size: 15px; }
.copy-button { display: block; margin: 8px auto 0; border: 0; border-bottom: 1px solid rgba(251,247,238,.5); background: none; color: var(--bright); cursor: pointer; }
.copy-status { min-height: 32px; margin-top: 16px; text-align: center; color: rgba(251,247,238,.76); font-size: 15px; }

.site-footer { width: min(calc(100% - 64px), 1200px); margin: 0 auto; min-height: 120px; display: grid; grid-template-columns: 1fr 2fr auto; gap: 32px; align-items: center; color: var(--muted); font-size: 13px; }
.site-footer p:first-child { color: var(--ink); font-weight: 700; }
.site-footer a { border-bottom: 1px solid var(--line); }
.footer-links { display: flex; gap: 16px; }
.site-footer .policy-link { color: var(--ink); font-weight: 700; }

.policy { max-width: 620px; min-width: 0; padding: 64px 0 104px; word-break: normal; overflow-wrap: anywhere; }
.policy h1 { font-size: 46px; line-height: 1.15; }
.policy h2 { margin-top: 64px; font-size: 28px; line-height: 1.25; }
.policy p, .policy li { color: var(--body); }
.policy p { margin-top: 16px; }
.policy ul { margin: 16px 0 0; padding-left: 20px; }
.policy h3 { margin-top: 32px; font-size: 17px; line-height: 1.5; }
.policy dl { margin-top: 16px; border-top: 1px solid var(--line); font-size: 15px; }
.policy dl div { display: grid; grid-template-columns: 96px 1fr; gap: 16px; padding: 8px 0; border-bottom: 1px solid var(--line); }
.policy dt { color: var(--muted); }
.policy dd { margin: 0; color: var(--body); overflow-wrap: anywhere; }
.policy a { color: var(--red); border-bottom: 1px solid var(--red); }

@media (max-width: 900px) {
  .hero { grid-template-columns: 72px 1fr; min-height: auto; }
  .hero-aside { grid-column: 2; max-width: 520px; }
  .work-index, .method { grid-template-columns: 1fr; gap: 64px; }
  .section-title-block { position: static; }
  .book-case { grid-template-columns: 1fr; }
  .book-image { height: 360px; }
  .book-copy { padding: 56px 48px; }
  .contact { grid-template-columns: 1fr; gap: 64px; }
}

@media (max-width: 640px) {
  .site-header, .hero, .section, .site-footer { width: min(calc(100% - 40px), 1200px); }
  .site-header { min-height: 80px; }
  .brand img { width: 34px; }
  .site-header nav { gap: 20px; font-size: 13px; }
  .site-header nav a:first-child { display: none; }
  .hero { grid-template-columns: 40px 1fr; gap: 20px; padding: 64px 0 80px; }
  .hero-mark { border-right-width: 4px; padding-right: 12px; font-size: 28px; }
  .hero-copy h1 { margin-top: 24px; font-size: 38px; line-height: 1.2; text-wrap: pretty; }
  .hero-aside { padding: 0; }
  .opening-work { padding: 72px 20px; }
  .opening-caption { grid-template-columns: 1fr; gap: 24px; margin-bottom: 40px; }
  .opening-caption > p { justify-self: start; }
  .opening-caption h2 { font-size: 36px; }
  .evidence span { position: static; display: block; padding: 16px 20px; }
  .case-facts { grid-template-columns: 1fr; }
  .case-facts p, .case-facts p + p { border-left: 0; border-top: 1px solid rgba(251,247,238,.22); padding: 20px 0; }
  .section { padding: 80px 0; }
  .section-title-block h2 { font-size: 36px; }
  .index-row { grid-template-columns: 64px 1fr; gap: 8px 16px; padding: 24px 0; }
  .index-row h3 { font-size: 24px; }
  .index-row > p:nth-of-type(2), .index-row > .index-state, .index-action { grid-column: 2; }
  .index-action { justify-items: start; text-align: left; }
  .book-case { width: calc(100% - 40px); }
  .book-image { height: 260px; }
  .book-copy { padding: 48px 20px; }
  .book-copy h2 { font-size: 44px; }
  .book-lede { font-size: 24px; }
  .method-list article { grid-template-columns: 1fr; gap: 16px; padding: 32px 0; }
  .method-list .method-detail { grid-column: 1; }
  .contact { padding: 80px 20px; }
  .contact-heading img { margin-bottom: 32px; }
  .contact h2 { font-size: 40px; }
  .topic-picker { gap: 16px; }
  .site-footer { grid-template-columns: 1fr auto; padding: 32px 0; }
  .site-footer p:nth-child(2) { grid-column: 1 / -1; grid-row: 2; }
  .policy h1 { font-size: 32px; }
  .policy h2 { font-size: 25px; overflow-wrap: anywhere; }
  .policy dl div { grid-template-columns: 1fr; gap: 2px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}
