
/* TOKENS:BEGIN generated by scripts/build_design_tokens.py from docs/design/tokens/cvtailor.tokens.json. Do not edit by hand. */
:root{
  --cvt-bg-canvas:#F6F1E8;
  --cvt-bg-surface:#FFFDF9;
  --cvt-bg-sunken:#EEE6D9;
  --cvt-bg-inverse:#18201E;
  --cvt-bg-brand:#17463A;
  --cvt-bg-brand-soft:#E8F0E7;
  --cvt-bg-accent:#F2CF7A;
  --cvt-bg-accent-soft:#FBEFD3;
  --cvt-bg-disabled:#E7E1D6;
  --cvt-text-primary:#18201E;
  --cvt-text-secondary:#55615D;
  --cvt-text-label-accent:#7A4810;
  --cvt-text-link:#17463A;
  --cvt-text-brand-soft:#245041;
  --cvt-text-on-brand:#FFFFFF;
  --cvt-text-on-brand-muted:#D9E2DE;
  --cvt-text-on-brand-accent:#F2CF7A;
  --cvt-text-on-inverse:#FFFFFF;
  --cvt-text-on-inverse-muted:#C7CECB;
  --cvt-text-on-accent:#18201E;
  --cvt-text-disabled:#6E766F;
  --cvt-border-subtle:#D8D0C2;
  --cvt-border-control:#8F877A;
  --cvt-border-inverse:rgba(255,255,255,0.149);
  --cvt-border-danger:#A3312A;
  --cvt-action-primary-bg:#17463A;
  --cvt-action-primary-bg-hover:#0F3A2F;
  --cvt-action-primary-bg-pressed:#0B2E25;
  --cvt-action-primary-fg:#FFFFFF;
  --cvt-action-secondary-bg-hover:#EEE6D9;
  --cvt-action-accent-bg:#F2CF7A;
  --cvt-action-accent-bg-hover:#EBC25E;
  --cvt-action-danger-bg:#A3312A;
  --cvt-focus-ring:#18201E;
  --cvt-focus-ring-inverse:#F2CF7A;
  --cvt-status-success-fg:#17463A;
  --cvt-status-success-bg:#E8F0E7;
  --cvt-status-warning-fg:#7A4810;
  --cvt-status-warning-bg:#FBEFD3;
  --cvt-status-danger-fg:#A3312A;
  --cvt-status-danger-bg:#F8E4E0;
  --cvt-status-info-fg:#2F4F6B;
  --cvt-status-info-bg:#E4ECF2;
  --cvt-overlay-scrim:rgba(24,32,30,0.478);
  --cvt-font-display:"Roboto Condensed","Arial Narrow","Aptos Narrow",Inter,sans-serif;
  --cvt-font-ui:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --cvt-font-mono:"JetBrains Mono",ui-monospace,monospace;
  --cvt-type-display-1-family:var(--cvt-font-display);
  --cvt-type-display-1-size:80px;
  --cvt-type-display-1-line:0.95;
  --cvt-type-display-1-weight:700;
  --cvt-type-display-1-tracking:-0.035em;
  --cvt-type-display-2-family:var(--cvt-font-display);
  --cvt-type-display-2-size:56px;
  --cvt-type-display-2-line:1;
  --cvt-type-display-2-weight:700;
  --cvt-type-display-2-tracking:-0.03em;
  --cvt-type-title-family:var(--cvt-font-display);
  --cvt-type-title-size:32px;
  --cvt-type-title-line:1.1;
  --cvt-type-title-weight:700;
  --cvt-type-title-tracking:-0.02em;
  --cvt-type-heading-3-family:var(--cvt-font-ui);
  --cvt-type-heading-3-size:22px;
  --cvt-type-heading-3-line:1.25;
  --cvt-type-heading-3-weight:700;
  --cvt-type-heading-3-tracking:-0.01em;
  --cvt-type-heading-4-family:var(--cvt-font-ui);
  --cvt-type-heading-4-size:17px;
  --cvt-type-heading-4-line:1.35;
  --cvt-type-heading-4-weight:600;
  --cvt-type-heading-4-tracking:0;
  --cvt-type-lede-family:var(--cvt-font-ui);
  --cvt-type-lede-size:20px;
  --cvt-type-lede-line:1.5;
  --cvt-type-lede-weight:400;
  --cvt-type-lede-tracking:0;
  --cvt-type-body-family:var(--cvt-font-ui);
  --cvt-type-body-size:16px;
  --cvt-type-body-line:1.55;
  --cvt-type-body-weight:400;
  --cvt-type-body-tracking:0;
  --cvt-type-body-ui-family:var(--cvt-font-ui);
  --cvt-type-body-ui-size:15px;
  --cvt-type-body-ui-line:1.5;
  --cvt-type-body-ui-weight:400;
  --cvt-type-body-ui-tracking:0;
  --cvt-type-reading-family:var(--cvt-font-ui);
  --cvt-type-reading-size:18px;
  --cvt-type-reading-line:1.65;
  --cvt-type-reading-weight:400;
  --cvt-type-reading-tracking:0;
  --cvt-type-label-family:var(--cvt-font-ui);
  --cvt-type-label-size:14px;
  --cvt-type-label-line:1.3;
  --cvt-type-label-weight:600;
  --cvt-type-label-tracking:0;
  --cvt-type-button-family:var(--cvt-font-ui);
  --cvt-type-button-size:15px;
  --cvt-type-button-line:1.2;
  --cvt-type-button-weight:700;
  --cvt-type-button-tracking:0;
  --cvt-type-small-family:var(--cvt-font-ui);
  --cvt-type-small-size:13px;
  --cvt-type-small-line:1.45;
  --cvt-type-small-weight:400;
  --cvt-type-small-tracking:0;
  --cvt-type-eyebrow-family:var(--cvt-font-ui);
  --cvt-type-eyebrow-size:12px;
  --cvt-type-eyebrow-line:1.3;
  --cvt-type-eyebrow-weight:800;
  --cvt-type-eyebrow-tracking:0.12em;
  --cvt-type-mono-family:var(--cvt-font-mono);
  --cvt-type-mono-size:13px;
  --cvt-type-mono-line:1.5;
  --cvt-type-mono-weight:400;
  --cvt-type-mono-tracking:0;
  --cvt-space-1:4px;
  --cvt-space-2:8px;
  --cvt-space-3:12px;
  --cvt-space-4:16px;
  --cvt-space-5:20px;
  --cvt-space-6:24px;
  --cvt-space-8:32px;
  --cvt-space-10:40px;
  --cvt-space-12:48px;
  --cvt-space-16:64px;
  --cvt-space-20:80px;
  --cvt-radius-sm:6px;
  --cvt-radius-md:12px;
  --cvt-radius-lg:20px;
  --cvt-radius-xl:28px;
  --cvt-radius-pill:999px;
  --cvt-shadow-e1:0px 1px 2px 0px rgba(24,32,30,0.059),0px 4px 12px 0px rgba(24,32,30,0.059);
  --cvt-shadow-e2:0px 12px 32px -8px rgba(24,32,30,0.18);
  --cvt-shadow-e3:0px 24px 60px -12px rgba(24,32,30,0.278);
  --cvt-size-touch-min:44px;
  --cvt-size-control-sm:36px;
  --cvt-size-control-md:44px;
  --cvt-size-control-lg:52px;
  --cvt-size-container-max:1160px;
  --cvt-size-reading-max:68ch;
  --cvt-size-gutter-mobile:16px;
  --cvt-size-gutter-tablet:24px;
  --cvt-size-gutter-desktop:32px;
  --cvt-size-nav-height:64px;
  --cvt-size-nav-height-mobile:56px;
  --cvt-motion-duration-fast:120ms;
  --cvt-motion-duration-base:200ms;
  --cvt-motion-duration-slow:280ms;
  --cvt-motion-ease-standard:cubic-bezier(0.2,0,0,1);
}
/* TOKENS:END */

