/* DUAT · estils de les pàgines de mòdul amb dades reals (KPIs + taules).
   Auto-carregat per Dash des de /assets. Usa les variables --pt-* del tema. */

/* Fila de KPIs */
.pt-kpi-row { display:flex; flex-wrap:wrap; gap:14px; margin:18px 0 26px; }
.pt-kpi { flex:1 1 160px; background:var(--pt-surface); border:1px solid var(--pt-line);
  border-top:3px solid var(--pt-verd); border-radius:12px; padding:14px 16px; }
.pt-kpi-label { color:var(--pt-muted); font-size:.85rem; margin:0 0 4px; }
.pt-kpi-val { color:var(--pt-text); font-size:1.5rem; font-weight:600; line-height:1.1; }
.pt-kpi-sub { color:var(--pt-muted); font-size:.82rem; margin-top:3px; }
.pt-kpi.warn { border-top-color:var(--pt-warn); }
.pt-kpi.warn .pt-kpi-val { color:var(--pt-warn-dark); }
.pt-kpi.ok   { border-top-color:var(--pt-verd); }
.pt-kpi.gold { border-top-color:var(--pt-clay); }

/* Blocs de secció */
.pt-sec { background:var(--pt-surface); border:1px solid var(--pt-line);
  border-radius:12px; padding:18px 20px; margin-bottom:22px; }
.pt-sec h3 { color:var(--pt-text); font-size:1.05rem; font-weight:600;
  margin:0 0 4px; }
.pt-sec-sub { color:var(--pt-muted); font-size:.875rem; margin:0 0 14px; line-height:1.5; }

/* Taules */
.pt-table { width:100%; border-collapse:collapse; font-size:.86rem; }
.pt-table th { text-align:left; color:var(--pt-muted); font-weight:600;
  border-bottom:2px solid var(--pt-line); padding:9px 10px; white-space:nowrap; }
.pt-table td { border-bottom:1px solid var(--pt-line); padding:7px 10px;
  color:var(--pt-text); }
.pt-table td.num { text-align:right; font-variant-numeric:tabular-nums; }
.pt-table tr:hover td, .pt-table tbody tr:hover td { background:var(--pt-soft); }

/* Semàfor de risc (colors amb contrast >=3:1 sobre surface/soft/bg) */
.pt-dot { display:inline-block; width:9px; height:9px; border-radius:50%;
  margin-right:6px; vertical-align:middle; }
.pt-dot.r { background:var(--pt-warn); } .pt-dot.a { background:var(--pt-ambre-fosc); }
.pt-dot.g { background:var(--pt-verd); }
.pt-dot.n { background:var(--pt-muted); }   /* neutre: sense font de seguiment */

/* Panell de casaments (formularis de vincle) */
.pt-cas-form { display:flex; flex-wrap:wrap; gap:12px; align-items:flex-end; }
.pt-cas-col { flex:1 1 260px; min-width:220px; }
.pt-cas-form .pt-btn { flex:0 0 auto; height:38px; }
.pt-cas-fb { margin-top:10px; }
.pt-cas-ok { display:inline-block; background:var(--pt-verd-pastel);
  color:var(--pt-verd-dark); border:1px solid var(--pt-verd); border-radius:8px;
  padding:8px 12px; font-weight:500; }
.pt-cas-err { display:inline-block; background:var(--pt-clay-pastel);
  color:var(--pt-warn-dark); border:1px solid var(--pt-warn); border-radius:8px;
  padding:8px 12px; font-weight:500; }
.pt-cas-mgmt-link { display:inline-block; margin:4px 0 8px; color:var(--pt-verd);
  font-weight:500; text-decoration:none; }
.pt-cas-mgmt-link:hover { text-decoration:underline; color:var(--pt-verd-dark); }

/* Nota de qualitat de dada / peu */
.pt-datanote { color:var(--pt-muted); font-size:.875rem; margin-top:6px;
  font-style:italic; line-height:1.5; }

/* Enllaç de retorn a l'inici (capçalera de tots els mòduls) */
.pt-back-link { display:inline-block; color:var(--pt-verd); text-decoration:none;
  font-size:.85rem; font-weight:500; margin-bottom:10px; }
.pt-back-link:hover { text-decoration:underline; color:var(--pt-verd-dark); }

/* ══════════════════════════════════════════════════════════════════════════
   SISTEMA DE DISSENY (línia MIDGARD) — profunditat, radius i jerarquia.
   Aquest fitxer es carrega DESPRÉS del _THEME_CSS injectat a app.py, així que
   a igual especificitat aquestes regles manen.
   ══════════════════════════════════════════════════════════════════════════ */
