/* inter-cyrillic-ext-400-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./inter-cyrillic-ext-400-normal-BQZuk6qB.woff2) format('woff2'), url(./inter-cyrillic-ext-400-normal-DQukG94-.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* inter-cyrillic-400-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./inter-cyrillic-400-normal-obahsSVq.woff2) format('woff2'), url(./inter-cyrillic-400-normal-HOLc17fK.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* inter-greek-ext-400-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./inter-greek-ext-400-normal-DGGRlc-M.woff2) format('woff2'), url(./inter-greek-ext-400-normal-KugGGMne.woff) format('woff');
  unicode-range: U+1F00-1FFF;
}

/* inter-greek-400-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./inter-greek-400-normal-B4URO6DV.woff2) format('woff2'), url(./inter-greek-400-normal-q2sYcFCs.woff) format('woff');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* inter-vietnamese-400-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./inter-vietnamese-400-normal-DMkecbls.woff2) format('woff2'), url(./inter-vietnamese-400-normal-Bbgyi5SW.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* inter-latin-ext-400-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./inter-latin-ext-400-normal-C1nco2VV.woff2) format('woff2'), url(./inter-latin-ext-400-normal-77YHD8bZ.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* inter-latin-400-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url(./inter-latin-400-normal-C38fXH4l.woff2) format('woff2'), url(./inter-latin-400-normal-CyCys3Eg.woff) format('woff');
  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;
}/* inter-cyrillic-ext-500-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./inter-cyrillic-ext-500-normal-B0yAr1jD.woff2) format('woff2'), url(./inter-cyrillic-ext-500-normal-BmqWE9Dz.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* inter-cyrillic-500-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./inter-cyrillic-500-normal-BasfLYem.woff2) format('woff2'), url(./inter-cyrillic-500-normal-CxZf_p3X.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* inter-greek-ext-500-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./inter-greek-ext-500-normal-C4iEst2y.woff2) format('woff2'), url(./inter-greek-ext-500-normal-2j5mBUwD.woff) format('woff');
  unicode-range: U+1F00-1FFF;
}

/* inter-greek-500-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./inter-greek-500-normal-BIZE56-Y.woff2) format('woff2'), url(./inter-greek-500-normal-Xzm54t5V.woff) format('woff');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* inter-vietnamese-500-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./inter-vietnamese-500-normal-DOriooB6.woff2) format('woff2'), url(./inter-vietnamese-500-normal-mJboJaSs.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* inter-latin-ext-500-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./inter-latin-ext-500-normal-CV4jyFjo.woff2) format('woff2'), url(./inter-latin-ext-500-normal-BxGbmqWO.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* inter-latin-500-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url(./inter-latin-500-normal-Cerq10X2.woff2) format('woff2'), url(./inter-latin-500-normal-BL9OpVg8.woff) format('woff');
  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;
}/* inter-cyrillic-ext-600-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./inter-cyrillic-ext-600-normal-Dfes3d0z.woff2) format('woff2'), url(./inter-cyrillic-ext-600-normal-Bcila6Z-.woff) format('woff');
  unicode-range: U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;
}

/* inter-cyrillic-600-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./inter-cyrillic-600-normal-CWCymEST.woff2) format('woff2'), url(./inter-cyrillic-600-normal-4D_pXhcN.woff) format('woff');
  unicode-range: U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;
}

/* inter-greek-ext-600-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./inter-greek-ext-600-normal-DRtmH8MT.woff2) format('woff2'), url(./inter-greek-ext-600-normal-B8X0CLgF.woff) format('woff');
  unicode-range: U+1F00-1FFF;
}

/* inter-greek-600-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./inter-greek-600-normal-plRanbMR.woff2) format('woff2'), url(./inter-greek-600-normal-BZpKdvQh.woff) format('woff');
  unicode-range: U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF;
}

/* inter-vietnamese-600-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./inter-vietnamese-600-normal-Cc8MFFhd.woff2) format('woff2'), url(./inter-vietnamese-600-normal-BuLX-rYi.woff) format('woff');
  unicode-range: U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;
}

/* inter-latin-ext-600-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./inter-latin-ext-600-normal-D2bJ5OIk.woff2) format('woff2'), url(./inter-latin-ext-600-normal-CIVaiw4L.woff) format('woff');
  unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

/* inter-latin-600-normal */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url(./inter-latin-600-normal-LgqL8muc.woff2) format('woff2'), url(./inter-latin-600-normal-CiBQ2DWP.woff) format('woff');
  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;
}/* ui/src/desk-ground.css — the desk ground + the --g-* compatibility tail, APP-OWNED.
   ============================================================================================
   This is the surviving content of workdesk/prototype/{styles,gallery-tokens}.css, moved here so
   ui/src/entry.js stops importing out of the legacy prototype directory. Nothing was redesigned;
   what came across is exactly what code still consumes, measured rather than eyeballed.

   WHAT WAS LEFT BEHIND, and why it was safe to drop:
   · styles.css's entire noir :root palette — 26 tokens (--wood-0..3, --ink/--ink-dim/--ink-faint,
     --amber/--amber-soft/--amber-glow, --manila/--manila-dark, --paper/--paper-ink,
     --sticky/--sticky-ink, --line/--line-strong, --good, --warn, --win/--win-bar,
     --sans/--type/--mono, --chats-rail-w). ZERO consumers in code.
   · 65 of gallery-tokens.css's 82 --g-* definitions. Same: zero consumers in code.

   ⚠️ The measurement that matters, because the naive version of it lies: scan only real source
   extensions. A grep for `var(--g-*)` across the tree reports ~37 consumed tokens, but 20 of those
   hits are MARKDOWN design notes discussing the tokens — prose about content, not content. Code
   consumes exactly the 17 defined below.

   ⛔ Do not add new --g-* consumers. New UI takes --macos-* from lib/theme/macos.css. This file is
   a tail, and it should shrink to nothing. */