/* Responsive gutter (size.gutter-*), at the 600 / 900 breakpoints only. */
:root{--cvt-gutter:var(--cvt-size-gutter-mobile)}
@media (min-width:600px){:root{--cvt-gutter:var(--cvt-size-gutter-tablet)}}
@media (min-width:900px){:root{--cvt-gutter:var(--cvt-size-gutter-desktop)}}

/* ── Foundations (opt-in) ─────────────────────────────────────────────── */
.cvt-page{margin:0;background:var(--cvt-bg-canvas);color:var(--cvt-text-primary);font-family:var(--cvt-font-ui);font-size:var(--cvt-type-body-size);line-height:var(--cvt-type-body-line);-webkit-text-size-adjust:100%}
.cvt-page *,.cvt-page *::before,.cvt-page *::after{box-sizing:border-box}
.cvt-container{width:min(var(--cvt-size-container-max),100% - 2*var(--cvt-gutter));margin-inline:auto}
.cvt-visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Focus: 2px outline, 2px offset. Ink on light, gold on green or ink. */
/* Links and nav items carry their own ring, so they keep it on a page whose
   <body> is not .cvt-page yet. */
.cvt-page :focus-visible,.cvt-focusable:focus-visible,.cvt-link:focus-visible,.cvt-more:focus-visible,.cvt-brand:focus-visible,.cvt-navlinks a:focus-visible,.cvt-menu-sheet a:focus-visible,.cvt-bottomtabs a:focus-visible{outline:2px solid var(--cvt-focus-ring);outline-offset:2px}
.cvt-on-dark :focus-visible,.cvt-on-dark.cvt-focusable:focus-visible{outline-color:var(--cvt-focus-ring-inverse)}