:root {
  /* Ombres bi-capa idèntiques a les de MIDGARD (profunditat subtil) */
  --pt-shadow:     0 1px 2px rgba(38,36,32,0.04), 0 4px 16px rgba(38,36,32,0.06);
  --pt-shadow-hov: 0 2px 6px rgba(38,36,32,0.07), 0 12px 30px rgba(38,36,32,0.10);
  /* Dos nivells de radius (cards grans / elements inline), com MIDGARD */
  --pt-radius:    14px;
  --pt-radius-sm:  9px;
}

/* Profunditat: totes les superfícies-targeta floten sobre el fons */
.pt-kpi, .pt-sec, .pt-home-tile, .pt-home-card,
.pt-mod-card, .pt-form-card, .pt-login-card { box-shadow: var(--pt-shadow); }
.pt-home-tile:hover { box-shadow: var(--pt-shadow-hov); transform: translateY(-2px);
  border-left-color: var(--pt-verd-dark); }

/* Radius sistematitzat: 14px cards · 9px inline */
.pt-kpi, .pt-sec, .pt-home-card, .pt-login-card,
.pt-mod-card, .pt-form-card, .pt-home-tile { border-radius: var(--pt-radius); }
.pt-nav-link, .pt-legal, .pt-role-badge, .pt-mod-soon { border-radius: var(--pt-radius-sm); }

/* KPI: contrast tipogràfic label petit en caps / valor gran (patró MIDGARD) */
.pt-kpi-label { font-size:.72rem; font-weight:600; text-transform:uppercase;
  letter-spacing:.6px; margin:0 0 6px; }
.pt-kpi-val { font-size:1.75rem; letter-spacing:-.5px; line-height:1.05; }

/* Capçalera de mòdul: ancoratge amb línia + filet verd (com .page-header) */
.pt-mod-head { padding-bottom:14px; margin-bottom:14px;
  border-bottom:1px solid var(--pt-line); position:relative; }
.pt-mod-head::after { content:""; position:absolute; left:0; bottom:-1px;
  width:44px; height:3px; background:var(--pt-verd); border-radius:3px; }
.pt-mod-title { font-size:1.4rem; letter-spacing:-.2px; line-height:1.2; }
.pt-mod-glyph { font-size:2rem; }

/* Nom del déu a les targetes de la home: to fosc (AA) i pes contingut */
.pt-home-tile-deu { color:var(--pt-verd-dark); font-weight:600; }

/* Taules: capçalera diferenciada + zebra (llegibilitat horitzontal) */
.pt-table th { background:var(--pt-soft); color:var(--pt-text); font-size:.78rem;
  text-transform:uppercase; letter-spacing:.5px; }
.pt-table tbody tr:nth-child(even) td { background:var(--pt-soft); }
.pt-table tr:hover td, .pt-table tbody tr:hover td { background:var(--pt-verd-pastel); }

/* Embolcall de taula: scroll horitzontal propi (el genera _modbase.table) */
.pt-table-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; }

/* Enllaç de mapa (KHEPRI): target de toc que omple la cel·la */
.pt-map-link { display:block; padding:10px 0; min-height:44px; line-height:24px;
  color:var(--pt-verd); font-weight:500; text-decoration:none; white-space:nowrap; }
.pt-map-link:hover { text-decoration:underline; color:var(--pt-verd-dark); }

/* Header (topbar + NAV) enganxat: la navegació no es perd en scroll llarg */
.pt-header { position:sticky; top:0; z-index:100; background:var(--pt-surface); }

/* ══════════════════════════════════════════════════════════════════════════
   RESPONSIVE — breakpoints MIDGARD: 992 tauleta · 768 mòbil · 480 petit
   ══════════════════════════════════════════════════════════════════════════ */

/* ── Tauleta (≤ 992px): graelles compactes ── */
@media (max-width: 992px) {
  .pt-kpi-row { gap:10px; }
  .pt-home-grid { grid-template-columns:repeat(2,1fr); }
  .pt-mod, .pt-home { max-width:100%; }
}

