/* ============================================================
   GAM Analysis — "Adjacent" visual language
   Design tokens + component library (prototype stylesheet)
   Fonts: Archivo (display) · Source Serif 4 (reading) · IBM Plex Mono (data)
   ============================================================ */

:root {
  /* Forest — surfaces & brand */
  --green-900:#102016; --green-800:#16291B; --green-700:#1E3324; --green-600:#2A4531;
  --green-accent:#5f8a6c; --sage:#8FA893;
  /* Paper — neutrals & ink */
  --paper:#E7E3D7; --paper-hi:#FCFAF4; --paper-dk:#D8D3C4;
  --ink:#191712; --ink-muted:#6B6559; --ink-soft:#55514A; --ink-body:#26241D;
  --hair:#D3CFC2; --hair-2:#E0DBCD; --on-dark:#E6E2D6; --on-dark-mut:#C7C4B7;
  /* Data — market semantics */
  --up:#7FB98F; --down:#DD6666; --idx-red:#D97A6E; --idx-blue:#8AA6CC; --amber:#C9A24B;
  /* Desk accents (categorization) */
  --desk-forensics:#D97A6E;   /* red-clay  */
  --desk-stress:#C9A24B;      /* amber     */
  --desk-valuation:#7FB98F;   /* green     */
  --desk-comparison:#8AA6CC;  /* blue      */
  --desk-landscape:#B08BB5;   /* violet    */
  --maxw:1120px; --pad:56px;
}