/* ── Type ─────────────────────────────────────────────────────────────── */
.cvt-display-1,.cvt-display-2,.cvt-title{font-family:var(--cvt-font-display);font-weight:700;hyphens:auto;overflow-wrap:break-word;text-wrap:balance;margin:0}
.cvt-display-1{font-size:clamp(36px,10vw,52px);line-height:1;letter-spacing:var(--cvt-type-display-1-tracking)}
.cvt-display-2{font-size:clamp(30px,8.5vw,40px);line-height:1.05;letter-spacing:var(--cvt-type-display-2-tracking)}
.cvt-title{font-size:26px;line-height:var(--cvt-type-title-line);letter-spacing:var(--cvt-type-title-tracking)}
.cvt-heading-3{font:var(--cvt-type-heading-3-weight) 19px/var(--cvt-type-heading-3-line) var(--cvt-font-ui);letter-spacing:var(--cvt-type-heading-3-tracking);margin:0}
.cvt-heading-4{font:var(--cvt-type-heading-4-weight) var(--cvt-type-heading-4-size)/var(--cvt-type-heading-4-line) var(--cvt-font-ui);margin:0}
.cvt-lede{font-size:17px;line-height:var(--cvt-type-lede-line);color:var(--cvt-text-secondary);max-width:62ch;margin:0}
.cvt-reading{font-size:17px;line-height:var(--cvt-type-reading-line);max-width:var(--cvt-size-reading-max)}
.cvt-body{font-size:var(--cvt-type-body-size);line-height:var(--cvt-type-body-line)}
.cvt-body-ui{font-size:var(--cvt-type-body-ui-size);line-height:var(--cvt-type-body-ui-line)}
.cvt-label{font:var(--cvt-type-label-weight) var(--cvt-type-label-size)/var(--cvt-type-label-line) var(--cvt-font-ui)}
.cvt-small{font-size:var(--cvt-type-small-size);line-height:var(--cvt-type-small-line)}
.cvt-eyebrow{font:var(--cvt-type-eyebrow-weight) var(--cvt-type-eyebrow-size)/var(--cvt-type-eyebrow-line) var(--cvt-font-ui);letter-spacing:var(--cvt-type-eyebrow-tracking);text-transform:uppercase;color:var(--cvt-text-label-accent)}
.cvt-on-dark .cvt-eyebrow{color:var(--cvt-text-on-brand-accent)}
.cvt-mono{font:var(--cvt-type-mono-weight) var(--cvt-type-mono-size)/var(--cvt-type-mono-line) var(--cvt-font-mono)}
@media (min-width:600px){.cvt-title{font-size:var(--cvt-type-title-size)}.cvt-heading-3{font-size:var(--cvt-type-heading-3-size)}}
@media (min-width:900px){
  .cvt-display-1{font-size:var(--cvt-type-display-1-size);line-height:var(--cvt-type-display-1-line)}
  .cvt-display-2{font-size:var(--cvt-type-display-2-size);line-height:var(--cvt-type-display-2-line)}
  .cvt-lede{font-size:var(--cvt-type-lede-size)}
  .cvt-reading{font-size:var(--cvt-type-reading-size)}
}

/* ── Button ───────────────────────────────────────────────────────────── */
.cvt-btn{--cvt-btn-h:var(--cvt-size-control-md);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--cvt-space-2);min-height:var(--cvt-btn-h);min-width:var(--cvt-size-touch-min);padding:0 var(--cvt-space-5);border:1px solid transparent;border-radius:var(--cvt-radius-md);font:var(--cvt-type-button-weight) var(--cvt-type-button-size)/var(--cvt-type-button-line) var(--cvt-font-ui);text-align:center;text-decoration:none;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:background-color var(--cvt-motion-duration-fast) var(--cvt-motion-ease-standard),border-color var(--cvt-motion-duration-fast) var(--cvt-motion-ease-standard)}
.cvt-btn:focus-visible{outline:2px solid var(--cvt-focus-ring);outline-offset:2px}
.cvt-on-dark .cvt-btn:focus-visible,.cvt-btn--primary:focus-visible.cvt-on-dark{outline-color:var(--cvt-focus-ring-inverse)}
.cvt-btn--lg{--cvt-btn-h:var(--cvt-size-control-lg);padding:0 var(--cvt-space-6);font-size:16px}
.cvt-btn--block{display:flex;width:100%}
.cvt-btn--primary{background:var(--cvt-action-primary-bg);color:var(--cvt-action-primary-fg)}
.cvt-btn--primary:hover{background:var(--cvt-action-primary-bg-hover)}
.cvt-btn--primary:active{background:var(--cvt-action-primary-bg-pressed)}
.cvt-btn--secondary{background:transparent;color:var(--cvt-text-primary);border-color:var(--cvt-border-control)}
.cvt-btn--secondary:hover,.cvt-btn--ghost:hover{background:var(--cvt-action-secondary-bg-hover)}
.cvt-btn--ghost{background:transparent;color:var(--cvt-text-link);padding:0 var(--cvt-space-3)}
.cvt-btn--accent{background:var(--cvt-action-accent-bg);color:var(--cvt-text-on-accent)}
.cvt-btn--accent:hover{background:var(--cvt-action-accent-bg-hover)}
.cvt-btn--danger{background:var(--cvt-action-danger-bg);color:var(--cvt-text-on-brand)}
.cvt-btn--danger:hover{background:color-mix(in srgb,var(--cvt-action-danger-bg) 85%,var(--cvt-text-primary))}
.cvt-btn--icon{width:var(--cvt-size-touch-min);padding:0}
.cvt-btn--icon svg{width:20px;height:20px}
/* Desktop toolbars may draw 36px; the hit area stays 44px (design-system.md, Button). */
.cvt-btn--sm{--cvt-btn-h:var(--cvt-size-control-sm);padding:0 var(--cvt-space-3);min-width:var(--cvt-size-control-sm)}
.cvt-btn--sm::before{content:"";position:absolute;inset:50% auto auto 50%;width:max(100%,var(--cvt-size-touch-min));height:var(--cvt-size-touch-min);transform:translate(-50%,-50%)}
@media (max-width:599px){.cvt-btn--sm{--cvt-btn-h:var(--cvt-size-control-md)}}
.cvt-btn:disabled,.cvt-btn[aria-disabled="true"]{background:var(--cvt-bg-disabled);color:var(--cvt-text-disabled);border-color:transparent;cursor:not-allowed}
.cvt-btn[aria-busy="true"]{cursor:progress}
.cvt-spinner{width:16px;height:16px;flex:none;border-radius:50%;border:2px solid currentColor;border-right-color:transparent;animation:cvt-spin .8s linear infinite}
@keyframes cvt-spin{to{transform:rotate(1turn)}}