/* ── Mòbil (≤ 768px): topbar condensat + NAV amb scroll horitzontal ── */
@media (max-width: 768px) {
  .pt-topbar { padding:8px 14px; flex-wrap:wrap; gap:4px; }
  .pt-logo { height:24px; }
  .pt-hello-lead { display:none; }
  .pt-hello-name { font-size:.82rem; }
  .pt-role-badge { display:none; }
  .pt-logout { font-size:.82rem; }

  /* NAV: una sola fila amb scroll (el retall a la dreta indica que hi ha més);
     els títols de grup s'amaguen i un filet vertical separa els grups. */
  .pt-nav { flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch;
    scrollbar-width:none; gap:6px; padding:8px 14px; align-items:center; }
  .pt-nav::-webkit-scrollbar { display:none; }
  .pt-nav-group { flex-direction:row; flex-shrink:0; gap:4px; align-items:center; }
  .pt-nav-group-title { display:none; }
  .pt-nav-group-links { flex-wrap:nowrap; gap:4px; }
  .pt-nav-group + .pt-nav-group::before { content:""; display:block; width:1px;
    height:20px; background:var(--pt-line); flex-shrink:0; margin-right:2px; }
  /* Touch target ≥44px (caps de producció amb guants) */
  .pt-nav-link { padding:10px 14px; font-size:.82rem; white-space:nowrap;
    flex-shrink:0; min-height:44px; }

  .pt-main { padding:18px 14px; }
  .pt-mod-lead { margin-bottom:16px; }

  /* KPIs: 2 per fila en mòbil normal */
  .pt-kpi { flex:1 1 140px; padding:12px 14px; }
  .pt-kpi-val { font-size:1.3rem; }

  .pt-home-grid { grid-template-columns:repeat(auto-fill,minmax(160px,1fr)); gap:10px; }
  .pt-home-tile { padding:12px 14px; }
  .pt-home-tile-glyph { font-size:1.4rem; }

  .pt-sec { padding:14px 14px; }
  /* Taules: llisquen dins la targeta; columnes mai impossiblement estretes */
  .pt-table { min-width:480px; font-size:.82rem; }
  .pt-table th, .pt-table td { padding:8px 8px; }

  /* Formularis: targets còmodes */
  .pt-form-card { max-width:100%; padding:16px 14px; }
  .pt-btn { min-height:44px; font-size:1rem; }
  .pt-back-link { padding:10px 0; min-height:44px; line-height:24px; }
}

/* ══════════════════════════════════════════════════════════════════════════
   COMPONENTS D'INTERACCIÓ I ESTAT (pàgina /entitat; reutilitzables)
   Cercador, resultats, cross-links de taula, taula clau-valor i estats
   "pendent de dades" (calm) vs "acció pendent" (ambre). Additiu — no trenca res.
   ══════════════════════════════════════════════════════════════════════════ */

/* Cercador */
.pt-cerca-wrap { margin:20px 0 24px; }
.pt-cerca-cap { color:var(--pt-muted); font-size:.82rem; font-weight:600;
  text-transform:uppercase; letter-spacing:.5px; }
.pt-input { width:100%; max-width:520px; padding:9px 14px;
  border-radius:var(--pt-radius-sm); border:1.5px solid var(--pt-line);
  font-size:.95rem; font-family:inherit; background:var(--pt-surface);
  color:var(--pt-text); transition:border-color .15s ease, box-shadow .15s ease; }
.pt-input:focus, .pt-input:focus-visible { outline:none; border-color:var(--pt-verd);
  box-shadow:0 0 0 3px var(--pt-verd-pastel); }
.pt-input::placeholder { color:var(--pt-muted); }
.pt-cerca-hint { display:block; color:var(--pt-muted); font-size:.8rem; margin-top:6px; }
.pt-cerca-res { background:var(--pt-surface); border:1px solid var(--pt-line);
  border-radius:var(--pt-radius-sm); box-shadow:var(--pt-shadow); overflow:hidden;
  margin-top:10px; max-width:640px; }
.pt-cerca-fila { display:flex; align-items:center; gap:8px; padding:10px 14px;
  border-bottom:1px solid var(--pt-line); min-height:44px; }
.pt-cerca-fila:last-child { border-bottom:none; }
.pt-cerca-fila:hover { background:var(--pt-verd-pastel); }
.pt-cerca-fila a { color:var(--pt-verd); text-decoration:none; font-weight:500; }
.pt-cerca-fila a:hover { text-decoration:underline; color:var(--pt-verd-dark); }
.pt-cerca-fila .pt-cerca-cap { text-transform:none; font-weight:400; letter-spacing:0; }

/* Breadcrumb de la fitxa */
.pt-breadcrumb { margin-bottom:12px; font-size:.85rem; }
.pt-breadcrumb .pt-crumb-sep { color:var(--pt-muted); margin:0 6px; }
.pt-breadcrumb .pt-crumb-cur { color:var(--pt-muted); }

/* Enllaços dins de taula → verd de marca (no el blau Bootstrap per defecte) */
.pt-table td a, .pt-table td a:visited { color:var(--pt-verd);
  text-decoration:none; font-weight:500; }
.pt-table td a:hover { color:var(--pt-verd-dark); text-decoration:underline; }

/* Taula clau-valor (registre de la fitxa): 1a col = etiqueta, 2a = valor */
.pt-table-kv .pt-table td:first-child { color:var(--pt-muted); font-weight:400;
  width:38%; white-space:nowrap; }
.pt-table-kv .pt-table td:nth-child(2) { color:var(--pt-text); font-weight:500; }

