/* ============================================================
   Archival static site CSS — paper-bible aesthetic
   ============================================================ */

/* ---------- Custom properties ---------- */
:root {
  --font-display: 'Cinzel', Georgia, "Batang", "Nanum Myeongjo", Times, serif;
  --font-body:    Georgia, "Batang", "Nanum Myeongjo", "Times New Roman", Times, serif;
  --font-ui:      Georgia, "Batang", "Nanum Myeongjo", "Times New Roman", Times, serif;
  --font-mono:    "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;

  /* Dark mode — default */
  --col-text:          #E3E3E3;
  --col-bg:            #000000;
  --col-link:          #aaa;
  --col-link-visited:  #777;
  --col-border:        #2e2e2e;
  --col-muted:         #888;
  --col-sidenote-bg:   #1c1c1a;
  --col-code-bg:       #1e1e1b;

  --width-body:        36rem;
  --width-page:        70rem;
  --sidenote-width:    14rem;
  --margin-sidenote:   1rem;
}

@media (prefers-color-scheme: light) {
  :root {
    --col-text:          #212529;
    --col-bg:            #F8F9FA;
    --col-link:          #555;
    --col-link-visited:  #777;
    --col-border:        #ccc;
    --col-muted:         #666;
    --col-sidenote-bg:   #f5f5f0;
    --col-code-bg:       #f0f0eb;
  }
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }

html { font-size: 18px; scroll-behavior: smooth; }

body {
  font-family: var(--font-body);
  color: var(--col-text);
  background: var(--col-bg);
  line-height: 1.75;
  letter-spacing: 0.025em;
  margin: 0;
  padding: 0;
}

/* ---------- Navigation ---------- */
.site-nav {
  background: var(--col-bg);
  text-align: center;
  padding: 2.8rem 2rem 1.6rem;
}

.site-nav-inner {
  max-width: var(--width-page);
  margin: 0 auto;
}

.site-nav .site-title {
  display: block;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 2rem;
  letter-spacing: 0.25em;
  color: var(--col-text);
  text-decoration: none;
  margin-bottom: 1.2rem;
}

.site-nav-row {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 2rem;
  flex-wrap: wrap;
}

.site-nav ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: 2rem;
}

.site-nav a {
  color: var(--col-text);
  text-decoration: none;
  font-family: var(--font-ui);
  font-size: 0.8rem;
  letter-spacing: 0.14em;
  opacity: 0.6;
}
.site-nav a:hover { opacity: 1; }

/* ---------- Main layout ---------- */
main {
  max-width: var(--width-page);
  margin: 1.5rem auto 4rem;
  padding: 0 2rem;
}

/* ---------- Typography ---------- */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-ui);
  font-weight: 700;
  line-height: 1.25;
  margin-top: 2.5rem;
  margin-bottom: 0.5rem;
}
h1 {
  font-family: var(--font-display);
  font-size: 2rem;
  letter-spacing: 0.09em;
}
h2 {
  font-family: var(--font-display);
  font-size: 1.45rem;
  letter-spacing: 0.07em;
}
h3 { font-size: 1.2rem; letter-spacing: 0.04em; }
h4 { font-size: 1rem; }

p { margin: 0 0 1.2rem; }

a { color: var(--col-text); text-underline-offset: 3px; }
a:visited { color: var(--col-muted); }
a:hover { text-decoration-thickness: 2px; }

blockquote {
  border-left: 3px solid var(--col-border);
  margin: 1.5rem 0;
  padding: 0.5rem 1.5rem;
  color: var(--col-muted);
  font-style: italic;
}

hr {
  border: none;
  border-top: 1px solid var(--col-border);
  margin: 2.5rem 0;
}

/* ---------- Code ---------- */
pre, code { font-family: var(--font-mono); font-size: 0.85em; }
code { background: var(--col-code-bg); padding: 0.1em 0.3em; border-radius: 3px; }
pre {
  background: var(--col-code-bg);
  border: 1px solid var(--col-border);
  border-radius: 4px;
  padding: 1rem 1.25rem;
  overflow-x: auto;
  line-height: 1.5;
}
pre code { background: none; padding: 0; }

/* ---------- Tables ---------- */
table { border-collapse: collapse; width: 100%; margin: 1.5rem 0; font-size: 0.92em; }
th, td { border: 1px solid var(--col-border); padding: 0.5rem 0.75rem; text-align: left; }
th { background: var(--col-code-bg); font-family: var(--font-ui); }

/* ---------- Page article — 3-column symmetric grid ---------- */
/*
  [ 1fr spacer ] [ --width-body content ] [ 1fr spacer ]
  Body is mathematically centered. Sidenotes float into the right spacer.
*/
.page-article {
  display: grid;
  grid-template-columns: 1fr var(--width-body) 1fr;
  grid-template-areas:
    ". header ."
    ". body   ."
    ". back   .";
  max-width: var(--width-page);
  margin: 0 auto;
}

.page-header {
  grid-area: header;
  margin-bottom: 2.5rem;
  text-align: center;
}
.page-header h1 { margin-top: 0; }

.page-body {
  grid-area: body;
  position: relative;
}

/* ---------- Sidenotes ---------- */
.sidenote-toggle { display: none; }
input.sidenote-toggle { display: none; }