/* Inline and standalone links */
.cvt-link{color:var(--cvt-text-link);font-weight:600;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}
.cvt-link:hover{text-decoration-thickness:2px}
.cvt-more{display:inline-flex;align-items:center;gap:6px;min-height:var(--cvt-size-touch-min);color:var(--cvt-text-link);font-weight:700;text-decoration:none}
.cvt-more::after{content:"\2192";transition:transform var(--cvt-motion-duration-fast) var(--cvt-motion-ease-standard)}
.cvt-more:hover::after{transform:translateX(3px)}

/* ── Field ────────────────────────────────────────────────────────────── */
.cvt-field{display:grid;gap:6px;min-width:0}
.cvt-field__label{font:var(--cvt-type-label-weight) var(--cvt-type-label-size)/var(--cvt-type-label-line) var(--cvt-font-ui);color:var(--cvt-text-primary)}
.cvt-field__help{font-size:var(--cvt-type-small-size);line-height:var(--cvt-type-small-line);color:var(--cvt-text-secondary);margin:0}
.cvt-input,.cvt-textarea,.cvt-select{width:100%;min-height:var(--cvt-size-control-md);padding:10px var(--cvt-space-3);border:1px solid var(--cvt-border-control);border-radius:var(--cvt-radius-md);background:var(--cvt-bg-surface);color:var(--cvt-text-primary);font:400 16px/1.4 var(--cvt-font-ui);transition:border-color var(--cvt-motion-duration-fast) var(--cvt-motion-ease-standard)}
.cvt-textarea{min-height:120px;max-height:50vh;resize:vertical}
.cvt-select{appearance:none;padding-right:40px;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px;background-repeat:no-repeat}
.cvt-input:focus-visible,.cvt-textarea:focus-visible,.cvt-select:focus-visible{outline:2px solid var(--cvt-focus-ring);outline-offset:1px;border-color:var(--cvt-focus-ring)}
.cvt-input[aria-invalid="true"],.cvt-textarea[aria-invalid="true"],.cvt-select[aria-invalid="true"]{border:2px solid var(--cvt-border-danger);padding:9px 11px}
.cvt-input:disabled,.cvt-textarea:disabled,.cvt-select:disabled{background:var(--cvt-bg-disabled);color:var(--cvt-text-disabled);border-color:var(--cvt-bg-disabled);cursor:not-allowed}
.cvt-field__error{display:flex;gap:6px;margin:0;font-size:var(--cvt-type-small-size);line-height:var(--cvt-type-small-line);font-weight:600;color:var(--cvt-status-danger-fg)}
.cvt-field__error::before{content:"!";display:inline-grid;place-items:center;width:16px;height:16px;flex:none;margin-top:1px;border-radius:50%;background:var(--cvt-status-danger-fg);color:var(--cvt-text-on-brand);font-size:11px;font-weight:800}
.cvt-counter{justify-self:end;font:var(--cvt-type-mono-weight) 12px/1 var(--cvt-font-mono);color:var(--cvt-text-secondary)}
.cvt-counter.is-over{color:var(--cvt-status-danger-fg);font-weight:700}
/* File drop. The real <input type=file> sits inside, visually hidden but
   focusable, so the ring is drawn on the box with :focus-within. This is
   the component-level answer to Ticket 01 finding 15 (#doc-dropzone had no
   visible focus); the page itself moves onto it in Ticket 08. */
