/* ============================================================
   EVIDENT — components
   File 2 of 2 (see evident.css for tokens + shell). Loaded after
   evident.css so it inherits the same custom properties.
   Covers: buttons, inputs/fields, cards, table, workflow badges,
   evidence chips, KPI tile, empty state, auth card.
   ============================================================ */

/* ---------- Buttons ---------- */
.ev-btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:10px 18px;font:600 0.875rem/1 var(--font-body);
  border:1.5px solid transparent;border-radius:var(--radius-field);
  transition:border-radius .18s ease,background .15s ease,color .15s ease,border-color .15s ease;
  white-space:nowrap;
}
.ev-btn .icon{width:15px;height:15px;}
.ev-btn--primary{background:var(--color-primary);color:var(--color-primary-content);}
.ev-btn--primary:hover{background:var(--color-secondary);color:var(--color-secondary-content);}
.ev-btn--ghost{background:transparent;color:var(--color-primary);border-color:var(--color-primary);}
.ev-btn--ghost:hover{background:rgba(26,47,94,.06);}
[data-theme="evident-dark"] .ev-btn--ghost:hover{background:rgba(168,200,232,.08);}
.ev-btn--sm{padding:6px 12px;font-size:0.75rem;}
.ev-btn:disabled{opacity:.5;cursor:not-allowed;}
.ev-btn:disabled:hover{background:inherit;}

/* ---------- Shared keyboard-focus ring — never bare outline:none ---------- */
.ev-btn:focus-visible,
.ev-nav-item:focus-visible,
.ev-theme-toggle:focus-visible,
.ev-logout-btn:focus-visible,
.ev-toast-close:focus-visible{
  outline:none;box-shadow:0 0 0 3px var(--color-accent);
}

/* ---------- Fields / inputs ---------- */
.ev-field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--sp-4);}
.ev-field label{font:600 0.75rem/1.3 var(--font-body);letter-spacing:.03em;color:var(--color-base-content);opacity:.75;}
.ev-input{
  font-family:var(--font-body);font-size:0.9375rem;
  padding:10px 12px;border:1px solid var(--color-base-300);
  border-radius:var(--radius-field);background:var(--color-base-100);
  color:var(--color-base-content);box-shadow:var(--shadow-engrave);
  width:100%;
}
.ev-input:focus{border-color:var(--color-primary);}
.ev-input:focus-visible{outline:none;box-shadow:var(--shadow-engrave),0 0 0 3px var(--color-accent);}
.ev-input::placeholder{color:var(--color-base-content);opacity:.4;}
/* Backend-rendered form widgets (e.g. Django's AuthenticationForm) carry no
   .ev-input class — style bare inputs inside .ev-field so login/forms still
   pick up the field look without a Python-side widget edit. */
.ev-field input:not([type="hidden"]):not([type="checkbox"]):not([type="radio"]){
  font-family:var(--font-body);font-size:0.9375rem;
  padding:10px 12px;border:1px solid var(--color-base-300);
  border-radius:var(--radius-field);background:var(--color-base-100);
  color:var(--color-base-content);box-shadow:var(--shadow-engrave);
  width:100%;
}
.ev-field input:focus{border-color:var(--color-primary);}
.ev-field input:focus-visible{outline:none;box-shadow:var(--shadow-engrave),0 0 0 3px var(--color-accent);}
.ev-field-error{font-size:0.75rem;color:var(--color-error);}
.ev-field-hint{font-size:0.75rem;opacity:.6;}

/* ---------- Cards ---------- */
.ev-card{
  background:var(--color-base-100);
  border:1px solid var(--color-base-300);
  border-radius:var(--radius-card);
  box-shadow:var(--shadow-engrave);
  padding:var(--sp-6);
}
.ev-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;flex-wrap:wrap;}
.ev-card-head h2{font:600 1.25rem var(--font-brand);margin-top:4px;}