/* Estat "pendent de dades" (P4): to CALM (argila), no urgència */
.pt-mod-pendent { display:inline-block; background:var(--pt-clay-pastel);
  color:var(--pt-clay); font-size:.72rem; font-weight:600; padding:2px 9px;
  border-radius:var(--pt-radius-sm); margin-left:8px; vertical-align:middle; }
.pt-pendent-text { color:var(--pt-text); font-size:.9rem; line-height:1.55; margin:4px 0 0; }

/* Avís d'ACCIÓ de l'usuari (p.ex. màquina sense vincle) — ambre, diferenciat del P4 */
.pt-avis-card { background:#FBF3E4; border:1px solid var(--pt-ambre);
  border-left:4px solid var(--pt-ambre); border-radius:var(--pt-radius);
  padding:16px 18px; margin-top:16px; box-shadow:var(--pt-shadow); }
.pt-avis-card h3 { font-size:1rem; font-weight:600; color:var(--pt-text); margin:0 0 4px; }
.pt-avis-badge { display:inline-block; background:var(--pt-ambre-fosc); color:#fff;
  font-size:.72rem; font-weight:600; padding:2px 9px; border-radius:var(--pt-radius-sm);
  margin-left:8px; vertical-align:middle; }
.pt-avis-text { color:var(--pt-text); font-size:.9rem; line-height:1.55; margin:4px 0 0; }

/* Graella de targetes per producte (assessor de compra de gasoil): 2 columnes
   que es despleguen a 1 sola a mòbil. */
.pt-mod-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  gap:14px; margin-top:10px; }

/* ── Telèfon petit (≤ 480px): densitat mínima ── */
@media (max-width: 480px) {
  .pt-topbar { padding:7px 10px; }
  .pt-nav { gap:5px; padding:6px 10px; }
  .pt-main { padding:14px 10px; }
  .pt-kpi { padding:11px 13px; }
  .pt-kpi-val { font-size:1.25rem; }
  .pt-kpi-label { letter-spacing:.3px; }
  .pt-sec { padding:12px 12px; margin-bottom:14px; }
  .pt-sec h3 { font-size:.95rem; }
  .pt-home-grid { grid-template-columns:1fr 1fr; }
  .pt-home-title { font-size:1.2rem; }
  .pt-table { font-size:.8rem; }
  .pt-table th, .pt-table td { padding:6px 8px; }
  .pt-mod-glyph { font-size:1.6rem; }
  .pt-mod-title { font-size:1.2rem; }
}

/* ══ SESHAT · planificació diària (kanban modular) ══════════════════════ */
.ses-controls { display:flex; flex-wrap:wrap; gap:14px; align-items:center;
  justify-content:space-between; margin-bottom:16px; }
/* Navegació de dia = pill segmentat cohesionat [‹ | data | ›] + Avui a part */
.ses-dianav { display:flex; align-items:center; gap:8px; }
.ses-nav-btn { min-width:44px; min-height:44px; border:1px solid var(--pt-line);
  background: var(--pt-surface); border-radius:10px; font-size:1.15rem;
  cursor:pointer; color: var(--pt-verd-dark); font-weight:600; }
.ses-nav-btn:hover { background: var(--pt-verd-pastel);
  border-color: var(--pt-verd); }
.ses-nav-avui { font-size:.85rem; padding:0 16px; }
.ses-dia-label { font-weight:700; min-width:180px; text-align:center;
  font-size:1.02rem; padding:0 8px; border:1px solid var(--pt-line);
  border-radius:10px; min-height:44px; display:inline-flex;
  align-items:center; justify-content:center; background: var(--pt-surface); }
.ses-dia-off { color: var(--pt-muted); }             /* dia ≠ avui, més apagat */
.ses-dia-label:not(.ses-dia-off) { color: var(--pt-verd-dark);
  border-color: var(--pt-verd); background: var(--pt-verd-pastel); }
/* Vistes = control segmentat (pestanyes) */
.ses-vistes { display:flex; flex-wrap:wrap; gap:4px; background: var(--pt-soft);
  border:1px solid var(--pt-line); border-radius:12px; padding:4px; }
.ses-chip { display:inline-flex; align-items:center; min-height:40px;
  padding:6px 14px; border:1px solid transparent; border-radius:9px;
  background:transparent; cursor:pointer; font-size:.88rem;
  font-weight:600; color: var(--pt-muted); }
.ses-chip:hover { background: var(--pt-verd-pastel); color: var(--pt-verd-dark); }
.ses-chip:has(input:checked) { background: var(--pt-surface); color: var(--pt-verd-dark);
  border-color: var(--pt-verd); box-shadow:0 1px 4px rgba(28,26,23,.1); }