.cvt-drop{position:relative;display:grid;justify-items:center;gap:var(--cvt-space-1);min-height:120px;padding:var(--cvt-space-6) var(--cvt-space-4);border:1px dashed var(--cvt-border-control);border-radius:var(--cvt-radius-md);background:var(--cvt-bg-surface);text-align:center;cursor:pointer;transition:background-color var(--cvt-motion-duration-fast) var(--cvt-motion-ease-standard)}
.cvt-drop:hover,.cvt-drop.is-dragover{background:var(--cvt-bg-brand-soft);border-color:var(--cvt-bg-brand)}
.cvt-drop:focus-within{outline:2px solid var(--cvt-focus-ring);outline-offset:1px;border-style:solid;border-color:var(--cvt-focus-ring)}
.cvt-drop input[type="file"]{position:absolute;width:1px;height:1px;opacity:0;overflow:hidden}
.cvt-drop__title{font-weight:700}
.cvt-drop__hint{font-size:var(--cvt-type-small-size);color:var(--cvt-text-secondary)}
.cvt-drop[aria-invalid="true"],.cvt-drop.is-error{border:2px solid var(--cvt-border-danger)}
.cvt-drop.is-disabled{background:var(--cvt-bg-disabled);color:var(--cvt-text-disabled);border-color:var(--cvt-bg-disabled);cursor:not-allowed}

/* ── Panel ────────────────────────────────────────────────────────────── */
.cvt-panel{background:var(--cvt-bg-surface);border:1px solid var(--cvt-border-subtle);border-radius:var(--cvt-radius-lg);padding:var(--cvt-space-5);min-width:0}
.cvt-panel--sunken{background:var(--cvt-bg-sunken);border-color:transparent}
.cvt-panel--brand{background:var(--cvt-bg-brand);border-color:var(--cvt-bg-brand);color:var(--cvt-text-on-brand)}
.cvt-panel--brand .cvt-panel__text{color:var(--cvt-text-on-brand-muted)}
.cvt-panel--raised{box-shadow:var(--cvt-shadow-e1)}
.cvt-panel__head{display:flex;justify-content:space-between;align-items:center;gap:var(--cvt-space-3);margin-bottom:var(--cvt-space-3)}
.cvt-panel__title{font:var(--cvt-type-heading-4-weight) var(--cvt-type-heading-4-size)/var(--cvt-type-heading-4-line) var(--cvt-font-ui);margin:0}
.cvt-panel__text{margin:0;color:var(--cvt-text-secondary)}

/* ── Ledger: source, job, draft ───────────────────────────────────────── */
.cvt-ledger{display:grid;gap:var(--cvt-space-3)}
.cvt-ledger__item{min-width:0;padding:var(--cvt-space-4);border-radius:var(--cvt-radius-md);background:var(--cvt-bg-sunken)}
.cvt-ledger__item--draft{background:var(--cvt-bg-brand);color:var(--cvt-text-on-brand)}
.cvt-ledger__label{display:block;margin-bottom:6px;font:var(--cvt-type-eyebrow-weight) var(--cvt-type-eyebrow-size)/var(--cvt-type-eyebrow-line) var(--cvt-font-ui);letter-spacing:var(--cvt-type-eyebrow-tracking);text-transform:uppercase;color:var(--cvt-text-label-accent)}
.cvt-ledger__item--draft .cvt-ledger__label{color:var(--cvt-text-on-brand-accent)}
.cvt-ledger__text{margin:0;font-size:16px;line-height:1.55}
.cvt-ledger__item--draft .cvt-ledger__text{color:var(--cvt-text-on-brand)}
@media (min-width:900px){.cvt-ledger{grid-template-columns:1fr 1fr}.cvt-ledger__item--draft{grid-column:1/-1}}
.cvt-chip{display:inline-flex;align-items:center;gap:6px;min-height:24px;padding:2px 10px;border-radius:var(--cvt-radius-pill);font:700 12px/1.2 var(--cvt-font-ui)}
.cvt-chip--ok{background:var(--cvt-status-success-bg);color:var(--cvt-text-brand-soft)}
.cvt-chip--gap{background:var(--cvt-status-warning-bg);color:var(--cvt-status-warning-fg)}
.cvt-chip--neutral{background:var(--cvt-bg-sunken);color:var(--cvt-text-secondary)}