/* ---------- Table ---------- */
.ev-table-scroll{overflow-x:auto;}
.ev-table{table-layout:auto;min-width:100%;}
.ev-table th,.ev-table td{padding:10px 8px;border-bottom:1px solid var(--color-base-300);vertical-align:middle;text-align:left;}
.ev-table thead th{background:var(--color-base-200);font:600 0.6875rem var(--font-body);letter-spacing:.05em;text-transform:uppercase;opacity:.72;position:sticky;top:0;}
.ev-table tbody tr:hover{background:rgba(168,200,232,.14);}
.ev-table td.is-numeric,.ev-table th.is-numeric{text-align:right;font-feature-settings:var(--num-tabular);}
.ev-table--zebra tbody tr:nth-child(even){background:rgba(242,239,231,.4);}
[data-theme="evident-dark"] .ev-table--zebra tbody tr:nth-child(even){background:rgba(30,30,36,.4);}
.ev-table--compact th,.ev-table--compact td{padding:6px 8px;}
.ev-table tfoot td{font-weight:700;border-top:2px solid var(--color-secondary);border-bottom:none;}

/* ============================================================
   WORKFLOW-STATE BADGES — colour + icon + shape, never colour-alone
   ============================================================ */
.ev-badge{
  display:inline-flex;align-items:center;gap:6px;
  padding:3px 10px 3px 4px;font:500 0.75rem/1.3 var(--font-body);
  border-radius:var(--radius-pill);white-space:nowrap;
}
.ev-badge .icon{width:11px;height:11px;stroke-width:2.4;}
.ev-badge-mark{width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;}

.ev-badge--draft{border:1px dashed var(--color-base-300);background:transparent;color:var(--color-base-content);opacity:.85;}
.ev-badge--draft .ev-badge-mark{opacity:.7;}

.ev-badge--submitted{border:1px solid rgba(44,110,155,.35);background:rgba(44,110,155,.10);color:var(--color-info);}
.ev-badge--submitted .ev-badge-mark{color:var(--color-info);}

.ev-badge--verified{border:1px solid rgba(168,200,232,.5);background:rgba(168,200,232,.20);color:var(--color-primary);}
.ev-badge--verified .ev-badge-mark{color:var(--color-primary);}

.ev-badge--approved{background:var(--color-secondary);color:var(--color-secondary-content);border:1px solid var(--color-secondary);font-weight:700;}
.ev-badge--approved .ev-badge-mark{color:inherit;}

.ev-badge--returned{
  border:1px solid rgba(201,138,18,.4);background:rgba(201,138,18,.12);color:var(--color-warning);
  border-radius:4px var(--radius-pill) var(--radius-pill) 4px;padding-left:2px;
}
.ev-badge--returned .ev-badge-mark{color:var(--color-warning);}

/* ---------- Evidence chips ---------- */
.ev-chip{
  display:inline-flex;align-items:center;gap:6px;
  border:1px solid var(--color-base-300);border-radius:var(--radius-chip);
  padding:3px 9px;font-size:0.75rem;background:var(--color-base-200);
}
.ev-chip .icon{width:13px;height:13px;opacity:.7;}
.ev-chip .icon.is-ok{width:9px;height:9px;color:var(--color-success);opacity:1;stroke-width:2.8;}
.ev-chip.is-sensitive{border-style:solid;}
.ev-chip.is-sensitive .icon{color:var(--color-warning);opacity:1;}
.ev-chip--no-evidence{
  border:1px dashed var(--status-none);background:transparent;color:var(--color-warning);opacity:.9;font-weight:600;
}
.ev-chip--no-evidence .icon{color:var(--status-none);opacity:1;}

/* ---------- KPI tile ---------- */
.ev-kpi{display:flex;flex-direction:column;gap:8px;}
.ev-kpi-num{font:600 2rem/1 var(--font-brand);}
.ev-kpi-num .ev-kpi-of{font-size:1.125rem;opacity:.5;font-weight:500;}
.ev-kpi-delta{display:flex;align-items:center;gap:5px;font-size:0.8125rem;font-weight:500;}
.ev-kpi-delta .icon{width:13px;height:13px;}
.ev-kpi-delta.is-good{color:var(--color-success);}
.ev-kpi-delta.is-bad{color:var(--color-error);}
.ev-kpi-bar-track{height:8px;border-radius:99px;background:var(--color-base-300);position:relative;overflow:hidden;margin-top:4px;}
.ev-kpi-bar-fill{position:absolute;top:0;left:0;height:100%;background:var(--color-primary);}
.ev-kpi-bar-pending{position:absolute;top:0;height:100%;background-image:repeating-linear-gradient(45deg,var(--color-primary) 0 3px,transparent 3px 6px);opacity:.55;}

