/* Numbers.sg brand tokens: Direction A "The Bulletin", chosen by the owner 23 Oct 2026.
   Rules (see research/2026-10-23 plan, #brand):
   - Every number uses --ns-font-num with tabular figures.
   - Rises and falls are shown with ▲ ▼ and a sign in ink, never red/green.
   - Jade is for the brand dot, link hover and focus only; links are plain ink, underlined. Amber only as a "changed today" background behind ink.
   Fonts are self-hosted (SIL OFL 1.1, see ../fonts/LICENSES.md). Preload atkinson-next-latin and atkinson-mono-latin. */

@font-face{font-family:"Source Serif 4";src:url(../fonts/source-serif-4-latin-opsz36.woff2) format("woff2");font-weight:600 700;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Atkinson Hyperlegible Next";src:url(../fonts/atkinson-next-latin.woff2) format("woff2");font-weight:400 700;font-style:normal;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible Next";src:url(../fonts/atkinson-next-italic-latin.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Atkinson Hyperlegible Mono";src:url(../fonts/atkinson-mono-latin.woff2) format("woff2");font-weight:400 600;font-style:normal;font-display:swap}

:root{
  /* colour. Light only (owner, 23 Oct 2026: "I want WHITE background. not dark mode") */
  --ns-ink:#13233A;        /* text and numbers: 15.8:1 on white */
  --ns-paper:#FFFFFF;      /* page (owner, 23 Oct: white) */
  --ns-panel:#FFFFFF;      /* cards, tables */
  --ns-muted:#4E5B6B;      /* sources, labels: 6.9:1 on white */
  --ns-line:#D6DCE3;       /* rules, borders */
  --ns-chip:#F3F5F7;       /* table heads, chips */
  --ns-jade:#0B7A63;       /* brand dot, links, focus: 5.3:1 on white */
  --ns-jade-soft:#E3F3EE;
  --ns-changed:#FFE9B8;    /* "changed today" background, ink text on it: 13.2:1 */
  --ns-alert:#B42318;      /* errors and stale-data notices only, never for numbers */

  /* type */
  --ns-font-head:"Source Serif 4",Georgia,"Times New Roman",serif;
  --ns-font-text:"Atkinson Hyperlegible Next",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --ns-font-num:"Atkinson Hyperlegible Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --ns-text:1rem;          /* 16px; calculators use --ns-text-calc */
  --ns-text-calc:1.125rem; /* 18px */
  --ns-small:.8125rem;     /* 13px: sources, timestamps */
  --ns-h3:1.375rem;        /* 22px */
  --ns-h2:1.75rem;         /* 28px */
  --ns-h1:clamp(1.875rem,4.5vw,2.5rem); /* 30-40px */
  --ns-figure:clamp(2.25rem,6vw,2.75rem); /* tracker headline number: 36px phone, 44px desktop */

  /* shape */
  --ns-radius:8px;
  --ns-gap:16px;
  color-scheme:light;
}

/* base */
body{background:var(--ns-paper);color:var(--ns-ink);font:var(--ns-text)/1.6 var(--ns-font-text)}
h1,h2,h3{font-family:var(--ns-font-head);font-weight:700;line-height:1.15;text-wrap:balance;color:var(--ns-ink)}
h1{font-size:var(--ns-h1)}h2{font-size:var(--ns-h2)}h3{font-size:var(--ns-h3);font-weight:600}
a{color:var(--ns-ink);text-decoration:underline;text-decoration-color:var(--ns-muted);text-underline-offset:.15em}
a:hover{color:var(--ns-jade);text-decoration-color:currentColor}
:focus-visible{outline:2px solid var(--ns-jade);outline-offset:2px}

/* numbers */
.ns-num,table td.n,.ns-figure{font-family:var(--ns-font-num);font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1,"lnum" 1}
.ns-figure{font-size:var(--ns-figure);font-weight:600;line-height:1;letter-spacing:-.01em}
.ns-change{font-family:var(--ns-font-num);font-variant-numeric:tabular-nums;color:var(--ns-ink)} /* ▲ ▼ plus sign, never coloured */
.ns-changed-today{background:var(--ns-changed);color:var(--ns-ink);padding:1px 6px}
.ns-source{font-size:var(--ns-small);color:var(--ns-muted)} /* "Source: MAS · checked 13:04 SGT" */
.ns-stale{border-left:4px solid var(--ns-alert);padding:8px 12px;background:var(--ns-panel)}

/* brand dot, for the wordmark in HTML */
.ns-dot{display:inline-block;width:.21em;height:.21em;background:var(--ns-jade);margin:0 .055em 0 .045em}

/* ---------- layout (theme) ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;min-height:100vh;display:flex;flex-direction:column}
.ns-main{flex:1 0 auto}
img,svg{max-width:100%;height:auto}
h1,h2,h3{margin:0 0 .5em}
p{margin:0 0 1em}
a:hover{text-decoration-thickness:2px}
.ns-wrap{max-width:1120px;margin:0 auto;padding:0 16px}
@media (min-width:768px){.ns-wrap{padding:0 24px}}
.ns-vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.ns-skip{position:absolute;left:8px;top:-60px;z-index:10;background:var(--ns-panel);color:var(--ns-ink);padding:10px 14px;border:2px solid var(--ns-jade)}
.ns-skip:focus{top:8px}
.ns-num{white-space:nowrap}

/* header: white bar, logo, topics, search. Same build as GraciousQuotes and GreenCalculus (owner, 23 Oct 2026). */
.ns-head{background:#fff;border-bottom:1px solid var(--ns-line);position:relative;z-index:5}
.ns-head-in{display:flex;align-items:center;gap:28px;min-height:64px}
.ns-home{text-decoration:none;color:var(--ns-ink);display:inline-flex;align-items:center}
.ns-home:hover{color:var(--ns-ink)}
.ns-brand{font-family:var(--ns-font-head);font-weight:700;font-size:1.625rem;line-height:1;letter-spacing:-.01em;color:var(--ns-ink);white-space:nowrap}
.ns-brand .ns-dot{width:.2em;height:.2em;margin:0 .05em 0 .045em}
.ns-brand-sg{color:var(--ns-jade)}
.ns-nav{flex:1 1 auto;min-width:0}
.ns-nav ul{list-style:none;margin:0;padding:0;display:flex;gap:22px;overflow-x:auto;scrollbar-width:none}
.ns-nav ul::-webkit-scrollbar{display:none}
.ns-nav a{display:flex;align-items:center;min-height:44px;color:var(--ns-ink);text-decoration:none;font-size:.9375rem;white-space:nowrap}
.ns-nav a:hover{color:var(--ns-jade)}
.ns-hsearch{position:relative;flex:0 0 200px}
.ns-hsearch input{width:100%;height:40px;border:1px solid var(--ns-line);border-radius:999px;background:#F6F8FA;padding:0 14px 0 36px;font:inherit;font-size:.9375rem;color:var(--ns-ink)}
.ns-hsearch input:focus{outline:2px solid var(--ns-jade);outline-offset:1px;background:#fff}
.ns-hsearch svg{position:absolute;left:13px;top:12px;width:16px;height:16px;color:var(--ns-muted)}
@media (max-width:959px){.ns-head-in{flex-wrap:wrap;gap:0 16px;min-height:0;padding-top:12px}.ns-home{min-height:44px}.ns-hsearch{flex:1 1 140px;max-width:240px;margin-left:auto}.ns-nav{flex:1 1 100%;order:3;margin:0 -16px}.ns-nav ul{padding:0 16px;gap:18px}}
@media (max-width:420px){.ns-hsearch{display:none}}

/* shared pieces */
.ns-eyebrow{font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--ns-jade);margin:0 0 14px}
.ns-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 22px;border:0;border-radius:var(--ns-radius);background:var(--ns-jade);color:#fff;font:inherit;font-weight:700;text-decoration:none;cursor:pointer;box-shadow:0 6px 16px rgba(11,122,99,.22)}
.ns-btn:hover{background:#086652;color:#fff}
.ns-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 0;padding:0;list-style:none;font-size:.875rem;color:var(--ns-muted)}
.ns-chips a{display:inline-flex;align-items:center;min-height:34px;padding:0 14px;border:1px solid var(--ns-line);border-radius:999px;background:#fff;color:var(--ns-ink);text-decoration:none;font-weight:600}
.ns-chips a:hover{border-color:var(--ns-jade);color:var(--ns-jade)}
.ns-arrow{font-weight:700;text-decoration:none;color:var(--ns-jade)}
.ns-arrow:hover{text-decoration:underline}

/* home: hero */
.ns-hero{background:radial-gradient(circle at 88% 8%,rgba(11,122,99,.10),transparent 32%),linear-gradient(180deg,#F5FAF8,#fff);border-bottom:1px solid var(--ns-line)}
.ns-hero-in{display:grid;gap:40px;padding-top:44px;padding-bottom:48px}
@media (min-width:960px){.ns-hero-in{grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:64px;align-items:center;padding-top:72px;padding-bottom:72px}}
.ns-hero h1{font-size:clamp(2.25rem,5.4vw,3.5rem);line-height:1.05;letter-spacing:-.02em;margin:0 0 18px}
.ns-hero h1 em{font-style:normal;color:var(--ns-jade)}
.ns-lede{font-size:1.1875rem;line-height:1.55;color:var(--ns-muted);max-width:32em;margin:0}
.ns-search{display:flex;gap:8px;margin-top:28px;padding:8px;background:#fff;border:1px solid var(--ns-line);border-radius:12px;box-shadow:0 10px 30px rgba(19,35,58,.08);max-width:540px}
.ns-search input{flex:1;min-width:0;height:48px;border:0;padding:0 12px;font:inherit;font-size:1.0625rem;color:var(--ns-ink);background:transparent}
.ns-search input:focus{outline:none}
.ns-search:focus-within{border-color:var(--ns-jade)}
.ns-from{margin-top:28px;padding-top:18px;border-top:1px solid var(--ns-line);max-width:540px;font-size:.875rem;color:var(--ns-muted)}
.ns-from ul{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 22px}
.ns-from li{font-weight:700;color:var(--ns-ink);font-size:.9375rem}

/* home: the dark card (update schedule now; today's readings once the data jobs run) */
.ns-card-dark{background:#13233A;color:#E6EBF1;border-radius:16px;padding:26px 26px 22px;box-shadow:0 24px 48px rgba(19,35,58,.22)}
.ns-card-dark-h{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}
.ns-card-dark-h p{margin:0;font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#4FC9A8}
.ns-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;background:rgba(79,201,168,.14);color:#7FE0C4;font-size:.75rem;font-weight:700}
.ns-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:#4FC9A8}
.ns-sched{width:100%;border-collapse:collapse;font-size:.9375rem}
.ns-sched th,.ns-sched td{padding:11px 0;border-top:1px solid rgba(230,235,241,.12);text-align:left;vertical-align:baseline}
.ns-sched th{font-weight:600;color:#fff}
.ns-sched td{text-align:right;color:#B8C3CF;font-family:var(--ns-font-num);font-size:.8125rem;white-space:nowrap;padding-left:12px}
.ns-sched td.n{font-size:1.125rem;color:#fff;font-weight:600}
.ns-card-dark-foot{margin:14px 0 0;padding-top:14px;border-top:1px solid rgba(230,235,241,.12);font-size:.875rem}
.ns-card-dark-foot a{color:#7FE0C4;margin-right:16px}

/* home: sections */
.ns-sec{padding:64px 0}
.ns-sec-alt{background:#F7F9FA;border-top:1px solid var(--ns-line);border-bottom:1px solid var(--ns-line)}
.ns-sec-head{text-align:center;max-width:640px;margin:0 auto 32px}
.ns-sec-head h2{font-size:clamp(1.75rem,3.6vw,2.25rem);margin-bottom:10px}
.ns-sec-head p:last-child{color:var(--ns-muted);font-size:1.0625rem;margin:0}
.ns-cards{list-style:none;margin:0;padding:0;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr))}
@media (min-width:960px){.ns-cards{grid-template-columns:repeat(3,1fr)}}
.ns-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--ns-line);border-radius:12px;padding:22px 22px 20px;transition:border-color .15s,box-shadow .15s}
.ns-card:hover{border-color:#B9C3CE;box-shadow:0 8px 24px rgba(19,35,58,.07)}
.ns-card h3{font-size:1.3125rem;margin:0 0 8px}
.ns-card p{color:var(--ns-muted);font-size:.9375rem;margin:0 0 16px}
.ns-card .ns-arrow,.ns-card .ns-soon{margin-top:auto;font-size:.875rem}
.ns-soon{color:var(--ns-muted);font-weight:600}
.ns-tiles{list-style:none;margin:0;padding:0;display:grid;gap:12px;grid-template-columns:repeat(2,minmax(0,1fr))}
@media (min-width:720px){.ns-tiles{grid-template-columns:repeat(3,1fr)}}
@media (min-width:1040px){.ns-tiles{grid-template-columns:repeat(5,1fr)}}
.ns-tile{background:#fff;border:1px solid var(--ns-line);border-radius:12px;padding:16px 16px 14px;scroll-margin-top:16px}
.ns-tile .ns-tile-k{font-size:.6875rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ns-jade);margin:0 0 6px}
.ns-tile h3{font-size:1.1875rem;margin:0 0 6px}
.ns-tile h3 a{color:var(--ns-ink);text-decoration:none}
.ns-tile p{font-size:.8125rem;color:var(--ns-muted);margin:0;line-height:1.45}
.ns-trust{display:grid;gap:28px}
@media (min-width:768px){.ns-trust{grid-template-columns:repeat(3,1fr);gap:40px}}
.ns-trust h3{font-size:1.25rem;margin:0 0 8px}
.ns-trust p{color:var(--ns-muted);margin:0 0 10px}
.ns-trust-ic{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:10px;background:var(--ns-jade-soft);color:var(--ns-jade);margin-bottom:14px}
.ns-trust-ic svg{width:20px;height:20px}

/* pages */
.ns-page-in{max-width:760px;padding-top:32px;padding-bottom:56px}
@media (min-width:768px){.ns-page-in{padding-top:48px}}
.ns-page-head{margin-bottom:32px;padding-bottom:20px;border-bottom:1px solid var(--ns-line)}
.ns-page-head h1{letter-spacing:-.012em}
.ns-page-head .ns-lede{margin-bottom:12px}
.ns-page-head .ns-source{margin:0}
.ns-crumbs{font-size:var(--ns-small);color:var(--ns-muted);margin-bottom:16px}
.ns-crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:4px}
.ns-crumbs li+li::before{content:"/";margin-right:4px;color:var(--ns-line)}
.ns-crumbs a{color:var(--ns-muted)}
.ns-prose{font-size:1.0625rem;line-height:1.7}
.ns-prose h2{margin-top:2em;font-size:1.5rem}
.ns-prose h3{margin-top:1.6em;font-size:1.1875rem}
.ns-prose ul,.ns-prose ol{padding-left:1.25em;margin:0 0 1.25em}
.ns-prose li{margin-bottom:.4em}
.ns-prose li::marker{color:var(--ns-muted)}
.ns-prose hr{border:0;border-top:1px solid var(--ns-line);margin:2em 0}
.ns-prose .ns-note{border-left:3px solid var(--ns-line);padding:2px 0 2px 14px;margin:0 0 1.5em}
.ns-prose .ns-note p:last-child{margin:0}
.ns-table{overflow-x:auto;margin:0 0 1.5em;border:1px solid var(--ns-line);border-radius:var(--ns-radius);background:var(--ns-panel)}
.ns-table table{width:100%;border-collapse:collapse;font-size:.9375rem;line-height:1.45}
.ns-table th,.ns-table td{padding:10px 12px;text-align:left;vertical-align:top;border-top:1px solid var(--ns-line)}
.ns-table thead th{background:var(--ns-chip);border-top:0;font-weight:700;white-space:nowrap}
.ns-table td.n{text-align:right;white-space:nowrap}
.ns-table th[scope=row] a{font-weight:700}
@media (max-width:639px){.ns-stack{border:0;background:none}.ns-stack table,.ns-stack tbody,.ns-stack tr,.ns-stack th,.ns-stack td{display:block}.ns-stack thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.ns-stack tr{background:var(--ns-panel);border:1px solid var(--ns-line);border-radius:var(--ns-radius);margin-bottom:12px;padding:6px 14px}.ns-stack th,.ns-stack td{border:0;padding:6px 0}
.ns-stack th[scope=row]{font-size:1.0625rem;padding-top:8px}.ns-stack td[data-label]::before{content:attr(data-label);display:block;font-size:var(--ns-small);color:var(--ns-muted);font-weight:700}}
.ns-log{list-style:none;margin:0 0 1.5em;padding:0}
.ns-log li{display:grid;grid-template-columns:7.5em 1fr;gap:12px;padding:12px 0;border-top:1px solid var(--ns-line)}
.ns-log time{font-family:var(--ns-font-num);font-size:.875rem;color:var(--ns-muted);padding-top:.15em}
.ns-log p{margin:0}
.ns-log-empty{color:var(--ns-muted)}
@media (max-width:479px){.ns-log li{grid-template-columns:1fr;gap:2px}}
.ns-list{padding-left:1.25em}
.ns-list-cols{columns:2 14em}
.ns-404 .ns-figure{color:var(--ns-muted);margin-bottom:12px}


/* byline: last, quiet */
.ns-byline{margin-top:48px;padding-top:12px;border-top:1px solid var(--ns-line);font-size:var(--ns-small);color:var(--ns-muted)}
.ns-byline p{margin:0}
.ns-byline a{color:var(--ns-muted)}

/* footer: navy, four columns */
.ns-foot{background:#13233A;color:#B8C3CF;padding:48px 0 28px;font-size:.9375rem}
.ns-foot-top{display:grid;gap:32px}
@media (min-width:768px){.ns-foot-top{grid-template-columns:1.5fr 1fr 1fr 1fr}}
.ns-foot .ns-brand{color:#fff;font-size:1.5rem}
.ns-foot .ns-brand-sg{color:#4FC9A8}
.ns-foot .ns-dot{background:#4FC9A8}
.ns-foot-brand p{margin:12px 0 0;max-width:24em;line-height:1.55}
.ns-foot h2{font-family:var(--ns-font-text);font-size:.75rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#fff;margin:0 0 10px}
.ns-foot ul{list-style:none;margin:0;padding:0}
.ns-foot li a{display:inline-flex;align-items:center;min-height:34px;color:#B8C3CF;text-decoration:none}
.ns-foot li a:hover{color:#fff;text-decoration:underline}
.ns-foot-fine{margin-top:36px;padding-top:18px;border-top:1px solid rgba(230,235,241,.14);font-size:.8125rem;color:#8E9BAA}
.ns-foot-fine p{margin:0 0 6px;max-width:64em}

@media print{.ns-nav,.ns-hsearch,.ns-foot{display:none}}
.ns-trust a{display:inline-flex;align-items:center;min-height:44px;font-weight:700;color:var(--ns-jade);text-decoration:none}.ns-trust a:hover{text-decoration:underline}