/* ── Navigation ───────────────────────────────────────────────────────── */
.cvt-topnav{display:flex;align-items:center;gap:var(--cvt-space-3);min-height:var(--cvt-size-nav-height-mobile);padding:0 var(--cvt-gutter);background:var(--cvt-bg-canvas);border-bottom:1px solid var(--cvt-border-subtle)}
@media (min-width:900px){.cvt-topnav{min-height:var(--cvt-size-nav-height)}}
.cvt-brand{display:inline-flex;align-items:center;gap:10px;min-height:var(--cvt-size-touch-min);min-width:var(--cvt-size-touch-min);margin-right:auto;color:var(--cvt-text-primary);font:700 18px/1 var(--cvt-font-ui);letter-spacing:-.02em;text-decoration:none}
.cvt-brand img,.cvt-brand svg{width:28px;height:28px;flex:none}
.cvt-navlinks{display:none;align-items:center;gap:var(--cvt-space-1)}
.cvt-navlinks a:not(.cvt-btn){display:inline-flex;align-items:center;min-height:var(--cvt-size-touch-min);padding:0 var(--cvt-space-3);border-radius:var(--cvt-radius-md);color:var(--cvt-text-primary);font-size:15px;font-weight:600;text-decoration:none}
.cvt-navlinks a:not(.cvt-btn):hover{background:var(--cvt-action-secondary-bg-hover)}
.cvt-navlinks a[aria-current]{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:6px}
.cvt-nav-actions{display:flex;align-items:center;gap:var(--cvt-space-2)}
.cvt-menu-sheet{padding:var(--cvt-space-2) var(--cvt-gutter) var(--cvt-space-4);background:var(--cvt-bg-surface);border-bottom:1px solid var(--cvt-border-subtle)}
.cvt-menu-sheet[hidden]{display:none}
.cvt-menu-sheet a{display:flex;align-items:center;min-height:var(--cvt-size-touch-min);border-bottom:1px solid var(--cvt-border-subtle);color:var(--cvt-text-primary);font-weight:600;text-decoration:none}
.cvt-menu-sheet a[aria-current]{color:var(--cvt-text-link)}
.cvt-menu-sheet a:focus-visible{outline-offset:-2px}
@media (min-width:1200px){.cvt-navlinks{display:flex}.cvt-menu-btn,.cvt-menu-sheet{display:none!important}}
.cvt-appbar{display:flex;align-items:center;gap:var(--cvt-space-3);min-height:var(--cvt-size-nav-height-mobile);padding:0 var(--cvt-gutter);background:var(--cvt-bg-surface);border-bottom:1px solid var(--cvt-border-subtle)}
.cvt-appbar__meta{margin-left:auto;font-size:14px;font-weight:600;color:var(--cvt-text-secondary);white-space:nowrap}
@media (max-width:599px){.cvt-appbar .cvt-brand__word{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}
.cvt-bottomtabs{display:flex;background:var(--cvt-bg-surface);border-top:1px solid var(--cvt-border-subtle);padding-bottom:env(safe-area-inset-bottom)}
.cvt-bottomtabs a{flex:1;display:grid;place-items:center;align-content:center;gap:2px;min-height:var(--cvt-size-nav-height-mobile);color:var(--cvt-text-secondary);font-size:12px;font-weight:600;text-decoration:none}
.cvt-bottomtabs a[aria-current]{color:var(--cvt-text-link);box-shadow:inset 0 2px 0 var(--cvt-bg-brand)}
.cvt-bottomtabs a:focus-visible{outline-offset:-2px}
.cvt-bottomtabs svg{width:20px;height:20px}
@media (min-width:600px){.cvt-bottomtabs{display:none}}

/* ── Tabs and segmented control ───────────────────────────────────────── */
.cvt-tablist{display:flex;gap:var(--cvt-space-1);overflow-x:auto;scrollbar-width:none;border-bottom:1px solid var(--cvt-border-subtle)}
.cvt-tablist::-webkit-scrollbar{display:none}
/* Fade only the edge that actually cuts a tab: cvt-ui.js sets is-cut-start /
   is-cut-end from the scroll position (design-system.md, Tabs). */
.cvt-tablist.is-cut-end{-webkit-mask-image:linear-gradient(90deg,black calc(100% - 32px),transparent);mask-image:linear-gradient(90deg,black calc(100% - 32px),transparent)}
.cvt-tablist.is-cut-start{-webkit-mask-image:linear-gradient(90deg,transparent,black 32px);mask-image:linear-gradient(90deg,transparent,black 32px)}
.cvt-tablist.is-cut-start.is-cut-end{-webkit-mask-image:linear-gradient(90deg,transparent,black 32px,black calc(100% - 32px),transparent);mask-image:linear-gradient(90deg,transparent,black 32px,black calc(100% - 32px),transparent)}
.cvt-tab{min-height:var(--cvt-size-touch-min);margin-bottom:-1px;padding:0 var(--cvt-space-4);border:0;border-bottom:2px solid transparent;background:none;color:var(--cvt-text-secondary);font:600 15px/1 var(--cvt-font-ui);white-space:nowrap;cursor:pointer}
.cvt-tab:hover{color:var(--cvt-text-primary)}
.cvt-tab[aria-selected="true"]{color:var(--cvt-text-primary);border-bottom-color:var(--cvt-bg-brand)}
.cvt-tab:focus-visible{outline:2px solid var(--cvt-focus-ring);outline-offset:-2px}
.cvt-tabpanel{padding:var(--cvt-space-4) 0}
.cvt-tabpanel[hidden]{display:none}
.cvt-segmented{display:inline-flex;gap:2px;padding:3px;border-radius:var(--cvt-radius-md);background:var(--cvt-bg-sunken)}
.cvt-segmented__btn{min-height:var(--cvt-size-touch-min);padding:0 var(--cvt-space-4);border:0;border-radius:9px;background:none;color:var(--cvt-text-secondary);font:600 14px/1 var(--cvt-font-ui);cursor:pointer}
.cvt-segmented__btn[aria-pressed="true"]{background:var(--cvt-bg-surface);color:var(--cvt-text-primary);box-shadow:var(--cvt-shadow-e1)}
.cvt-segmented__btn:focus-visible{outline:2px solid var(--cvt-focus-ring);outline-offset:-2px}

/* ── Dialog (>=600) and bottom sheet (<600) on native <dialog> ─────────── */
.cvt-dialog{width:min(440px,100% - 2*var(--cvt-space-4));max-height:85vh;margin:auto;padding:var(--cvt-space-6);border:0;border-radius:var(--cvt-radius-lg);background:var(--cvt-bg-surface);color:var(--cvt-text-primary);box-shadow:var(--cvt-shadow-e3);overflow:auto}
.cvt-dialog::backdrop{background:var(--cvt-overlay-scrim)}
.cvt-dialog[open]{animation:cvt-dialog-in var(--cvt-motion-duration-slow) var(--cvt-motion-ease-standard)}
@keyframes cvt-dialog-in{from{opacity:0;transform:translateY(8px)}}
.cvt-dialog__head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--cvt-space-3);margin-bottom:var(--cvt-space-2)}
.cvt-dialog__title{font:var(--cvt-type-heading-4-weight) var(--cvt-type-heading-4-size)/var(--cvt-type-heading-4-line) var(--cvt-font-ui);margin:0;padding-top:10px}
.cvt-dialog__body{color:var(--cvt-text-secondary)}
.cvt-dialog__body p{margin:0 0 var(--cvt-space-4)}
.cvt-dialog__actions{display:flex;flex-wrap:wrap-reverse;justify-content:flex-end;gap:var(--cvt-space-2);margin-top:var(--cvt-space-5)}
.cvt-grabber{display:none}
@media (max-width:599px){
  .cvt-dialog--sheet{width:100%;max-width:none;margin:auto 0 0;padding:var(--cvt-space-2) var(--cvt-space-4) calc(var(--cvt-space-4) + env(safe-area-inset-bottom));border-radius:var(--cvt-radius-lg) var(--cvt-radius-lg) 0 0}
  .cvt-dialog--sheet .cvt-grabber{display:block;width:36px;height:4px;margin:var(--cvt-space-1) auto var(--cvt-space-3);border-radius:2px;background:var(--cvt-border-control)}
  .cvt-dialog--sheet .cvt-dialog__actions{display:grid;justify-content:stretch}
  .cvt-dialog--sheet .cvt-dialog__actions .cvt-btn{width:100%}
  .cvt-dialog--sheet[open]{animation-name:cvt-sheet-in}
}
@keyframes cvt-sheet-in{from{transform:translateY(24px);opacity:.6}}