/* ============================================================
   EMPTY STATE — never blank
   ============================================================ */
.ev-empty{
  text-align:center;padding:var(--sp-16) var(--sp-6);
  background-image:repeating-linear-gradient(to bottom,transparent 0 27px,rgba(30,30,36,0.035) 27px 28px);
  border:1px dashed var(--color-base-300);border-radius:var(--radius-card);
}
.ev-empty-mark{
  width:48px;height:48px;margin:0 auto var(--sp-4);border-radius:50%;
  border:1.5px solid var(--color-secondary);display:flex;align-items:center;justify-content:center;
  background:var(--color-base-100);box-shadow:var(--shadow-engrave);
}
.ev-empty-mark .icon{width:22px;height:22px;color:var(--color-secondary);}
.ev-empty p{max-width:34rem;margin:0 auto var(--sp-4);font-size:0.9375rem;opacity:.72;line-height:1.55;}
.ev-empty .ev-btn{margin:0 auto;}
[data-theme="evident-dark"] .ev-empty{
  background-image:repeating-linear-gradient(to bottom,transparent 0 27px,rgba(236,234,227,0.05) 27px 28px);
}

/* ============================================================
   AUTH CARD (login.html — standalone page)
   ============================================================ */
.ev-auth-page{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:var(--color-base-200);padding:var(--sp-6);
  background-image:repeating-linear-gradient(to bottom,transparent 0 31px,rgba(30,30,36,0.03) 31px 32px);
}
[data-theme="evident-dark"] .ev-auth-page{
  background-image:repeating-linear-gradient(to bottom,transparent 0 31px,rgba(236,234,227,0.04) 31px 32px);
}
.ev-auth-card{
  width:100%;max-width:400px;background:var(--color-base-100);
  border:1px solid var(--color-base-300);border-radius:var(--radius-card);
  box-shadow:var(--shadow-engrave-strong);padding:var(--sp-8) var(--sp-6) var(--sp-6);
}
.ev-auth-brand{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:var(--sp-6);text-align:center;}
.ev-auth-seal{width:48px;height:48px;border-radius:50%;background:var(--color-primary);display:flex;align-items:center;justify-content:center;}
.ev-auth-seal .icon{width:24px;height:24px;color:var(--color-secondary);stroke-width:1.8;}
.ev-auth-brand-name{font:460 1.75rem/1 var(--font-display);color:var(--color-primary);}
.ev-auth-brand-tag{font-size:0.75rem;opacity:.6;margin-top:2px;}
.ev-auth-title{font:600 1.125rem var(--font-brand);margin-bottom:var(--sp-1);}
.ev-auth-sub{font-size:0.8125rem;opacity:.65;margin-bottom:var(--sp-6);}
.ev-auth-card .ev-btn{width:100%;margin-top:var(--sp-2);}
.ev-auth-errors{
  border:1px solid rgba(180,50,43,.35);background:rgba(180,50,43,.08);color:var(--color-error);
  border-radius:var(--radius-field);padding:10px 12px;font-size:0.8125rem;margin-bottom:var(--sp-4);
  display:flex;gap:8px;align-items:flex-start;
}
.ev-auth-errors .icon{width:14px;height:14px;flex:0 0 auto;margin-top:2px;}
.ev-auth-foot{text-align:center;margin-top:var(--sp-6);font-size:0.75rem;opacity:.55;}

@media (max-width:480px){
  .ev-auth-card{padding:var(--sp-6) var(--sp-4);}
}

/* ============================================================
   MODULE UI ADDITIONS — frameworks / workplans / finance
   (docs/05-design-language.md §5–6; mirrors mockups/framework.html
   and mockups/dashboard.html). Appended, tokens untouched.
   ============================================================ */

/* ---------- code / ref chip (result codes, refs — mono, §4) ---------- */
.ev-code-chip{
  display:inline-block;font:500 0.6875rem/1 var(--font-mono);
  font-feature-settings:var(--num-code);color:var(--color-primary);
  background:var(--color-base-200);border:1px solid var(--color-base-300);
  border-radius:var(--radius-chip);padding:3px 7px;letter-spacing:.02em;white-space:nowrap;
}

