/* Opsline — one stylesheet, no external fonts, no external anything. */

:root {
  --paper:#fbfaf7; --card:#ffffff; --ink:#12181f; --ink-2:#3d4753; --ink-3:#6b7684;
  --line:#e4e1da; --accent:#1f6f5c; --accent-soft:#eaf3f0; --warm:#c2703a;
  --shadow:0 1px 2px rgba(18,24,31,.05), 0 8px 24px rgba(18,24,31,.05);
  --wrap:1120px; --read:44rem; --radius:14px;
  --serif: Georgia, "Iowan Old Style", "Times New Roman", serif;
  --sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root {
    --paper:#11151a; --card:#171d24; --ink:#eef1f4; --ink-2:#c3ccd6; --ink-3:#8d99a6;
    --line:#28313b; --accent:#5fbfa4; --accent-soft:#172b26; --warm:#e0955f;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 30px rgba(0,0,0,.35);
  }
}

*,*::before,*::after { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; scroll-behavior:smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior:auto; } }
body {
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--sans); font-size:17px; line-height:1.65;
  -webkit-font-smoothing:antialiased;
}
img,svg { max-width:100%; height:auto; }
a { color:var(--accent); text-underline-offset:3px; }
a:hover { text-decoration-thickness:2px; }
:focus-visible { outline:3px solid var(--warm); outline-offset:2px; border-radius:4px; }

.wrap { width:100%; max-width:var(--wrap); margin:0 auto; padding:0 20px; }
.reading { max-width:var(--read); margin:0 auto; }
.skip {
  position:absolute; left:-9999px; top:0; background:var(--ink); color:var(--paper);
  padding:10px 16px; z-index:60;
}
.skip:focus { left:8px; top:8px; }

/* ------------------------------------------------------------------ header */
.masthead { border-bottom:1px solid var(--line); background:var(--card); }
.masthead-in { display:flex; align-items:center; gap:20px; min-height:66px; flex-wrap:wrap; }
.brand { display:inline-flex; align-items:center; gap:10px; text-decoration:none; color:var(--ink); }
.brand-text { display:flex; flex-direction:column; line-height:1.15; }
.brand-text b { font-size:1.06rem; letter-spacing:-.01em; }
.brand-text span { font-size:.72rem; color:var(--ink-3); letter-spacing:.08em; text-transform:uppercase; }
.mainnav { margin-left:auto; display:flex; gap:20px; flex-wrap:wrap; }
.mainnav a { color:var(--ink-2); text-decoration:none; font-size:.93rem; }
.mainnav a:hover { color:var(--accent); text-decoration:underline; }

/* --------------------------------------------------------------- article */
.hero { padding:52px 0 8px; }
.kicker {
  margin:0 0 10px; font-size:.74rem; letter-spacing:.12em; text-transform:uppercase;
  color:var(--warm); font-weight:700;
}
h1 {
  font-family:var(--serif); font-weight:400; letter-spacing:-.015em;
  font-size:clamp(2rem, 5.2vw, 3rem); line-height:1.14; margin:0 0 16px;
}
.meta { color:var(--ink-3); font-size:.9rem; margin:0 0 22px; }
.meta .dot { padding:0 6px; }
.rule { height:1px; background:var(--line); margin:26px 0; }

.figure { margin:30px 0; }
.figure svg { display:block; width:100%; height:auto; border-radius:var(--radius); border:1px solid var(--line); background:var(--card); }
.figure figcaption { color:var(--ink-3); font-size:.85rem; margin-top:10px; }

.toc {
  background:var(--card); border:1px solid var(--line); border-radius:var(--radius);
  padding:20px 22px; margin:28px 0; box-shadow:var(--shadow);
}
.toc h2 { margin:0 0 10px; font-size:.76rem; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-3); font-family:var(--sans); font-weight:700; }
.toc ol { margin:0; padding-left:1.15em; }
.toc li { margin:5px 0; }
.toc a { color:var(--ink-2); text-decoration:none; }
.toc a:hover { color:var(--accent); text-decoration:underline; }

.prose { font-size:1.075rem; }
.prose p { margin:0 0 1.15em; color:var(--ink-2); }
.prose .lede { font-size:1.2rem; line-height:1.55; color:var(--ink); }
.prose h2 {
  font-family:var(--serif); font-weight:400; font-size:1.72rem; line-height:1.25;
  margin:2.4em 0 .55em; letter-spacing:-.01em; color:var(--ink); scroll-margin-top:20px;
}
.prose h3 { font-size:1.12rem; margin:1.9em 0 .4em; color:var(--ink); letter-spacing:-.005em; }
.prose ul, .prose ol { margin:0 0 1.2em; padding-left:1.3em; color:var(--ink-2); }
.prose li { margin:.4em 0; }
.prose strong { color:var(--ink); }
.prose blockquote {
  margin:1.6em 0; padding:2px 0 2px 20px; border-left:3px solid var(--warm);
  font-family:var(--serif); font-size:1.14rem; color:var(--ink);
}
.prose hr { border:0; border-top:1px solid var(--line); margin:2.4em 0; }