/* ── Feedback ─────────────────────────────────────────────────────────── */
.cvt-alert{display:grid;grid-template-columns:auto 1fr;gap:var(--cvt-space-3);padding:var(--cvt-space-3) var(--cvt-space-4);border:1px solid;border-radius:var(--cvt-radius-md);font-size:15px;line-height:1.5}
.cvt-alert__icon{width:20px;height:20px;margin-top:1px}
.cvt-alert__title{display:block;font-weight:700;color:var(--cvt-text-primary)}
.cvt-alert__text{margin:2px 0 0;color:var(--cvt-text-primary)}
.cvt-alert--info{background:var(--cvt-status-info-bg);color:var(--cvt-status-info-fg);border-color:color-mix(in srgb,var(--cvt-status-info-fg) 22%,var(--cvt-status-info-bg))}
.cvt-alert--success{background:var(--cvt-status-success-bg);color:var(--cvt-status-success-fg);border-color:color-mix(in srgb,var(--cvt-status-success-fg) 22%,var(--cvt-status-success-bg))}
.cvt-alert--warning{background:var(--cvt-status-warning-bg);color:var(--cvt-status-warning-fg);border-color:color-mix(in srgb,var(--cvt-status-warning-fg) 22%,var(--cvt-status-warning-bg))}
.cvt-alert--danger{background:var(--cvt-status-danger-bg);color:var(--cvt-status-danger-fg);border-color:color-mix(in srgb,var(--cvt-status-danger-fg) 22%,var(--cvt-status-danger-bg))}
.cvt-toast{display:flex;align-items:center;gap:var(--cvt-space-3);max-width:420px;padding:var(--cvt-space-3) var(--cvt-space-4);border-radius:var(--cvt-radius-md);background:var(--cvt-bg-inverse);color:var(--cvt-text-on-inverse);box-shadow:var(--cvt-shadow-e2);font-size:15px}
.cvt-toast .cvt-btn--ghost{margin-left:auto;color:var(--cvt-text-on-brand-accent)}
.cvt-toast .cvt-btn--ghost:hover{background:var(--cvt-border-inverse)}
.cvt-toast :focus-visible{outline-color:var(--cvt-focus-ring-inverse)}
.cvt-status{display:flex;align-items:center;gap:var(--cvt-space-2);font-size:14px;color:var(--cvt-text-secondary)}
.cvt-status__dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--cvt-border-control)}
.cvt-status--working .cvt-status__dot{background:var(--cvt-bg-brand);animation:cvt-pulse 1.2s var(--cvt-motion-ease-standard) infinite}
.cvt-status--done .cvt-status__dot{background:var(--cvt-status-success-fg)}
.cvt-status--error{color:var(--cvt-status-danger-fg)}
.cvt-status--error .cvt-status__dot{background:var(--cvt-status-danger-fg)}
@keyframes cvt-pulse{50%{opacity:.3}}
.cvt-progress{height:6px;border-radius:3px;background:var(--cvt-bg-sunken);overflow:hidden}
.cvt-progress__bar{display:block;height:100%;background:var(--cvt-bg-brand);transition:width var(--cvt-motion-duration-base) var(--cvt-motion-ease-standard)}
.cvt-skeleton{height:12px;margin:8px 0;border-radius:6px;background:linear-gradient(90deg,var(--cvt-bg-sunken),var(--cvt-bg-canvas),var(--cvt-bg-sunken));background-size:200% 100%;animation:cvt-shimmer 1.4s linear infinite}
@keyframes cvt-shimmer{to{background-position:-200% 0}}