/* ---------- results tree ---------- */
.ev-tree{display:flex;flex-direction:column;}
.ev-tree-node{border-bottom:1px solid var(--color-base-300);}
.ev-tree-node:last-child{border-bottom:none;}
.ev-tree-node>summary{list-style:none;cursor:pointer;padding:12px 4px;display:flex;align-items:center;gap:10px;}
.ev-tree-node>summary::-webkit-details-marker{display:none;}
.ev-tree-chevron{transition:transform .15s ease;opacity:.5;flex:0 0 auto;}
.ev-tree-node[open]>summary .ev-tree-chevron{transform:rotate(180deg);}
.ev-node-title{flex:1;min-width:0;font-size:0.875rem;line-height:1.4;}
.ev-node-meta{flex:0 0 auto;}
.ev-tree-children{padding:2px 0 14px 28px;display:flex;flex-direction:column;gap:2px;}
.ev-tree-subhead{margin:10px 0 6px;}
.ev-indicator-row{display:flex;align-items:center;gap:10px;padding:8px;border-radius:var(--radius-field);}
.ev-indicator-row:hover{background:rgba(168,200,232,.14);}
.ev-indicator-title{flex:1;min-width:0;font-size:0.8125rem;}

/* ---------- RAG status chip — hue + icon + label, never colour-alone (§3.3) ---------- */
.ev-rag{display:inline-flex;align-items:center;gap:5px;padding:3px 9px 3px 7px;border-radius:var(--radius-pill);font:600 0.6875rem/1.5 var(--font-body);white-space:nowrap;border:1px solid transparent;}
.ev-rag .icon{width:11px;height:11px;}
.ev-rag--ontrack{background:rgba(46,125,87,.10);border-color:rgba(46,125,87,.35);color:var(--color-success);}
.ev-rag--constrained{background:rgba(201,138,18,.10);border-color:rgba(201,138,18,.35);color:var(--color-warning);}
.ev-rag--offtrack{background:rgba(180,50,43,.10);border-color:rgba(180,50,43,.35);color:var(--color-error);}
.ev-rag--none{background:rgba(138,133,120,.08);border-color:var(--status-none);border-style:dashed;color:var(--status-none);}

/* ---------- indicator detail ---------- */
.ev-detail-crumb{display:flex;align-items:center;gap:6px;font-size:0.75rem;opacity:.6;flex-wrap:wrap;}
.ev-detail-crumb .sep{opacity:.5;}
.ev-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 28px;margin-top:12px;}
.ev-meta-item.is-full{grid-column:1/-1;}
.ev-meta-label{font:600 0.6875rem/1.3 var(--font-body);letter-spacing:.05em;text-transform:uppercase;opacity:.55;margin-bottom:4px;}
.ev-meta-value{font-size:0.8125rem;line-height:1.5;}

.ev-evidence-policy{display:inline-flex;align-items:center;gap:5px;font:600 0.6875rem/1 var(--font-body);border-radius:var(--radius-pill);padding:4px 10px;}
.ev-evidence-policy .icon{width:12px;height:12px;}
.ev-evidence-policy--required{background:rgba(201,138,18,.12);color:var(--color-warning);}
.ev-evidence-policy--optional{background:var(--color-base-200);color:var(--color-base-content);opacity:.75;border:1px solid var(--color-base-300);}
.ev-evidence-policy--none{background:transparent;border:1px dashed var(--color-base-300);opacity:.6;}

.ev-stat-row{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:20px;}
.ev-stat-tile{background:var(--color-base-200);border:1px solid var(--color-base-300);border-radius:var(--radius-card);padding:14px 16px;box-shadow:var(--shadow-engrave);}
.ev-stat-label{font:600 0.6875rem/1.3 var(--font-body);letter-spacing:.05em;text-transform:uppercase;opacity:.6;}
.ev-stat-value{font:600 1.5rem/1.15 var(--font-brand);margin-top:6px;font-feature-settings:var(--num-tabular);}

