:root{
  --paper:#FBFAF7;
  --ink:#17181A;
  --ink-soft:#4A4D52;
  --line:#D9D6CE;
  --seal:#B5261E;
  --slate:#3D5166;
  --measure:68ch;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{
  background:var(--paper);color:var(--ink);
  font-family:'IBM Plex Sans KR',system-ui,sans-serif;
  font-size:16px;line-height:1.75;-webkit-font-smoothing:antialiased;
}
::selection{background:var(--seal);color:#fff}
a{color:inherit}
a:focus-visible{outline:2px solid var(--seal);outline-offset:3px}
.mono{font-family:'IBM Plex Mono',monospace}
.sheet{max-width:960px;margin:0 auto;padding:0 28px}

.dochead{
  border-bottom:2px solid var(--ink);
  padding:18px 0 14px;
  display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap;
}
.dochead .id{font-family:'IBM Plex Mono',monospace;font-size:12.5px;letter-spacing:.06em}
.dochead .id a{text-decoration:none}
.dochead .meta{font-family:'IBM Plex Mono',monospace;font-size:12.5px;color:var(--ink-soft);text-align:right}
.dochead .meta span+span::before{content:"\00B7";margin:0 .6em;color:var(--line)}

.toc{
  display:flex;gap:26px;padding:12px 0;border-bottom:1px solid var(--line);
  font-family:'IBM Plex Mono',monospace;font-size:12.5px;letter-spacing:.04em;
}
.toc a{text-decoration:none;color:var(--ink-soft)}
.toc a:hover{color:var(--seal)}
.toc a[aria-current="page"]{color:var(--ink);border-bottom:2px solid var(--seal);padding-bottom:2px}

.seclabel{font-family:'IBM Plex Mono',monospace;font-size:12.5px;letter-spacing:.1em;color:var(--seal);font-weight:500;margin-bottom:26px}
.seclabel::after{content:"";display:block;width:44px;border-top:1px solid var(--seal);margin-top:10px}
h1.page,h2{font-family:'Noto Serif KR',serif;font-weight:900;letter-spacing:-.01em}
h1.page{font-size:clamp(28px,4.5vw,42px);line-height:1.3;margin-bottom:30px;max-width:20em}
h2{font-size:clamp(22px,3vw,28px);line-height:1.35;margin-bottom:22px}
.prose{max-width:var(--measure);color:var(--ink-soft)}
.prose p+p{margin-top:1.1em}
.prose strong{color:var(--ink);font-weight:700}
main section{padding:64px 0;border-bottom:1px solid var(--line)}
main section:last-of-type{border-bottom:none}

footer{padding:34px 0 60px;border-top:1px solid var(--line);
  font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--ink-soft);
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

.reveal{opacity:0;transform:translateY(14px);transition:opacity .7s ease,transform .7s ease}
.reveal.on{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

.banner{display:block;width:100%;height:300px;object-fit:cover;border:1px solid var(--line);margin-top:26px}
@media (max-width:640px){.banner{height:200px}}