/* ── theme-invariant compatibility tokens with no public kit equivalent ─────────────────── */
:root {
  /* ⭐ The app declaring its own fixed chrome to the kit (kit 4b3d7ce). A full-height edge drawer
     (Sheet side="right") starts at top: 0, but this shell's menu bar is 34px at a z-index above every
     overlay by design — measured: it painted over 33px of the ⚙ drawer's own 44px header, so its title
     was unreadable. The drawer cannot win that with z-index, and app CSS may not restore the geometry
     override the kit just replaced; §12 explicitly permits setting a kit TOKEN on a scope, which is
     this. It lives here, on :root, because the drawer is PORTALED to <body> — a token on a feature
     scope would never reach it.
     ⚠️ 34px is the kit MenuBar's own height (components/layout/MenuBar.svelte:285). If the kit ever
     changes that, this drifts silently — so the drawer capture asserts the header is fully unoccluded
     (ui/qa-evidence/sysmsg-drawer/receipts.json, key header.overlapPx) and fails loudly instead. */
  --macos-sheet-inset-top: 34px;
  --g-r-full: 999px;        /* pills, icon buttons, dots, avatars */
  --g-line-w: 1.5px;        /* the structural hairline weight */
  --g-track-caps: 0.07em;   /* em-based tracking for all-caps micro-labels */
  --g-space-1: 4px;         /* 8pt grid with a 4pt half-step */
  --g-space-2: 8px;
  --g-space-3: 12px;
  --g-space-4: 16px;
  --g-space-5: 24px;
  --g-space-6: 32px;
}

/* ── Gallery (light) — the default <html data-theme> ────────────────────────────────────── */
[data-theme='gallery'] {
  color-scheme: light; /* native chevrons, scrollbars, checkbox chrome and UA focus render light */
  --g-code-bg: #262219;
  --g-vibrancy-hi: rgba(255, 255, 255, 0.5); /* menu/popover top inner-light */
}

/* ── Nocturne (dark) — whenever the ☀/☾ menubar toggle flips data-theme ─────────────────── */
[data-theme='nocturne'] {
  color-scheme: dark;
  --g-code-bg: #100f0d;
  --g-vibrancy-hi: rgba(255, 255, 255, 0.06);
}

/* ── code-syntax palette — sits on the dark code body, identical in both themes ─────────── */
[data-theme='gallery'],
[data-theme='nocturne'] {
  --g-code-kw: #e0b289;   /* keyword     */
  --g-code-fn: #fdfbf4;   /* function    */
  --g-code-punc: #c9c0ab; /* punctuation */
  --g-code-tag: #a9cda8;  /* tag         */
  --g-code-attr: #e5cb8e; /* attribute   */
  --g-code-str: #de9e78;  /* string      */
}

/* ── the global ground the shell has always relied on ───────────────────────────────────── */
* {
  box-sizing: border-box;
}
[hidden] {
  display: none !important;
}
html,
body {
  height: 100%;
  margin: 0;
  overflow: hidden;
}
body {
  /* ⚠️ was `color: var(--g-text)` — port-7's reduction dropped that definition, so the
     declaration was resolving to nothing and body colour fell back to the UA initial (black),
     which is wrong under Nocturne. It takes the kit's label token, which is what every migrated
     surface already reads. */
  height: 100vh;
  font-family: var(--macos-font-sans, 'Inter', system-ui, sans-serif);
  color: var(--macos-label);
}

/* WD_ICONS — inline Lucide SVG compatibility hook */
.wd-ico {
  display: block;
  flex: none;
  color: inherit;
}

/* doc-20 #24/#20 — keyboard-focus ring for shared row-activated list rows (WD.wireRowActivate).
   ⚠️ was var(--g-accent), dropped by the same reduction; the kit accent is the live equivalent. */