.ev-range-bar{margin-top:18px;}
.ev-range-track{height:14px;border-radius:var(--radius-pill);background:var(--color-base-300);position:relative;overflow:hidden;}
.ev-range-fill{position:absolute;top:0;left:0;height:100%;border-radius:var(--radius-pill);background:var(--color-primary);opacity:.35;}
.ev-range-labels{display:flex;justify-content:space-between;margin-top:6px;font-size:0.75rem;opacity:.65;}

/* ---------- workplan status pill — distinct vocabulary from report
   workflow badges; bronze stays reserved for "approved" reports only (§6) ---------- */
.ev-wpstatus{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;font:600 0.75rem/1.3 var(--font-body);border-radius:var(--radius-pill);white-space:nowrap;}
.ev-wpstatus--draft{border:1px dashed var(--color-base-300);opacity:.8;}
.ev-wpstatus--signed{border:1px solid rgba(44,110,155,.35);background:rgba(44,110,155,.10);color:var(--color-info);}
.ev-wpstatus--active{border:1px solid rgba(46,125,87,.35);background:rgba(46,125,87,.10);color:var(--color-success);}
.ev-wpstatus--closed{border:1px solid var(--color-base-300);background:var(--color-base-200);opacity:.7;}

/* ---------- finance overview ---------- */
.ev-kpi-row{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-4);margin-bottom:var(--sp-6);}
.ev-section-gap{margin-top:var(--sp-6);}
.ev-util-track{height:8px;border-radius:99px;background:var(--color-base-300);overflow:hidden;margin-top:6px;min-width:90px;}
.ev-util-fill{height:100%;}
.ev-util-fill.is-ok{background:var(--color-success);}
.ev-util-fill.is-warn{background:var(--color-warning);}
.ev-util-fill.is-over{background:var(--color-error);}
.ev-expiry-flag{display:inline-flex;align-items:center;gap:5px;font-size:0.6875rem;font-weight:600;color:var(--color-warning);margin-top:3px;}
.ev-expiry-flag .icon{width:12px;height:12px;}

@media (max-width:900px){
  .ev-meta-grid{grid-template-columns:1fr;}
  .ev-stat-row{grid-template-columns:1fr;}
  .ev-kpi-row{grid-template-columns:1fr;}
}

/* ============================================================
   MODULE UI ADDITIONS — progress / assessments / exports
   (docs/05-design-language.md §5–7; mirrors mockups/dashboard.html
   and mockups/framework.html). Appended, tokens untouched.
   ============================================================ */

/* ---------- KPI row, 4-up (dashboard) ---------- */
.ev-kpi-row--4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--sp-4);margin-bottom:var(--sp-6);}
@media (max-width:1080px){.ev-kpi-row--4{grid-template-columns:repeat(2,1fr);}}
@media (max-width:560px){.ev-kpi-row--4{grid-template-columns:1fr;}}

/* ---------- dashboard two-column row ---------- */
.ev-grid-2{display:grid;grid-template-columns:1.35fr 1fr;gap:var(--sp-6);align-items:start;}
@media (max-width:1080px){.ev-grid-2{grid-template-columns:1fr;}}
.ev-section-stack{display:flex;flex-direction:column;gap:var(--sp-6);}

/* ---------- workflow trail (report_detail.html) ---------- */
.ev-stepper{display:flex;align-items:flex-start;margin-top:14px;gap:0;flex-wrap:wrap;}
.ev-step{flex:1;min-width:120px;position:relative;text-align:center;padding-top:2px;}
.ev-step-line{position:absolute;top:17px;left:-50%;width:100%;height:2px;background:var(--color-base-300);z-index:0;}
.ev-step:first-child .ev-step-line{display:none;}
.ev-step.is-done .ev-step-line{background:var(--color-secondary);}
.ev-step-badge-wrap{position:relative;z-index:1;display:flex;justify-content:center;margin-bottom:8px;}
.ev-step-actor{font:600 0.75rem/1.3 var(--font-body);}
.ev-step-role{font-size:0.6875rem;opacity:.6;margin-top:1px;}
.ev-step-date{font-size:0.6875rem;opacity:.55;margin-top:2px;font-feature-settings:var(--num-tabular);}