* { box-sizing:border-box; }
html { scroll-behavior:smooth; }
body {
  margin:0; background:var(--paper); color:var(--ink);
  font-family:'Archivo',sans-serif; -webkit-font-smoothing:antialiased;
}
a { color:#1C3222; text-decoration:none; }
a:hover { color:#4E7C5A; }
.wrap { max-width:var(--maxw); margin:0 auto; padding:0 var(--pad); }
.mono { font-family:'IBM Plex Mono',monospace; }
.serif { font-family:'Source Serif 4',serif; }

/* ---------- Kicker / section rules ---------- */
.kicker { font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.18em;
  text-transform:uppercase; color:var(--ink-muted); }
.rule-2 { border-top:2px solid var(--ink); }
.rule-1 { border-top:1px solid var(--hair); }
.section-head { display:flex; align-items:baseline; gap:16px; border-top:2px solid var(--ink);
  padding-top:14px; margin:0 0 28px; }
.section-head h2 { font-size:32px; font-weight:800; letter-spacing:-0.015em; margin:0; }
.section-head .idx { font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:0.2em;
  text-transform:uppercase; color:var(--ink-muted); white-space:nowrap; }

/* ---------- Masthead / nav ---------- */
.mast { background:var(--green-800); color:var(--on-dark); position:relative; overflow:hidden; }
.mast .grid-bg { position:absolute; inset:0; pointer-events:none;
  background-image:linear-gradient(rgba(230,226,214,0.035) 1px,transparent 1px),
    linear-gradient(90deg,rgba(230,226,214,0.035) 1px,transparent 1px); background-size:34px 34px; }
.navbar { display:flex; align-items:center; justify-content:space-between; padding:16px 0;
  position:relative; border-bottom:1px solid rgba(230,226,214,0.1); }
.brand { font-family:'Archivo',sans-serif; font-weight:800; font-size:20px; letter-spacing:-0.01em;
  color:var(--on-dark); display:flex; align-items:center; gap:10px; }
.brand .dot { width:9px; height:9px; background:var(--up); display:inline-block; }
.navlinks { display:flex; gap:24px; align-items:center; font-family:'IBM Plex Mono',monospace;
  font-size:12px; letter-spacing:0.12em; text-transform:uppercase; }
.navlinks a { color:var(--on-dark-mut); }
.navlinks a:hover, .navlinks a.active { color:var(--on-dark); }
.navmeta { font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:0.1em; color:var(--sage);
  display:flex; gap:20px; align-items:center; }

/* ---------- Ticker ---------- */
.ticker { background:var(--green-900); color:var(--on-dark); overflow:hidden; white-space:nowrap;
  border-top:1px solid rgba(230,226,214,0.08); border-bottom:1px solid rgba(230,226,214,0.08); }
.ticker-track { display:inline-flex; gap:38px; padding:11px 0; font-family:'IBM Plex Mono',monospace;
  font-size:13px; letter-spacing:0.03em; animation:ds-marquee 40s linear infinite; will-change:transform; }
.ticker b { font-weight:600; }
.ticker em { font-style:normal; }
.up { color:var(--up); } .down { color:var(--down); }
@keyframes ds-marquee { from{transform:translateX(0);} to{transform:translateX(-50%);} }

/* ---------- Hero ---------- */
.hero { background:var(--green-800); color:var(--on-dark); position:relative; overflow:hidden;
  padding:64px 0 60px; }
.hero .grid-bg { position:absolute; inset:0; pointer-events:none;
  background-image:linear-gradient(rgba(230,226,214,0.035) 1px,transparent 1px),
    linear-gradient(90deg,rgba(230,226,214,0.035) 1px,transparent 1px); background-size:34px 34px; }
.hero h1 { font-size:60px; line-height:0.98; letter-spacing:-0.02em; margin:14px 0 0; font-weight:800; }
.hero h1 .lite { font-weight:400; color:#C7C4B7; }
.hero p.lede { max-width:600px; font-family:'Source Serif 4',serif; font-size:18px; line-height:1.5;
  color:var(--on-dark-mut); margin:22px 0 0; }

/* ---------- Badges / tags ---------- */
.badge { font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.1em;
  text-transform:uppercase; padding:5px 11px; display:inline-flex; align-items:center; gap:6px; }
.badge.live { background:var(--green-700); color:var(--on-dark); }
.badge.bull { background:rgba(127,185,143,0.22); color:#2A4531; }
.badge.bear { background:rgba(221,102,102,0.18); color:#9c3b3b; }
.badge.resolved { border:1px solid var(--ink); color:var(--ink); }
.badge.pending { border:1px dashed var(--ink-muted); color:var(--ink-muted); }
.badge.confirmed { background:rgba(127,185,143,0.22); color:#2A4531; }
.badge.alleged { border:1px dashed var(--amber); color:#8a6d20; }
/* dark-surface variants — legible on forest backgrounds (hero, dark cards) */
.badge.bull.on-dark { background:rgba(127,185,143,0.18); color:var(--up); }
.badge.bear.on-dark { background:rgba(221,102,102,0.20); color:#E59A9A; }
.badge.alleged.on-dark { border-color:var(--amber); color:#E2C071; }
.badge.confirmed.on-dark { background:rgba(127,185,143,0.18); color:var(--up); }
.tag-lens { font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:0.14em;
  text-transform:uppercase; color:var(--ink-muted); border:1px solid var(--hair); padding:3px 8px; }

/* desk chip: colored square + label */
.desk { font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.14em;
  text-transform:uppercase; display:inline-flex; align-items:center; gap:7px; color:var(--ink-muted); }
.desk::before { content:""; width:9px; height:9px; flex:none; background:var(--c,#999); }
.desk.forensics{ --c:var(--desk-forensics);} .desk.stress{ --c:var(--desk-stress);}
.desk.valuation{ --c:var(--desk-valuation);} .desk.comparison{ --c:var(--desk-comparison);}
.desk.landscape{ --c:var(--desk-landscape);}

/* ---------- Buttons ---------- */
.btn { font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:0.16em;
  text-transform:uppercase; padding:13px 22px; cursor:pointer; border:none; display:inline-block; }
.btn.solid { background:var(--green-700); color:var(--paper); }
.btn.solid:hover { background:var(--green-600); }
.btn.paper { background:var(--paper); color:var(--green-800); }
.btn.ghost { background:transparent; color:var(--ink); border:1px solid var(--ink); }
.btn.ghost:hover { background:var(--ink); color:var(--paper); }
.btn.on-dark { border:1px solid rgba(230,226,214,0.4); color:var(--on-dark); background:transparent; }

/* ---------- Article cards ---------- */
.card-grid { display:grid; gap:16px; }
.card { background:var(--paper-hi); border:1px solid var(--hair); padding:22px 22px 20px;
  display:flex; flex-direction:column; min-height:190px; position:relative; }
.card:hover { border-color:var(--ink); }
.card .meta { display:flex; align-items:center; gap:12px; justify-content:space-between; margin-bottom:14px; }
.card .date { font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.1em; color:var(--ink-muted); }
.card h3 { font-size:21px; font-weight:800; line-height:1.12; letter-spacing:-0.01em; margin:0 0 10px; color:var(--ink); }
.card .dek { font-family:'Source Serif 4',serif; font-size:15px; line-height:1.45; color:var(--ink-soft); margin:0; }
.card .foot { margin-top:auto; padding-top:14px; display:flex; gap:10px; align-items:center; }
.card.dark { background:var(--green-800); border:none; color:var(--on-dark); }
.card.dark h3 { color:#F2EFE7; } .card.dark .dek { color:var(--on-dark-mut); }
.card.dark .date { color:var(--on-dark-mut); }

/* featured hatch tiles */
.feat { position:relative; min-height:340px; display:flex; flex-direction:column; justify-content:space-between;
  padding:26px; color:#F2EFE7; }
.feat.forensics { background:repeating-linear-gradient(135deg,#3a2420,#3a2420 11px,#2e1c19 11px,#2e1c19 22px); }
.feat.valuation { background:repeating-linear-gradient(135deg,#20362A,#20362A 11px,#1A2E23 11px,#1A2E23 22px); }
.feat.stress { background:repeating-linear-gradient(135deg,#3a3320,#3a3320 11px,#2e2919 11px,#2e2919 22px); }
.feat.comparison { background:repeating-linear-gradient(135deg,#24384B,#24384B 11px,#1E3140 11px,#1E3140 22px); }
.feat h3 { font-size:34px; font-weight:800; line-height:1.03; letter-spacing:-0.01em; margin:0; }
.feat .dek { font-family:'Source Serif 4',serif; font-size:16px; line-height:1.5; color:var(--on-dark-mut); margin:12px 0 0; max-width:80%; }

/* ---------- Desk directory (dark grid) ---------- */
.desk-dir { background:var(--green-800); display:grid; grid-template-columns:repeat(5,1fr); gap:1px; position:relative; }
.desk-dir .grid-bg { position:absolute; inset:0; pointer-events:none;
  background-image:linear-gradient(rgba(230,226,214,0.04) 1px,transparent 1px),
    linear-gradient(90deg,rgba(230,226,214,0.04) 1px,transparent 1px); background-size:30px 30px; }
.desk-cell { padding:26px 20px; position:relative; display:flex; flex-direction:column; gap:8px; min-height:150px; }
.desk-cell:hover { background:var(--green-700); }
.desk-cell .tick { width:26px; height:4px; background:var(--c,#999); }
.desk-cell .name { color:var(--on-dark); font-size:22px; font-weight:800; letter-spacing:-0.01em; }
.desk-cell .sub { color:var(--sage); font-family:'IBM Plex Mono',monospace; font-size:11px; line-height:1.4; }
.desk-cell .count { margin-top:auto; color:var(--on-dark-mut); font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.1em; }

/* ---------- Stat tiles ---------- */
.stat-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.stat { background:var(--paper-hi); border:1px solid var(--hair); padding:16px 18px; }
.stat .top { display:flex; justify-content:space-between; align-items:baseline; }
.stat .name { font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.1em; color:var(--ink-muted); }
.stat .chg { font-family:'IBM Plex Mono',monospace; font-size:12px; }
.stat .val { font-size:26px; font-weight:800; letter-spacing:-0.01em; margin:6px 0 4px; }
.stat .cap { font-family:'Source Serif 4',serif; font-size:13px; color:var(--ink-soft); }

/* ---------- Data table ---------- */
.dtable { border:1px solid var(--hair); background:var(--paper-hi); }
.dtable .thead, .dtable .trow { display:grid; align-items:center; }
.dtable .thead { padding:12px 18px; border-bottom:1px solid var(--ink);
  font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.12em; text-transform:uppercase; color:var(--ink-muted); }
.dtable .trow { padding:14px 18px; border-bottom:1px solid var(--hair-2); }
.dtable .trow:last-child { border-bottom:none; }
.dtable .trow:hover { background:#F2EFE7; }
.dtable .mono { font-family:'IBM Plex Mono',monospace; font-size:13px; }
.dtable .nm { font-family:'Source Serif 4',serif; font-size:15px; }
.r { text-align:right; }

/* ---------- Verdict / grade block ---------- */
.verdict { background:var(--green-800); color:var(--on-dark); display:grid;
  grid-template-columns:150px 1fr; gap:0; }
.verdict .grade { background:var(--green-900); display:flex; flex-direction:column; align-items:center;
  justify-content:center; padding:26px 0; }
.verdict .grade .g { font-size:72px; font-weight:800; line-height:1; color:var(--up); letter-spacing:-0.03em; }
.verdict .grade .lbl { font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:0.18em;
  text-transform:uppercase; color:var(--sage); margin-top:8px; }
.verdict .body { padding:24px 26px; }
.verdict .body .call { font-size:22px; font-weight:800; letter-spacing:-0.01em; margin:0 0 8px; color:#F2EFE7; }
.verdict .body .why { font-family:'Source Serif 4',serif; font-size:16px; line-height:1.5; color:var(--on-dark-mut); margin:0; }

/* ---------- Scenario bars ---------- */
.scenarios { display:flex; flex-direction:column; gap:16px; }
.scen .top { display:flex; justify-content:space-between; margin-bottom:7px; }
.scen .q { font-family:'Source Serif 4',serif; font-size:15px; }
.scen .pct { font-family:'IBM Plex Mono',monospace; font-size:13px; font-weight:600; }
.scen .bar { height:10px; background:var(--paper); display:flex; }
.scen .fill { height:10px; }

/* ---------- Timeline ---------- */
.timeline { border-left:2px solid var(--ink); margin-left:6px; }
.tl-item { position:relative; padding:0 0 26px 26px; }
.tl-item::before { content:""; position:absolute; left:-7px; top:4px; width:12px; height:12px;
  background:var(--paper); border:2px solid var(--ink); }
.tl-item .t { font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:0.08em; color:var(--ink-muted); }
.tl-item .h { font-size:17px; font-weight:800; margin:4px 0 5px; letter-spacing:-0.01em; }
.tl-item .b { font-family:'Source Serif 4',serif; font-size:15px; line-height:1.5; color:var(--ink-soft); margin:0; }

/* ---------- Callout / alert ---------- */
.callout { display:flex; gap:14px; align-items:flex-start; padding:16px 18px; border-left:3px solid var(--c,#1E3324); background:var(--bg,#F2EFE7); }
.callout .tag { font-family:'IBM Plex Mono',monospace; font-size:10px; letter-spacing:0.16em;
  font-weight:600; width:76px; flex:none; color:var(--c,#1E3324); padding-top:2px; }
.callout .txt { font-family:'Source Serif 4',serif; font-size:15px; line-height:1.5; color:var(--ink-body); margin:0; }
.callout.warn { --c:#9c3b3b; --bg:rgba(221,102,102,0.10); }
.callout.ok   { --c:#2A4531; --bg:rgba(127,185,143,0.14); }
.callout.note { --c:#1E3324; --bg:#F2EFE7; }

/* ---------- Article body typography ---------- */
.article { max-width:720px; margin:0 auto; }
.article h2 { font-size:28px; font-weight:800; letter-spacing:-0.015em; margin:44px 0 14px; }
.article h3 { font-size:20px; font-weight:700; margin:32px 0 10px; }
.article p { font-family:'Source Serif 4',serif; font-size:18px; line-height:1.62; color:var(--ink-body); margin:0 0 20px; }
.article p.dropcap::first-letter { float:left; font-family:'Archivo',sans-serif; font-weight:800;
  font-size:66px; line-height:0.72; padding:6px 12px 0 0; color:var(--green-800); }
.article blockquote { border-left:2px solid var(--ink); margin:26px 0; padding:4px 0 4px 22px;
  font-family:'Source Serif 4',serif; font-style:italic; font-size:20px; line-height:1.45; color:var(--ink); }
.article .fig-cap { font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.08em;
  text-transform:uppercase; color:var(--ink-muted); margin:8px 0 34px; }

/* ---------- Newsletter ---------- */
.news-box { border:2px solid var(--ink); background:var(--paper-hi); padding:28px 30px; }
.news-box h3 { font-size:32px; font-weight:800; letter-spacing:-0.015em; margin:0; }
.news-row { display:flex; gap:0; margin-top:18px; max-width:460px; }
.news-row input { flex:1; border:1px solid var(--ink); border-right:none; background:var(--paper-hi);
  padding:14px 16px; font-family:'IBM Plex Mono',monospace; font-size:13px; outline:none; }

/* ---------- Footer ---------- */
.foot-strip { background:var(--green-900); color:var(--on-dark); padding:44px 0; margin-top:72px; }
.foot-strip .cols { display:grid; grid-template-columns:2fr 1fr 1fr; gap:32px; }
.foot-strip a { color:var(--on-dark-mut); display:block; padding:4px 0; font-family:'IBM Plex Mono',monospace; font-size:13px; }
.foot-strip a:hover { color:var(--on-dark); }

/* ---------- responsive ----------
   Note: many prototype grids set grid-template-columns inline, which outranks
   stylesheet rules — so the mobile overrides below use !important deliberately. */

/* tablet: collapse the lead-story split + wide directory */
@media (max-width:960px){
  .desk-dir{ grid-template-columns:repeat(3,1fr); }
  [style*="1.6fr 1fr"]{ grid-template-columns:1fr !important; }
  .card-grid[style*="repeat(3"]{ grid-template-columns:repeat(2,1fr) !important; }
}

/* phone */
@media (max-width:820px){
  :root{ --pad:20px; }
  .hero{ padding:44px 0 40px; }
  .hero h1{ font-size:38px !important; line-height:1.0; }
  .hero p.lede{ font-size:16px; }
  .section-head h2{ font-size:24px; }
  .section-head .idx{ font-size:11px; }

  /* nav: keep it usable — desks scroll horizontally instead of vanishing */
  .navbar{ flex-wrap:wrap; gap:10px; padding:14px 0; }
  .navlinks{ display:flex; width:100%; overflow-x:auto; gap:18px; padding-bottom:4px;
    white-space:nowrap; -webkit-overflow-scrolling:touch; }
  .navmeta{ display:none; }

  /* grids collapse */
  .card-grid, .card-grid[style*="repeat(3"], .card-grid[style*="repeat(2"]{ grid-template-columns:1fr !important; }
  .stat-grid, .stat-grid[style*="repeat(4"]{ grid-template-columns:repeat(2,1fr) !important; }
  .desk-dir{ grid-template-columns:repeat(2,1fr); }
  [style*="1.6fr 1fr"]{ grid-template-columns:1fr !important; }
  [style*="grid-template-rows:1fr 1fr"]{ grid-template-rows:auto auto !important; }
  .foot-strip .cols{ grid-template-columns:1fr !important; gap:26px; }

  /* verdict + featured tiles */
  .verdict{ grid-template-columns:1fr !important; }
  .verdict .grade{ flex-direction:row; gap:14px; padding:16px 22px; justify-content:flex-start; }
  .verdict .grade .g{ font-size:52px; } .verdict .grade .lbl{ margin-top:0; }
  .feat{ min-height:250px; padding:22px; }
  .feat h3{ font-size:26px; } .feat .dek{ max-width:100%; }
}

/* small phone */
@media (max-width:560px){
  .desk-dir{ grid-template-columns:1fr; }
  .stat-grid, .stat-grid[style*="repeat(4"]{ grid-template-columns:1fr !important; }
  .hero h1, .article h1{ font-size:30px !important; }
  .article p{ font-size:16px; } .article h2{ font-size:23px; }

  /* data table: drop the prose "read" column, keep dimension + the two grades */
  .dtable .thead, .dtable .trow{ grid-template-columns:1fr 46px 46px !important; }
  .dtable .thead span:nth-child(4), .dtable .trow span:nth-child(4){ display:none; }

  /* newsletter: stack the input + button */
  .news-row{ flex-direction:column; gap:10px; }
  .news-row input{ border-right:1px solid var(--ink) !important; }
  .news-box h3{ font-size:26px; }
  .btn{ text-align:center; }
}

/* ==========================================================
   GHOST THEME ADDITIONS — desk colors keyed to tag slugs,
   Koenig editor content styles, byline, pagination
   ========================================================== */

/* Desk accent by Ghost tag slug (primary_tag.slug) */
.desk.forensics{ --c:var(--desk-forensics); }
.desk.stress-tests{ --c:var(--desk-stress); }
.desk.valuations{ --c:var(--desk-valuation); }
.desk.comparisons{ --c:var(--desk-comparison); }
.desk.landscape{ --c:var(--desk-landscape); }
/* feature-tile hatch by slug */
.feat.stress-tests{ background:repeating-linear-gradient(135deg,#3a3320,#3a3320 11px,#2e2919 11px,#2e2919 22px); }
.feat.valuations{ background:repeating-linear-gradient(135deg,#20362A,#20362A 11px,#1A2E23 11px,#1A2E23 22px); }
.feat.comparisons{ background:repeating-linear-gradient(135deg,#24384B,#24384B 11px,#1E3140 11px,#1E3140 22px); }
.feat.landscape{ background:repeating-linear-gradient(135deg,#33243a,#33243a 11px,#291c2e 11px,#291c2e 22px); }

/* byline row on posts */
.byline{ font-family:'IBM Plex Mono',monospace; font-size:12px; letter-spacing:0.1em;
  color:var(--sage); margin-top:24px; text-transform:uppercase; }

/* ---- Koenig / editor content (styles native Ghost article HTML) ---- */
.article img, .article .kg-image{ max-width:100%; height:auto; display:block; margin:8px auto; }
.article figure{ margin:26px 0; }
.article figcaption{ font-family:'IBM Plex Mono',monospace; font-size:11px; letter-spacing:0.06em;
  text-transform:uppercase; color:var(--ink-muted); text-align:center; margin-top:8px; }
.article .kg-card, .article .kg-embed-card{ margin:26px 0; }
.article ul, .article ol{ font-family:'Source Serif 4',serif; font-size:18px; line-height:1.6;
  color:var(--ink-body); padding-left:22px; margin:0 0 20px; }
.article li{ margin:0 0 8px; }
.article a{ color:#1C3222; text-decoration:underline; text-underline-offset:3px; }
.article hr{ border:none; border-top:2px solid var(--ink); margin:40px 0; }
.article code{ font-family:'IBM Plex Mono',monospace; font-size:14px; background:var(--paper-hi);
  border:1px solid var(--hair); padding:2px 6px; }
.article pre{ background:var(--green-900); color:var(--on-dark); padding:18px 20px; overflow-x:auto;
  font-family:'IBM Plex Mono',monospace; font-size:13px; line-height:1.5; margin:26px 0; }
.article pre code{ background:none; border:none; color:inherit; padding:0; }
.article table{ width:100%; border-collapse:collapse; font-family:'IBM Plex Mono',monospace;
  font-size:13px; margin:26px 0; border:1px solid var(--hair); }
.article th{ background:var(--green-800); color:var(--on-dark); text-align:left; padding:11px 14px;
  font-size:11px; letter-spacing:0.08em; text-transform:uppercase; }
.article td{ padding:11px 14px; border-top:1px solid var(--hair-2); }
.article .kg-bookmark-card a{ text-decoration:none; }

/* Ghost feature image on posts */
.post-hero-img{ width:100%; max-height:460px; object-fit:cover; display:block; }

/* pagination */
.pagination{ display:flex; justify-content:center; gap:16px; margin:40px 0 0; }

/* subscribe / portal buttons inherit .btn */

/* Koenig width classes — required by Ghost; let wide/full images break out of the 720 column */
.article .kg-width-wide{ position:relative; width:100%; max-width:1000px; margin-left:auto; margin-right:auto; }
.article .kg-width-wide img{ width:100%; height:auto; }
.article .kg-width-full{ position:relative; width:100vw; max-width:100vw; margin-left:calc(50% - 50vw); }
.article .kg-width-full img{ width:100%; height:auto; }