.wd-rowbtn:focus-visible {
  outline: 2px solid var(--macos-accent);
  outline-offset: -2px;
}

  /* The Svelte shell owns the two fixed tab-tier hosts. AppTabStrip owns their visible chrome;
     these rules only reserve and place the rows around the workspace. */
  html {
    --menubar-h: 34px;
    /* The real regular ComboBox field paints at 32px and its focus shadow extends 3.5px per
       side. A 44px tier leaves 2.5px around the whole painted box instead of clipping it. */
    --spacebar-h: 44px;
    --tabstrip-h: 44px;
  }

  body {
    background-color: var(--macos-bg);
    background-image: radial-gradient(
      color-mix(in srgb, var(--macos-label-secondary) 42%, transparent) 1px,
      transparent 1.3px
    );
    background-position: -1px -1px;
    background-size: 22px 22px;
  }

  .menubar-host.svelte-1n46o8q {
    position: fixed;
    inset: 0 0 auto;
    z-index: 5000;
    height: var(--menubar-h);
  }

  .spaces.svelte-1n46o8q {
    position: fixed;
    top: calc(var(--menubar-h) + var(--spacebar-h) + var(--tabstrip-h));
    right: 0;
    bottom: var(--dock-h);
    left: 0;
    z-index: 10;
    overflow: hidden;
  }

  .spaces-track.svelte-1n46o8q {
    display: flex;
    width: 100%;
    height: 100%;
  }

  .space.svelte-1n46o8q {
    position: relative;
    width: 100%;
    height: 100%;
  }

  .windows.svelte-1n46o8q {
    position: absolute;
    inset: 0;
    pointer-events: none;
  }

  .windows.svelte-1n46o8q .tabtask {
    position: absolute;
    inset: 0;
    z-index: 50;
    display: flex;
    flex-direction: column;
    background: var(--macos-bg);
    pointer-events: auto;
  }

  .windows.svelte-1n46o8q .tabtask-body {
    min-height: 0;
    flex: 1;
    overflow: auto;
  }

  /* The tab-state adapter still creates this compatibility node imperatively. Keep its geometry
     with the windows host and use the kit SplitView's separator treatment until that adapter can
     render SplitView without changing its public ratio/drag contract. The z-index below is only a
     floor: the adapter lifts the divider onto the shared window counter (tabstrip raiseDivider),
     because both panes ride that counter and a fixed number sits under them. */
  .windows.svelte-1n46o8q #wd-split-divider {
    position: absolute;
    top: 0;
    bottom: 0;
    left: var(--wd-split, 50%);
    z-index: 3;
    width: 9px;
    transform: translateX(-50%);
    cursor: col-resize;
    pointer-events: auto;
  }

  .windows.svelte-1n46o8q #wd-split-divider::before {
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    width: 1px;
    content: '';
    transform: translateX(-50%);
    background: var(--macos-separator);
    transition:
      width var(--macos-duration-fast) var(--macos-ease),
      background-color var(--macos-duration-fast) var(--macos-ease);
  }

  .windows.svelte-1n46o8q #wd-split-divider:hover::before,
  .windows.svelte-1n46o8q #wd-split-divider.dragging::before {
    width: 3px;
    background: color-mix(in srgb, var(--macos-accent) 55%, var(--macos-separator));
  }

  .desktop.svelte-1n46o8q {
    position: absolute;
    inset: 0;
  }

  .folders.svelte-1n46o8q {
    position: absolute;
    top: 16px;
    bottom: 16px;
    left: 16px;
    display: flex;
    width: 210px;
    flex-direction: column;
    gap: 6px;
    overflow-y: auto;
  }

  .folders-global.svelte-1n46o8q {
    right: 16px;
    bottom: auto;
    left: auto;
    max-height: 60%;
    align-items: flex-end;
  }

  .folders-global.svelte-1n46o8q .folder-row-grid {
    justify-content: flex-end;
  }

  .desktabs.svelte-1n46o8q,
  .tabstrip.svelte-1n46o8q {
    position: fixed;
    right: 0;
    left: 0;
    display: flex;
    height: var(--spacebar-h);
    min-width: 0;
    align-items: stretch;
    overflow: hidden;
    background: var(--macos-bg-toolbar);
  }

  .desktabs.svelte-1n46o8q {
    top: var(--menubar-h);
    /* App chrome sits above the workspace (10) and below the kit floating layer (70+). */
    z-index: 42;
  }

  .tabstrip.svelte-1n46o8q {
    top: calc(var(--menubar-h) + var(--spacebar-h));
    z-index: 40;
    height: var(--tabstrip-h);
  }

  html[data-tab-layout='single-tier'],
  html[data-tab-layout='groups'] {
    --spacebar-h: 0px;
  }

  html[data-tab-layout='single-tier'] .desktabs.svelte-1n46o8q,
  html[data-tab-layout='groups'] .desktabs.svelte-1n46o8q {
    display: none;
  }

  /* Single-tier's kit AppTabStrip owns an overflow menu for long tab runs. The fixed host must
     not clip that menu below its row; Groups keeps its own searchable desk Popover instead. */
  html[data-tab-layout='single-tier'] .tabstrip.svelte-1n46o8q {
    overflow: visible;
  }

  @media (prefers-reduced-motion: reduce) {
    .windows.svelte-1n46o8q #wd-split-divider::before {
      transition: none;
    }
  }