/* ── List row ─────────────────────────────────────────────────────────── */
.cvt-list{margin:0;padding:0;list-style:none;background:var(--cvt-bg-surface);border:1px solid var(--cvt-border-subtle);border-radius:var(--cvt-radius-lg);overflow:hidden}
.cvt-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--cvt-space-1) var(--cvt-space-3);align-items:center;width:100%;min-height:64px;padding:var(--cvt-space-3) var(--cvt-space-4);border:0;border-top:1px solid var(--cvt-border-subtle);background:transparent;color:inherit;font:inherit;text-align:left;text-decoration:none;cursor:pointer}
.cvt-list>li:first-child>.cvt-row,.cvt-list>.cvt-row:first-child{border-top:0}
.cvt-row:hover{background:var(--cvt-bg-canvas)}
.cvt-row:focus-visible{outline:2px solid var(--cvt-focus-ring);outline-offset:-2px}
.cvt-row[aria-current],.cvt-row[aria-selected="true"],.cvt-row.is-selected{background:var(--cvt-bg-brand-soft)}
.cvt-row__title{min-width:0;overflow:hidden;font-weight:600;text-overflow:ellipsis;white-space:nowrap}
.cvt-row__meta{grid-column:1;font-size:var(--cvt-type-small-size);color:var(--cvt-text-secondary)}
.cvt-row__end{grid-row:1/span 2;grid-column:2;display:flex;align-items:center;gap:var(--cvt-space-2)}
.cvt-row__chevron{width:16px;height:16px;color:var(--cvt-text-secondary)}

/* ── Empty state ──────────────────────────────────────────────────────── */
.cvt-empty{padding:var(--cvt-space-10) var(--cvt-space-5);text-align:center;background:var(--cvt-bg-surface);border:1px dashed var(--cvt-border-control);border-radius:var(--cvt-radius-lg)}
.cvt-empty__icon{width:40px;height:40px;color:var(--cvt-text-label-accent)}
.cvt-empty__title{margin:var(--cvt-space-3) 0 var(--cvt-space-1);font:var(--cvt-type-heading-4-weight) var(--cvt-type-heading-4-size)/var(--cvt-type-heading-4-line) var(--cvt-font-ui)}
.cvt-empty__text{max-width:40ch;margin:0 auto var(--cvt-space-5);color:var(--cvt-text-secondary);font-size:15px}

/* ── Sticky action bar (phones; mobile.md "Sticky actions") ───────────── */
.cvt-sticky-bar{display:flex;align-items:center;gap:var(--cvt-space-2);padding:var(--cvt-space-2) var(--cvt-space-4) calc(var(--cvt-space-2) + env(safe-area-inset-bottom));background:var(--cvt-bg-surface);border-top:1px solid var(--cvt-border-subtle);box-shadow:var(--cvt-shadow-e2)}
.cvt-sticky-bar .cvt-btn{flex:1}
.cvt-sticky-bar__meta{flex:none;max-width:40%;font-size:var(--cvt-type-small-size);color:var(--cvt-text-secondary)}

/* ── Reduced motion: everything instant, spinners become static ───────── */
@media (prefers-reduced-motion:reduce){
  [class*="cvt-"],[class*="cvt-"]::before,[class*="cvt-"]::after,.cvt-dialog::backdrop{transition:none!important;animation:none!important}
  .cvt-spinner{border-right-color:currentColor;opacity:.6}
}