/* ---------- return-comment banner ---------- */
.ev-return-banner{
  display:flex;gap:10px;align-items:flex-start;margin-top:16px;padding:12px 14px;
  border:1px solid rgba(201,138,18,.4);background:rgba(201,138,18,.08);
  border-radius:0 var(--radius-field) var(--radius-field) 0;border-left:3px solid var(--color-warning);
}
.ev-return-banner .icon{width:16px;height:16px;color:var(--color-warning);flex:0 0 auto;margin-top:1px;}
.ev-return-banner-title{font:600 0.8125rem var(--font-body);color:var(--color-warning);}
.ev-return-banner-body{font-size:0.8125rem;line-height:1.5;margin-top:3px;}

/* ---------- action bar (allowed_actions buttons) ---------- */
.ev-action-bar{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px;}
.ev-action-form{display:inline;}
.ev-return-form{width:100%;margin-top:10px;display:flex;flex-direction:column;gap:8px;}
.ev-return-form textarea{min-height:72px;resize:vertical;}

/* ---------- inline rating form (assessments/cycle.html <details>) ---------- */
.ev-inline-form{
  display:flex;flex-direction:column;gap:8px;
  min-width:260px;margin-top:10px;padding:12px;
  border:1px solid var(--color-base-300);border-radius:var(--radius-field);
  background:var(--color-base-200);text-align:left;
}
.ev-inline-form select,
.ev-inline-form textarea{
  font-family:var(--font-body);font-size:0.8125rem;
  padding:8px 10px;border:1px solid var(--color-base-300);
  border-radius:var(--radius-field);background:var(--color-base-100);
  color:var(--color-base-content);width:100%;
}
.ev-inline-form textarea{resize:vertical;}
.ev-inline-form button{align-self:flex-start;}

/* ---------- evidence chip row (report_detail.html) ---------- */
.ev-evidence-list{display:flex;flex-direction:column;gap:10px;margin-top:4px;}
.ev-evidence-item{
  display:flex;align-items:center;gap:12px;padding:10px 12px;
  border:1px solid var(--color-base-300);border-radius:var(--radius-chip);background:var(--color-base-100);
}
.ev-evidence-icon{
  width:32px;height:32px;border-radius:var(--radius-chip);background:var(--color-base-200);
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;color:var(--color-primary);
}
.ev-evidence-info{flex:1;min-width:0;}
.ev-evidence-name{font:500 0.8125rem/1.3 var(--font-mono);word-break:break-all;}
.ev-evidence-caption{font-size:0.75rem;opacity:.6;margin-top:2px;}
.ev-evidence-status{display:flex;align-items:center;gap:6px;flex:0 0 auto;font:600 0.6875rem/1 var(--font-body);}
.ev-evidence-status .icon{width:13px;height:13px;}
.ev-evidence-status.is-verified{color:var(--color-success);}
.ev-evidence-status.is-pending{color:var(--color-warning);}
.ev-evidence-status .icon.is-lock{color:var(--color-base-content);opacity:.55;}

/* ---------- disaggregation table ---------- */
.ev-disagg-table th,.ev-disagg-table td{white-space:nowrap;}

/* ---------- calendar list (exports + dashboard dues) ---------- */
.ev-calendar-list{display:flex;flex-direction:column;}
.ev-calendar-item{display:flex;gap:14px;align-items:flex-start;padding:12px 0;border-bottom:1px solid var(--color-base-300);}
.ev-calendar-item:last-child{border-bottom:none;}
.ev-date-badge{width:46px;flex:0 0 auto;text-align:center;background:var(--color-base-200);border:1px solid var(--color-base-300);border-radius:var(--radius-field);padding:5px 0;}
.ev-date-badge .day{display:block;font:600 1.0625rem var(--font-brand);line-height:1;}
.ev-date-badge .mon{display:block;font-size:0.625rem;letter-spacing:.05em;text-transform:uppercase;opacity:.6;margin-top:2px;}
.ev-cal-body{flex:1;min-width:0;}
.ev-cal-body .title{font-size:0.875rem;font-weight:600;line-height:1.3;}
.ev-cal-body .ref{font-size:0.75rem;opacity:.55;margin-top:2px;}
.ev-cal-status{flex:0 0 auto;text-align:right;}
.ev-cal-status .caption{display:block;margin-top:4px;}

