/* ============================================================
   ZHANG QILIN — PORTFOLIO
   A dark specimen-archive. The body is the index; the mouth is
   the table of contents. Six teeth, six works.
   ============================================================ */

:root{
  /* -- color -- */
  --bg:        #07080a;
  --bg-soft:   #0d0f12;
  --bg-raised: #131519;
  --bone:      #f1ead9;
  --bone-dim:  #cfc6b3;
  --glow:      #86f0d2;
  --glow-dim:  #4fa892;
  --ink:       #a79f91;
  --ink-dim:   #6c665c;
  --line:      #232622;
  --ember:     #d99a63;

  /* -- type -- */
  --f-display: 'Fraunces', 'Noto Serif SC', serif;
  --f-body:    'Inter', 'Noto Sans SC', sans-serif;
  --f-mono:    'IBM Plex Mono', monospace;

  --measure: 62ch;
}

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

html{
  background: var(--bg);
  color-scheme: dark;
}

body{
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--f-body);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

a{ color: inherit; text-decoration: none; }

img{ max-width: 100%; display: block; }

::selection{ background: var(--glow-dim); color: var(--bg); }

/* focus visibility, kept consistent across the site */
a:focus-visible,
button:focus-visible{
  outline: 1px solid var(--glow);
  outline-offset: 4px;
  border-radius: 2px;
}

/* faint film-grain / vignette over everything, very low opacity */
body::before{
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 999;
  background:
    radial-gradient(ellipse at 50% 0%, rgba(0,0,0,0) 0%, rgba(0,0,0,0.55) 100%);
  mix-blend-mode: multiply;
}

/* ---------------------------------------------------------
   Utility / shared chrome
   --------------------------------------------------------- */

.wrap{
  max-width: 1100px;
  margin: 0 auto;
  padding: 0 clamp(20px, 5vw, 64px);
}

.site-header{
  position: relative;
  z-index: 10;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  padding: 28px clamp(20px, 5vw, 64px) 0;
  font-family: var(--f-mono);
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-dim);
}

.site-header .mark{
  color: var(--bone-dim);
  font-family: var(--f-display);
  font-style: italic;
  font-size: 15px;
  letter-spacing: 0.02em;
  text-transform: none;
}

.site-header a:hover .mark,
.site-header a:hover{ color: var(--glow); }

.eyebrow{
  font-family: var(--f-mono);
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--glow-dim);
}

.rule{
  border: none;
  border-top: 1px solid var(--line);
  margin: 0;
}

/* ---------------------------------------------------------
   Footer
   --------------------------------------------------------- */
.site-footer{
  border-top: 1px solid var(--line);
  margin-top: 96px;
  padding: 28px clamp(20px, 5vw, 64px) 40px;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  flex-wrap: wrap;
  font-family: var(--f-mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--ink-dim);
}

.site-footer a{ color: var(--ink); }
.site-footer a:hover{ color: var(--glow); }