.callout {
  background:var(--accent-soft); border:1px solid var(--line); border-left:3px solid var(--accent);
  border-radius:10px; padding:18px 20px; margin:1.8em 0;
}
.callout p:last-child { margin-bottom:0; }
.callout h3 { margin:0 0 .4em; font-size:1rem; }

.checklist { list-style:none; padding:0; margin:1.6em 0; }
.checklist li {
  position:relative; padding:12px 12px 12px 40px; border:1px solid var(--line);
  border-radius:10px; background:var(--card); margin:8px 0; color:var(--ink-2);
}
.checklist li::before {
  content:""; position:absolute; left:14px; top:19px; width:13px; height:8px;
  border-left:2.5px solid var(--accent); border-bottom:2.5px solid var(--accent);
  transform:rotate(-45deg);
}

.grid { display:grid; gap:14px; grid-template-columns:repeat(auto-fit, minmax(220px,1fr)); margin:1.8em 0; }
.tile { background:var(--card); border:1px solid var(--line); border-radius:var(--radius); padding:18px; box-shadow:var(--shadow); }
.tile h3 { margin:0 0 .35em; font-size:1rem; }
.tile p { margin:0; font-size:.95rem; color:var(--ink-2); }
.tile .num { display:block; font-size:.72rem; letter-spacing:.12em; text-transform:uppercase; color:var(--warm); font-weight:700; margin-bottom:6px; }

.tablewrap { overflow-x:auto; margin:1.8em 0; border:1px solid var(--line); border-radius:var(--radius); background:var(--card); }
table { border-collapse:collapse; width:100%; font-size:.95rem; min-width:520px; }
th, td { text-align:left; padding:12px 16px; border-bottom:1px solid var(--line); color:var(--ink-2); vertical-align:top; }
th { color:var(--ink); font-size:.8rem; letter-spacing:.06em; text-transform:uppercase; }
tr:last-child td { border-bottom:0; }

/* --------------------------------------------------------------- policies */
.policy { padding:44px 0 10px; }
.policy .prose h2 { font-size:1.35rem; margin:2em 0 .5em; }
.policy .toc ul { margin:0; padding-left:1.15em; }

/* ---------------------------------------------------------------- contact */
.deflist { margin:1.6em 0; }
.deflist dt { font-weight:600; color:var(--ink); margin-top:1.1em; }
.deflist dd { margin:.2em 0 0; color:var(--ink-2); }

/* ----------------------------------------------------------------- footer */
.foot { margin-top:64px; border-top:1px solid var(--line); background:var(--card); padding:36px 0 44px; }
.foot-grid { display:grid; gap:26px; grid-template-columns:repeat(auto-fit, minmax(210px,1fr)); }
.foot h2 { font-size:.74rem; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-3); margin:0 0 10px; }
.foot ul { list-style:none; margin:0; padding:0; }
.foot li { margin:6px 0; }
.foot a { color:var(--ink-2); text-decoration:none; font-size:.93rem; }
.foot a:hover { color:var(--accent); text-decoration:underline; }
.foot p { color:var(--ink-3); font-size:.88rem; margin:0 0 .7em; }
.colophon { margin-top:28px; padding-top:20px; border-top:1px solid var(--line); color:var(--ink-3); font-size:.85rem; }
.colophon p { margin:.4em 0; }

/* ----------------------------------------------------------- cookie notice */
.cookie {
  position:fixed; left:16px; right:16px; bottom:16px; z-index:50; margin:0 auto;
  max-width:640px; background:var(--card); border:1px solid var(--line);
  border-radius:var(--radius); box-shadow:var(--shadow); padding:18px 20px;
}
.cookie[hidden] { display:none; }
.cookie p { margin:0 0 12px; font-size:.92rem; color:var(--ink-2); }
.cookie-actions { display:flex; gap:10px; flex-wrap:wrap; }
.btn {
  font:inherit; font-size:.92rem; font-weight:600; cursor:pointer; border-radius:9px;
  padding:9px 16px; border:1px solid var(--line); background:var(--paper); color:var(--ink);
}
.btn-primary { background:var(--accent); border-color:var(--accent); color:#fff; }
@media (prefers-color-scheme: dark) { .btn-primary { color:#0d1512; } }
.btn:hover { filter:brightness(.96); }

@media (max-width:560px) {
  body { font-size:16px; }
  .hero { padding:34px 0 4px; }
  .mainnav { gap:14px; }
}
@media print {
  .masthead, .foot, .cookie, .toc, .skip { display:none !important; }
  body { background:#fff; color:#000; }
}