/* ---------- due chip — never colour alone ---------- */
.ev-due-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:var(--radius-pill);font-size:0.6875rem;font-weight:600;white-space:nowrap;border:1px solid transparent;}
.ev-due-chip .icon{width:11px;height:11px;stroke-width:2.4;}
.ev-due-chip--late{background:rgba(180,50,43,.12);color:var(--color-error);border-color:rgba(180,50,43,.35);}
.ev-due-chip--soon{background:rgba(201,138,18,.12);color:var(--color-warning);border-color:rgba(201,138,18,.35);}
.ev-due-chip--scheduled{background:rgba(44,110,155,.10);color:var(--color-info);border-color:rgba(44,110,155,.3);}
.ev-due-chip--submitted{background:rgba(46,125,87,.10);color:var(--color-success);border-color:rgba(46,125,87,.35);}

/* ---------- ITT / CSV download cards (exports/calendar.html) ---------- */
.ev-download-row{display:flex;flex-wrap:wrap;gap:14px;}
.ev-download-card{
  flex:1;min-width:220px;display:flex;align-items:center;gap:14px;
  border:1px solid var(--color-base-300);border-radius:var(--radius-card);
  background:var(--color-base-100);padding:16px;box-shadow:var(--shadow-engrave);
}
.ev-download-icon{
  width:40px;height:40px;border-radius:var(--radius-chip);background:var(--color-base-200);
  display:flex;align-items:center;justify-content:center;flex:0 0 auto;color:var(--color-primary);
}
.ev-download-info{flex:1;min-width:0;}
.ev-download-info .title{font:600 0.875rem var(--font-brand);}
.ev-download-info .caption{margin-top:2px;}
.ev-download-card .ev-btn{flex:0 0 auto;}

/* ---------- approval queue row (dashboard) ---------- */
.ev-approvals-list{display:flex;flex-direction:column;}
.ev-approval-row{display:flex;gap:16px;align-items:flex-start;padding:14px 0;border-bottom:1px solid var(--color-base-300);flex-wrap:wrap;}
.ev-approval-row:last-child{border-bottom:none;}
.ev-approval-office{flex:0 0 128px;}
.ev-approval-office .name{font:600 0.875rem var(--font-brand);}
.ev-approval-office .zone{display:block;font-size:0.6875rem;opacity:.55;margin-top:2px;}
.ev-approval-mid{flex:1;min-width:220px;}
.ev-approval-mid .title{font-size:0.875rem;font-weight:600;line-height:1.35;}
.ev-approval-mid .meta{font-size:0.75rem;opacity:.6;margin-top:3px;line-height:1.5;}
.ev-evidence-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px;}
.ev-approval-side{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:8px;}

/* ---------- output status row (dashboard results matrix) ---------- */
.ev-output-row td{vertical-align:middle;}
.ev-output-title{font-size:0.8125rem;line-height:1.4;max-width:26rem;}
.ev-output-vs{font-size:0.75rem;opacity:.65;}
.ev-mini-bar{width:80px;height:6px;border-radius:var(--radius-pill);background:var(--color-base-300);overflow:hidden;flex:0 0 auto;}
.ev-mini-bar>span{display:block;height:100%;background:var(--color-primary);border-radius:var(--radius-pill);}

/* ---------- progress list: period filter pills ---------- */
.ev-period-filter{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px;}
.ev-period-pill{
  display:inline-flex;align-items:center;gap:6px;padding:6px 14px;font:500 0.8125rem var(--font-body);
  border:1px solid var(--color-base-300);border-radius:var(--radius-pill);background:var(--color-base-100);
}
.ev-period-pill.is-active{background:var(--color-primary);color:var(--color-primary-content);border-color:var(--color-primary);font-weight:600;}

/* ---------- rating picker (assessments/cycle.html) ---------- */
.ev-rating-picker{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;}
.ev-rating-option{position:relative;}
.ev-rating-option input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer;}
.ev-rating-option span{
  display:inline-flex;align-items:center;padding:7px 14px;border:1px solid var(--color-base-300);
  border-radius:var(--radius-pill);font:500 0.8125rem var(--font-body);background:var(--color-base-100);
}
.ev-rating-option input:checked+span{background:var(--color-primary);color:var(--color-primary-content);border-color:var(--color-primary);font-weight:600;}
.ev-rating-option input:focus-visible+span{outline:none;box-shadow:0 0 0 3px var(--color-accent);}