.ses-chip input { position:absolute; opacity:0; pointer-events:none; }
.ses-pregunta { color: var(--pt-muted); font-style:italic; margin:4px 0 10px; }

.ses-det { background: var(--pt-surface); border:1px solid var(--pt-line);
  border-left:4px solid var(--pt-ambre-fosc); border-radius:9px;
  padding:10px 14px; margin-bottom:14px; font-size:.9rem; }
.ses-det-buida { border-left-color: var(--pt-verd); color: var(--pt-muted); }
.ses-det-cap { margin:0 0 6px; font-weight:600; font-size:.82rem;
  text-transform:uppercase; letter-spacing:.05em; color: var(--pt-muted); }
.ses-det-list { margin:0; padding-left:4px; list-style:none; }
.ses-det-list li { margin-bottom:5px; line-height:1.45; }

.ses-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr));
  gap:12px; }
.ses-card { background: var(--pt-surface); border:1px solid var(--pt-line);
  border-radius:9px; padding:12px 14px; box-shadow: var(--pt-shadow, none); }
.ses-card-cap { font-size:.98rem; margin-bottom:8px; display:flex;
  align-items:center; gap:4px; flex-wrap:wrap; }
.ses-card-peu { color: var(--pt-muted); font-size:.82rem; margin:8px 0 0; }
.ses-glyph { font-size:1.1rem; }
.ses-feina { display:flex; justify-content:space-between; align-items:center;
  gap:10px; padding:7px 0; border-top:1px dashed var(--pt-line);
  flex-wrap:wrap; }
.ses-feina:first-child { border-top:none; }
.ses-muted { color: var(--pt-muted); font-size:.86rem; }
.ses-estat { white-space:nowrap; font-size:.84rem; color: var(--pt-muted); }
.ses-mov { margin-top:8px; font-size:.88rem; }