.sidenote {
  display: block;
  float: right;
  clear: right;
  width: var(--sidenote-width);
  margin-right: calc(-1 * var(--sidenote-width) - var(--margin-sidenote));
  font-size: 0.8rem;
  line-height: 1.5;
  color: var(--col-muted);
  background: var(--col-sidenote-bg);
  border-left: 2px solid var(--col-border);
  padding: 0.3rem 0.6rem;
  margin-top: 0.2rem;
  position: relative;
}

label.sidenote-number {
  display: inline;
  cursor: default;
  counter-increment: sidenote-counter;
}
label.sidenote-number::after {
  content: counter(sidenote-counter);
  font-size: 0.7em;
  vertical-align: super;
  color: var(--col-muted);
}
.page-body { counter-reset: sidenote-counter; }

/* Collapse sidenotes when viewport is too narrow for them to fit */
@media (max-width: 1300px) {
  .sidenote {
    display: none;
    float: none;
    width: 100%;
    margin: 0.5rem 0;
    position: static;
  }
  label.sidenote-toggle {
    display: inline;
    cursor: pointer;
    color: var(--col-muted);
  }
  input.sidenote-toggle:checked + .sidenote { display: block; }
}

/* Single-column on mobile */
@media (max-width: 860px) {
  .page-article {
    grid-template-columns: 1fr;
    grid-template-areas: "header" "body" "back";
  }
}

/* ---------- Backlinks ---------- */
.backlinks {
  grid-area: back;
  margin-top: 3rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--col-border);
  font-size: 0.88rem;
}
.backlinks h2 {
  font-size: 0.8rem;
  margin-top: 0;
  color: var(--col-muted);
  text-transform: uppercase;
  letter-spacing: 0.12em;
}
.backlinks ul { list-style: none; padding: 0; margin: 0; }
.backlinks li { margin: 0.25rem 0; }

/* ---------- Home page ---------- */
.home {
  max-width: var(--width-body);
  margin: 0 auto;
  text-align: center;
}

.home-intro { margin-bottom: 3rem; font-size: 1.05rem; }

.post-list { max-width: var(--width-body); }

.post-list h2 {
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: var(--col-muted);
  margin-top: 0;
  margin-bottom: 2rem;
}

.post-item { margin-bottom: 2.5rem; }
.post-item h3 { margin: 0 0 0.3rem; font-size: 1.1rem; letter-spacing: 0.03em; }
.post-item h3 a { text-decoration: none; }
.post-item h3 a:hover { text-decoration: underline; }

.post-summary { margin: 0; color: var(--col-muted); font-size: 0.92rem; }

/* ---------- Archive & tag pages ---------- */
.archive, .tag-page, .tags-index {
  max-width: var(--width-body);
  margin: 0 auto;
}
.archive h1, .tag-page h1, .tags-index h1 { margin-top: 0; text-align: center; }

.post-list-simple { list-style: none; padding: 0; margin: 1rem 0 2rem; }
.post-list-simple li { margin: 0.5rem 0; font-size: 0.95rem; }

.tag-cloud {
  list-style: none;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.5rem;
  justify-content: center;
}
.tag-cloud .count { font-size: 0.8em; color: var(--col-muted); }

/* ---------- Tags inline ---------- */
.tags a {
  color: var(--col-muted);
  text-decoration: none;
  font-family: var(--font-ui);
  font-size: 0.82rem;
}
.tags a:hover { color: var(--col-text); }
.tags a::before { content: "#"; }

/* ---------- Link popups ---------- */
.popup {
  position: absolute;
  z-index: 100;
  background: var(--col-bg);
  border: 1px solid var(--col-border);
  border-radius: 4px;
  padding: 0.75rem 1rem;
  max-width: 22rem;
  font-family: var(--font-ui);
  font-size: 0.82rem;
  box-shadow: 0 4px 16px rgba(0,0,0,0.4);
  pointer-events: none;
}
.popup-title { font-weight: 700; margin-bottom: 0.25rem; }
.popup-summary { color: var(--col-muted); line-height: 1.4; }

/* ---------- Search (available, suppressed on home) ---------- */
.search-bar {
  display: flex;
  gap: 0.5rem;
  margin-bottom: 1.5rem;
  max-width: var(--width-body);
}
.search-bar input {
  flex: 1;
  padding: 0.4rem 0.75rem;
  font-family: var(--font-ui);
  font-size: 0.9rem;
  border: 1px solid var(--col-border);
  border-radius: 3px;
  background: var(--col-bg);
  color: var(--col-text);
}
#search-results { max-width: var(--width-body); }

/* ---------- Footer — mirrors header (수미상관) ---------- */
.site-footer {
  background: var(--col-bg);
  text-align: center;
  padding: 1.6rem 2rem 2.8rem;
  margin-top: 4rem;
}

.site-footer .site-title {
  margin-bottom: 0;
  margin-top: 1.2rem;
}

/* ---------- Images ---------- */
img { max-width: 100%; height: auto; display: block; }

/* ---------- Definition lists ---------- */
dt { font-weight: 700; }
dd { margin-left: 1.5rem; margin-bottom: 0.5rem; }

/* ---------- Broken link ---------- */
a[href="#broken-link"] { color: var(--col-muted); text-decoration: line-through; }