/* ---------- lessons prompt (assessments) ---------- */
.ev-lessons-block{margin-top:14px;padding-top:14px;border-top:1px dashed var(--color-base-300);}
.ev-lessons-block label{display:block;font:600 0.75rem/1.3 var(--font-body);letter-spacing:.03em;opacity:.75;margin-bottom:6px;}
.ev-assessment-row{border-bottom:1px solid var(--color-base-300);padding:20px 0;}
.ev-assessment-row:last-child{border-bottom:none;}
.ev-assessment-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;}

/* ============================================================
   KNOWLEDGE SHOP — search, lesson cards, resource grid, collections
   (docs/01 §11; mirrors mockups/knowledge.html). Appended, tokens untouched.
   ============================================================ */
.ev-kshop-stats{display:flex;gap:var(--sp-8);margin:14px 0 var(--sp-6);}
.ev-kshop-stat-num{font:600 1.5rem var(--font-brand);font-feature-settings:var(--num-tabular);}
.ev-kshop-stat-label{font-size:0.75rem;opacity:.62;margin-top:2px;}

.ev-search-card{background:var(--color-base-200);border:1px solid var(--color-base-300);border-radius:var(--radius-card);box-shadow:var(--shadow-engrave);padding:var(--sp-6);margin-bottom:var(--sp-8);}
.ev-search-form{display:flex;gap:10px;}
.ev-search-form .ev-input{flex:1;}

.ev-tag-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;}
.ev-tag{font-size:0.6875rem;color:var(--color-base-content);opacity:.7;border:1px solid var(--color-base-300);border-radius:var(--radius-chip);padding:3px 9px;}

.ev-lesson-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--sp-6);margin-bottom:var(--sp-8);}
.ev-lesson-card{background:var(--color-base-100);border:1px solid var(--color-base-300);border-radius:var(--radius-card);box-shadow:var(--shadow-engrave);padding:var(--sp-6);display:flex;flex-direction:column;gap:12px;transition:border-color .15s ease;}
.ev-lesson-card:hover{border-color:var(--color-primary);}
.ev-lesson-top{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;}
.ev-office-badge{display:inline-flex;align-items:center;gap:5px;font-size:0.75rem;font-weight:600;color:var(--color-accent-content);background:color-mix(in srgb, var(--color-accent) 35%, transparent);border-radius:var(--radius-pill);padding:3px 10px;white-space:nowrap;}
.ev-lesson-title{font:600 1.0625rem/1.32 var(--font-brand);}
.ev-lesson-excerpt{font-size:0.875rem;opacity:.82;line-height:1.55;}
.ev-lesson-foot{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:12px;border-top:1px solid var(--color-base-300);}
.ev-endorse-count{display:flex;align-items:center;gap:6px;font-size:0.75rem;font-weight:600;color:var(--color-success);}
.ev-endorse-count .icon{width:14px;height:14px;}

.ev-resource-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:var(--sp-6);}
.ev-resource-card{background:var(--color-base-100);border:1px solid var(--color-base-300);border-radius:var(--radius-card);box-shadow:var(--shadow-engrave);padding:var(--sp-6);display:flex;flex-direction:column;gap:10px;}
.ev-resource-card:hover{border-color:var(--color-primary);}
.ev-resource-foot{display:flex;justify-content:space-between;align-items:center;margin-top:auto;padding-top:10px;border-top:1px solid var(--color-base-300);}

.ev-collection-rail{display:flex;gap:var(--sp-6);overflow-x:auto;padding-bottom:6px;}
.ev-collection-card{flex:0 0 260px;background:var(--color-base-100);border:1px solid var(--color-base-300);border-radius:var(--radius-card);box-shadow:var(--shadow-engrave);padding:var(--sp-4) var(--sp-6);}
.ev-collection-count{font-size:0.75rem;opacity:.6;margin-top:2px;}
.ev-collection-desc{font-size:0.8125rem;opacity:.82;margin-top:8px;line-height:1.45;}