.ses-btn { min-height:44px; }
.ses-btn-2 { background: var(--pt-clay); }
.ses-btn-2:hover { background:#6E3A2D; }
.ses-btn-mini { border:1px solid var(--pt-line); background: var(--pt-soft);
  border-radius:7px; padding:6px 10px; font-size:.8rem; cursor:pointer;
  color: var(--pt-warn-dark); min-height:34px; }
.ses-btn-mini:hover { background: var(--pt-clay-pastel); }

.ses-tr-form, .ses-tanca-form { display:flex; flex-wrap:wrap; gap:8px;
  align-items:center; margin-top:10px; }
.ses-dd { min-width:220px; flex:1; }
.ses-inp-h { width:110px; min-height:38px; border:1px solid var(--pt-line);
  border-radius:8px; padding:4px 10px; }
.ses-inp-m { flex:1; min-width:160px; min-height:38px;
  border:1px solid var(--pt-line); border-radius:8px; padding:4px 10px; }
.ses-radio label { margin-right:12px; }
.ses-col-h { max-width:140px; }

.ses-avis-text { background: var(--pt-soft); border:1px solid var(--pt-line);
  border-radius:8px; padding:10px 12px; font-family:inherit; font-size:.86rem;
  white-space:pre-wrap; margin:8px 0; }

@media (max-width: 768px) {
  .ses-controls { flex-direction:column; align-items:stretch; }
  .ses-vistes { overflow-x:auto; flex-wrap:nowrap; padding-bottom:4px; }
  .ses-chip { white-space:nowrap; }
  .ses-grid { grid-template-columns:1fr; }
}

/* ── SESHAT · passada IDUN (contrast, targets, focus, jerarquia) ───────── */
/* DS-002: variant argila SEMPRE amb text blanc (6.75:1) */
.ses-btn-2, .ses-btn-2:hover { color:#FFFFFF; }
/* DS-003: target del boto destructiu (Anul·la) */
.ses-btn-mini { min-height:44px; padding:8px 14px; }
/* DS-001: cap font operativa per sota de .84rem; estat a .88rem */
.ses-estat { font-size:.88rem; }
.ses-card-peu { font-size:.84rem; }
.ses-det-cap { font-size:.84rem; }
/* DS-004: zona de controls ancorada + la pregunta guia amb pes de subtitol */
.ses-controls { background: var(--pt-soft); border:1px solid var(--pt-line);
  border-radius:14px; padding:12px 14px; margin-bottom:16px; }
.ses-pregunta { font-size:.95rem; font-weight:500; color: var(--pt-text);
  font-style:normal; margin:0 0 12px; padding:8px 0;
  border-bottom:1px solid var(--pt-line); }
/* DS-005: inputs de tancament alineats amb el sistema (focus ring de marca) */
.ses-inp-h, .ses-inp-m { border:1.5px solid var(--pt-line);
  font-family:inherit; font-size:.95rem; background: var(--pt-surface);
  color: var(--pt-text);
  transition: border-color .15s ease, box-shadow .15s ease; }
.ses-inp-h:focus, .ses-inp-h:focus-visible,
.ses-inp-m:focus, .ses-inp-m:focus-visible {
  outline:none; border-color: var(--pt-verd);
  box-shadow:0 0 0 3px var(--pt-verd-pastel); }
/* Contracte de focus per a tots els interactius SESHAT (teclat) */
.ses-nav-btn:focus-visible, .ses-chip:focus-visible,
.ses-btn-mini:focus-visible {
  outline:none; box-shadow:0 0 0 3px var(--pt-verd-pastel);
  border-color: var(--pt-verd); }
@media (max-width: 768px) {
  .ses-btn-mini { min-height:44px; padding:10px 14px; }
  .ses-inp-h, .ses-inp-m { min-height:44px; font-size:1rem; }
}

/* ── SESHAT · passada FREYA (context temporal + resum de safata) ────────── */
/* Dia seleccionat != avui: fons ambre suau perquè no es planifiqui
   sobre el dia equivocat sense adonar-se'n */
.ses-dia-off { background: #FBF3E0; border:1px solid var(--pt-ambre-fosc);
  color: var(--pt-text); border-radius:8px; padding:6px 10px; }
.ses-av-resum { font-weight:600; font-size:.92rem; margin:0 0 10px;
  color: var(--pt-text); }
/* Panell «qui falta per confirmar» (d'un cop d'ull) */
.ses-av-panell { border:1px solid var(--pt-line); border-radius:10px;
  background: var(--pt-surface); padding:12px 14px; margin:0 0 12px; }
.ses-av-cap { font-weight:600; margin:0 0 8px; }
.ses-av-linia { font-size:.92rem; margin:3px 0; }
.ses-av-accions { display:flex; flex-wrap:wrap; gap:8px; align-items:center;
  margin-top:6px; }

/* ── SESHAT 2.0 · tauler de targetes (columnes + drag&drop) ─────────────── */
/* El tauler ocupa TOTA l'amplada de pantalla (full-bleed), la resta de la
   pàgina es queda centrada. És l'apartat de treball intensiu amb volum. */
.ses-tauler-wrap { width:100vw; margin-left:calc(50% - 50vw);
  padding:0 clamp(12px, 3vw, 40px); box-sizing:border-box; }
.ses-tauler { display:flex; gap:12px; align-items:flex-start;
  overflow-x:auto; padding-bottom:10px; }
.ses-tcol { flex:0 0 288px; min-width:288px; background: var(--pt-soft);
  border:1px solid var(--pt-line); border-radius:14px; padding:10px; }
.ses-tcol-parc { background: var(--pt-surface);
  border-style:dashed; flex:0 0 250px; min-width:250px; }
.ses-tcol-cap { margin-bottom:8px; }
.ses-tcol-titol { font-size:.95rem; margin-bottom:2px; word-break:break-word; }
/* Client + KPIs fàcils d'obra */
.ses-tcol-client { color: var(--pt-muted); font-size:.82rem; margin:0 0 4px;
  font-weight:600; word-break:break-word; }
.ses-tcol-kpis { display:flex; flex-wrap:wrap; align-items:center; gap:6px;
  font-size:.8rem; margin:2px 0 4px; }
.ses-tcol-badge { padding:1px 8px; border-radius:999px; font-weight:600;
  font-size:.76rem; background: var(--pt-line); color: var(--pt-muted); }
.ses-tcol-badge-on { background: var(--pt-verd-pastel); color: var(--pt-verd-dark); }
.ses-tcol-ritme { color: var(--pt-verd-dark); font-weight:600;
  font-size:.86rem; margin:2px 0; }
.ses-tcol-sub { color: var(--pt-muted); font-size:.84rem; margin:2px 0; }
.ses-tcol-nota { color: var(--pt-ambre-fosc); font-size:.8rem; margin:2px 0; }
.ses-tcol-sec { font-size:.74rem; letter-spacing:.05em; text-transform:uppercase;
  color: var(--pt-muted); font-weight:600; margin:10px 0 4px; }
.ses-tcol-cards { display:flex; flex-direction:column; gap:6px;
  min-height:34px; max-height:46vh; overflow-y:auto; padding:2px; }
.ses-tcol-peu { display:flex; gap:6px; align-items:center; margin-top:8px; }

.ses-tcard { display:flex; gap:8px; align-items:flex-start;
  background: var(--pt-surface); border:1px solid var(--pt-line);
  border-radius:9px; padding:8px 10px; cursor:pointer; min-height:44px;
  transition: box-shadow .1s ease, border-color .1s ease; }
.ses-tcard:hover { border-color: var(--pt-verd); }
.ses-tcard-sel { border:2px solid var(--pt-verd);
  box-shadow:0 0 0 3px var(--pt-verd-pastel); }
.ses-tcard-cos { display:flex; flex-direction:column; gap:1px;
  font-size:.9rem; min-width:0; word-break:break-word;
  overflow-wrap:anywhere; line-height:1.25; }
.ses-tcard-maq { color: var(--pt-muted); font-size:.84rem; }
.ses-tcard-sub { color: var(--pt-muted); font-size:.8rem; }
.ses-card-drag { touch-action:manipulation; }
.sortable-ghost { opacity:.4; }
.sortable-drag { box-shadow:0 8px 20px rgba(28,26,23,.25); }

.ses-colbtn { width:100%; border:1px dashed var(--pt-verd);
  background: var(--pt-verd-pastel); color: var(--pt-verd-dark);
  border-radius:8px; padding:8px; font-size:.82rem; font-weight:600;
  cursor:pointer; min-height:38px; margin-top:6px; }
.ses-colbtn:hover { background: var(--pt-verd); color:#fff; }
.ses-btn-est { color: var(--pt-verd-dark); }

.ses-bar { height:8px; background: var(--pt-line); border-radius:5px;
  overflow:hidden; margin:6px 0 2px; }
.ses-bar-fill { height:100%; background: var(--pt-verd); border-radius:5px; }

@media (max-width: 768px) {
  .ses-tcol { flex:0 0 84vw; min-width:84vw; }
  .ses-tcol-parc { flex:0 0 76vw; min-width:76vw; }
  .ses-tcol-cards { max-height:38vh; }
}

/* ── SESHAT 2.0 · ronda 1 agents (IDUN r2 + NJORD + FREYA) ──────────────── */
/* DS-S01: nota de calibratge llegible (abans 3.66:1 sobre --pt-soft) */
.ses-tcol-nota { color:#7A4F00; font-size:.82rem; font-weight:500; }
/* DS-S02: seleccio tap-tap INEQUIVOCA (halo verd pur + fons tenyit) */
.ses-tcard-sel { border:2px solid var(--pt-verd);
  background: var(--pt-verd-pastel);
  box-shadow:0 0 0 3px rgba(27,94,52,.28); }
/* DS-S03: drag llegible + zona de desti marcada (:has, no cal JS extra) */
.sortable-ghost { opacity:.35; border-radius:9px; }
.sortable-drag { opacity:1; box-shadow:0 10px 28px rgba(28,26,23,.30); }
.ses-tcol-cards:has(.sortable-ghost) { outline:2px dashed var(--pt-verd);
  outline-offset:3px; background: var(--pt-verd-pastel); border-radius:6px; }
/* DS-S04: track de la barra de progres visible (abans 1.05:1) */
.ses-bar { height:10px; background:#C5BDB0; border:1px solid #A09890; }
.ses-bar-fill { border-radius:4px; }
/* Jerarquia tipografica de columna (3 nivells) */
.ses-tcol-sec { font-size:.78rem; }
.ses-tcol-sub { font-size:.85rem; }
.ses-tcol-ritme { font-size:.875rem; font-weight:500; }
/* DS-S05: scroll amb snap + sense conflicte de gestos */
.ses-tauler { scroll-snap-type:x proximity; overscroll-behavior-x:contain; }
.ses-tcol { scroll-snap-align:start; }

/* NJORD/FREYA: la targeta triada i les complementaries HO DIUEN */
.ses-tcard-badge { display:inline-block; background: var(--pt-verd);
  color:#fff; font-size:.76rem; font-weight:600; border-radius:8px;
  padding:2px 8px; margin-top:3px; }
.ses-tcard-lliga { background: var(--pt-clay); }
/* Banner de viatges pendents amb drecera */
.ses-banner-tr { display:flex; align-items:center; gap:6px; flex-wrap:wrap;
  background: var(--pt-surface); border:1px solid var(--pt-warn);
  border-left:4px solid var(--pt-warn); border-radius:9px;
  padding:8px 12px; margin-bottom:10px; font-size:.9rem; }
.ses-btn-goto { color: var(--pt-verd-dark); font-weight:600; }
/* Controls del tauler (obrir obra + portar màquina del catàleg) */
.ses-tauler-ctrls { display:flex; flex-wrap:wrap; gap:10px; margin:6px 0 4px;
  align-items:center; }
.ses-tauler-ctrls .ses-ctrls-cap { flex:0 0 100%; margin:0 0 2px;
  font-weight:600; font-size:.9rem; color: var(--pt-muted); }
.ses-tauler-ctrls .ses-tr-form { flex:1 1 320px; margin:0; }
/* Barra d'agilitat: comptador «sense destí» + cercador global */
.ses-tauler-barra { display:flex; flex-wrap:wrap; align-items:center;
  justify-content:space-between; gap:10px; margin:4px 0 10px; }
.ses-tauler-compt { font-size:.95rem; }
.ses-tauler-compt strong { color: var(--pt-verd-dark); }
/* DS-S10: target tàctil ≥44px (WCAG 2.5.8) */
.ses-tauler-cerca { flex:1 1 260px; max-width:420px; min-height:44px;
  border:1.5px solid var(--pt-line); border-radius:8px; padding:8px 12px;
  font-family:inherit; font-size:.95rem; background: var(--pt-surface); }
.ses-tauler-cerca:focus, .ses-tauler-cerca:focus-visible { outline:none;
  border-color: var(--pt-verd); box-shadow:0 0 0 3px var(--pt-verd-pastel); }
@media (max-width: 600px) {
  .ses-tauler-barra { flex-direction:column; align-items:stretch; }
  .ses-tauler-cerca { max-width:100%; }
}
/* Configuració plegada (un sol cop, fora del flux diari) */
.ses-config { margin-top:14px; border:1px solid var(--pt-line);
  border-radius:10px; background: var(--pt-surface); }
.ses-config[open] { padding-bottom:6px; }
.ses-config-sum { cursor:pointer; padding:12px 16px; font-weight:600;
  color: var(--pt-verd-dark); list-style:none; display:flex;
  align-items:center; }
.ses-config-sum::-webkit-details-marker { display:none; }
/* DS-S11: chevron CSS que rota (affordance d'estat clar) + focus visible */
.ses-config-sum::before { content:""; display:inline-block; width:0; height:0;
  border-top:5px solid transparent; border-bottom:5px solid transparent;
  border-left:7px solid var(--pt-verd-dark); margin-right:9px;
  transition:transform .2s ease; }
.ses-config[open] .ses-config-sum::before { transform:rotate(90deg); }
.ses-config-sum:focus-visible { outline:none; border-radius:10px;
  box-shadow:0 0 0 3px var(--pt-verd-pastel); border-color: var(--pt-verd); }
.ses-config .pt-section, .ses-config section { margin:0 8px 6px; }
/* Panell d'avisos: jerarquia semàfor (DS-S14) */
.ses-av-panell { border-top:3px solid var(--pt-ambre-fosc); }
.ses-av-panell.ses-av-tot-ok { border-top-color: var(--pt-verd);
  background: var(--pt-verd-pastel); }
.ses-av-cap { font-size:1rem; }
/* Tancament en lot */
.ses-tanca-lot { display:flex; flex-wrap:wrap; align-items:center; gap:8px;
  margin:0 0 12px; padding:10px 12px; border:1px solid var(--pt-line);
  border-radius:9px; background: var(--pt-surface); }
/* Banner de transport en vermell (error operacional) */
.ses-banner-tr-r { border-color: var(--pt-warn); border-left-color: var(--pt-warn); }
/* DS-S13: text operatiu de targeta a 14px mínim (llegibilitat) */
.ses-tcard-sub { font-size:.875rem; }
/* DS-S12: track de la barra de progrés amb contrast ≥3:1 (WCAG 1.4.11) */
.ses-bar { background:#7E7568; }
/* FREYA: el feedback acompanya l'scroll */
.ses-fb-sticky { position:sticky; top:8px; z-index:60; }
.ses-fb-sticky > div { box-shadow:0 4px 14px rgba(28,26,23,.18); }
/* Boto del parc diferenciat del de les obres (evitar el toc equivocat) */
.ses-colbtn-parc { border-color: var(--pt-clay); background: var(--pt-clay-pastel);
  color: var(--pt-clay); }
.ses-colbtn-parc:hover { background: var(--pt-clay); color:#fff; }

@media (max-width: 768px) {
  .ses-tcol { flex:0 0 78vw; min-width:78vw; }
  .ses-tcol-parc { flex:0 0 70vw; min-width:70vw; }
  .ses-tcol-cards { overscroll-behavior-y:contain; }
}

/* CTA d'empty state (HORUS i futurs): botó prominent, no una nota al peu.
   Autocontingut perquè funcioni sobre un <a> (dcc.Link) sense dependre de .btn. */
.pt-empty-cta { margin-top: 16px; }
.pt-empty-cta a.pt-btn,
.pt-empty-cta a {
  display: inline-flex; align-items: center; min-height: 44px;
  padding: 10px 20px; background: var(--pt-verd); color: #fff;
  border-radius: var(--pt-radius-sm, 9px); text-decoration: none;
  font-weight: 600; font-size: .9rem;
}
.pt-empty-cta a:hover { background: var(--pt-verd-dark); color: #fff; }
