
  /* Figtree (SIL Open Font License 1.1, from @fontsource-variable/figtree):
     the Latin set as one variable font, weights 300 to 900. Built in here
     rather than loaded from Google, so the site asks no third party for
     anything (2026-09-26, with the sidebar). Every line of the data ends in
     a backslash: inside this template literal that joins the lines back
     into one, so the browser sees a single unbroken data URL. */
  @font-face {
    font-family: "Figtree"; font-style: normal; font-display: swap; font-weight: 300 900;
    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;
    src: url("data:font/woff2;base64,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") format("woff2");
  }
  :root {
    color-scheme: dark;
    /* 2026-09-28: the defaults are the Console palette, dark (theme.js;
       imhiding/Design/Console Style Sheet.md). A signed-in page layers the
       person's own palette and mode on top via #theme-style. */
    --bg: #0C0C0D;
    --bg-glow: none;
    --panel: #161618;
    --panel-2: #1E1E21;
    --border: #242427;
    --border-hi: #2E2E33;
    --text: #F2F2F0;
    --muted: #8C8C90;
    --accent: #B8F03C;
    --accent-dim: #28330F;
    --accent-deep: #161C08;
    --on-accent: #0C0C0D;
    --accent-2: #FF8A3D;
    --accent-2-ink: #FF8A3D;
    --ok: #B8F03C;
    /* The bottom bar went on 2026-09-26 (the nav is a sidebar now). Two
       things still add the old bar's height to this: the Transcripts player
       bar (+74px) and the Trips toast (+84px). It is set so they land just
       above the safe area instead of where the bar used to be. Tidy those
       two to plain safe-area offsets and delete this (open item
       nav-bar-offsets-tidy). */
    --tab-bottom: calc(env(safe-area-inset-bottom) - 58px);
    --warn: #F5D547;
    --danger: #FF5A5A;
    --danger-dim: #5C2626;
    --mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    --sans: Figtree, -apple-system, BlinkMacSystemFont, "SF Pro Text", system-ui, "Segoe UI", Roboto, sans-serif;
  }
  * { box-sizing: border-box; }
  ::selection { background: var(--accent-dim); color: var(--text); }
  html { -webkit-text-size-adjust: 100%; }
  body {
    font-family: var(--sans);
    margin: 0; padding: 0;
    background: var(--bg-glow), var(--bg);
    background-attachment: fixed;
    color: var(--text);
    line-height: 1.55;
    min-height: 100vh;
  }
  a { color: var(--accent); }
  /* ---- tick boxes and radios (2026-09-12). Nothing had ever styled these,
     so they fell through to the generic input/select/textarea rule far
     below (12px padding, 14px radius, width 100%) and rendered as a fat
     rounded blob — Ethan spotted it on "include ROOT" in Approvals. Placed
     HERE, near the top, on purpose: .switch input and .seg-opt input hide
     the native control and draw their own, and both have the same
     specificity as this rule, so they must come later in the file to keep
     winning. Do not move this block down. */
  input[type="checkbox"], input[type="radio"] {
    appearance: none; -webkit-appearance: none;
    width: 20px; height: 20px; flex: none; padding: 0; margin: 0;
    border-radius: 6px; background: var(--panel-2); border: 1.5px solid var(--border-hi);
    display: inline-grid; place-content: center; cursor: pointer; vertical-align: middle;
    transition: background 0.12s ease, border-color 0.12s ease;
  }
  input[type="radio"] { border-radius: 50%; }
  input[type="checkbox"]::before {
    content: ""; width: 11px; height: 11px; background: var(--on-accent);
    transform: scale(0); transition: transform 0.12s ease;
    clip-path: polygon(14% 46%, 0 60%, 40% 100%, 100% 18%, 86% 4%, 39% 72%);
  }
  input[type="radio"]::before {
    content: ""; width: 9px; height: 9px; border-radius: 50%; background: var(--on-accent);
    transform: scale(0); transition: transform 0.12s ease;
  }
  input[type="checkbox"]:checked, input[type="radio"]:checked { background: var(--accent); border-color: var(--accent); }
  input[type="checkbox"]:checked::before, input[type="radio"]:checked::before { transform: scale(1); }
  input[type="checkbox"]:focus-visible, input[type="radio"]:focus-visible {
    outline: none; border-color: var(--accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);
  }
  /* ---- the phone top bar and the sidebar (2026-09-26; layout.js sidebarHtml).
     Ethan chose the sidebar from the Claude Design mock-up. Phone first:
     below 700px the top bar carries a menu button, the logo and search, and
     the sidebar is a drawer that slides in over the page (the menu button,
     or a swipe in from the left edge). From 700px up there is no top bar;
     the sidebar is always there on the left, 248px wide, and collapses to a
     68px strip of icons (html.sb-collapsed, remembered per person). The
     bottom bar and the area sheets it opened are gone. The drawer state is
     a class on html, not body, because a swap rewrites body's class. */
  .nav-shared { position: absolute; width: 8px; height: 8px; border-radius: 4px; background: var(--accent); box-shadow: 0 0 0 2px var(--panel); }
  /* The phone top bar, 2026-09-29 (Ethan, from the motion canvas mock-up):
     menu left, the mark and Console centred, search right - three equal
     44px columns so the name sits in the true centre. Plain icons in the
     text colour, no boxes behind them. Console Style Sheet, Top bar. */
  header {
    display: grid; grid-template-columns: 44px 1fr 44px; align-items: center; gap: 8px;
    padding: 6px; padding-top: max(6px, env(safe-area-inset-top));
    border-bottom: 1px solid var(--border);
    position: sticky; top: 0; z-index: 5;
    background: color-mix(in srgb, var(--bg) 88%, transparent);
    backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  }
  header .brand, .sidebar .brand {
    font-family: var(--sans); font-weight: 700; font-size: 15px; letter-spacing: -0.01em;
    text-decoration: none; color: var(--text);
    display: flex; align-items: center; gap: 9px; flex: none; min-width: 0;
  }
  header .brand { justify-self: center; gap: 8px; letter-spacing: -0.03em; }
  header .brand .logo, .sidebar .brand .logo { height: 26px; width: 26px; flex: none; display: block; }
  .menu-btn, header .search-link, .sb-close {
    width: 42px; height: 42px; min-height: 0; padding: 0; margin: 0; flex: none;
    display: inline-flex; align-items: center; justify-content: center;
    border-radius: 14px; background: var(--panel); color: var(--text); border: none; box-shadow: none;
    text-decoration: none; cursor: pointer;
  }
  .menu-btn:hover, header .search-link:hover, .sb-close:hover { filter: none; background: var(--panel-2); }
  .menu-btn:active, .sb-close:active { transform: none; }
  .menu-btn svg, header .search-link svg, .sb-close svg { width: 21px; height: 21px; }
  header .menu-btn, header .search-link { width: 44px; height: 44px; border-radius: 12px; background: none; color: var(--text); }
  header .menu-btn svg, header .search-link svg { width: 22px; height: 22px; }
  .sidebar {
    position: fixed; top: 0; bottom: 0; left: 0; z-index: 80;
    width: min(300px, 84vw);
    display: flex; flex-direction: column;
    padding: max(14px, env(safe-area-inset-top)) 12px max(12px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
    background: var(--panel); border-right: 1px solid var(--border);
    box-shadow: 20px 0 60px rgba(0, 0, 0, 0.45);
    transform: translateX(-102%); visibility: hidden;
    transition: transform 0.28s cubic-bezier(0.22, 1, 0.36, 1), visibility 0.28s;
  }
  html.nav-open .sidebar { transform: none; visibility: visible; }
  .sb-backdrop {
    position: fixed; inset: 0; z-index: 79; margin: 0; padding: 0; min-height: 0;
    border: none; border-radius: 0; box-shadow: none;
    background: color-mix(in srgb, var(--bg) 60%, transparent);
    backdrop-filter: blur(2px); -webkit-backdrop-filter: blur(2px);
    opacity: 0; pointer-events: none; transition: opacity 0.25s ease;
  }
  .sb-backdrop:hover { filter: none; }
  .sb-backdrop:active { transform: none; }
  html.nav-open .sb-backdrop { opacity: 1; pointer-events: auto; }
  html.nav-open, html.nav-open body { overflow: hidden; }
  .sb-head { display: flex; align-items: center; gap: 10px; padding: 2px 4px 14px; flex: none; }
  .sb-head .brand { margin-right: auto; }
  .sb-nav {
    flex: 1; min-height: 0; overflow-y: auto; overscroll-behavior: contain; -webkit-overflow-scrolling: touch;
    display: flex; flex-direction: column; gap: 1px; margin: 0 -4px; padding: 0 4px 6px; scrollbar-width: thin;
  }
  .sb-link {
    position: relative; display: flex; align-items: center; gap: 12px; flex: none;
    min-height: 40px; padding: 0 12px; border-radius: 12px;
    color: var(--muted); text-decoration: none;
    font-family: var(--sans); font-size: 14.5px; font-weight: 500;
    transition: background 0.15s, color 0.15s;
  }
  .sb-link svg { width: 18px; height: 18px; flex: none; }
  .sb-link span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .sb-link:hover { color: var(--text); background: var(--panel-2); }
  .sb-link.active { color: var(--text); background: var(--accent-dim); font-weight: 600; }
  .sb-link.active svg { color: var(--accent); }
  .sb-link .nav-shared { position: static; margin-left: auto; flex: none; width: 6px; height: 6px; box-shadow: none; }
  .sb-group { display: flex; flex-direction: column; gap: 1px; margin-top: 16px; }
  .sb-group-title { font-size: 11px; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); padding: 0 12px 6px; white-space: nowrap; overflow: hidden; }
  .sb-foot { padding-top: 10px; margin-top: 8px; border-top: 1px solid var(--border); flex: none; }
  .sidebar .tools { display: flex; align-items: center; gap: 2px; flex: 1; min-width: 0; flex-wrap: wrap; }
  .sidebar .tools form.search { position: relative; flex: 1 1 100%; margin-bottom: 6px; }
  .sidebar .tools input.q {
    width: 100%; padding: 9px 10px 9px 34px; font-size: 14px; min-height: 0; border-radius: 12px;
    background: var(--panel-2) url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%237d8b93' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.3-4.3'/></svg>") 10px center no-repeat;
    border-color: var(--border);
  }
  .sidebar .tools .kbd { position: absolute; right: 10px; top: 50%; transform: translateY(-50%); font-family: var(--sans); font-size: 10.5px; color: var(--muted); border: 1px solid var(--border); border-radius: 4px; padding: 1px 5px; pointer-events: none; }
  .sidebar .tools a.icon, .sidebar .tools button.icon, .sb-collapse {
    color: var(--muted); display: inline-flex; align-items: center; justify-content: center; flex: none;
    width: 38px; height: 38px; min-height: 0; border-radius: 12px; text-decoration: none;
    background: none; border: none; box-shadow: none; padding: 0; margin: 0; font: inherit; cursor: pointer;
  }
  .sidebar .tools a.icon:hover, .sidebar .tools a.icon.active, .sidebar .tools button.icon:hover, .sb-collapse:hover { filter: none; color: var(--text); background: var(--panel-2); }
  .sidebar .tools button.icon:active, .sb-collapse:active { transform: none; }
  .sidebar .tools a.icon svg, .sidebar .tools button.icon svg, .sb-collapse svg { width: 19px; height: 19px; }
  .sidebar .tools a.icon.search-link { display: none; }
  .sidebar .tools .user { order: -1; flex: 1; min-width: 0; color: var(--text); font-family: var(--sans); font-size: 13.5px; font-weight: 600; margin: 0 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .sidebar .tools form.search { order: -2; }
  .sidebar .tools .pill { order: -1; }
  .sb-collapse-form { display: none; margin: 0; }
  @media (min-width: 700px) {
    header { display: none; }
    body { padding-left: 248px; }
    .sidebar {
      width: 248px; transform: none; visibility: visible; z-index: 8;
      background: var(--bg); box-shadow: none; padding-top: 18px;
      transition: width 0.2s ease;
    }
    .sb-backdrop, .sb-close { display: none; }
    .sb-collapse-form { display: block; }
    html.sb-collapsed .sidebar .tools { gap: 4px; }
    html.sb-collapsed body { padding-left: 68px; }
    html.sb-collapsed .sidebar { width: 68px; padding-left: 10px; padding-right: 10px; }
    html.sb-collapsed .sidebar .brand span,
    html.sb-collapsed .sb-link span,
    html.sb-collapsed .sb-link .nav-shared,
    html.sb-collapsed .sidebar .tools form.search,
    html.sb-collapsed .sidebar .tools .user,
    html.sb-collapsed .sidebar .tools .pill { display: none; }
    html.sb-collapsed .sb-head { justify-content: center; padding-left: 0; padding-right: 0; }
    html.sb-collapsed .sb-head .brand { margin: 0; }
    html.sb-collapsed .sb-link { justify-content: center; padding: 0; }
    html.sb-collapsed .sb-group-title { font-size: 0; height: 1px; padding: 0; margin: 0 8px 8px; background: var(--border); }
    html.sb-collapsed .sidebar .tools a.icon.search-link { display: inline-flex; }
    html.sb-collapsed .sidebar .tools { flex-direction: column; align-items: center; }
    html.sb-collapsed .sb-collapse svg { transform: scaleX(-1); }
  }

  /* on/off switch — shared by sections and Settings */
  .switch { position: relative; display: inline-block; width: 42px; height: 25px; flex: none; }
  .switch input { opacity: 0; width: 0; height: 0; position: absolute; }
  .switch .slider { position: absolute; inset: 0; background: var(--border-hi); border-radius: 999px; transition: background 0.15s ease; cursor: pointer; }
  .switch .slider::before { content: ""; position: absolute; width: 19px; height: 19px; left: 3px; top: 3px; background: #fff; border-radius: 50%; transition: transform 0.15s ease; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); }
  .switch input:checked + .slider { background: var(--accent); }
  .switch input:checked + .slider::before { transform: translateX(17px); }

  main { max-width: 1040px; margin: 0 auto; padding: 22px 14px calc(env(safe-area-inset-bottom) + 32px); }
  @media (min-width: 700px) { main { padding: 28px 28px 70px; } }

  /* Installed as an app (2026-09-12; reworked 2026-09-26 for the sidebar).
     The greeting line is dropped: the phone already frames the app. The
     top bar stays, because it carries the menu button. It is fully opaque
     with its blur off, which is what ios26-scroll-edge-effect-standalone
     found works: iOS 26 blurs whatever sits in the top strip of a Home
     Screen web app, and a flat opaque bar gives that effect a clean surface
     to act on. NB: no backticks in comments in this file, it is one big
     template literal and a backtick ends the string.
     2026-09-26, later: the bar itself still blurred, because iOS blurs a
     band a little taller than the status bar and the bar sat in it. So an
     empty opaque strip (body::before, safe area + 16px) takes that band,
     and the bar sits and sticks just below it. Still to be confirmed on
     the phone itself (ios26-scroll-edge-effect-standalone). */
  @media (display-mode: standalone) {
    body::before { content: ""; position: fixed; top: 0; left: 0; right: 0; height: calc(env(safe-area-inset-top, 0px) + 16px); background: var(--bg); z-index: 6; pointer-events: none; }
    header { top: calc(env(safe-area-inset-top, 0px) + 16px); margin-top: calc(env(safe-area-inset-top, 0px) + 16px); padding-top: 8px; background: var(--bg); backdrop-filter: none; -webkit-backdrop-filter: none; }
    .sidebar { padding-top: calc(env(safe-area-inset-top, 0px) + 24px); }
    .home-greeting h1 { display: none; }
    .home-greeting { margin-top: 0; }
  }
  /* Calm & minimal (2026-09-03): soft borderless cards, sans headings, no
     uppercase/mono labels. The old "$ prompt" in h1 is hidden rather than
     removed from every section's markup. */
  .card {
    background: var(--panel); border: none; border-radius: 20px;
    padding: 18px; margin-bottom: 12px;
    position: relative;
  }
  @media (min-width: 640px) { .card { padding: 20px; margin-bottom: 14px; } }
  .card.terminal { border-top: none; }
  h1 {
    font-family: var(--sans); font-size: 30px; font-weight: 700; letter-spacing: -0.03em; line-height: 1.1;
    margin: 6px 0 20px; color: var(--text); overflow-wrap: anywhere;
  }
  @media (min-width: 640px) { h1 { font-size: 34px; margin-bottom: 24px; } }
  h1 .prompt { display: none; }
  h1 .glow-badge { font-size: 12px; letter-spacing: 0; vertical-align: middle; position: relative; top: -4px; }
  h2 {
    font-family: var(--sans); font-size: 12px; font-weight: 500;
    margin: 0 0 12px; color: var(--muted); text-transform: none; letter-spacing: 0.01em;
  }
  .section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
  .section-head h2 { margin: 0; }
  table { width: 100%; border-collapse: collapse; font-size: 14px; }
  th, td { text-align: left; padding: 10px 8px; border-bottom: 1px solid var(--border); }
  th {
    font-family: var(--sans); font-weight: 500; color: var(--muted);
    font-size: 11.5px; text-transform: none; letter-spacing: 0.01em;
  }
  tr:hover td { background: color-mix(in srgb, var(--accent) 4%, transparent); }
  .muted { color: var(--muted); font-size: 13px; }
  .mono { font-family: var(--mono); }
  .num { font-family: var(--sans); font-variant-numeric: tabular-nums; letter-spacing: -0.01em; }
  .amount { font-variant-numeric: tabular-nums; text-align: right; font-family: var(--sans); letter-spacing: -0.01em; }
  label { display: block; font-family: var(--sans); font-size: 12px; font-weight: 500; text-transform: none; letter-spacing: 0.01em; color: var(--muted); margin: 0 0 6px; }
  .field { margin-bottom: 16px; }
  .field .hint { font-size: 12.5px; color: var(--muted); margin-top: 6px; }
  input, select, textarea {
    width: 100%; padding: 12px 14px; border: 1px solid transparent; border-radius: 14px;
    font-size: 16px; background: var(--panel-2); color: var(--text);
    font-family: var(--sans); margin: 0;
  }
  input[type="date"] { min-height: 46px; -webkit-appearance: none; appearance: none; }
  textarea { min-height: 90px; resize: vertical; line-height: 1.5; }
  input:focus, select:focus, textarea:focus {
    outline: none; border-color: var(--accent);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 18%, transparent);
  }
  input::placeholder, textarea::placeholder { color: var(--muted); opacity: 0.7; }
  button, .btn {
    background: var(--accent); color: var(--on-accent); border: none; border-radius: 22px;
    padding: 11px 18px; font-size: 14.5px; font-family: var(--sans); font-weight: 600;
    cursor: pointer; transition: box-shadow 0.15s, transform 0.05s;
    text-decoration: none; display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    min-height: 44px; line-height: 1;
  }
  button:hover, .btn:hover { filter: brightness(1.08); }
  button:active, .btn:active { transform: translateY(1px); }
  button.secondary, .btn.secondary {
    background: var(--panel-2); color: var(--text); border: none;
  }
  button.secondary:hover, .btn.secondary:hover { filter: none; background: var(--border); color: var(--text); }
  button.danger, .btn.danger { background: transparent; color: var(--danger); border: 1px solid var(--danger-dim); }
  button.danger:hover, .btn.danger:hover { filter: none; border-color: var(--danger); }
  button.small, .btn.small { padding: 7px 14px; font-size: 13px; min-height: 36px; border-radius: 18px; }
  .actions { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
  .actions .spacer { flex: 1; }
  .row-actions { white-space: nowrap; }
  .row-actions button { padding: 4px 10px; font-size: 12px; margin-left: 4px; }
  .error {
    color: var(--danger); font-size: 13.5px; margin-bottom: 12px;
    font-family: var(--sans); font-weight: 500; padding: 12px 14px; background: color-mix(in srgb, var(--danger) 10%, transparent);
    border: none; border-radius: 14px;
  }
  .notice {
    color: var(--accent); font-size: 13.5px; margin-bottom: 12px;
    font-family: var(--sans); font-weight: 500; padding: 12px 14px; background: color-mix(in srgb, var(--accent) 10%, transparent);
    border: none; border-radius: 14px;
  }
  form.inline { display: inline; }
  .empty { text-align: center; padding: 30px 0; color: var(--muted); font-family: var(--sans); font-size: 13.5px; }
  code, pre { font-family: var(--mono); }
  .back { font-family: var(--sans); font-size: 13px; font-weight: 500; color: var(--muted); text-decoration: none; display: inline-block; margin-bottom: 10px; }
  .back:hover { color: var(--accent); }
  .breadcrumbs { font-family: var(--sans); font-size: 13px; font-weight: 500; margin-bottom: 16px; color: var(--muted); overflow-wrap: anywhere; }
  .breadcrumbs a { color: var(--muted); text-decoration: none; }
  .breadcrumbs a:hover { color: var(--accent); }
  .breadcrumbs .sep { margin: 0 6px; opacity: 0.5; }
  .file-list { list-style: none; margin: 0; padding: 0; }
  .file-list li {
    display: flex; align-items: center; gap: 10px;
    padding: 12px 4px; border-bottom: 1px solid var(--border);
    font-family: var(--sans); font-size: 15px; font-weight: 500;
  }
  .file-list li:last-child { border-bottom: none; }
  .file-list a { color: var(--text); text-decoration: none; flex: 1; overflow-wrap: anywhere; }
  .file-list a:hover { color: var(--accent); }
  .file-list .icon { color: var(--muted); width: 18px; display: inline-block; text-align: center; flex: none; }
  .file-list .type-dir .icon { color: var(--accent); }
  .file-list .size { color: var(--muted); font-size: 12px; flex: none; }
  .md-content { font-family: var(--sans); font-size: 15px; line-height: 1.65; overflow-wrap: anywhere; }
  .md-content h1, .md-content h2, .md-content h3 { font-family: var(--sans); color: var(--text); text-transform: none; letter-spacing: normal; }
  .md-content h1 { font-size: 22px; margin: 20px 0 10px; }
  .md-content h2 { font-size: 18px; margin: 18px 0 8px; }
  .md-content h3 { font-size: 15px; margin: 16px 0 6px; }
  .md-content code { background: var(--panel-2); padding: 2px 5px; border-radius: 4px; font-size: 0.88em; color: var(--accent); }
  .md-content pre { background: var(--panel-2); padding: 12px 14px; border-radius: 6px; overflow-x: auto; border: 1px solid var(--border); }
  .md-content pre code { background: none; padding: 0; color: var(--text); }
  .md-content a { color: var(--accent); }
  .md-content ul, .md-content ol { padding-left: 22px; }
  .md-content blockquote { border-left: 3px solid var(--accent-dim); margin: 10px 0; padding: 2px 14px; color: var(--muted); }
  .md-content .table-wrap { overflow-x: auto; margin: 10px 0; -webkit-overflow-scrolling: touch; }
  .md-content table { margin: 0; min-width: 100%; }
  .md-content img { max-width: 100%; }
  .plain-file { white-space: pre-wrap; word-break: break-word; font-size: 13px; color: var(--text); max-height: 70vh; overflow-y: auto; margin: 0; }
  .commit-log { list-style: none; margin: 0; padding: 0; font-family: var(--mono); font-size: 12px; }
  .commit-log li { padding: 8px 0; border-bottom: 1px solid var(--border); color: var(--muted); overflow-wrap: anywhere; }
  .commit-log li:last-child { border-bottom: none; }
  .commit-log .sha { color: var(--accent); margin-right: 8px; }
  .commit-log .msg { color: var(--text); }
  .glow-badge {
    display: inline-block; font-family: var(--sans); font-size: 12px; font-weight: 500;
    color: var(--accent); background: color-mix(in srgb, var(--accent) 12%, transparent); border-radius: 999px;
    padding: 3px 10px; margin-left: 10px; vertical-align: middle;
  }
  /* ---- home dashboard (2026-09-03 calm & minimal): a greeting, then soft
     borderless tiles with one big number each; the first tile spans the
     full width. Sans throughout — the mono/uppercase treatment is gone
     here (the rest of the site follows in a later step). */
  .home-greeting { margin: 2px 0 20px; }
  .home-date { font-size: 13px; font-weight: 500; color: var(--muted); }
  .home-greeting h1 { font-family: var(--sans); font-size: 30px; font-weight: 700; letter-spacing: -0.03em; line-height: 1.1; margin: 4px 0 0; }
  @media (min-width: 640px) { .home-greeting h1 { font-size: 34px; } }
  /* 2026-09-23 (home-old-tile-css-unused): the old tile grid is gone from
     Home. Removed here: .home-grid, .tile-head, .tile.wide and .tile.soon,
     which nothing in src/ renders any more. Kept: .tile, .tile-stat and
     .tile-sub, because the Life page's stat cards and the Budget and Lenses
     Home bodies still use them. */
  .tile { background: var(--panel); border: none; border-radius: 20px; padding: 18px; text-decoration: none; color: var(--text); display: flex; flex-direction: column; gap: 6px; min-height: 128px; transition: background 0.15s, transform 0.1s; }
  .tile:hover { background: var(--panel-2); }
  .tile:active { transform: scale(0.985); }
  .tile .tile-stat { font-variant-numeric: tabular-nums; font-size: 24px; font-weight: 600; letter-spacing: -0.02em; line-height: 1.05; margin-top: 6px; overflow-wrap: anywhere; }
  .tile .tile-sub { font-size: 12.5px; color: var(--muted); line-height: 1.35; flex: 1; }
  /* ---- home groups (2026-09-07): tiles arranged by life area instead of
     one flat grid — a label, then up to two tiles per row. .tile itself is
     unchanged; these are the group wrapper plus the custom widget bodies
     a few tiles now return instead of the plain stat/sub pair (count-trio,
     lens grid, month dots, budget status, the system summary row). */
  .home-group { margin-bottom: 18px; break-inside: avoid; -webkit-column-break-inside: avoid; }
  .home-group:last-child { margin-bottom: 0; }
  /* 2026-09-07: on a phone, .home-groups is just a plain block — each group
     stacks full-width, same as always. From 900px the groups flow into a
     two-column masonry (CSS multi-column, not grid — groups vary in height
     so a balanced two-column read matters more than strict row alignment).
     break-inside: avoid on .home-group keeps one group's cards from being
     split across the column break. This is what stops a "wide" tile
     (Budget, Trains) or a two-tile group (Vehicles+Lenses) from stretching
     across the full desktop content width with mostly empty card — each
     group is now only as wide as one masonry column (~half that width). */
  @media (min-width: 900px) {
    .home-groups { column-count: 2; column-gap: 20px; }
  }
  .home-count-trio { display: flex; flex-direction: column; gap: 6px; margin-top: 6px; flex: 1; }
  .home-count-line { display: flex; justify-content: space-between; align-items: center; padding: 8px 10px; background: var(--panel-2); border-radius: 12px; }
  .home-count-label { font-size: 12.5px; font-weight: 500; color: var(--text); }
  .home-count-figure { font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; color: var(--ok); }
  .home-count-figure.warn { color: var(--warn); }
  .home-count-figure.danger { color: var(--danger); }
  .home-pair { display: flex; align-items: baseline; gap: 8px; margin-top: 6px; }
  .home-pair-num { font-size: 26px; font-weight: 700; letter-spacing: -0.02em; }
  /* 2026-09-07 (later still): was repeat(10, 1fr) — 3 rows for the full
     30-square reference, which at a typical count (17, say) made this
     tile noticeably taller than its Household group-mate (Vehicles) next
     to it in the desktop masonry column. Briefly tried a single
     proportional bar instead, but Ethan wanted the squares kept — just
     tidier. 15 columns instead of 10: the same 30-square, fill-to-your-
     count-then-hollow reference grid, just two rows instead of three. */
  .home-lens-grid { display: grid; grid-template-columns: repeat(15, 1fr); gap: 2px; margin-top: 10px; }
  .home-lens-grid i { height: 9px; border-radius: 2px; background: var(--warn); display: block; }
  .home-lens-grid.full i { background: var(--ok); }
  /* was class="empty" — collided with the sitewide .empty placeholder-text
     class (padding: 30px 0), which forced these squares to ~62px tall
     despite the explicit height: 9px above (box-sizing: border-box can't
     shrink a box below its own padding). Renamed to .hollow, scoped to this
     grid, so it can't collide with an unrelated global class again. */
  .home-lens-grid i.hollow { background: transparent; border: 1px solid var(--border-hi); }
  /* ---- Trains home tile (2026-09-07): time and platform side by side,
     picked from four mocked concepts — Ethan wanted platform and delay
     status readable without opening /trains. The small tag carries
     on-time/delayed/cancelled; the sub line adds the scheduled time and/or
     reason only when there's something to say. */
  .home-train-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 6px; }
  .home-train-time { font-size: 30px; font-weight: 700; letter-spacing: -0.02em; line-height: 1.05; }
  .home-train-time.warn { color: var(--warn); }
  .home-train-time.danger { color: var(--danger); }
  .home-train-plat-col { display: flex; flex-direction: column; align-items: center; gap: 6px; flex: none; }
  .home-train-plat {
    font-family: var(--mono); font-size: 15px; font-weight: 700; color: var(--text);
    background: var(--panel-2); border: 1px solid var(--border-hi); border-radius: 10px;
    padding: 5px 10px; min-width: 40px; text-align: center;
  }
  .home-train-was { font-size: 11px; color: var(--muted); font-weight: 500; }
  .home-train-tag {
    font-size: 10.5px; font-weight: 700; letter-spacing: 0.02em; text-transform: uppercase;
    padding: 2px 8px; border-radius: 999px; white-space: nowrap;
  }
  .home-train-tag.ok { color: var(--ok); background: color-mix(in srgb, var(--ok) 16%, transparent); }
  .home-train-tag.warn { color: var(--warn); background: color-mix(in srgb, var(--warn) 16%, transparent); }
  .home-train-tag.danger { color: var(--danger); background: color-mix(in srgb, var(--danger) 16%, transparent); }
  .home-train-sub { font-size: 12.5px; color: var(--muted); margin-top: 8px; line-height: 1.4; }
  .home-month-dots { display: flex; gap: 8px; margin-top: 12px; }
  .home-month-dot { width: 11px; height: 11px; border-radius: 50%; background: var(--border-hi); }
  .home-month-dot.done { background: var(--ok); }
  .home-month-dot.missing { background: var(--danger); }
  .home-month-dot.notyet { background: var(--border-hi); }
  .home-budget-status { display: flex; align-items: center; gap: 8px; margin-top: 6px; }
  .home-budget-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--ok); flex: none; }
  .home-budget-dot.warn { background: var(--warn); }
  .home-budget-dot.danger { background: var(--danger); }
  /* ---- home, "Today first" (2026-09-10): the layout Ethan picked from the
     Claude Design mockups. One Today card (Habits, Budget, Trains), then
     grouped list rows — icon chip, name, one line, figure on the right.
     .home-group / .home-groups above still do the spacing and the desktop
     two-column masonry. Black shadows on purpose: soft depth in light mode,
     invisible on the dark background. */
  .home-card { background: var(--panel); border-radius: 22px; overflow: hidden; box-shadow: 0 1px 1px rgba(0, 0, 0, 0.03), 0 8px 24px -12px rgba(0, 0, 0, 0.14); }
  .home-groups .home-group { margin-bottom: 24px; }
  .home-list-label { font-size: 13px; font-weight: 650; color: var(--text); margin: 0 4px 10px; }
  .home-today { padding: 4px 18px; }
  .home-today-item { display: flex; align-items: center; gap: 14px; padding: 14px 0; text-decoration: none; color: var(--text); }
  .home-today-item + .home-today-item { border-top: 1px solid var(--border); }
  .home-today-item.block { display: block; padding: 16px 0; }
  .home-today-head { display: flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 500; color: var(--muted); }
  .home-today-head svg { width: 14px; height: 14px; }
  .home-today-item.block .home-train-time { font-size: 38px; letter-spacing: -0.035em; }
  .home-today-title { font-size: 15px; font-weight: 600; }
  .home-today-sub { font-size: 12.5px; color: var(--muted); line-height: 1.35; }
  .home-today-figure { font-size: 18px; font-weight: 650; letter-spacing: -0.02em; font-variant-numeric: tabular-nums; white-space: nowrap; }
  .home-ring { position: relative; width: 44px; height: 44px; flex: none; }
  .home-ring svg { width: 44px; height: 44px; display: block; transform: rotate(-90deg); }
  .home-ring .track { stroke: var(--panel-2); }
  .home-ring .fill { stroke: var(--accent); }
  .home-ring span { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums; }
  .home-chip { width: 34px; height: 34px; border-radius: 11px; background: var(--panel-2); color: var(--text); display: flex; align-items: center; justify-content: center; flex: none; }
  .home-chip svg { width: 17px; height: 17px; }
  .home-chip.big { width: 44px; height: 44px; border-radius: 22px; }
  .home-chip.ok { background: color-mix(in srgb, var(--ok) 16%, transparent); color: var(--ok); }
  .home-chip.warn { background: color-mix(in srgb, var(--warn) 16%, transparent); color: var(--warn); }
  .home-chip.danger { background: color-mix(in srgb, var(--danger) 14%, transparent); color: var(--danger); }
  .home-chev { color: var(--border-hi); display: flex; flex: none; }
  .home-chev svg { width: 16px; height: 16px; }

  /* Home — Calendar's today timeline (2026-09-12). All-day entries are the
     quiet line at the top; timed ones are rows on a rail, the running one
     marked with a filled dot. */
  .home-agenda { display: flex; flex-direction: column; margin-top: 12px; }
  .home-agenda-allday { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--muted); padding-bottom: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .home-agenda-allday span { font-size: 10.5px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); border: 1px solid var(--border-hi); border-radius: 999px; padding: 2px 8px; flex: none; }
  .home-agenda-row { display: flex; align-items: flex-start; gap: 12px; }
  .home-agenda-time { font-size: 12.5px; font-weight: 600; color: var(--muted); font-variant-numeric: tabular-nums; width: 42px; flex: none; padding-top: 1px; }
  .home-agenda-rail { display: flex; flex-direction: column; align-items: center; align-self: stretch; flex: none; padding-top: 4px; }
  .home-agenda-dot { width: 7px; height: 7px; border-radius: 999px; background: var(--border-hi); flex: none; }
  .home-agenda-dot.now { width: 11px; height: 11px; background: var(--ok); box-shadow: 0 0 0 4px color-mix(in srgb, var(--ok) 16%, transparent); }
  .home-agenda-line { width: 1px; flex: 1; background: var(--border); margin-top: 4px; }
  .home-agenda-main { flex: 1; min-width: 0; display: flex; flex-direction: column; padding-bottom: 16px; }
  .home-agenda-main.last { padding-bottom: 0; }
  .home-agenda-title { font-size: 15px; font-weight: 600; }
  .home-agenda-sub { font-size: 12.5px; color: var(--muted); margin-top: 1px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  /* Home — the quiet strip (2026-09-12): every section that had nothing to
     say today, as an icon and a short label. */
  .home-chips { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 16px 6px; padding: 18px 14px; }
  .home-chip-cell { display: flex; flex-direction: column; align-items: center; gap: 6px; text-decoration: none; color: var(--text); }
  .home-chip-cell:hover .home-chip { background: var(--border-hi); }
  .home-chip-label { font-size: 10.5px; color: var(--muted); text-align: center; line-height: 1.2; min-height: 13px; }
  @media (max-width: 359px) { .home-chips { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
  .home-row-main { flex: 1; min-width: 0; display: flex; flex-direction: column; }
  .home-row { position: relative; display: flex; align-items: center; gap: 12px; padding: 12px 16px; min-height: 60px; text-decoration: none; color: var(--text); }
  .home-row + .home-row::before { content: ""; position: absolute; top: 0; left: 62px; right: 0; height: 1px; background: var(--border); }
  .home-row:hover { background: var(--panel-2); }
  .home-row-title { font-size: 15px; font-weight: 550; }
  .home-row-sub { font-size: 12.5px; color: var(--muted); margin-top: 1px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .home-row-value { font-size: 15px; font-weight: 600; font-variant-numeric: tabular-nums; white-space: nowrap; }
  .home-row-value.ok { color: var(--ok); }
  .home-row-value.warn, .home-row-value.danger { font-size: 10.5px; font-weight: 700; letter-spacing: 0.03em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; }
  .home-row-value.warn { color: var(--warn); background: color-mix(in srgb, var(--warn) 16%, transparent); }
  .home-row-value.danger { color: var(--danger); background: color-mix(in srgb, var(--danger) 14%, transparent); }
  .home-lens-grid.mini { width: 120px; margin-top: 6px; }
  .home-lens-grid.mini i { height: 5px; }
  .home-row-value .home-month-dots { margin-top: 0; }
  .pill { display: inline-block; font-family: var(--sans); font-size: 11.5px; font-weight: 500; border-radius: 999px; padding: 3px 9px; border: none; background: var(--panel-2); color: var(--muted); }
  .pill.accent { color: var(--accent); background: color-mix(in srgb, var(--accent) 12%, transparent); }
  .pill.warn { color: #f5b95a; background: color-mix(in srgb, #f5b95a 14%, transparent); }
  .pill.danger { color: var(--danger); background: color-mix(in srgb, var(--danger) 12%, transparent); }
  .list { display: flex; flex-direction: column; }
  .list-row { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--border); text-decoration: none; color: inherit; }
  .list-row:last-child { border-bottom: none; }
  .list-row:hover .row-title { color: var(--accent); }
  .row-title { font-size: 15px; font-weight: 500; color: var(--text); }
  .row-sub { font-size: 12px; color: var(--muted); margin-top: 2px; overflow-wrap: anywhere; }
  .row-right { text-align: right; white-space: nowrap; display: flex; align-items: center; gap: 10px; }
  .pencil { color: var(--muted); display: inline-flex; padding: 7px; border: none; background: var(--panel-2); border-radius: 10px; flex: none; }
  .pencil svg { width: 15px; height: 15px; }
  button svg, .btn svg { width: 16px; height: 16px; flex: none; }
  .btn, button { white-space: nowrap; }
  .list-row:hover .pencil { color: var(--accent); }
  /* a segmented control, shared by sections (Trains routes, Roadmap columns, Settings) */
  .seg { display: inline-flex; background: var(--panel-2); border-radius: 12px; padding: 3px; gap: 3px; margin: 4px 0; border: none; overflow: hidden; }
  .seg.full { display: flex; width: 100%; }
  .seg.full .seg-opt, .seg.full a { flex: 1; min-width: 0; }
  .seg.full a { padding: 9px 6px; font-size: 12.5px; overflow: hidden; text-overflow: ellipsis; }
  .seg-opt { position: relative; }
  .seg-opt input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; inset: 0; }
  .seg-opt span, .seg a { display: block; text-align: center; padding: 9px 14px; border-radius: 9px; font-family: var(--sans); font-size: 13px; font-weight: 600; color: var(--muted); text-decoration: none; white-space: nowrap; }
  .seg-opt:not(:first-child) span { border-left: none; }
  .seg-opt input:checked + span, .seg a.active { background: var(--text); color: var(--bg); }
  kbd { font-family: var(--mono); font-size: 11px; border: 1px solid var(--border-hi); border-radius: 4px; padding: 1px 5px; color: var(--muted); }
  /* Motion kit (2026-09-29, Ethan approved the "Console motion" canvas; the
     Console Style Sheet's Motion table is the source of these timings).
     Sections use these classes and variables rather than their own. With
     Reduce motion on, everything ends in the same place with no movement.
     NB: no backticks in comments here, this file is one template literal. */
  :root { --m-e: cubic-bezier(0.2, 0.8, 0.2, 1); --m-press: 120ms; --m-fl: 260ms; --m-unf: 340ms; --m-roll: 360ms; --m-fill: 500ms; --m-step: 40ms; }
  /* Arrive: fade and lift, staggered by --i (0, 1, 2 ...). A swap that stays
     on the same page sets html.imh-quiet, so a post coming back or a quiet
     refresh never replays it. .m-in is the same but always plays - for a
     panel a page script reveals itself. */
  .m-rise, .m-in { animation: m-rise var(--m-fl) var(--m-e) both; animation-delay: calc(var(--i, 0) * var(--m-step)); }
  @keyframes m-rise { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
  /* Grow: a bar filling as it arrives - left to right, or bottom up. */
  .m-grow { transform-origin: left center; animation: m-grow var(--m-fill) var(--m-e) both; animation-delay: calc(var(--i, 0) * var(--m-step)); }
  .m-grow-y { transform-origin: center bottom; animation: m-grow-y var(--m-fill) var(--m-e) both; animation-delay: calc(var(--i, 0) * var(--m-step)); }
  @keyframes m-grow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
  @keyframes m-grow-y { from { transform: scaleY(0); } to { transform: scaleY(1); } }
  /* Light: a strip of small marks coming on one after another, 12ms apart. */
  .m-lit { animation: m-lit var(--m-fl) var(--m-e) both; animation-delay: calc(var(--i, 0) * 12ms); }
  @keyframes m-lit { from { opacity: 0; } to { opacity: 1; } }
  html.imh-quiet .m-rise, html.imh-quiet .m-grow, html.imh-quiet .m-grow-y, html.imh-quiet .m-lit { animation: none; }
  /* Fold: a block that opens and shuts by height. .m-fold, one child
     .m-fold-in, and the class .open. For a details element, add data-m-fold
     and wrap everything after the summary in .m-fold-body (swap.js). */
  .m-fold { display: grid; grid-template-rows: 0fr; opacity: 0; transition: grid-template-rows var(--m-unf) var(--m-e), opacity var(--m-fl) var(--m-e); }
  .m-fold.open { grid-template-rows: 1fr; opacity: 1; }
  .m-fold > .m-fold-in { overflow: hidden; min-height: 0; }
  details[data-m-fold] > .m-fold-body { overflow: hidden; }
  /* Roll: a number that changes rolls its digits (window.__imhRoll). */
  .m-odo { display: inline-flex; white-space: pre; }
  .m-odo .m-d { display: inline-block; height: 1.15em; line-height: 1.15em; overflow: hidden; vertical-align: bottom; }
  .m-odo > span:not(.m-d) { display: inline-block; height: 1.15em; line-height: 1.15em; }
  .m-odo .m-c { display: flex; flex-direction: column; transition: transform var(--m-roll) var(--m-e); }
  .m-odo .m-c > span { display: block; height: 1.15em; line-height: 1.15em; text-align: center; }
  /* Change: words that change in place fade and lift to the new ones. The
     two names alternate so the same element can play it again. */
  .m-swap-a { animation: m-swap-a var(--m-fl) var(--m-e); }
  .m-swap-b { animation: m-swap-b var(--m-fl) var(--m-e); }
  @keyframes m-swap-a { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
  @keyframes m-swap-b { from { opacity: 0; transform: translateY(5px); } to { opacity: 1; transform: none; } }
  /* Sheet: a dialog opened as a bottom sheet slides up; its backdrop fades. */
  dialog.m-sheet[open] { animation: m-sheet var(--m-unf) var(--m-e); }
  dialog.m-sheet[open]::backdrop { animation: m-fade var(--m-fl) var(--m-e); }
  @keyframes m-sheet { from { transform: translateY(100%); } to { transform: none; } }
  @keyframes m-fade { from { opacity: 0; } to { opacity: 1; } }
  /* Heartbeat: a machine that is on (Devices). A slow, soft pulse out from
     its status dot, for as long as it is on - the one loop besides the logo
     cursor and live numbers (Ethan, 2026-09-29). */
  .m-beat { animation: m-beat 2.4s ease-in-out infinite; }
  @keyframes m-beat { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--ok) 55%, transparent); } 70%, 100% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--ok) 0%, transparent); } }
  /* Theme cross-fade (2026-09-29): swap.js sets html.imh-theming for about
     half a second when the theme changes, so every colour eases to the new
     one instead of repainting at once. Never set with Reduce motion on. */
  html.imh-theming, html.imh-theming *, html.imh-theming *::before, html.imh-theming *::after { transition: background-color 420ms var(--m-e), color 420ms var(--m-e), border-color 420ms var(--m-e), outline-color 420ms var(--m-e), fill 420ms var(--m-e), stroke 420ms var(--m-e), box-shadow 420ms var(--m-e) !important; }
  /* Slide: the pill of a segmented control moving to the chosen option. */
  .m-slide { transition: transform var(--m-unf) var(--m-e), width var(--m-unf) var(--m-e); }
  @media (prefers-reduced-motion: reduce) {
    .m-rise, .m-in, .m-grow, .m-grow-y, .m-lit, .m-swap-a, .m-swap-b, .m-beat, dialog.m-sheet[open], dialog.m-sheet[open]::backdrop { animation: none !important; }
    .m-fold, .m-odo .m-c, .m-slide, [data-mk], [data-mk] * { transition: none !important; }
  }
