/* ===== PROGETTO MICELIO ===== */

:root {
  --bg: #04101c;
  --bg-deep: #020a14;
  --panel: rgba(255, 255, 255, 0.035);
  --panel-2: rgba(46, 139, 192, 0.06);
  --card: rgba(255, 255, 255, 0.038);
  --card-hover: rgba(255, 255, 255, 0.07);
  --glass: rgba(6, 18, 30, 0.66);
  --border: rgba(127, 200, 230, 0.1);
  --border-strong: rgba(127, 200, 230, 0.2);
  --text: #e8f4f8;
  --text-2: #8fa8b8;
  --text-3: #54707f;
  --green: #5de03b;       /* spore — accent primario */
  --green-2: #a8ff80;
  --green-soft: rgba(93, 224, 59, 0.13);
  --blue: #2e8bc0;        /* ife — accent secondario */
  --blue-2: #5bb4e0;
  --blue-soft: rgba(46, 139, 192, 0.14);
  --amber: #fbbf24;
  --amber-soft: rgba(251, 191, 36, 0.1);
  --red: #f87171;
  --red-soft: rgba(248, 113, 113, 0.09);
  --violet: #a78bfa;
  --grey: #5a6b76;
  --grey-dark: #34424c;
  --radius: 20px;
  --radius-sm: 14px;
  --shadow: 0 22px 60px -28px rgba(0, 0, 0, 0.78);
  --font: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }

body {
  font-family: var(--font);
  background:
    radial-gradient(1300px 760px at 50% -16%, rgba(46, 139, 192, 0.09), transparent 60%),
    radial-gradient(1000px 640px at 86% 116%, rgba(93, 224, 59, 0.05), transparent 56%),
    var(--bg);
  background-attachment: fixed;
  color: var(--text);
  min-height: 100vh; min-height: 100dvh;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  letter-spacing: -0.006em;
}
.hidden { display: none !important; }
::selection { background: rgba(93, 224, 59, 0.3); }
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: rgba(127, 200, 230, 0.12); border-radius: 99px; }
::-webkit-scrollbar-thumb:hover { background: rgba(127, 200, 230, 0.22); }

/* ============ LOCK ============ */
.lock {
  position: fixed; inset: 0; z-index: 100;
  display: flex; align-items: center; justify-content: center;
  background:
    radial-gradient(900px 500px at 50% 20%, rgba(46, 139, 192, 0.1), transparent 60%),
    radial-gradient(600px 400px at 50% 80%, rgba(93, 224, 59, 0.06), transparent 60%),
    var(--bg-deep);
  padding: 24px; opacity: 1; transition: opacity 0.6s ease;
}
.lock.unlocking { opacity: 0; pointer-events: none; }
.lock-inner { width: 100%; max-width: 330px; text-align: center; animation: rise 0.8s cubic-bezier(0.2, 0.7, 0.2, 1); }
.lock-core { position: relative; width: 76px; height: 76px; margin: 0 auto 30px; }
.lock-ring { position: absolute; inset: 0; border-radius: 50%; border: 1px solid rgba(46, 139, 192, 0.4); }
.lock-ring.r1 { animation: spin 16s linear infinite; border-style: dashed; }
.lock-ring.r2 { inset: 13px; border-color: rgba(93, 224, 59, 0.5); animation: spin 10s linear infinite reverse; border-style: dotted; }
.lock-dot { position: absolute; inset: 30px; border-radius: 50%; background: var(--green); box-shadow: 0 0 28px rgba(93, 224, 59, 0.7); animation: pulse 3s ease-in-out infinite; }
.lock-title { font-size: 27px; font-weight: 200; letter-spacing: 0.34em; margin-bottom: 7px; }
.lock-sub { font-size: 12.5px; color: var(--text-3); margin-bottom: 34px; letter-spacing: 0.05em; }
#lockForm { display: flex; flex-direction: column; gap: 12px; }
#lockInput { font-family: var(--font); font-size: 16px; text-align: center; padding: 15px 16px; border-radius: 13px; border: 1px solid var(--border-strong); background: rgba(255, 255, 255, 0.045); color: var(--text); outline: none; transition: border-color 0.25s, box-shadow 0.25s; }
#lockInput::placeholder { color: var(--text-3); }
#lockInput:focus { border-color: rgba(93, 224, 59, 0.55); box-shadow: 0 0 0 3px rgba(93, 224, 59, 0.13); }
#lockForm button { font-family: var(--font); font-size: 15px; font-weight: 500; padding: 14px; border-radius: 13px; border: none; background: linear-gradient(180deg, var(--green-2), var(--green)); color: #06280a; cursor: pointer; transition: transform 0.15s, box-shadow 0.25s, filter 0.2s; }
#lockForm button:hover { filter: brightness(1.06); box-shadow: 0 0 26px rgba(93, 224, 59, 0.42); }
#lockForm button:active { transform: scale(0.97); }
.lock-error { margin-top: 16px; font-size: 13px; color: var(--red); opacity: 0; transition: opacity 0.3s; }
.lock-error.show { opacity: 1; }
.lock-inner.shake { animation: shake 0.45s; }

/* ============ TOPBAR ============ */
.app { animation: fadeIn 0.7s ease; }
.topbar {
  position: sticky; top: 0; z-index: 30;
  display: flex; align-items: center; gap: 16px;
  padding: 14px max(24px, env(safe-area-inset-left)) 14px max(24px, env(safe-area-inset-right));
  padding-top: max(14px, env(safe-area-inset-top));
  background: rgba(4, 16, 28, 0.7);
  backdrop-filter: blur(24px) saturate(1.5);
  -webkit-backdrop-filter: blur(24px) saturate(1.5);
  border-bottom: 1px solid var(--border);
}
.brand { display: flex; align-items: center; gap: 11px; cursor: pointer; }
.brand-spore { width: 8px; height: 8px; border-radius: 50%; background: var(--green); box-shadow: 0 0 12px rgba(93, 224, 59, 0.9); animation: pulse 3s ease-in-out infinite; }
.brand-name { font-size: 13.5px; font-weight: 300; letter-spacing: 0.24em; }
.crumbs { flex: 1; display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-3); }
.crumbs a { color: var(--blue-2); text-decoration: none; cursor: pointer; }
.crumbs a:hover { color: var(--green); }
.crumbs .sep { opacity: 0.5; }
.topbar-meta { display: flex; align-items: center; gap: 16px; }
.sys-pill { display: inline-flex; align-items: center; gap: 8px; font-size: 11.5px; font-weight: 500; letter-spacing: 0.04em; color: var(--text-2); padding: 6px 12px; border-radius: 99px; background: var(--green-soft); border: 1px solid rgba(93, 224, 59, 0.22); }
.sys-led { width: 6px; height: 6px; border-radius: 50%; background: var(--green); box-shadow: 0 0 8px rgba(93, 224, 59, 0.7); animation: pulse 2.6s ease-in-out infinite; }
.clock { font-size: 14px; font-weight: 300; color: var(--text-2); font-variant-numeric: tabular-nums; letter-spacing: 0.07em; }

.view { animation: viewIn 0.45s cubic-bezier(0.2, 0.7, 0.2, 1); }
.view-narrow { max-width: 1480px; margin: 0 auto; }

/* ============ HERO MICELIO ============ */
.hero { max-width: 1480px; margin: 0 auto; padding: 22px max(24px, env(safe-area-inset-left)) 0; }
.myco-hero {
  position: relative; width: 100%;
  height: clamp(340px, 50vh, 540px);
  border-radius: 26px; overflow: hidden;
  background:
    radial-gradient(130% 110% at 50% 42%, #07223a 0%, #051726 46%, #03101c 100%);
  border: 1px solid var(--border);
  box-shadow: var(--shadow), inset 0 1px 0 rgba(127, 200, 230, 0.07);
  transition: box-shadow 0.6s ease, border-color 0.6s ease;
}
.myco-hero.active { border-color: rgba(46, 200, 200, 0.34); box-shadow: 0 0 90px -8px rgba(46, 200, 200, 0.28), var(--shadow); }
.neural-canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; opacity: 1; }
.hero-grad {
  position: absolute; inset: 0; pointer-events: none;
  background:
    radial-gradient(120% 90% at 50% 50%, rgba(4, 16, 28, 0) 38%, rgba(4, 16, 28, 0.34) 82%),
    linear-gradient(180deg, rgba(2, 10, 20, 0.08), rgba(2, 10, 20, 0) 38%, rgba(2, 10, 20, 0.5));
}
.hero-overlay {
  position: absolute; inset: 0; display: flex; flex-direction: column;
  align-items: center; justify-content: center; text-align: center; padding: 24px;
  pointer-events: none; text-shadow: 0 2px 40px rgba(0, 0, 0, 0.85);
}
.greeting { font-size: clamp(28px, 4.4vw, 50px); font-weight: 200; letter-spacing: -0.025em; }
.hero-date { margin-top: 9px; font-size: 14px; color: var(--text-2); font-weight: 400; text-transform: capitalize; letter-spacing: 0.02em; }
.hero-tag { margin-top: 18px; max-width: 520px; font-size: 14.5px; line-height: 1.6; color: rgba(232, 244, 248, 0.82); font-weight: 300; }
.myco-state { margin-top: 20px; font-size: 10.5px; font-weight: 600; letter-spacing: 0.24em; text-transform: uppercase; color: var(--green); padding: 6px 16px; border-radius: 99px; background: var(--green-soft); border: 1px solid rgba(93, 224, 59, 0.3); transition: color 0.4s, background 0.4s; }
.myco-hero.active .myco-state { color: #ddffce; background: rgba(93, 224, 59, 0.22); }

/* ============ COCKPIT ROW ============ */
.cockpit { display: grid; grid-template-columns: 300px 320px minmax(0, 1fr); gap: 18px; max-width: 1480px; margin: 0 auto; padding: 20px max(24px, env(safe-area-inset-left)) 0; align-items: start; }

.panel { background: linear-gradient(180deg, var(--panel-2), var(--panel)); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow), inset 0 1px 0 rgba(127, 200, 230, 0.05); backdrop-filter: blur(14px) saturate(1.3); -webkit-backdrop-filter: blur(14px) saturate(1.3); padding: 18px; }
.panel-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.panel-head h3 { font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.16em; color: var(--text-2); }
.panel-tag { font-size: 11px; font-weight: 600; color: var(--green); background: var(--green-soft); padding: 3px 9px; border-radius: 99px; border: 1px solid rgba(93, 224, 59, 0.28); }
.panel-tag.warn { color: var(--amber); background: var(--amber-soft); border-color: rgba(251, 191, 36, 0.28); }

.ring-wrap { position: relative; width: 168px; height: 168px; margin: 4px auto 16px; }
.prog-ring { width: 100%; height: 100%; transform: rotate(-90deg); }
.prog-ring-bg { fill: none; stroke: rgba(127, 200, 230, 0.1); stroke-width: 9; }
.prog-ring-fg { fill: none; stroke: var(--green); stroke-width: 9; stroke-linecap: round; stroke-dasharray: 314.159; stroke-dashoffset: 314.159; filter: drop-shadow(0 0 9px rgba(93, 224, 59, 0.6)); transition: stroke-dashoffset 1.1s cubic-bezier(0.2, 0.7, 0.2, 1); }
.ring-center { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.ring-num { font-size: 38px; font-weight: 200; letter-spacing: -0.02em; line-height: 1; }
.ring-num::after { content: '%'; font-size: 18px; color: var(--text-3); margin-left: 1px; }
.ring-lbl { font-size: 10.5px; color: var(--text-3); text-transform: uppercase; letter-spacing: 0.12em; margin-top: 6px; }
.mini-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.mini-stat { background: rgba(255, 255, 255, 0.03); border: 1px solid var(--border); border-radius: 12px; padding: 10px 12px; }
.mini-stat .ms-num { font-size: 20px; font-weight: 300; line-height: 1; }
.mini-stat .ms-lbl { font-size: 10.5px; color: var(--text-3); letter-spacing: 0.04em; margin-top: 4px; }
.mini-stat.green .ms-num { color: var(--green); }
.mini-stat.blue .ms-num { color: var(--blue-2); }
.mini-stat.amber .ms-num { color: var(--amber); }
.mini-stat.violet .ms-num { color: var(--violet); }

.alerts-list { display: flex; flex-direction: column; gap: 9px; max-height: 320px; overflow-y: auto; }
.alert { display: flex; gap: 10px; align-items: flex-start; padding: 11px 12px; border-radius: 13px; background: rgba(255, 255, 255, 0.03); border: 1px solid var(--border); border-left: 3px solid var(--grey); transition: background 0.2s, transform 0.2s; }
.alert.high { border-left-color: var(--red); }
.alert.medium { border-left-color: var(--amber); }
.alert.info { border-left-color: var(--blue); }
.alert-ic { font-size: 13px; line-height: 1.4; flex-shrink: 0; }
.alert.high .alert-ic { color: var(--red); }
.alert.medium .alert-ic { color: var(--amber); }
.alert.info .alert-ic { color: var(--blue-2); }
.alert-body .alert-txt { font-size: 13px; line-height: 1.45; color: var(--text); }
.alert-body .alert-meta { font-size: 10.5px; color: var(--text-3); margin-top: 3px; letter-spacing: 0.03em; }
.alerts-empty { font-size: 13px; color: var(--text-3); text-align: center; padding: 16px; }

.panel-today { padding: 6px; }
.today-tabs { display: flex; gap: 4px; padding: 6px; }
.tt { flex: 1; font-family: var(--font); font-size: 12.5px; font-weight: 500; color: var(--text-2); background: transparent; border: none; padding: 10px 8px; border-radius: 12px; cursor: pointer; transition: background 0.2s, color 0.2s; }
.tt span { font-size: 10.5px; font-weight: 700; margin-left: 5px; padding: 1px 6px; border-radius: 99px; background: rgba(255, 255, 255, 0.07); color: var(--text-3); }
.tt:hover { color: var(--text); }
.tt.active { background: var(--green-soft); color: var(--green); }
.tt.active span { background: rgba(93, 224, 59, 0.2); color: var(--green); }
.today-body { padding: 4px 10px 12px; max-height: 300px; overflow-y: auto; }
.today-pane { display: none; animation: fadeIn 0.3s ease; }
.today-pane.active { display: block; }

.cards { display: flex; flex-direction: column; gap: 10px; }
.card { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius-sm); padding: 14px 16px; transition: background 0.25s, border-color 0.25s; }
.card:hover { background: var(--card-hover); border-color: var(--border-strong); }
.prio { border-left: 3px solid var(--grey); }
.prio.high { border-left-color: var(--red); }
.prio.medium { border-left-color: var(--amber); }
.prio.low { border-left-color: var(--green); }
.card-meta { display: flex; align-items: center; gap: 8px; font-size: 11px; color: var(--text-3); font-weight: 500; letter-spacing: 0.04em; margin-bottom: 6px; }
.card-meta .pcode { color: var(--green); font-weight: 600; }
.card-text { font-size: 14px; line-height: 1.5; color: var(--text); }
.decision { background: var(--amber-soft); border-color: rgba(251, 191, 36, 0.22); }
.decision .card-meta { color: rgba(251, 191, 36, 0.75); }
.decision .card-meta .pcode { color: var(--amber); }
.decision .card-text { color: #f3e8c8; }
.decision .since { margin-left: auto; font-weight: 400; }
.deadline { display: flex; align-items: center; gap: 14px; }
.deadline-count { flex-shrink: 0; text-align: center; min-width: 62px; padding: 8px 10px; border-radius: 12px; background: var(--blue-soft); border: 1px solid rgba(46, 139, 192, 0.28); }
.deadline-count .num { display: block; font-size: 24px; font-weight: 600; color: var(--blue-2); line-height: 1.1; font-variant-numeric: tabular-nums; }
.deadline-count .lbl { font-size: 10px; color: var(--text-3); text-transform: uppercase; letter-spacing: 0.1em; }
.deadline-body .card-text { margin-top: 4px; }
/* --- Segnali dalla rete (4a area di Oggi) --- */
.signal { border-left: 3px solid #6fe6dc; background: rgba(46, 196, 196, 0.06); border-color: rgba(46, 196, 196, 0.22); }
.signal:hover { border-color: rgba(46, 196, 196, 0.4); background: rgba(46, 196, 196, 0.1); }
.sig-meta { flex-wrap: wrap; gap: 8px; }
.sig-proj { display: inline-flex; align-items: center; gap: 6px; }
.sig-tag { font-size: 10px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; padding: 2px 9px; border-radius: 7px; }
.sig-tag-competitor { color: #ffb4b4; background: rgba(248, 113, 113, 0.16); border: 1px solid rgba(248, 113, 113, 0.4); }
.sig-tag-functional { color: #9adcff; background: rgba(79, 166, 218, 0.16); border: 1px solid rgba(79, 166, 218, 0.4); }
.sig-tag-prospect  { color: #fcd9a0; background: rgba(251, 191, 36, 0.16); border: 1px solid rgba(251, 191, 36, 0.4); }
.sig-tag-holion    { color: #c8b8fc; background: rgba(167, 139, 250, 0.18); border: 1px solid rgba(167, 139, 250, 0.42); }
.sig-tag-trend     { color: #7fffdf; background: rgba(46, 196, 196, 0.16); border: 1px solid rgba(46, 196, 196, 0.45); }
.sig-foot { margin-top: 8px; }
.sig-link { font-size: 12px; font-weight: 600; color: #061018; background: linear-gradient(140deg, #6fe6dc, #29b6b0); padding: 5px 12px; border-radius: 8px; text-decoration: none; display: inline-block; transition: filter 0.2s, transform 0.2s; }
.sig-link:hover { filter: brightness(1.1); transform: translateY(-1px); }
.kn-page-count { display: inline-block; margin-top: 12px; font-size: 12px; font-weight: 600; color: #6fe6dc; background: rgba(46, 196, 196, 0.1); padding: 4px 12px; border-radius: 20px; }

.empty { text-align: center; color: var(--text-3); font-size: 13.5px; padding: 24px 16px; border: 1px dashed var(--border-strong); border-radius: var(--radius-sm); }

/* ============ BAND + CAROUSEL ============ */
.band { max-width: 1480px; margin: 0 auto; padding: 30px max(24px, env(safe-area-inset-left)) 0; }
.band-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; flex-wrap: wrap; gap: 12px; }
.band-head h2 { font-size: 21px; font-weight: 600; letter-spacing: -0.02em; }
.band-filters { display: flex; gap: 4px; }
.bf { font-family: var(--font); font-size: 12.5px; font-weight: 500; color: var(--text-2); background: rgba(255, 255, 255, 0.04); border: 1px solid var(--border); padding: 7px 15px; border-radius: 99px; cursor: pointer; transition: all 0.2s; }
.bf:hover { color: var(--text); border-color: var(--border-strong); }
.bf.active { color: var(--green); background: var(--green-soft); border-color: rgba(93, 224, 59, 0.3); }

.carousel { position: relative; display: flex; align-items: center; gap: 10px; }
.car-track {
  display: flex; gap: 14px; overflow-x: auto; scroll-behavior: smooth;
  scroll-snap-type: x mandatory; padding: 6px 2px 14px; flex: 1;
  scrollbar-width: none;
}
.car-track::-webkit-scrollbar { display: none; }
.car-nav { flex-shrink: 0; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--border-strong); background: rgba(6, 18, 30, 0.7); color: var(--text-2); font-size: 22px; line-height: 1; cursor: pointer; display: flex; align-items: center; justify-content: center; backdrop-filter: blur(8px); transition: background 0.2s, color 0.2s, transform 0.15s; }
.car-nav:hover { background: var(--green-soft); color: var(--green); border-color: rgba(93, 224, 59, 0.4); }
.car-nav:active { transform: scale(0.92); }
.car-nav:disabled { opacity: 0.3; cursor: default; }

.myco-card {
  position: relative; flex: 0 0 268px; scroll-snap-align: start;
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  border: 1px solid var(--border); border-radius: var(--radius); padding: 20px;
  overflow: hidden;
  transition: border-color 0.25s, transform 0.3s cubic-bezier(0.2, 0.7, 0.2, 1), box-shadow 0.3s;
}
.myco-card::before {
  content: ''; position: absolute; left: -30%; top: -40%; width: 80%; height: 80%;
  background: radial-gradient(circle, rgba(93, 224, 59, 0.1), transparent 70%);
  pointer-events: none; opacity: 0; transition: opacity 0.4s;
}
.myco-card:hover { transform: translateY(-5px); border-color: rgba(93, 224, 59, 0.3); box-shadow: 0 26px 54px -22px rgba(0, 0, 0, 0.7), 0 0 40px -16px rgba(93, 224, 59, 0.4); }
.myco-card:hover::before { opacity: 1; }
.mc-top { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: 12px; }
.mc-code { font-size: 30px; font-weight: 200; letter-spacing: 0.03em; line-height: 1; }
.status-dot { width: 9px; height: 9px; border-radius: 50%; margin-top: 6px; flex-shrink: 0; }
.status-dot.active { background: var(--green); box-shadow: 0 0 8px rgba(93, 224, 59, 0.7); }
.status-dot.operational { background: var(--green-2); box-shadow: 0 0 8px rgba(168, 255, 128, 0.6); }
.status-dot.waiting { background: var(--amber); box-shadow: 0 0 8px rgba(251, 191, 36, 0.55); }
.status-dot.idle { background: var(--grey); }
.status-dot.seed { background: var(--blue-2); box-shadow: 0 0 8px rgba(91, 180, 224, 0.5); }
.status-dot.unknown { background: var(--grey-dark); }
.mc-name { font-size: 16.5px; font-weight: 600; margin-bottom: 9px; letter-spacing: -0.015em; }
.holding-badge { display: inline-block; font-size: 10.5px; font-weight: 500; letter-spacing: 0.06em; padding: 3px 10px; border-radius: 99px; border: 1px solid var(--border-strong); color: var(--text-2); margin-bottom: 14px; }
.holding-badge.tuorlo { border-color: rgba(251, 191, 36, 0.35); color: var(--amber); }
.holding-badge.holion { border-color: rgba(46, 139, 192, 0.4); color: var(--blue-2); }
.mc-mat-lbl { display: flex; justify-content: space-between; font-size: 10.5px; color: var(--text-3); margin-bottom: 5px; letter-spacing: 0.04em; }
.mc-mat-lbl b { color: var(--green); font-weight: 600; }
.mc-mat-bar { height: 4px; border-radius: 99px; background: rgba(127, 200, 230, 0.08); overflow: hidden; margin-bottom: 13px; }
.mc-mat-fill { height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--blue), var(--green)); box-shadow: 0 0 6px rgba(93, 224, 59, 0.4); transition: width 0.9s cubic-bezier(0.2, 0.7, 0.2, 1); }
.mc-status-label { font-size: 12.5px; color: var(--text-2); line-height: 1.4; margin-bottom: 16px; min-height: 34px; }
.mc-open { width: 100%; font-family: var(--font); font-size: 13px; font-weight: 500; padding: 11px; border-radius: 12px; border: 1px solid rgba(93, 224, 59, 0.3); background: var(--green-soft); color: var(--green); cursor: pointer; transition: background 0.2s, transform 0.15s; }
.mc-open:hover { background: rgba(93, 224, 59, 0.2); }
.mc-open:active { transform: scale(0.97); }

.car-dots { display: flex; justify-content: center; gap: 7px; margin-top: 6px; }
.car-dot { width: 7px; height: 7px; border-radius: 50%; background: rgba(127, 200, 230, 0.2); border: none; cursor: pointer; transition: background 0.2s, transform 0.2s; }
.car-dot.active { background: var(--green); transform: scale(1.3); box-shadow: 0 0 8px rgba(93, 224, 59, 0.6); }

/* ============ BOTTOM BAND ============ */
.bottom-band { max-width: 1480px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 24px; padding: 36px max(24px, env(safe-area-inset-left)) 0; }
.bb-col h2 { font-size: 21px; font-weight: 600; letter-spacing: -0.02em; margin-bottom: 16px; }
.agents-empty { text-align: center; padding: 44px 24px; border: 1px dashed var(--border-strong); border-radius: var(--radius); }
.agents-empty .orb { width: 52px; height: 52px; margin: 0 auto 22px; border-radius: 50%; border: 1px dashed rgba(93, 224, 59, 0.4); display: flex; align-items: center; justify-content: center; animation: spin 24s linear infinite; }
.agents-empty .orb::after { content: ''; width: 10px; height: 10px; border-radius: 50%; background: var(--green); opacity: 0.6; box-shadow: 0 0 12px rgba(93, 224, 59, 0.6); }
.agents-empty h3 { font-size: 17px; font-weight: 500; margin-bottom: 8px; }
.agents-empty p { font-size: 13.5px; color: var(--text-3); max-width: 300px; margin: 0 auto; line-height: 1.6; }
.agent-card { display: flex; align-items: center; gap: 14px; }
.agent-avatar { width: 42px; height: 42px; border-radius: 50%; background: var(--green-soft); border: 1px solid rgba(93, 224, 59, 0.3); display: flex; align-items: center; justify-content: center; color: var(--green); font-weight: 600; font-size: 15px; flex-shrink: 0; }
.agent-info h4 { font-size: 15px; font-weight: 600; margin-bottom: 2px; }
.agent-info p { font-size: 13px; color: var(--text-3); }
.note-card .note-date { font-size: 11.5px; color: var(--text-3); letter-spacing: 0.05em; margin-bottom: 6px; }
.note-card .note-title { font-size: 16px; font-weight: 600; margin-bottom: 7px; }
.note-card .note-summary { font-size: 14.5px; color: var(--text-2); line-height: 1.6; font-style: italic; }

/* ============ CHAT DOCK ============ */
.chat-dock {
  position: fixed;
  right: 20px;
  bottom: max(20px, env(safe-area-inset-bottom));
  left: auto;
  transform: none;
  z-index: 40;
  width: 340px;
  border-radius: 18px;
  background: var(--glass);
  border: 1px solid var(--border-strong);
  box-shadow: 0 20px 60px -16px rgba(0,0,0,.85), inset 0 1px 0 rgba(127,200,230,.06);
  backdrop-filter: blur(28px) saturate(1.5); -webkit-backdrop-filter: blur(28px) saturate(1.5);
  overflow: hidden;
  transition: width .3s, box-shadow .3s;
}
/* Collapsed: pallino circolare FAB */
.chat-dock.collapsed {
  width: 56px;
  height: 56px;
  border-radius: 50%;
  overflow: hidden;
  box-shadow: 0 4px 24px rgba(0,0,0,.7), 0 0 0 2px rgba(56,189,248,.25);
}
.chat-dock.collapsed .chat-head {
  width: 56px; height: 56px;
  padding: 0;
  display: flex; align-items: center; justify-content: center;
  border-bottom: none;
}
.chat-head {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 14px; cursor: pointer;
  border-bottom: 1px solid var(--border);
}
.chat-mushroom-icon {
  width: 36px; height: 36px; border-radius: 50%;
  object-fit: cover; flex-shrink: 0;
  box-shadow: 0 0 10px rgba(56,189,248,.5);
  transition: transform .2s;
}
.chat-dock.collapsed .chat-mushroom-icon {
  width: 40px; height: 40px;
}
.chat-dock.collapsed:hover .chat-mushroom-icon { transform: scale(1.08); }
/* nasconde tutto tranne l'icona quando collapsed */
.chat-dock.collapsed .chat-title,
.chat-dock.collapsed .chat-status,
.chat-dock.collapsed .chat-toggle,
.chat-dock.collapsed .chat-voicebtn { display: none; }
.chat-title {
  display: flex; align-items: center; gap: 8px;
  font-size: 13px; font-weight: 500; flex: 1;
  white-space: nowrap; overflow: hidden;
}
.chat-title-text { flex: 1; }
.chat-orb {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--green); flex-shrink: 0;
  box-shadow: 0 0 8px rgba(93,224,59,.8);
  animation: pulse 3s ease-in-out infinite;
}
/* pallino verde online sopra l'icona quando collapsed */
.chat-dock.collapsed::after {
  content: '';
  position: absolute; top: 10px; right: 10px;
  width: 9px; height: 9px; border-radius: 50%;
  background: var(--green);
  box-shadow: 0 0 6px rgba(93,224,59,.9);
  animation: pulse 3s ease-in-out infinite;
}
.chat-status { font-size: 11px; color: var(--green); letter-spacing: .04em; }
.chat-status.thinking { color: var(--blue-2); }
.chat-toggle {
  background: none; border: none; color: var(--text-3);
  font-size: 14px; cursor: pointer;
  transition: transform .3s, color .2s; line-height: 1; flex-shrink: 0;
}
.chat-toggle:hover { color: var(--text); }
.chat-dock.collapsed .chat-toggle { transform: rotate(180deg); }
.chat-body {
  display: flex; flex-direction: column;
  max-height: 52vh; transition: max-height .4s, opacity .3s;
}
.chat-dock.collapsed .chat-body { max-height: 0; opacity: 0; pointer-events: none; overflow: hidden; }
.chat-log { flex: 1; overflow-y: auto; padding: 16px 16px 8px; display: flex; flex-direction: column; gap: 11px; min-height: 120px; max-height: 42vh; -webkit-overflow-scrolling: touch; }
.msg { display: flex; }
.msg.user { justify-content: flex-end; }
.msg.jarvis { justify-content: flex-start; }
.bubble { max-width: 86%; padding: 11px 15px; font-size: 14px; line-height: 1.52; border-radius: 17px; white-space: pre-wrap; word-break: break-word; animation: bubbleIn 0.3s ease; }
.msg.user .bubble { background: linear-gradient(180deg, var(--green-2), var(--green)); color: #06280a; font-weight: 450; border-bottom-right-radius: 6px; box-shadow: 0 6px 18px -6px rgba(93, 224, 59, 0.5); }
.msg.jarvis .bubble { background: rgba(255, 255, 255, 0.06); border: 1px solid var(--border); color: var(--text); border-bottom-left-radius: 6px; }
.msg.jarvis.error .bubble { background: var(--red-soft); border-color: rgba(248, 113, 113, 0.3); color: #f3c9c9; }
.bubble.typing { display: inline-flex; align-items: center; gap: 5px; color: var(--text-2); font-size: 13px; }
.bubble.typing em { font-style: normal; margin-left: 4px; opacity: 0.8; }
.bubble.typing span { width: 6px; height: 6px; border-radius: 50%; background: var(--green); animation: typedot 1.2s infinite ease-in-out; }
.bubble.typing span:nth-child(2) { animation-delay: 0.18s; }
.bubble.typing span:nth-child(3) { animation-delay: 0.36s; }
.chat-form { display: flex; align-items: center; gap: 9px; padding: 12px 14px max(12px, env(safe-area-inset-bottom)); border-top: 1px solid var(--border); }
#chatInput { flex: 1; font-family: var(--font); font-size: 14.5px; padding: 12px 15px; border-radius: 14px; border: 1px solid var(--border-strong); background: rgba(255, 255, 255, 0.04); color: var(--text); outline: none; transition: border-color 0.2s, box-shadow 0.2s; }
#chatInput::placeholder { color: var(--text-3); }
#chatInput:focus { border-color: rgba(93, 224, 59, 0.5); box-shadow: 0 0 0 3px rgba(93, 224, 59, 0.1); }
#chatInput:disabled { opacity: 0.5; }
#chatSend { flex-shrink: 0; width: 44px; height: 44px; border-radius: 13px; border: none; background: linear-gradient(180deg, var(--green-2), var(--green)); color: #06280a; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: filter 0.2s, transform 0.15s, opacity 0.2s; }
#chatSend svg { width: 20px; height: 20px; }
#chatSend:hover { filter: brightness(1.07); }
#chatSend:active { transform: scale(0.92); }
#chatSend:disabled { opacity: 0.4; cursor: default; }

/* ============ PROJECT PAGE ============ */
#viewProject { padding-bottom: 160px; }
.pp-hero {
  position: relative; max-width: 1100px; margin: 22px auto 0;
  border-radius: 26px; overflow: hidden; padding: 40px 36px;
  background:
    radial-gradient(120% 140% at 18% 0%, rgba(46,170,180,0.18), rgba(4,16,28,0) 55%),
    linear-gradient(180deg, #06203450, #051726);
  border: 1px solid var(--border); box-shadow: var(--shadow);
}
.pp-wrap { max-width: 1100px; margin: 0 auto; padding: 0 max(24px, env(safe-area-inset-left)); }
.pp-back { display: inline-flex; align-items: center; gap: 7px; font-size: 14px; font-weight: 500; color: var(--green); background: none; border: none; cursor: pointer; margin-bottom: 16px; transition: opacity 0.2s; }
.pp-back:hover { opacity: 0.75; }
.pp-code { font-size: 60px; font-weight: 100; letter-spacing: 0.04em; line-height: 1; color: rgba(232,244,248,0.55); }
.pp-name { font-size: clamp(28px, 5vw, 42px); font-weight: 600; letter-spacing: -0.025em; margin: 8px 0 14px; }
.pp-badges { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pp-status { display: inline-flex; align-items: center; gap: 7px; font-size: 13.5px; color: var(--text-2); }
.pp-status .status-dot { margin-top: 0; }
.pp-grid { display: grid; grid-template-columns: 1.3fr 1fr; gap: 18px; margin-top: 22px; }
.pp-summary { font-size: 16px; line-height: 1.7; color: var(--text-2); margin-bottom: 24px; }
.maturity { margin-bottom: 4px; }
.mat-row { margin-bottom: 16px; }
.mat-head { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 8px; }
.mat-label { color: var(--text-2); font-weight: 500; letter-spacing: 0.03em; }
.mat-val { color: var(--green); font-weight: 600; font-variant-numeric: tabular-nums; }
.mat-bar { height: 7px; border-radius: 99px; background: rgba(127, 200, 230, 0.08); overflow: hidden; }
.mat-fill { height: 100%; width: 0; border-radius: 99px; background: linear-gradient(90deg, var(--blue), var(--green)); box-shadow: 0 0 10px rgba(93, 224, 59, 0.45); transition: width 0.9s cubic-bezier(0.2, 0.7, 0.2, 1); }
.detail-block { border-radius: var(--radius-sm); padding: 18px 20px; margin-bottom: 14px; border: 1px solid var(--border); }
.detail-block h3 { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.16em; margin-bottom: 9px; }
.detail-block p { font-size: 14.5px; line-height: 1.6; }
.block-next { background: var(--green-soft); border-color: rgba(93, 224, 59, 0.3); }
.block-next h3 { color: var(--green); }
.block-next p { color: #dff7d4; }
.block-risk { background: var(--red-soft); border-color: rgba(248, 113, 113, 0.22); }
.block-risk h3 { color: var(--red); }
.block-risk p { color: #f0d4d4; }
.block-move { background: var(--blue-soft); border-color: rgba(46,139,192,0.3); }
.block-move h3 { color: var(--blue-2); }
.block-move p { color: #d4e9f5; }
.pp-panel { background: linear-gradient(180deg, var(--panel-2), var(--panel)); border: 1px solid var(--border); border-radius: var(--radius); padding: 22px; box-shadow: var(--shadow); }
.pp-panel h4 { font-size: 11.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.16em; color: var(--text-2); margin-bottom: 16px; }

/* ============ ANIMATIONS ============ */
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes viewIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes rise { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }
@keyframes bubbleIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
@keyframes shake { 0%, 100% { transform: translateX(0); } 20% { transform: translateX(-8px); } 40% { transform: translateX(7px); } 60% { transform: translateX(-5px); } 80% { transform: translateX(3px); } }
@keyframes typedot { 0%, 60%, 100% { transform: translateY(0); opacity: 0.5; } 30% { transform: translateY(-5px); opacity: 1; } }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01s !important; transition-duration: 0.01s !important; } }

/* ============ RESPONSIVE ============ */
@media (max-width: 1100px) {
  .cockpit { grid-template-columns: 1fr 1fr; }
  .panel-today { grid-column: 1 / -1; }
  .pp-grid { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .hero, .cockpit, .band, .bottom-band { padding-left: 16px; padding-right: 16px; }
  .cockpit { grid-template-columns: 1fr; gap: 14px; }
  .myco-hero { height: clamp(260px, 42vh, 360px); border-radius: 22px; }
  .bottom-band { grid-template-columns: 1fr; gap: 30px; }
  .crumbs { display: none; }
  .myco-card { flex-basis: 78vw; }
  .chat-dock:not(.collapsed) { width: calc(100% - 40px); right: 20px; }
  .pp-hero { padding: 30px 22px; border-radius: 22px; }
}
@media (max-width: 460px) {
  .topbar-meta .sys-pill { display: none; }
  .ring-wrap { width: 150px; height: 150px; }
}

/* ============ NAV TAB (Rete / Briefing) ============ */
.mainnav { display: flex; gap: 4px; margin-left: 18px; }
.nav-link {
  background: transparent; border: 1px solid transparent; color: var(--text-2);
  font: inherit; font-size: 13.5px; font-weight: 500; padding: 7px 15px; border-radius: 11px;
  cursor: pointer; transition: all 0.2s ease; letter-spacing: 0.01em;
}
.nav-link:hover { color: var(--text-1); background: rgba(127, 200, 230, 0.06); }
.nav-link.active { color: #061018; background: linear-gradient(180deg, #5fe0d6, #29b6b0); border-color: transparent; box-shadow: 0 4px 18px -6px rgba(46,200,190,0.5); }
@media (max-width: 720px) { .mainnav { margin-left: 8px; } .nav-link { padding: 6px 11px; font-size: 12.5px; } }

/* ============ BRAIN ICON (link → Knowledge) ============ */
.nav-brain {
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 11px;
  background: rgba(56, 189, 248, 0.08); border: 1px solid rgba(56, 189, 248, 0.22);
  cursor: pointer; text-decoration: none; flex-shrink: 0;
  transition: background 0.2s, border-color 0.2s, box-shadow 0.2s, transform 0.15s;
  margin-right: 4px;
}
.nav-brain:hover {
  background: rgba(56, 189, 248, 0.16); border-color: rgba(56, 189, 248, 0.5);
  box-shadow: 0 0 18px -6px rgba(56, 189, 248, 0.45); transform: scale(1.06);
}
.nav-brain:active { transform: scale(0.95); }
.brain-icon { display: block; }
@media (max-width: 720px) { .nav-brain { width: 34px; height: 34px; } }

/* ============ KNOWLEDGE HUB — tab bar ============ */
.kn-hub-wrap { max-width: 940px; }
.kn-hub-hero { margin-bottom: 0; }
.kn-tabs {
  display: flex; gap: 6px; margin-top: 20px; margin-bottom: 0;
  border-bottom: 1px solid var(--border); padding-bottom: 0;
}
.kn-tab {
  font-family: var(--font); font-size: 13.5px; font-weight: 500;
  color: var(--text-2); background: transparent; border: none;
  padding: 10px 18px; border-radius: 10px 10px 0 0; cursor: pointer;
  border-bottom: 2px solid transparent; margin-bottom: -1px;
  transition: color 0.2s, background 0.2s, border-color 0.2s;
}
.kn-tab:hover { color: var(--text); background: rgba(56, 189, 248, 0.05); }
.kn-tab.active {
  color: #38bdf8; border-bottom-color: #38bdf8;
  background: rgba(56, 189, 248, 0.08);
}
.kn-tab-pane { padding-top: 20px; }
.kn-tab-pane.hidden { display: none; }

/* Knowledge briefing tab */
.kn-briefing-head { margin-bottom: 14px; display: flex; justify-content: flex-end; }
.kn-brief-unavail { font-style: italic; color: var(--text-2) !important; }

/* Knowledge contacts tab */
.kn-contacts-toolbar {
  display: flex; align-items: flex-start; justify-content: space-between; flex-wrap: wrap;
  gap: 12px; margin-bottom: 16px;
}
.kn-contacts-meta { display: flex; flex-direction: column; gap: 6px; }
.kn-export-btn {
  font-family: var(--font); font-size: 13px; font-weight: 600;
  color: #06280a; background: linear-gradient(180deg, #5fe0d6, #29b6b0);
  border: none; border-radius: 10px; padding: 9px 16px; cursor: pointer;
  white-space: nowrap; transition: filter 0.2s, transform 0.15s, box-shadow 0.2s;
  box-shadow: 0 4px 16px -6px rgba(46,200,190,0.45); flex-shrink: 0;
}
.kn-export-btn:hover { filter: brightness(1.08); box-shadow: 0 6px 20px -6px rgba(46,200,190,0.6); }
.kn-export-btn:active { transform: scale(0.96); }
@media (max-width: 720px) { .kn-tabs { gap: 2px; } .kn-tab { font-size: 12px; padding: 8px 12px; } .kn-contacts-toolbar { flex-direction: column; } }

/* ============ BAND PROGETTI (centrale, in alto) ============ */
.band-projects { margin-top: 26px; }
.band-projects .band-head h2 { font-size: clamp(20px, 2.6vw, 27px); }
.band-projects .myco-card { min-height: 200px; }

/* ============ VOICE TOGGLE ============ */
.chat-voicebtn {
  margin-left: auto; background: transparent; border: none; cursor: pointer;
  font-size: 16px; line-height: 1; padding: 4px 6px; border-radius: 8px; opacity: 0.85;
  transition: opacity 0.2s ease, background 0.2s ease;
}
.chat-voicebtn:hover { opacity: 1; background: rgba(127, 200, 230, 0.1); }
.chat-voicebtn.off { opacity: 0.5; }
.chat-head .chat-status { margin-left: 0; }

/* ============ MIC BUTTON (STT) ============ */
.chat-mic {
  flex: 0 0 auto; width: 38px; height: 38px; border-radius: 50%;
  display: grid; place-items: center; cursor: pointer;
  background: rgba(46, 196, 196, 0.1); border: 1px solid rgba(46, 196, 196, 0.28);
  color: #6fe6dc; transition: all 0.2s ease;
}
.chat-mic svg { width: 19px; height: 19px; }
.chat-mic:hover { background: rgba(46, 196, 196, 0.18); border-color: rgba(46, 196, 196, 0.5); }
.chat-mic.listening {
  background: rgba(231, 76, 100, 0.16); border-color: rgba(231, 76, 100, 0.55); color: #ff8a9c;
  animation: micPulse 1.1s ease-in-out infinite;
}
@keyframes micPulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(231, 76, 100, 0.45); }
  50% { box-shadow: 0 0 0 9px rgba(231, 76, 100, 0); }
}

/* ============ BRIEFING VIEW ============ */
#viewBriefing { padding-bottom: 180px; }
.brief-wrap { max-width: 940px; margin: 0 auto; padding: 24px max(20px, env(safe-area-inset-left)) 0; }
.brief-hero {
  position: relative; border-radius: 22px; padding: 30px 30px 26px; margin-top: 14px;
  background: radial-gradient(130% 150% at 12% 0%, rgba(46,170,180,0.2), rgba(4,16,28,0) 55%), linear-gradient(180deg, #06203450, #051726);
  border: 1px solid var(--border); box-shadow: var(--shadow);
}
.brief-hero h1 { font-size: clamp(26px, 4vw, 40px); font-weight: 200; letter-spacing: -0.02em; }
.brief-hero p { margin-top: 10px; max-width: 600px; font-size: 14px; line-height: 1.6; color: var(--text-2); font-weight: 300; }
.brief-refresh {
  position: absolute; top: 24px; right: 24px; background: rgba(127,200,230,0.08);
  border: 1px solid var(--border); color: var(--text-2); font: inherit; font-size: 12.5px;
  padding: 7px 13px; border-radius: 10px; cursor: pointer; transition: all 0.2s ease;
}
.brief-refresh:hover { color: var(--text-1); background: rgba(127,200,230,0.16); }
.brief-body { margin-top: 22px; }
.brief-md { font-size: 15px; line-height: 1.72; color: rgba(232,244,248,0.9); }
.brief-md h1, .brief-md .bm-h1 { font-size: 26px; font-weight: 300; margin: 26px 0 12px; letter-spacing: -0.02em; }
.brief-md h2, .brief-md .bm-h2 { font-size: 21px; font-weight: 500; margin: 30px 0 12px; color: #6fe6dc; border-bottom: 1px solid var(--border); padding-bottom: 8px; }
.brief-md h3, .brief-md .bm-h3 { font-size: 17px; font-weight: 600; margin: 22px 0 8px; color: var(--text-1); }
.brief-md p { margin: 10px 0; }
.brief-md ul { margin: 10px 0 14px; padding-left: 22px; }
.brief-md li { margin: 6px 0; }
.brief-md a { color: #7fd2e6; text-decoration: none; border-bottom: 1px solid rgba(127,210,230,0.3); }
.brief-md a:hover { border-bottom-color: #7fd2e6; }
.brief-md code { background: rgba(127,200,230,0.1); padding: 2px 6px; border-radius: 6px; font-size: 13px; }
.brief-md pre { background: rgba(2,10,20,0.55); padding: 14px 16px; border-radius: 12px; overflow-x: auto; border: 1px solid var(--border); margin: 12px 0; }
.brief-md pre code { background: none; padding: 0; }
.brief-md hr { border: none; border-top: 1px solid var(--border); margin: 24px 0; }
.brief-md .bm-trow { padding: 5px 0; border-bottom: 1px dashed rgba(127,200,230,0.12); font-size: 14px; color: var(--text-2); }
.brief-md strong { color: var(--text-1); font-weight: 600; }
@media (max-width: 720px) { .brief-refresh { position: static; display: inline-block; margin-top: 14px; } }

/* ============ AGENTI — band prominente in alto ============ */
.band-agents { margin-top: 28px; }
.band-hint { font-size: 12.5px; color: var(--text-2); }
.agents-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.agent-card.big {
  background: linear-gradient(180deg, rgba(46,196,196,0.06), rgba(8,24,38,0.6));
  border: 1px solid rgba(46,196,196,0.22); border-radius: 18px; padding: 18px;
  cursor: pointer; transition: all 0.22s ease; display: flex; flex-direction: column; gap: 9px;
}
.agent-card.big:hover { transform: translateY(-3px); border-color: rgba(46,196,196,0.5); box-shadow: 0 14px 36px -16px rgba(46,196,196,0.4); }
.agent-top { display: flex; align-items: center; justify-content: space-between; }
.agent-card.big .agent-avatar { width: 42px; height: 42px; border-radius: 12px; display: grid; place-items: center; font-size: 18px; font-weight: 600; color: #061018; background: linear-gradient(140deg, #6fe6dc, #29b6b0); }
.agent-card.big h4 { font-size: 16px; font-weight: 600; }
.agent-task { font-size: 13px; line-height: 1.5; color: var(--text-2); flex: 1; }
.agent-state { font-size: 11px; font-weight: 600; padding: 3px 9px; border-radius: 20px; text-transform: capitalize; letter-spacing: 0.02em; }
.agent-state.ready, .agent-state.active { background: rgba(46,196,196,0.16); color: #6fe6dc; }
.agent-state.working { background: rgba(224,188,110,0.16); color: #e0bc6e; }
.agent-proj { display: inline-block; font-size: 11px; color: var(--text-2); background: rgba(127,200,230,0.08); padding: 3px 9px; border-radius: 8px; width: fit-content; }
.agent-open { margin-top: 4px; background: transparent; border: none; color: #6fe6dc; font: inherit; font-size: 13px; font-weight: 500; text-align: left; padding: 0; cursor: pointer; }
.bb-full { grid-column: 1 / -1; }

/* ============ AGENT DETAIL PAGE ============ */
#viewAgent { padding-bottom: 180px; }
.ag-hero {
  max-width: 1100px; margin: 22px auto 0; border-radius: 26px; padding: 32px 34px;
  background: radial-gradient(120% 140% at 18% 0%, rgba(46,196,196,0.16), rgba(4,16,28,0) 55%), linear-gradient(180deg, #06203450, #051726);
  border: 1px solid var(--border); box-shadow: var(--shadow); display: flex; gap: 22px; align-items: flex-start;
}
.ag-avatar-big { flex: 0 0 auto; width: 70px; height: 70px; border-radius: 20px; display: grid; place-items: center; font-size: 30px; font-weight: 600; color: #061018; background: linear-gradient(140deg, #6fe6dc, #29b6b0); }
.ag-name { font-size: clamp(24px, 3.4vw, 36px); font-weight: 200; letter-spacing: -0.02em; }
.ag-badges { display: flex; gap: 8px; align-items: center; margin: 10px 0; flex-wrap: wrap; }
.ag-task { font-size: 14.5px; line-height: 1.6; color: var(--text-2); max-width: 640px; }
.ag-cmd { margin-top: 10px; font-size: 13px; color: var(--text-2); }
.ag-cmd code { background: rgba(127,200,230,0.1); padding: 3px 8px; border-radius: 6px; color: #7fd2e6; }
.ag-log-head { max-width: 1100px; margin: 26px auto 14px; display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.ag-log-head h3 { font-size: 18px; font-weight: 600; }
.ag-log-hint { font-size: 12.5px; color: var(--text-2); }
.ag-log { max-width: 1100px; margin: 0 auto; display: flex; flex-direction: column; gap: 12px; }
.ag-entry { border: 1px solid var(--border); border-radius: 14px; padding: 14px 16px; background: rgba(8,24,38,0.45); border-left: 3px solid rgba(127,200,230,0.3); }
.ag-entry.output { border-left-color: #29b6b0; }
.ag-entry.task { border-left-color: #e0bc6e; }
.ag-entry-meta { display: flex; justify-content: space-between; margin-bottom: 7px; font-size: 12px; }
.ag-entry-type { font-weight: 600; color: var(--text-1); }
.ag-entry-ts { color: var(--text-2); }
.ag-entry-text { font-size: 14px; line-height: 1.6; color: rgba(232,244,248,0.88); white-space: pre-wrap; }

/* ============ STORICO LAVORI (history + deliverables) ============ */
.agent-meta-row { display: flex; gap: 7px; align-items: center; flex-wrap: wrap; }
.agent-hist-pill { font-size: 11px; font-weight: 600; color: #7fe0d6; background: rgba(46,196,196,0.13); border: 1px solid rgba(46,196,196,0.22); padding: 3px 9px; border-radius: 20px; width: fit-content; }
.hist-list { max-width: 1100px; margin: 0 auto; display: flex; flex-direction: column; gap: 16px; }
.hist-card {
  border: 1px solid var(--border); border-radius: 18px; padding: 18px 18px 16px;
  background: linear-gradient(180deg, rgba(8,28,44,0.55), rgba(5,18,30,0.4));
  border-left: 3px solid rgba(46,196,196,0.45);
  backdrop-filter: blur(10px) saturate(1.3); -webkit-backdrop-filter: blur(10px) saturate(1.3);
}
.hist-card-head { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; }
.hist-title { font-size: 16.5px; font-weight: 600; letter-spacing: -0.01em; }
.hist-meta { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-top: 7px; }
.hist-badge { font-size: 11px; font-weight: 600; color: #061018; background: linear-gradient(140deg, #6fe6dc, #29b6b0); padding: 3px 10px; border-radius: 20px; letter-spacing: 0.02em; }
.hist-date { font-size: 12.5px; color: var(--text-2); }
.hist-proj { font-size: 11px; color: var(--text-2); background: rgba(127,200,230,0.08); padding: 2px 8px; border-radius: 7px; }
.hist-count { font-size: 11.5px; color: var(--text-3); margin-left: auto; }
.hist-brief { font-size: 13.5px; line-height: 1.6; color: var(--text-2); margin: 11px 0 14px; max-width: 760px; }
.hist-thumbs {
  display: flex; gap: 12px; overflow-x: auto; padding: 4px 2px 10px; scroll-snap-type: x proximity;
  scrollbar-width: thin; scrollbar-color: rgba(127,200,230,0.3) transparent;
}
.hist-thumbs::-webkit-scrollbar { height: 7px; }
.hist-thumbs::-webkit-scrollbar-thumb { background: rgba(127,200,230,0.25); border-radius: 8px; }
.hist-thumb {
  flex: 0 0 auto; width: 116px; scroll-snap-align: start; padding: 0; border: 1px solid var(--border-strong);
  background: rgba(4,14,24,0.6); border-radius: 13px; overflow: hidden; cursor: pointer; display: flex; flex-direction: column;
  transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease; text-align: left;
}
.hist-thumb:hover { transform: translateY(-3px); border-color: rgba(46,196,196,0.55); box-shadow: 0 10px 26px rgba(0,0,0,0.4), 0 0 0 1px rgba(46,196,196,0.25); }
.hist-thumb img { width: 116px; height: 116px; object-fit: cover; display: block; background: #08151f; }
.hist-thumb-file { width: 116px; height: 116px; display: grid; place-items: center; gap: 6px; font-size: 30px; color: #6fe6dc; }
.hist-thumb-file small { font-size: 10px; color: var(--text-2); padding: 0 8px; text-align: center; line-height: 1.3; }
.hist-thumb-cap { font-size: 10.5px; color: var(--text-2); padding: 6px 8px; line-height: 1.3; border-top: 1px solid var(--border); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ---- download deliverables ---- */
.hist-dlall {
  flex: 0 0 auto; margin-left: auto; font-size: 12px; font-weight: 600; cursor: pointer;
  color: #6fe6dc; background: rgba(46,196,196,0.08); border: 1px solid rgba(46,196,196,0.32);
  padding: 6px 13px; border-radius: 20px; white-space: nowrap;
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.15s ease;
}
.hist-dlall:hover { background: rgba(46,196,196,0.18); border-color: rgba(46,196,196,0.55); transform: translateY(-1px); }
.hist-dlall:disabled, .hist-dlall.busy { opacity: 0.85; cursor: default; transform: none; }
.hist-thumb-wrap { position: relative; flex: 0 0 auto; }
.hist-thumb-dl {
  position: absolute; top: 6px; right: 6px; z-index: 2; width: 26px; height: 26px; border-radius: 50%;
  display: grid; place-items: center; font-size: 13px; text-decoration: none; color: #061018;
  background: linear-gradient(140deg, #6fe6dc, #29b6b0); border: 1px solid rgba(46,196,196,0.5);
  box-shadow: 0 4px 12px rgba(0,0,0,0.4); opacity: 0; transform: translateY(-3px);
  transition: opacity 0.18s ease, transform 0.18s ease, filter 0.18s ease;
}
.hist-thumb-wrap:hover .hist-thumb-dl { opacity: 1; transform: translateY(0); }
.hist-thumb-dl:hover { filter: brightness(1.12); }
@media (hover: none) { .hist-thumb-dl { opacity: 1; transform: none; } }

/* ============ KNOWLEDGE — materiali (home) ============ */
.kn-count { font-size: 13px; font-weight: 400; color: var(--text-2); }
.kn-wrap { display: flex; flex-direction: column; gap: 18px; }
.kn-intro {
  font-size: 13px; line-height: 1.6; color: var(--text-2); margin: 2px 0 4px;
  padding: 12px 14px; border-radius: 12px; border: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(46,196,196,0.05), rgba(5,18,30,0.3));
}
.kn-group { display: flex; flex-direction: column; gap: 9px; }
.kn-group-title {
  font-size: 13px; font-weight: 600; letter-spacing: 0.01em; color: var(--text);
  display: flex; align-items: center; gap: 8px; padding-bottom: 2px;
  border-bottom: 1px solid var(--border);
}
.kn-group-n { font-size: 11px; font-weight: 600; color: #6fe6dc; background: rgba(46,196,196,0.1); padding: 1px 8px; border-radius: 20px; }
.kn-items { display: flex; flex-direction: column; gap: 8px; }
.kn-item {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 10px 13px; border: 1px solid var(--border); border-radius: 12px;
  background: rgba(8,24,38,0.42); transition: border-color 0.18s ease, background 0.18s ease;
}
.kn-item:hover { border-color: rgba(46,196,196,0.35); background: rgba(8,28,44,0.6); }
.kn-item-ref { border-left: 3px solid rgba(167,139,250,0.5); }
.kn-item-main { display: flex; align-items: center; gap: 10px; min-width: 0; flex: 1 1 240px; }
.kn-label { font-size: 13.5px; font-weight: 500; color: var(--text); line-height: 1.35; }
.kn-badge { flex: 0 0 auto; font-size: 10px; font-weight: 700; letter-spacing: 0.03em; padding: 3px 9px; border-radius: 7px; text-transform: uppercase; }
.kn-badge.kt-pdf { color: #061018; background: linear-gradient(140deg, #6fe6dc, #29b6b0); }
.kn-badge.kt-img { color: #061018; background: linear-gradient(140deg, #9adcff, #4fa6da); }
.kn-badge.kt-ref { color: #e8f4f8; background: rgba(167,139,250,0.22); border: 1px solid rgba(167,139,250,0.4); }
.kn-badge.kt-other { color: var(--text); background: rgba(127,200,230,0.12); }
.kn-actions { display: flex; gap: 8px; margin-left: auto; flex: 0 0 auto; }
.kn-act {
  font-size: 12px; font-weight: 600; text-decoration: none; padding: 5px 12px; border-radius: 20px;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.15s ease; white-space: nowrap;
}
.kn-open { color: var(--text-2); border: 1px solid var(--border-strong); }
.kn-open:hover { color: #6fe6dc; border-color: rgba(46,196,196,0.45); background: rgba(46,196,196,0.06); transform: translateY(-1px); }
.kn-dl { color: #061018; background: linear-gradient(140deg, #6fe6dc, #29b6b0); border: 1px solid rgba(46,196,196,0.5); }
.kn-dl:hover { filter: brightness(1.1); transform: translateY(-1px); }
.kn-note { font-size: 12px; color: var(--text-3); line-height: 1.5; flex: 1 1 100%; margin-left: 0; font-style: italic; }
@media (max-width: 640px) {
  .kn-actions { margin-left: 0; width: 100%; }
  .kn-item-main { flex: 1 1 100%; }
}

/* ---- lightbox ---- */
body.lb-open { overflow: hidden; }
.lightbox { position: fixed; inset: 0; z-index: 200; display: flex; align-items: center; justify-content: center; }
.lightbox.hidden { display: none; }
.lb-backdrop { position: absolute; inset: 0; background: rgba(2,8,14,0.9); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); }
.lb-figure { position: relative; z-index: 2; max-width: 92vw; max-height: 92vh; display: flex; flex-direction: column; align-items: center; gap: 14px; margin: 0; }
.lb-imgwrap { display: flex; align-items: center; justify-content: center; max-width: 92vw; max-height: 78vh; }
.lb-imgwrap img { max-width: 92vw; max-height: 78vh; border-radius: 14px; box-shadow: 0 30px 80px rgba(0,0,0,0.6); object-fit: contain; }
.lb-cap { display: flex; gap: 10px 16px; align-items: center; flex-wrap: wrap; justify-content: center; max-width: 90vw; }
.lb-job { font-size: 12px; color: var(--text-3); text-transform: uppercase; letter-spacing: 0.08em; }
.lb-label { font-size: 15px; font-weight: 500; color: var(--text); }
.lb-counter { font-size: 12.5px; color: var(--text-2); }
.lb-open { font-size: 13px; font-weight: 500; color: #6fe6dc; text-decoration: none; border: 1px solid rgba(46,196,196,0.3); padding: 5px 12px; border-radius: 20px; transition: background 0.18s; }
.lb-open:hover { background: rgba(46,196,196,0.12); }
.lb-close { position: absolute; top: 18px; right: 20px; z-index: 3; width: 44px; height: 44px; border-radius: 50%; border: 1px solid var(--border-strong); background: rgba(6,18,30,0.7); color: var(--text); font-size: 20px; cursor: pointer; backdrop-filter: blur(8px); display: grid; place-items: center; }
.lb-nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 3; width: 52px; height: 52px; border-radius: 50%; border: 1px solid var(--border-strong); background: rgba(6,18,30,0.6); color: var(--text); font-size: 30px; line-height: 1; cursor: pointer; backdrop-filter: blur(8px); display: grid; place-items: center; transition: background 0.18s; }
.lb-nav:hover { background: rgba(46,196,196,0.18); }
.lb-prev { left: 16px; }
.lb-next { right: 16px; }
.lb-close:hover { background: rgba(248,113,113,0.2); }
@media (max-width: 640px) {
  .lb-nav { width: 44px; height: 44px; font-size: 26px; }
  .lb-prev { left: 8px; } .lb-next { right: 8px; }
  .lb-close { top: 12px; right: 12px; }
  .hist-thumb, .hist-thumb img, .hist-thumb-file { width: 104px; }
  .hist-thumb img, .hist-thumb-file { height: 104px; }
}

/* ============ FILE UPLOAD (knowledge progetto) ============ */
.pp-knowledge { margin-top: 30px; }
.file-drop {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px;
  padding: 26px; border: 1.5px dashed rgba(46,196,196,0.4); border-radius: 16px; cursor: pointer;
  background: rgba(46,196,196,0.04); transition: all 0.2s ease; text-align: center;
}
.file-drop:hover, .file-drop.drag { background: rgba(46,196,196,0.1); border-color: rgba(46,196,196,0.7); }
.file-drop.uploading { opacity: 0.6; pointer-events: none; }
.fd-ic { font-size: 26px; color: #6fe6dc; }
.fd-txt { font-size: 14.5px; color: var(--text-1); }
.fd-txt b { color: #6fe6dc; }
.fd-sub { font-size: 12px; color: var(--text-2); }
.file-list { margin-top: 16px; display: flex; flex-direction: column; gap: 9px; }
.file-row { display: flex; align-items: center; gap: 12px; padding: 11px 14px; border: 1px solid var(--border); border-radius: 12px; background: rgba(8,24,38,0.4); }
.file-ic { font-size: 18px; }
.file-name { font-size: 14px; font-weight: 500; color: var(--text-1); }
.file-meta { font-size: 12px; color: var(--text-2); margin-top: 2px; }

/* ============ MIC sempre visibile + stato continuo ============ */
.chat-mic { display: grid !important; }
.chat-mic.unsupported { opacity: 0.45; }
.chat-mic.always { background: rgba(46,196,196,0.28); border-color: #29b6b0; color: #061018; box-shadow: 0 0 0 3px rgba(46,196,196,0.18); }
.chat-mic.always svg { color: #061018; }

/* ============================================================
   HUB RADIALE — micelio pulsante al centro, tab intorno
   ============================================================ */
.hub {
  position: relative;
  max-width: 1480px; margin: 0 auto;
  height: clamp(520px, 74vh, 760px);
  display: grid; place-items: center;
  overflow: visible;
}
.hub-canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; z-index: 0; }

/* CORE centrale */
.hub-core {
  position: relative; z-index: 3;
  width: clamp(180px, 24vw, 260px); height: clamp(180px, 24vw, 260px);
  border-radius: 50%; border: none; cursor: pointer; background: transparent;
  display: grid; place-items: center;
}
.core-glow {
  position: absolute; inset: 8%; border-radius: 50%;
  background: radial-gradient(circle at 50% 45%, rgba(120,244,230,0.5), rgba(46,196,196,0.28) 42%, rgba(46,196,196,0) 72%);
  filter: blur(6px); animation: corePulse 3.6s ease-in-out infinite;
}
@keyframes corePulse { 0%,100% { transform: scale(1); opacity: 0.85; } 50% { transform: scale(1.08); opacity: 1; } }
.core-ring { position: absolute; border-radius: 50%; border: 1px solid rgba(46,196,196,0.35); inset: 0; animation: coreRipple 4.2s ease-out infinite; }
.core-ring.cr1 { animation-delay: 0s; }
.core-ring.cr2 { animation-delay: 1.4s; }
.core-ring.cr3 { animation-delay: 2.8s; }
@keyframes coreRipple { 0% { transform: scale(0.7); opacity: 0.6; } 100% { transform: scale(1.5); opacity: 0; } }
.core-inner {
  position: relative; z-index: 2; width: 72%; height: 72%; border-radius: 50%;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
  background: radial-gradient(circle at 50% 40%, #0a2a3e, #051726 78%);
  border: 1px solid rgba(120,244,230,0.4);
  box-shadow: inset 0 0 40px rgba(46,196,196,0.25), 0 0 60px -10px rgba(46,196,196,0.5);
}
.hub-core.active .core-inner { box-shadow: inset 0 0 50px rgba(46,196,196,0.4), 0 0 90px -8px rgba(46,196,196,0.75); }
.core-state { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: #6fe6dc; }
.core-num { font-size: clamp(40px, 6vw, 62px); font-weight: 200; line-height: 1; color: #eafcff; letter-spacing: -0.03em; }
.core-num::after { content: '%'; font-size: 0.42em; color: var(--text-2); margin-left: 2px; }
.core-lbl { font-size: 11px; color: var(--text-2); letter-spacing: 0.04em; }

/* TILE orbitanti */
.orb-tile {
  position: absolute; z-index: 4;
  width: clamp(58px, 7vw, 74px); height: clamp(58px, 7vw, 74px); border-radius: 22px;
  display: grid; place-items: center; cursor: pointer;
  background: linear-gradient(180deg, rgba(10,30,46,0.9), rgba(6,18,30,0.82));
  border: 1px solid rgba(127,200,230,0.22); backdrop-filter: blur(8px);
  color: #bfeef0; transition: transform 0.22s ease, border-color 0.22s ease, box-shadow 0.22s ease;
  box-shadow: 0 14px 34px -18px rgba(0,0,0,0.8);
}
.orb-tile:hover { transform: scale(1.1); border-color: rgba(46,196,196,0.7); box-shadow: 0 0 34px -6px rgba(46,196,196,0.5); }
.orb-tile.active { border-color: #29b6b0; background: linear-gradient(180deg, rgba(46,196,196,0.25), rgba(6,18,30,0.9)); box-shadow: 0 0 40px -6px rgba(46,196,196,0.6); }
.orb-ic { font-size: clamp(22px, 2.6vw, 28px); line-height: 1; }
.orb-badge {
  position: absolute; top: -6px; right: -6px; min-width: 19px; height: 19px; padding: 0 5px;
  border-radius: 10px; background: #29b6b0; color: #04131a; font-size: 11px; font-weight: 700;
  display: grid; place-items: center; box-shadow: 0 2px 8px rgba(0,0,0,0.4);
}
.orb-badge.warn { background: var(--amber); color: #2a1d00; }
.orb-badge.hot { background: #ff8a5c; color: #2a0e00; }

/* posizioni radiali (desktop) — 6 tile attorno al core */
.orb-tile.t-projects  { top: 6%;  left: 50%; transform: translateX(-50%); }
.orb-tile.t-agents    { top: 26%; right: 12%; }
.orb-tile.t-today     { bottom: 26%; right: 12%; }
.orb-tile.t-alerts    { bottom: 12%; left: 22%; }
.orb-tile.t-alerts:hover { transform: scale(1.1); }
.orb-tile.t-alerts.active { transform: none; }
.orb-tile.t-brain     { bottom: 26%; left: 12%; }
.orb-tile.t-knowledge { top: 26%; left: 12%; }
.orb-tile.t-projects:hover { transform: translateX(-50%) scale(1.1); }
.orb-tile.t-projects.active { transform: translateX(-50%); }

/* PANNELLO CONTESTUALE */
.hub-panel {
  max-width: 1480px; margin: 0 auto; padding: 0 max(20px, env(safe-area-inset-left));
  max-height: 0; overflow: hidden; opacity: 0; transition: max-height 0.45s ease, opacity 0.35s ease, margin 0.35s ease;
}
.hub-panel.open { max-height: 2400px; opacity: 1; margin-bottom: 40px; }
.hub-pane { display: none; animation: paneIn 0.4s ease; }
.hub-pane.active { display: block; }
@keyframes paneIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
.kn-notes { margin-top: 26px; }
.kn-notes h4 { font-size: 15px; font-weight: 600; margin-bottom: 12px; color: var(--text-2); }

/* ALERT BRAINSTORMING */
.brain-intro { font-size: 13.5px; color: var(--text-2); margin-bottom: 14px; line-height: 1.5; }
.brain-alerts { display: flex; flex-direction: column; gap: 10px; }
.brain-alert { padding: 14px 16px; border: 1px solid rgba(255,138,92,0.28); border-left: 3px solid #ff8a5c; border-radius: 13px; background: rgba(255,138,92,0.05); cursor: pointer; transition: all 0.2s ease; }
.brain-alert:hover { background: rgba(255,138,92,0.1); transform: translateX(3px); }
.ba-trend { font-size: 14.5px; font-weight: 500; color: #ffcaa8; }
.ba-link { font-size: 12.5px; color: var(--text-2); margin-top: 4px; }
.ba-link b { color: var(--text-1); }

/* MATURITÀ — riga integrazione company evidenziata */
.mat-row.mat-integ .mat-label { color: #6fe6dc; font-weight: 600; }
.mat-row.mat-integ .mat-fill { background: linear-gradient(90deg, #29b6b0, #e0bc6e) !important; }
.integ-note { margin-top: 14px; font-size: 12.5px; line-height: 1.55; color: var(--text-2); padding-top: 12px; border-top: 1px solid var(--border); }
.integ-note b { color: #6fe6dc; }
.block-trend .trend-list { margin: 6px 0 0; padding-left: 18px; }
.block-trend .trend-list li { font-size: 13.5px; line-height: 1.5; color: var(--text-2); margin: 4px 0; }

/* RESPONSIVE — su mobile: core sopra, tile in griglia sotto */
@media (max-width: 760px) {
  .hub {
    height: auto; min-height: auto; padding: 16px 16px 8px;
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 14px;
  }
  .hub-canvas { height: 100%; }
  .hub-core { flex: 0 0 100%; margin: 6px 0 8px; }
  .orb-tile, .orb-tile.t-projects, .orb-tile.t-agents, .orb-tile.t-today,
  .orb-tile.t-alerts, .orb-tile.t-brain, .orb-tile.t-knowledge {
    position: static; transform: none; inset: auto;
    flex: 0 0 calc(33.333% - 12px); width: auto; height: 70px; border-radius: 18px;
  }
  .orb-tile:hover, .orb-tile.t-projects:hover, .orb-tile.t-alerts:hover { transform: scale(1.05); }
  .orb-tile.active, .orb-tile.t-projects.active, .orb-tile.t-alerts.active { transform: none; }
}

/* ============================================================
   DASHBOARD IMMERSIVA — rete viva di sfondo + pannelli densi
   ============================================================ */
.net-bg {
  position: fixed; inset: 0; width: 100vw; height: 100vh; z-index: 0;
  pointer-events: none; opacity: 0.55;
}
.dash { position: relative; z-index: 1; max-width: 1560px; margin: 0 auto; padding: 18px max(20px, env(safe-area-inset-left)) 200px; }

/* STRIP CORE */
.corestrip {
  display: flex; align-items: center; gap: 20px; padding: 16px 20px; margin-bottom: 18px;
  background: linear-gradient(120deg, rgba(10,30,46,0.72), rgba(6,18,30,0.5));
  border: 1px solid var(--border); border-radius: 22px; backdrop-filter: blur(10px);
  box-shadow: var(--shadow);
}
.core-mini {
  position: relative; flex: 0 0 auto; width: 84px; height: 84px; border-radius: 50%;
  border: none; background: transparent; cursor: pointer; display: grid; place-items: center;
}
.core-mini .core-glow { position: absolute; inset: 10%; border-radius: 50%; background: radial-gradient(circle, rgba(120,244,230,0.55), rgba(46,196,196,0) 70%); filter: blur(4px); animation: corePulse 3.6s ease-in-out infinite; }
.core-mini .core-ring { position: absolute; inset: 0; border-radius: 50%; border: 1px solid rgba(46,196,196,0.4); animation: coreRipple 4s ease-out infinite; }
.core-mini .cr2 { animation-delay: 1.6s; }
.core-mini-num { position: relative; z-index: 2; font-size: 26px; font-weight: 300; color: #eafcff; }
.core-mini-num::after { content: '%'; font-size: 0.5em; color: var(--text-2); }
.corestrip-info { flex: 1; min-width: 0; }
.corestrip-info .greeting { font-size: clamp(20px, 2.6vw, 28px); font-weight: 200; letter-spacing: -0.02em; }
.corestrip-info .hero-date { font-size: 13px; color: var(--text-2); text-transform: capitalize; margin-top: 2px; }
.corestrip-info .myco-state { font-size: 12.5px; color: #6fe6dc; margin-top: 6px; letter-spacing: 0.02em; }
.corestrip .mini-stats { display: flex; gap: 10px; flex: 0 0 auto; }
.corestrip .mini-stat { text-align: center; padding: 8px 14px; border-radius: 14px; background: rgba(255,255,255,0.04); border: 1px solid var(--border); }
.corestrip .ms-num { font-size: 20px; font-weight: 300; display: block; }
.corestrip .mini-stat.green .ms-num { color: #6fe6dc; }
.corestrip .mini-stat.amber .ms-num { color: var(--amber); }
.corestrip .mini-stat.blue .ms-num { color: var(--blue-2); }
.corestrip .ms-lbl { font-size: 10.5px; color: var(--text-2); text-transform: uppercase; letter-spacing: 0.06em; }

/* ===== HERO AGENTI (nuovo banner: overview agenti vivi) ===== */
.agents-hero { margin-bottom: 20px; }
.agents-hero-head { display: flex; align-items: baseline; gap: 12px; margin: 0 4px 12px; }
.agents-hero-head h2 { font-size: 14px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: #cfeef0; }
.agents-hero-sub { font-size: 11.5px; color: #6fe6dc; letter-spacing: 0.04em; }
.agents-hero-track {
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(300px, 1fr);
  gap: 16px; overflow-x: auto; scroll-snap-type: x proximity;
  padding: 4px 4px 10px; -webkit-overflow-scrolling: touch;
}
.agents-hero-track::-webkit-scrollbar { height: 7px; }
.agents-hero-track::-webkit-scrollbar-thumb { background: rgba(46,196,196,0.3); border-radius: 99px; }
.ahero-card {
  scroll-snap-align: start; display: flex; gap: 16px; align-items: flex-start;
  padding: 16px 18px; border-radius: 20px; cursor: pointer; min-width: 0;
  background: linear-gradient(135deg, rgba(12,34,50,0.78), rgba(6,18,30,0.55));
  border: 1px solid rgba(46,196,196,0.18);
  box-shadow: 0 18px 48px -28px rgba(0,0,0,0.8);
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}
.ahero-card:hover, .ahero-card:focus-visible {
  transform: translateY(-3px); outline: none;
  border-color: rgba(46,196,196,0.55);
  box-shadow: 0 22px 56px -22px rgba(46,196,196,0.42);
}
.ahero-avatar { position: relative; flex: 0 0 auto; width: 80px; height: 80px; }
.ahero-avatar .ahero-glow {
  position: absolute; inset: -8%; border-radius: 50%;
  background: radial-gradient(circle, rgba(111,230,220,0.5), rgba(46,196,196,0) 68%);
  filter: blur(8px); animation: corePulse 4s ease-in-out infinite;
}
.ahero-avatar img {
  position: relative; z-index: 1; width: 80px; height: 80px; border-radius: 50%;
  object-fit: cover; background: rgba(4,16,28,0.85);
  border: 1.5px solid rgba(46,196,196,0.45);
  box-shadow: 0 0 22px -4px rgba(46,196,196,0.5), inset 0 0 18px -6px rgba(46,196,196,0.4);
}
.ahero-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.ahero-top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ahero-top h3 { font-size: 16px; font-weight: 600; color: #eafcff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ahero-state { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 20px; text-transform: capitalize; letter-spacing: 0.02em; }
.ahero-dot { width: 7px; height: 7px; border-radius: 50%; flex: 0 0 auto; }
.ahero-state.active { background: rgba(46,232,220,0.16); color: #7af4ea; }
.ahero-state.active .ahero-dot { background: #43f5e6; box-shadow: 0 0 8px 1px rgba(67,245,230,0.8); animation: aheroPulse 1.8s ease-in-out infinite; }
.ahero-state.ready { background: rgba(46,196,196,0.12); color: #4fb6b0; }
.ahero-state.ready .ahero-dot { background: #2c8f8a; box-shadow: 0 0 6px 0 rgba(44,143,138,0.6); }
@keyframes aheroPulse { 0%,100% { opacity: 1; } 50% { opacity: 0.45; } }
.ahero-scope { font-size: 11px; font-weight: 500; color: #6fe6dc; letter-spacing: 0.02em; }
.ahero-task { font-size: 12.5px; line-height: 1.5; color: var(--text-2); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.ahero-cmd { margin-top: 2px; }
.ahero-cmd code { font-family: ui-monospace, 'SFMono-Regular', Menlo, monospace; font-size: 10.5px; color: #9fe9e3; background: rgba(46,196,196,0.1); border: 1px solid rgba(46,196,196,0.2); border-radius: 7px; padding: 3px 8px; display: inline-block; max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 640px) {
  .agents-hero-track { grid-auto-columns: 86%; }
  .ahero-avatar, .ahero-avatar img { width: 64px; height: 64px; }
}

/* GRIGLIA DENSA */
.dash-grid {
  display: grid; gap: 16px;
  grid-template-columns: repeat(12, 1fr);
  grid-auto-flow: dense;
}
.dpanel {
  background: linear-gradient(180deg, rgba(10,26,40,0.66), rgba(6,18,30,0.52));
  border: 1px solid var(--border); border-radius: 20px; padding: 18px 18px 20px;
  backdrop-filter: blur(10px); box-shadow: var(--shadow); min-width: 0;
}
.dpanel-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.dpanel-head h2 { font-size: 16px; font-weight: 600; display: flex; align-items: center; gap: 9px; letter-spacing: -0.01em; }
.dp-count { font-size: 12px; font-weight: 700; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 10px; background: rgba(46,196,196,0.18); color: #6fe6dc; display: inline-grid; place-items: center; }
.dp-count.warn { background: var(--amber-soft); color: var(--amber); }
.dp-count.hot { background: rgba(255,138,92,0.16); color: #ff8a5c; }

/* posizionamento immersivo */
/* Progetti: colonna sinistra alta (2 righe). Oggi + Agenti impilati a destra. */
.dp-projects { grid-column: 1 / span 8; grid-row: span 2; }
.dp-today    { grid-column: 9 / span 4; grid-row: span 2; }
.dp-agents   { grid-column: 9 / span 4; }
.dp-knowledge{ grid-column: span 5; }
/* compattazione interni */
.dp-today .today-body { max-height: 320px; overflow-y: auto; }
.dp-today .card { padding: 10px 12px; }
.dp-today .card-text { font-size: 13px; line-height: 1.45; }
.dp-today .cards { gap: 9px; }
.dp-agents .agents-grid { grid-template-columns: 1fr; gap: 10px; }
.dp-agents .agent-card.big { padding: 13px; gap: 6px; }
.dp-agents .agent-task { font-size: 12px; -webkit-line-clamp: 2; display: -webkit-box; -webkit-box-orient: vertical; overflow: hidden; }

/* PROGETTI in griglia (protagonisti) */
.projects-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(184px, 1fr)); gap: 11px; }
.dp-projects .myco-card { min-height: 0; flex: initial; padding: 14px; border-radius: 16px; }
.dp-projects .mc-name { font-size: 14.5px; margin-bottom: 7px; }
.dp-projects .mc-status-label { font-size: 11.5px; min-height: 0; margin-bottom: 11px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.dp-projects .mc-mat-bar { margin-bottom: 10px; }
.dp-projects .mc-open { padding: 8px; font-size: 12px; }
.dp-projects .holding-badge { font-size: 10px; padding: 2px 7px; }

/* AGENTI dentro pannello */
.dp-agents .agents-grid { grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); }

/* ============ TREND — full-bleed, ultima sezione home ============ */
.trends-section {
  position: relative; z-index: 1;
  /* full-bleed rispetto al contenitore .dash (max-width 1560 + padding) */
  margin: 40px calc(50% - 50vw) 0;
  padding: 34px max(28px, calc(50vw - 780px + 20px)) 8px;
  border-top: 1px solid var(--border);
  background: linear-gradient(180deg, rgba(8,22,36,0.55), rgba(4,14,24,0.30));
  backdrop-filter: blur(8px);
}
.trends-head { margin-bottom: 20px; }
.trends-head h2 { font-size: 19px; font-weight: 600; display: flex; align-items: center; gap: 10px; letter-spacing: -0.01em; }
.trends-sub { margin-top: 6px; font-size: 13px; color: var(--text-2); max-width: 760px; }
.trends-track {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 16px;
  align-items: start;
}
.trend-col {
  background: linear-gradient(180deg, rgba(10,26,40,0.66), rgba(6,18,30,0.5));
  border: 1px solid var(--border); border-radius: 18px; padding: 16px 16px 18px;
  backdrop-filter: blur(10px); box-shadow: var(--shadow); min-width: 0;
  border-top: 2px solid var(--pcol, #2ec4c4);
}
.trend-col-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.trend-badge { font-size: 11px; font-weight: 700; padding: 3px 9px; border-radius: 9px; border: 1px solid; letter-spacing: 0.02em; }
.trend-col-name { font-size: 14.5px; font-weight: 600; letter-spacing: -0.01em; line-height: 1.25; min-width: 0; }
.trend-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.tr-item { display: flex; gap: 9px; align-items: flex-start; }
.tr-bullet { flex: none; font-size: 12px; line-height: 1.5; }
.tr-item-body { min-width: 0; }
.tr-text { font-size: 13px; line-height: 1.5; color: var(--text-1); }
.tr-link { display: inline-block; margin-top: 5px; font-size: 12px; font-weight: 600; color: var(--pcol, #6fe6dc); text-decoration: none; opacity: 0.9; transition: opacity 0.15s; }
.tr-link:hover { opacity: 1; text-decoration: underline; }
.trends-empty { text-align: center; padding: 40px 20px; color: var(--text-2); }
.trends-empty .te-orb { width: 38px; height: 38px; margin: 0 auto 14px; border-radius: 50%; background: radial-gradient(circle at 35% 30%, rgba(46,196,196,0.5), rgba(46,196,196,0.05)); box-shadow: 0 0 26px rgba(46,196,196,0.25); }
.trends-empty h3 { font-size: 16px; font-weight: 600; margin-bottom: 6px; color: var(--text-1); }
.trends-empty p { font-size: 13px; max-width: 420px; margin: 0 auto; }
@media (max-width: 720px) {
  .trends-track { grid-template-columns: 1fr; }
  .trends-section { padding-left: max(20px, env(safe-area-inset-left)); padding-right: 20px; }
}

/* file drop compatto */
.file-drop.sm { padding: 16px; }
.file-drop.sm .fd-ic { font-size: 20px; }
.file-drop.sm .fd-txt { font-size: 13px; }

/* RESPONSIVE */
@media (max-width: 1100px) {
  .dp-projects, .dp-today, .dp-agents, .dp-knowledge { grid-column: span 12; }
}
@media (max-width: 720px) {
  .corestrip { flex-wrap: wrap; }
  .corestrip .mini-stats { width: 100%; justify-content: space-between; }
  .net-bg { opacity: 0.4; }
}

/* ============ TOOLTIP sui contatori (descrizione tab) ============ */
.dp-count.tip { position: relative; cursor: help; }
.dp-count.tip::after {
  content: attr(data-tip);
  position: absolute; top: calc(100% + 9px); left: 50%; transform: translateX(-50%) translateY(4px);
  width: max-content; max-width: 240px; padding: 9px 12px; border-radius: 10px;
  background: rgba(4,14,24,0.97); border: 1px solid var(--border-strong); color: var(--text);
  font-size: 11.5px; font-weight: 400; line-height: 1.45; letter-spacing: 0; text-transform: none;
  white-space: normal; text-align: left;
  opacity: 0; pointer-events: none; transition: opacity 0.18s ease, transform 0.18s ease;
  z-index: 30; box-shadow: 0 14px 36px -14px rgba(0,0,0,0.85);
}
.dp-count.tip::before {
  content: ''; position: absolute; top: calc(100% + 3px); left: 50%; transform: translateX(-50%);
  border: 6px solid transparent; border-bottom-color: rgba(4,14,24,0.97);
  opacity: 0; pointer-events: none; transition: opacity 0.18s ease; z-index: 31;
}
.dp-count.tip:hover::after { opacity: 1; transform: translateX(-50%) translateY(0); }
.dp-count.tip:hover::before { opacity: 1; }

/* ============ AVATAR AGENTE con immagine fungo ============ */
.agent-avatar.img, .ag-avatar-big.img {
  background-size: cover; background-position: center; color: transparent;
  border: 1px solid rgba(46,196,196,0.5); box-shadow: 0 0 22px -6px rgba(46,196,196,0.6);
}
.ag-avatar-big.img { box-shadow: 0 0 34px -8px rgba(46,196,196,0.7); }

/* ============ BRAIN ALERT — tag progetto colorato ============ */
.ba-proj { display: inline-block; padding: 2px 9px; border-radius: 8px; font-size: 12px; font-weight: 600; }

/* ============ BRIEFING — card grafiche ============ */
.brief-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 18px; }
.brief-card {
  background: linear-gradient(180deg, rgba(10,26,40,0.7), rgba(6,18,30,0.55));
  border: 1px solid var(--border); border-radius: 18px; padding: 18px 20px 20px;
  backdrop-filter: blur(8px); box-shadow: var(--shadow); position: relative; overflow: hidden;
}
.brief-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, #29b6b0, #6fe6dc, transparent); }
.brief-card-date {
  font-size: 13px; font-weight: 700; color: #6fe6dc; letter-spacing: 0.04em; text-transform: uppercase;
  margin-bottom: 14px; padding-bottom: 10px; border-bottom: 1px solid var(--border);
}
.brief-items { list-style: none; display: flex; flex-direction: column; gap: 12px; }
.brief-item {
  font-size: 13.5px; line-height: 1.55; color: rgba(232,244,248,0.9);
  padding: 11px 13px; border-radius: 12px; background: rgba(255,255,255,0.025);
  border: 1px solid transparent; transition: all 0.2s ease;
}
.brief-item.linked { border-color: rgba(46,196,196,0.28); background: rgba(46,196,196,0.05); }
.brief-item:hover { border-color: var(--border-strong); }
.bt-text { display: block; }
.bt-tags { display: inline-flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; margin-right: 8px; }
.bt-proj { display: inline-block; padding: 2px 8px; border-radius: 8px; font-size: 11px; font-weight: 600; border: 1px solid; cursor: pointer; transition: transform 0.15s ease; }
.bt-proj:hover { transform: translateY(-1px); }
.bt-ext {
  display: inline-block; margin-top: 8px; font-size: 12px; font-weight: 600;
  color: #6fe6dc; text-decoration: none; border-bottom: 1px solid rgba(46,196,196,0.4);
}
.bt-ext:hover { border-bottom-color: #6fe6dc; }
.bt-ext.muted { color: var(--text-2); border-bottom-color: var(--border); font-weight: 400; }

/* ============ RIASSUNTO PROGETTO — concept / insight / scenario / business ============ */
.pp-brief { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; margin: 18px 0 22px; }
.brief-box {
  display: flex; gap: 12px; padding: 15px 16px; border-radius: 14px;
  background: rgba(255,255,255,0.03); border: 1px solid var(--border);
  border-left: 3px solid var(--pcol, #29b6b0);
}
.brief-box .bb-ic { font-size: 17px; color: var(--pcol, #6fe6dc); line-height: 1.4; flex: 0 0 auto; }
.brief-box h4 { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--pcol, #6fe6dc); margin-bottom: 5px; }
.brief-box p { font-size: 13.5px; line-height: 1.55; color: rgba(232,244,248,0.86); }
.bb-insight { border-left-color: #e0bc6e; }
.bb-insight .bb-ic, .bb-insight h4 { color: #e0bc6e; }
.bb-scenario { border-left-color: #5bb4e0; }
.bb-scenario .bb-ic, .bb-scenario h4 { color: #5bb4e0; }
.bb-model { border-left-color: #5de03b; }
.bb-model .bb-ic, .bb-model h4 { color: #8fe87a; }
@media (max-width: 700px) { .pp-brief { grid-template-columns: 1fr; } }

/* ============ UPLOAD KNOWLEDGE nel banner centrale ============ */
.corestrip-upload { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; gap: 4px; }
.cs-upload {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px;
  width: 92px; height: 64px; border-radius: 14px; cursor: pointer; text-align: center;
  background: rgba(46,196,196,0.08); border: 1.5px dashed rgba(46,196,196,0.45);
  color: #6fe6dc; transition: all 0.2s ease;
}
.cs-upload:hover, .cs-upload.drag { background: rgba(46,196,196,0.16); border-color: rgba(46,196,196,0.8); }
.cs-upload.uploading { opacity: 0.55; pointer-events: none; }
.cs-up-ic { font-size: 18px; line-height: 1; }
.cs-up-txt { font-size: 10.5px; font-weight: 600; line-height: 1.15; }
.cs-up-count { font-size: 10.5px; color: var(--text-2); }
@media (max-width: 720px) { .corestrip-upload { width: 100%; flex-direction: row; justify-content: center; gap: 10px; } .cs-upload { width: auto; flex-direction: row; padding: 0 14px; height: 46px; } .cs-up-txt { font-size: 12px; } }

/* ===== CLIENT INTELLIGENCE ===== */
.cl-sync { display: inline-block; margin-top: 12px; font-size: 12px; font-weight: 600; color: #6fe6dc; background: rgba(46, 196, 196, 0.1); padding: 4px 12px; border-radius: 20px; border: 1px solid rgba(46, 196, 196, 0.22); }
.clients-body { margin-top: 24px; padding-bottom: 40px; display: flex; flex-direction: column; gap: 30px; }

/* ---- indice salute portfolio (termometro) ---- */
.cl-index {
  position: relative;
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  padding: 20px 22px;
  box-shadow: var(--shadow), inset 0 1px 0 rgba(127, 200, 230, 0.05);
  backdrop-filter: blur(14px) saturate(1.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.3);
  overflow: hidden;
}
.cl-index-top { display: flex; justify-content: space-between; align-items: center; gap: 20px; flex-wrap: wrap; }
.cl-index-verdict { display: flex; align-items: center; gap: 14px; }
.cl-index-led { width: 14px; height: 14px; border-radius: 50%; flex-shrink: 0; }
.cl-index-led.sent-positive { background: var(--green); box-shadow: 0 0 16px rgba(93, 224, 59, 0.85); animation: pulse 3s ease-in-out infinite; }
.cl-index-led.sent-neutral { background: var(--amber); box-shadow: 0 0 16px rgba(251, 191, 36, 0.7); }
.cl-index-led.sent-negative { background: var(--red); box-shadow: 0 0 16px rgba(248, 113, 113, 0.8); animation: pulse 2s ease-in-out infinite; }
.cl-index-label { display: block; font-size: 10.5px; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--text-3); }
.cl-index-title { font-size: clamp(18px, 2.2vw, 23px); font-weight: 600; letter-spacing: -0.01em; margin-top: 3px; }
.cl-index.sent-positive .cl-index-title { color: var(--green-2); }
.cl-index.sent-neutral .cl-index-title { color: var(--amber); }
.cl-index.sent-negative .cl-index-title { color: var(--red); }
.cl-index-counts { display: flex; gap: 10px; flex-wrap: wrap; }
.cl-cnt { display: inline-flex; align-items: baseline; gap: 5px; font-size: 17px; font-weight: 700; padding: 6px 13px; border-radius: 12px; font-variant-numeric: tabular-nums; }
.cl-cnt i { font-size: 10.5px; font-weight: 600; font-style: normal; letter-spacing: 0.04em; text-transform: uppercase; opacity: 0.85; }
.cl-cnt.positive { color: var(--green); background: var(--green-soft); border: 1px solid rgba(93, 224, 59, 0.28); }
.cl-cnt.neutral { color: var(--amber); background: var(--amber-soft); border: 1px solid rgba(251, 191, 36, 0.28); }
.cl-cnt.negative { color: var(--red); background: var(--red-soft); border: 1px solid rgba(248, 113, 113, 0.28); }
.cl-thermo { margin-top: 18px; display: flex; height: 12px; border-radius: 99px; overflow: hidden; background: rgba(255,255,255,0.04); border: 1px solid var(--border); }
.cl-seg { height: 100%; transition: width 0.6s ease; }
.cl-seg.positive { background: linear-gradient(90deg, var(--green), var(--green-2)); }
.cl-seg.neutral { background: var(--amber); }
.cl-seg.negative { background: var(--red); }

/* ---- gruppi brief / ongoing ---- */
.cl-group-head { display: flex; align-items: center; gap: 10px; font-size: 16px; font-weight: 600; letter-spacing: -0.01em; margin-bottom: 16px; }
.cl-group-count { font-size: 12px; font-weight: 700; padding: 2px 10px; border-radius: 99px; }
.cl-group.group-ongoing .cl-group-count { color: #6fe6dc; background: rgba(46, 196, 196, 0.14); border: 1px solid rgba(46, 196, 196, 0.3); }
.cl-group.group-brief .cl-group-count { color: var(--amber); background: var(--amber-soft); border: 1px solid rgba(251, 191, 36, 0.3); }
.cl-group-body { display: grid; grid-template-columns: repeat(auto-fill, minmax(348px, 1fr)); gap: 18px; align-items: start; }
@media (min-width: 1700px) { .cl-group-body { grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); } }

/* clients page: container largo per griglia multi-colonna (plancia CEO) */
#viewClients .brief-wrap { max-width: 1480px; }
#viewClients .brief-hero { max-width: 1480px; }

/* ============ ⏱ SCADENZE & PRIORITÀ (plancia CEO) ============ */
.cl-deadlines {
  position: relative;
  background: linear-gradient(180deg, rgba(248,113,113,0.06), var(--panel));
  border: 1px solid var(--border-strong);
  border-radius: var(--radius);
  padding: 20px 22px 16px;
  box-shadow: var(--shadow), inset 0 1px 0 rgba(255,255,255,0.04);
  backdrop-filter: blur(14px) saturate(1.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.3);
  overflow: hidden;
}
.cl-deadlines::before { content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 100%; background: linear-gradient(180deg, var(--red), var(--amber)); opacity: 0.85; }
.dl-head { display: flex; justify-content: space-between; align-items: center; gap: 18px; flex-wrap: wrap; margin-bottom: 14px; }
.dl-head-title { display: flex; align-items: center; gap: 13px; }
.dl-head-ic { font-size: 22px; line-height: 1; }
.dl-head-kicker { display: block; font-size: 10px; font-weight: 700; letter-spacing: 0.18em; text-transform: uppercase; color: var(--text-3); }
.dl-head-h { font-size: clamp(17px, 2vw, 21px); font-weight: 600; letter-spacing: -0.01em; margin-top: 2px; }
.dl-head-stats { display: flex; gap: 9px; flex-wrap: wrap; }
.dl-stat { display: inline-flex; align-items: baseline; gap: 5px; font-size: 16px; font-weight: 700; padding: 5px 12px; border-radius: 11px; font-variant-numeric: tabular-nums; }
.dl-stat i { font-size: 10px; font-weight: 600; font-style: normal; letter-spacing: 0.03em; text-transform: uppercase; opacity: 0.85; }
.dl-stat[data-zero] { opacity: 0.4; }
.dl-stat.dl-overdue { color: var(--red); background: var(--red-soft); border: 1px solid rgba(248,113,113,0.3); }
.dl-stat.dl-soon { color: var(--amber); background: var(--amber-soft); border: 1px solid rgba(251,191,36,0.3); }
.dl-stat.dl-nodate { color: #6fe6dc; background: rgba(46,196,196,0.12); border: 1px solid rgba(46,196,196,0.3); }

.dl-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.dl-row { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; padding: 10px 14px; border-radius: 10px; background: rgba(255,255,255,0.025); border: 1px solid var(--border); border-left-width: 3px; font-size: 13px; }
.dl-pin { font-size: 13px; line-height: 1; flex-shrink: 0; }
.dl-client { font-weight: 600; color: var(--text); }
.dl-sep { color: var(--text-3); }
.dl-act { color: var(--text-2); }
.dl-status { margin-left: auto; font-weight: 600; font-size: 12.5px; white-space: nowrap; }
.dl-status i { font-style: normal; font-weight: 500; opacity: 0.7; font-size: 11.5px; }
.dl-row.dl-overdue { border-left-color: var(--red); background: rgba(248,113,113,0.07); }
.dl-row.dl-overdue .dl-status { color: var(--red); }
.dl-row.dl-soon { border-left-color: var(--amber); background: rgba(251,191,36,0.06); }
.dl-row.dl-soon .dl-status { color: var(--amber); }
.dl-row.dl-future { border-left-color: rgba(46,196,196,0.5); }
.dl-row.dl-future .dl-status { color: #6fe6dc; }
.dl-row.dl-nodate { border-left-color: rgba(46,196,196,0.5); background: rgba(46,196,196,0.05); }
.dl-row.dl-nodate .dl-status { color: #6fe6dc; }

/* ---- badge scadenza nelle card attività ---- */
.cc-act-deadline { display: inline-flex; align-items: center; gap: 7px; margin-top: 10px; padding: 5px 11px; border-radius: 99px; font-size: 12px; font-weight: 600; border: 1px solid transparent; }
.cc-dl-ic { font-size: 12px; line-height: 1; }
.cc-dl-sub { font-weight: 500; opacity: 0.7; font-size: 11px; }
.cc-act-deadline.dl-overdue { color: var(--red); background: var(--red-soft); border-color: rgba(248,113,113,0.4); }
.cc-act-deadline.dl-soon { color: var(--amber); background: var(--amber-soft); border-color: rgba(251,191,36,0.4); }
.cc-act-deadline.dl-future { color: #6fe6dc; background: rgba(46,196,196,0.1); border-color: rgba(46,196,196,0.3); }
.cc-act.has-deadline.dl-overdue { border-color: rgba(248,113,113,0.35); }
.cc-act.has-deadline.dl-soon { border-color: rgba(251,191,36,0.32); }

/* ---- card cliente ---- */
.client-card {
  position: relative;
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 18px 18px 18px 22px;
  box-shadow: var(--shadow), inset 0 1px 0 rgba(127, 200, 230, 0.05);
  backdrop-filter: blur(14px) saturate(1.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.3);
  overflow: hidden;
  transition: transform 0.18s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.client-card:hover { transform: translateY(-2px); box-shadow: var(--shadow), 0 10px 30px rgba(0,0,0,0.35), inset 0 1px 0 rgba(127,200,230,0.08); }
.client-card::before {
  content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 100%;
}
/* on-going: accento ciano pieno = attivo */
.client-card.phase-ongoing { border-color: rgba(46, 196, 196, 0.22); }
.client-card.phase-ongoing::before { background: linear-gradient(180deg, #2ec4c4, #5de03b); opacity: 0.9; }
/* brief: accento ambra tratteggiato = in valutazione */
.client-card.phase-brief { border: 1px dashed rgba(251, 191, 36, 0.4); background: linear-gradient(180deg, rgba(251,191,36,0.05), var(--panel)); }
.client-card.phase-brief::before { background: repeating-linear-gradient(180deg, var(--amber) 0 8px, transparent 8px 16px); opacity: 0.9; }
.client-card.is-new { box-shadow: var(--shadow), 0 0 0 1px rgba(251,191,36,0.25), 0 0 26px rgba(251,191,36,0.18); }

.cc-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; flex-wrap: wrap; }
.cc-title { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.cc-name-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.cc-name { font-size: 21px; font-weight: 700; letter-spacing: -0.01em; line-height: 1.15; }
.cc-new { font-size: 11px; font-weight: 700; letter-spacing: 0.03em; color: #1a1405; background: linear-gradient(180deg, #fcd34d, var(--amber)); padding: 4px 11px; border-radius: 99px; box-shadow: 0 0 16px rgba(251,191,36,0.55); animation: pulse 2.6s ease-in-out infinite; white-space: nowrap; }
.cc-type { align-self: flex-start; font-size: 11px; font-weight: 600; letter-spacing: 0.02em; color: var(--blue-2); background: var(--blue-soft); border: 1px solid var(--border-strong); padding: 3px 10px; border-radius: 20px; }

.cc-sent { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; font-weight: 600; padding: 5px 11px; border-radius: 20px; white-space: nowrap; cursor: default; }
.cc-sent-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.cc-sent.sent-positive { color: var(--green); background: var(--green-soft); border: 1px solid rgba(93, 224, 59, 0.3); }
.cc-sent.sent-positive .cc-sent-dot { background: var(--green); box-shadow: 0 0 8px rgba(93, 224, 59, 0.7); }
.cc-sent.sent-neutral { color: var(--amber); background: var(--amber-soft); border: 1px solid rgba(251, 191, 36, 0.3); }
.cc-sent.sent-neutral .cc-sent-dot { background: var(--amber); box-shadow: 0 0 8px rgba(251, 191, 36, 0.6); }
.cc-sent.sent-negative { color: var(--red); background: var(--red-soft); border: 1px solid rgba(248, 113, 113, 0.3); }
.cc-sent.sent-negative .cc-sent-dot { background: var(--red); box-shadow: 0 0 8px rgba(248, 113, 113, 0.7); }

/* ---- KPI GENERALI (fascia header cliente) ---- */
.cc-kpi-general { position: relative; margin-top: 16px; padding: 14px 16px 14px; background: rgba(127, 200, 230, 0.05); border: 1px solid var(--border); border-radius: var(--radius-sm); }
.cc-kpi-general-tag { display: inline-block; font-size: 9.5px; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; color: var(--blue-2); background: var(--blue-soft); padding: 3px 9px; border-radius: 99px; margin-bottom: 10px; }
.cc-meta { display: flex; flex-direction: column; gap: 9px; }
.cc-row { display: flex; gap: 12px; align-items: baseline; font-size: 13px; }
.cc-k { flex: 0 0 112px; color: var(--text-3); font-weight: 600; font-size: 10px; text-transform: uppercase; letter-spacing: 0.03em; }
.cc-v { flex: 1; color: var(--text); line-height: 1.45; }
.cc-v.dim { color: var(--text-3); font-style: italic; }
.cc-sentnote { margin-top: 12px; font-size: 12.5px; font-style: italic; line-height: 1.5; color: var(--text-2); padding-left: 12px; border-left: 2px solid var(--border-strong); }
.cc-sentnote.sent-positive { border-left-color: rgba(93, 224, 59, 0.4); }
.cc-sentnote.sent-neutral { border-left-color: rgba(251, 191, 36, 0.4); }
.cc-sentnote.sent-negative { border-left-color: rgba(248, 113, 113, 0.4); }

/* ---- LISTA ATTIVITÀ (KPI per attività) ---- */
.cc-activities { margin-top: 18px; }
.cc-act-tag { display: block; font-size: 10px; font-weight: 700; letter-spacing: 0.16em; text-transform: uppercase; color: var(--text-3); margin-bottom: 12px; }
.cc-act { position: relative; margin-top: 12px; padding: 16px 16px 14px; border-radius: var(--radius-sm); background: rgba(255,255,255,0.025); border: 1px solid var(--border); }
.cc-act:first-of-type { margin-top: 0; }
.cc-act-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; flex-wrap: wrap; }
.cc-act-name { font-size: 15px; font-weight: 600; line-height: 1.25; }
.cc-act-badge { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 600; padding: 4px 10px; border-radius: 99px; white-space: nowrap; color: var(--text-2); background: rgba(255,255,255,0.05); border: 1px solid var(--border-strong); }
.cc-act-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--text-3); flex-shrink: 0; }
.cc-act-badge.status-in-corso { color: #6fe6dc; background: rgba(46, 196, 196, 0.12); border-color: rgba(46, 196, 196, 0.3); }
.cc-act-badge.status-in-corso .cc-act-dot { background: #2ec4c4; box-shadow: 0 0 8px rgba(46, 196, 196, 0.8); }
.cc-act-badge.status-brief { color: var(--amber); background: var(--amber-soft); border-color: rgba(251, 191, 36, 0.3); }
.cc-act-badge.status-brief .cc-act-dot { background: var(--amber); box-shadow: 0 0 8px rgba(251, 191, 36, 0.7); }
.cc-act-desc { margin-top: 9px; font-size: 13px; line-height: 1.55; color: var(--text); font-weight: 300; }
.cc-act-kpis { margin-top: 12px; display: flex; gap: 22px; flex-wrap: wrap; padding-top: 11px; border-top: 1px dashed var(--border); }
.cc-act-kpi { display: flex; flex-direction: column; gap: 3px; }
.cc-act-kl { font-size: 9.5px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-3); }
.cc-act-kv { font-size: 13px; color: var(--text); font-weight: 500; }
.cc-act-sent { font-weight: 600; font-size: 12.5px; }
.cc-act-sent.sent-positive { color: var(--green); }
.cc-act-sent.sent-neutral { color: var(--amber); }
.cc-act-sent.sent-negative { color: var(--red); }
.cc-act-action { margin-top: 12px; border-radius: 10px; padding: 11px 13px; background: rgba(46, 196, 196, 0.08); border: 1px solid rgba(46, 196, 196, 0.26); }
.cc-act-action.status-brief { background: var(--amber-soft); border-color: rgba(251, 191, 36, 0.3); }
.cc-act-action-lbl { display: block; font-size: 10px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: #6fe6dc; }
.cc-act-action.status-brief .cc-act-action-lbl { color: var(--amber); }
.cc-act-action-txt { margin-top: 5px; font-size: 13px; line-height: 1.5; color: var(--text); }
.cc-act-empty { font-size: 13px; color: var(--text-3); font-style: italic; }

/* ---- DOPPIA FACCIA: esterno (cliente) vs interno (Tuorlo) ---- */
.cc-faces { margin-top: 11px; display: grid; grid-template-columns: 1fr; gap: 8px; }
.cc-face { padding: 9px 11px 10px; border-radius: 9px; border: 1px solid transparent; }
.cc-face-lbl { display: block; font-size: 9.5px; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; margin-bottom: 4px; }
.cc-face-txt { margin: 0; font-size: 12.5px; line-height: 1.5; color: var(--text); font-weight: 300; }
/* esterno = blu/ciano */
.cc-face-ext { background: rgba(54, 150, 205, 0.1); border-color: rgba(54, 150, 205, 0.32); border-left: 3px solid rgba(54, 150, 205, 0.7); }
.cc-face-ext .cc-face-lbl { color: #6cc0ec; }
/* interno = verde/teal */
.cc-face-int { background: rgba(46, 196, 196, 0.09); border-color: rgba(46, 196, 196, 0.3); border-left: 3px solid rgba(46, 196, 196, 0.7); }
.cc-face-int .cc-face-lbl { color: #4fd6c4; }

/* ---- INDICATORE DI DISALLINEAMENTO ---- */
.cc-misalign { display: inline-flex; align-items: center; gap: 7px; margin-top: 10px; padding: 5px 11px; border-radius: 99px; font-size: 12px; font-weight: 700; color: var(--amber); background: rgba(251, 146, 60, 0.12); border: 1px solid rgba(251, 146, 60, 0.45); }
.cc-misalign-ic { font-size: 13px; line-height: 1; }
.cc-misalign-txt { letter-spacing: 0.01em; }
.cc-act.is-misaligned { border-color: rgba(251, 146, 60, 0.42); box-shadow: inset 0 0 0 1px rgba(251, 146, 60, 0.12); }

/* Sub-activities (micro-tappe inside a macro-activity) */
.cc-subacts { margin-top: 12px; padding: 11px 12px 10px 13px; border-left: 2px solid rgba(46, 196, 196, 0.4); border-radius: 0 8px 8px 0; background: rgba(255,255,255,0.018); }
.cc-subacts-tag { display: inline-block; margin-bottom: 8px; font-size: 9.5px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-3); }
.cc-subact-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.cc-subact { padding: 8px 10px; border-radius: 7px; background: rgba(255,255,255,0.02); border: 1px solid var(--border); }
.cc-subact-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.cc-subact-name { font-size: 12.5px; font-weight: 500; color: var(--text); line-height: 1.35; }
.cc-subact-badge { flex-shrink: 0; font-size: 10px; font-weight: 600; letter-spacing: 0.02em; padding: 2px 9px; border-radius: 999px; white-space: nowrap; border: 1px solid transparent; }
.cc-subact-note { margin-top: 5px; font-size: 11.5px; line-height: 1.45; color: var(--text-3); font-weight: 300; }

/* in corso = ciano/attivo */
.cc-subact-badge.sub-status-in-corso { color: #6fe6dc; background: rgba(46, 196, 196, 0.12); border-color: rgba(46, 196, 196, 0.32); }
.cc-subact.sub-status-in-corso { border-left: 2px solid rgba(46, 196, 196, 0.5); }
/* in attesa = ambra */
.cc-subact-badge.sub-status-in-attesa { color: var(--amber); background: var(--amber-soft); border-color: rgba(251, 191, 36, 0.3); }
.cc-subact.sub-status-in-attesa { border-left: 2px solid rgba(251, 191, 36, 0.45); }
/* conclusa = grigio/spento */
.cc-subact-badge.sub-status-conclusa,
.cc-subact-badge.sub-status-concluso,
.cc-subact-badge.sub-status-done { color: var(--text-3); background: rgba(255,255,255,0.04); border-color: var(--border); }
.cc-subact.sub-status-conclusa,
.cc-subact.sub-status-concluso,
.cc-subact.sub-status-done { opacity: 0.78; }
.cc-subact.sub-status-conclusa .cc-subact-name,
.cc-subact.sub-status-concluso .cc-subact-name,
.cc-subact.sub-status-done .cc-subact-name { color: var(--text-2, var(--text-3)); }

@media (max-width: 720px) {
  .cl-group-body { grid-template-columns: 1fr; gap: 16px; }
  .cl-index-top { flex-direction: column; align-items: flex-start; gap: 14px; }
  .cc-head { flex-direction: column; }
  .cc-k { flex-basis: 110px; }
  .cc-act-head { flex-direction: column; gap: 8px; }
  .cc-act-kpis { gap: 16px; }
  .cc-subact-head { gap: 6px; }
}

/* ============================================================
   CLIENT INTELLIGENCE — PLANCIA CEO (nuova versione)
   ============================================================ */

/* Layout principale */
.ci-wrap {
  max-width: 1480px; margin: 0 auto;
  padding: 24px max(20px, env(safe-area-inset-left)) 160px;
}

/* Hero header — compact, senza descrizione */
.ci-hero {
  position: relative; border-radius: 22px; padding: 26px 28px 22px;
  margin-bottom: 24px;
  background: radial-gradient(130% 150% at 12% 0%, rgba(46,170,180,0.18), rgba(4,16,28,0) 55%),
    linear-gradient(180deg, rgba(6,32,52,0.75), rgba(5,18,30,0.6));
  border: 1px solid var(--border); box-shadow: var(--shadow);
}
.ci-hero h1 { font-size: clamp(24px, 3.5vw, 38px); font-weight: 200; letter-spacing: -0.02em; }
.ci-hero-meta { margin-top: 10px; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.ci-sync {
  display: inline-block; font-size: 12px; font-weight: 600; color: #6fe6dc;
  background: rgba(46, 196, 196, 0.1); padding: 4px 12px; border-radius: 20px;
  border: 1px solid rgba(46, 196, 196, 0.22);
}
.cl-index-wrap { margin-top: 18px; }

/* Two-column layout */
.ci-layout {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 20px;
  align-items: start;
}

/* Left column */
.ci-main { display: flex; flex-direction: column; gap: 28px; }

/* Group headings — light, not heavy blocks */
.cl-group-compact-head {
  display: flex; align-items: center; gap: 8px;
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em;
  color: var(--text-3); margin-bottom: 12px; padding-bottom: 8px;
  border-bottom: 1px solid var(--border);
}
.cl-group-compact.group-ongoing .cl-group-compact-head { color: #6fe6dc; }
.cl-group-compact.group-brief .cl-group-compact-head { color: var(--amber); }
.cl-group-compact .cl-group-count {
  font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 99px;
}
.cl-group-compact.group-ongoing .cl-group-count {
  color: #6fe6dc; background: rgba(46, 196, 196, 0.14); border: 1px solid rgba(46, 196, 196, 0.3);
}
.cl-group-compact.group-brief .cl-group-count {
  color: var(--amber); background: var(--amber-soft); border: 1px solid rgba(251, 191, 36, 0.3);
}

/* Grid of compact cards — min 3 per row on wide screens */
.cl-group-compact-body {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 14px;
  align-items: start;
}

/* ---- COMPACT CLIENT CARD (ccc) ---- */
.ccc {
  position: relative; overflow: hidden; cursor: pointer;
  background: linear-gradient(180deg, var(--panel-2), var(--panel));
  border: 1px solid var(--border); border-radius: 18px;
  padding: 16px 16px 14px 20px;
  box-shadow: var(--shadow), inset 0 1px 0 rgba(127, 200, 230, 0.05);
  backdrop-filter: blur(14px) saturate(1.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.3);
  transition: transform 0.18s ease, box-shadow 0.22s ease, border-color 0.22s ease;
  display: flex; flex-direction: column; gap: 8px;
}
.ccc::before {
  content: ''; position: absolute; top: 0; left: 0; width: 4px; height: 100%;
}
.ccc.phase-ongoing { border-color: rgba(46, 196, 196, 0.22); }
.ccc.phase-ongoing::before { background: linear-gradient(180deg, #2ec4c4, #5de03b); opacity: 0.9; }
.ccc.phase-brief { border: 1px dashed rgba(251, 191, 36, 0.4); background: linear-gradient(180deg, rgba(251,191,36,0.05), var(--panel)); }
.ccc.phase-brief::before { background: repeating-linear-gradient(180deg, var(--amber) 0 6px, transparent 6px 12px); opacity: 0.9; }
.ccc.is-new { box-shadow: var(--shadow), 0 0 0 1px rgba(251,191,36,0.25), 0 0 22px rgba(251,191,36,0.15); }
.ccc:hover { transform: translateY(-3px); box-shadow: var(--shadow), 0 12px 32px rgba(0,0,0,0.4), inset 0 1px 0 rgba(127,200,230,0.1); border-color: rgba(46, 196, 196, 0.4); }
.ccc:focus-visible { outline: 2px solid #6fe6dc; outline-offset: 2px; }

.ccc-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; }
.ccc-name { font-size: 17px; font-weight: 700; letter-spacing: -0.01em; line-height: 1.2; flex: 1; min-width: 0; }

/* Phase badges */
.ccc-phase {
  flex-shrink: 0; font-size: 10px; font-weight: 700; letter-spacing: 0.05em;
  padding: 3px 9px; border-radius: 99px; white-space: nowrap;
}
.cc-phase-ongoing {
  color: #061018; background: linear-gradient(135deg, #6fe6dc, #29b6b0);
}
.cc-phase-brief {
  color: #2a1d00; background: linear-gradient(135deg, #fcd37a, #f59e0b);
}

/* Sentiment row */
.ccc-sent-row { display: flex; align-items: center; gap: 8px; }
.ccc-sent {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 11.5px; font-weight: 600; padding: 3px 9px;
  border-radius: 99px; white-space: nowrap;
}
.ccc-sent-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.ccc-sent.sent-positive { color: var(--green); background: var(--green-soft); border: 1px solid rgba(93, 224, 59, 0.28); }
.ccc-sent.sent-positive .ccc-sent-dot { background: var(--green); box-shadow: 0 0 6px rgba(93, 224, 59, 0.7); }
.ccc-sent.sent-neutral { color: var(--amber); background: var(--amber-soft); border: 1px solid rgba(251, 191, 36, 0.28); }
.ccc-sent.sent-neutral .ccc-sent-dot { background: var(--amber); box-shadow: 0 0 6px rgba(251, 191, 36, 0.6); }
.ccc-sent.sent-negative { color: var(--red); background: var(--red-soft); border: 1px solid rgba(248, 113, 113, 0.28); }
.ccc-sent.sent-negative .ccc-sent-dot { background: var(--red); box-shadow: 0 0 6px rgba(248, 113, 113, 0.7); }

/* Deadline mini-rows */
.ccc-dls { display: flex; flex-direction: column; gap: 4px; }
.ccc-dl {
  display: flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 600;
  padding: 3px 8px; border-radius: 8px;
}
.ccc-dl.dl-overdue { color: var(--red); background: var(--red-soft); border: 1px solid rgba(248,113,113,0.3); }
.ccc-dl.dl-soon { color: var(--amber); background: var(--amber-soft); border: 1px solid rgba(251,191,36,0.3); }
.ccc-dl.dl-future { color: #6fe6dc; background: rgba(46,196,196,0.1); border: 1px solid rgba(46,196,196,0.28); }
.ccc-dl-ic { flex-shrink: 0; width: 7px; height: 7px; border-radius: 2px; background: currentColor; opacity: 0.8; }
.ccc-dl-date { font-weight: 700; white-space: nowrap; }
.ccc-dl-act { font-weight: 400; color: inherit; opacity: 0.75; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 140px; }

/* ---- Recap attività nella card compatta ---- */
.ccc-acts {
  border-top: 1px solid rgba(127, 200, 230, 0.1);
  padding-top: 8px;
  display: flex; flex-direction: column; gap: 5px;
}
.ccc-acts-label {
  font-size: 10px; font-weight: 700; letter-spacing: 0.07em;
  text-transform: uppercase; color: var(--text-3);
  margin-bottom: 2px;
}
.ccc-act-row {
  display: flex; align-items: center; gap: 7px;
  min-width: 0;
}
.ccc-act-dot {
  flex-shrink: 0;
  width: 9px; height: 9px; border-radius: 3px;
}
.ccc-act-dot.act-cyan  { background: #6fe6dc; box-shadow: 0 0 5px rgba(111,230,220,0.5); }
.ccc-act-dot.act-amber { background: var(--amber); box-shadow: 0 0 5px rgba(251,191,36,0.4); }
.ccc-act-dot.act-red   { background: var(--red); box-shadow: 0 0 5px rgba(248,113,113,0.4); }
.ccc-act-dot.act-done  { background: var(--text-3); }

.ccc-act-name {
  font-size: 12px; font-weight: 500; color: var(--text-2);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  flex: 1; min-width: 0;
}
.ccc-act-dl {
  font-size: 11px; font-weight: 600; white-space: nowrap; flex-shrink: 0;
}
.ccc-act-dl.dl-compact-overdue { color: var(--red); }
.ccc-act-dl.dl-compact-soon    { color: var(--amber); }
.ccc-act-dl.dl-compact-future  { color: #6fe6dc; }

.ccc-act-more {
  font-size: 11px; font-weight: 500; color: var(--text-3);
  padding-left: 16px;
}

/* Footer button */
.ccc-foot { margin-top: 4px; display: flex; justify-content: flex-end; }
.ccc-detail-btn {
  font-family: var(--font); font-size: 11.5px; font-weight: 600;
  color: #6fe6dc; background: rgba(46,196,196,0.08);
  border: 1px solid rgba(46,196,196,0.28); border-radius: 8px;
  padding: 5px 11px; cursor: pointer;
  transition: background 0.18s ease, border-color 0.18s ease, transform 0.15s ease;
}
.ccc-detail-btn:hover { background: rgba(46,196,196,0.18); border-color: rgba(46,196,196,0.5); transform: translateY(-1px); }

/* ---- RIGHT SIDEBAR — scadenze prossime ---- */
.ci-sidebar {
  position: sticky; top: 72px; /* below topbar */
  max-height: calc(100vh - 100px); overflow-y: auto;
}
.ci-sidebar-inner {
  background: linear-gradient(180deg, rgba(10,26,40,0.8), rgba(6,18,30,0.6));
  border: 1px solid var(--border); border-radius: 18px;
  padding: 16px 16px 18px;
  box-shadow: var(--shadow); backdrop-filter: blur(14px) saturate(1.3);
  -webkit-backdrop-filter: blur(14px) saturate(1.3);
}

.csb-head {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 14px; padding-bottom: 10px;
  border-bottom: 1px solid var(--border);
}
.csb-ic { font-size: 15px; line-height: 1; }
.csb-title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.14em; color: var(--text-3); flex: 1; }
.csb-stats { display: flex; gap: 5px; flex-shrink: 0; }
.csb-stat {
  font-size: 10.5px; font-weight: 700; padding: 2px 7px; border-radius: 7px;
}
.csb-stat.dl-overdue { color: var(--red); background: var(--red-soft); }
.csb-stat.dl-soon { color: var(--amber); background: var(--amber-soft); }
.csb-stat.dl-nodate { color: #6fe6dc; background: rgba(46,196,196,0.12); }
.csb-empty { font-size: 12px; color: var(--text-3); font-style: italic; line-height: 1.5; }

.csb-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.csb-row {
  display: flex; align-items: flex-start; gap: 8px;
  padding: 8px 10px; border-radius: 10px;
  background: rgba(255,255,255,0.025); border: 1px solid var(--border); border-left-width: 3px;
}
.csb-row.dl-overdue { border-left-color: var(--red); background: rgba(248,113,113,0.06); }
.csb-row.dl-soon { border-left-color: var(--amber); background: rgba(251,191,36,0.05); }
.csb-row.dl-future { border-left-color: rgba(46,196,196,0.45); }
.csb-row.dl-nodate { border-left-color: rgba(46,196,196,0.45); background: rgba(46,196,196,0.04); }
.csb-pin { font-size: 12px; line-height: 1.3; flex-shrink: 0; }
.csb-row-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.csb-client { font-size: 12px; font-weight: 700; color: var(--text); line-height: 1.25; }
.csb-act { font-size: 11px; color: var(--text-2); line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 200px; }
.csb-date { font-size: 10.5px; font-weight: 600; }
.csb-row.dl-overdue .csb-date { color: var(--red); }
.csb-row.dl-soon .csb-date { color: var(--amber); }
.csb-row.dl-future .csb-date { color: #6fe6dc; }
.csb-row.dl-nodate .csb-date { color: #6fe6dc; }

/* ---- CLIENT DETAIL MODAL ---- */
.ci-modal {
  position: fixed; inset: 0; z-index: 50;
}
.ci-modal-backdrop {
  position: absolute; inset: 0;
  background: rgba(2, 8, 14, 0.72);
  backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px);
}
.ci-modal-panel {
  position: absolute; top: 0; right: 0; bottom: 0;
  width: min(680px, 100vw);
  background: linear-gradient(180deg, #071c2e, #051422);
  border-left: 1px solid var(--border-strong);
  box-shadow: -28px 0 80px -20px rgba(0,0,0,0.75);
  overflow-y: auto; padding: 28px 28px 80px;
  transform: translateX(100%);
  transition: transform 0.32s cubic-bezier(0.2, 0.7, 0.2, 1);
  z-index: 1;
}
.ci-modal-panel.open { transform: translateX(0); }
.ci-modal-close {
  position: sticky; top: 0; float: right; z-index: 2;
  width: 36px; height: 36px; border-radius: 50%;
  border: 1px solid var(--border-strong); background: rgba(6,18,30,0.8);
  color: var(--text-2); font-size: 14px; cursor: pointer;
  display: grid; place-items: center;
  transition: background 0.18s ease, color 0.18s ease;
  backdrop-filter: blur(8px);
}
.ci-modal-close:hover { background: rgba(248,113,113,0.2); color: var(--red); }
.ci-modal-body { margin-top: 8px; clear: both; }

/* Detail header inside modal */
.ci-detail-head { margin-bottom: 20px; }
.ci-detail-name-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.ci-detail-name { font-size: clamp(22px, 3.5vw, 30px); font-weight: 700; letter-spacing: -0.02em; }
.ci-detail-badges { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }

/* Responsive: mobile → single column, sidebar collapses below */
@media (max-width: 1020px) {
  .ci-layout {
    grid-template-columns: 1fr;
  }
  .ci-sidebar {
    position: static; max-height: none; order: 2;
  }
  .ci-main { order: 1; }
}
@media (max-width: 720px) {
  .ci-wrap { padding: 16px 14px 160px; }
  .ci-hero { padding: 20px 20px 18px; }
  .cl-group-compact-body { grid-template-columns: 1fr; }
  .ci-modal-panel { width: 100vw; border-left: none; padding: 20px 16px 80px; }
}

/* ============ CONTATTI ============ */
.contacts-wrap { max-width: 1480px; }
.contacts-hero-meta { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 12px; }
.ct-sync { display: inline-block; font-size: 12px; font-weight: 600; color: #6fe6dc; background: rgba(46, 196, 196, 0.1); padding: 4px 12px; border-radius: 20px; border: 1px solid rgba(46, 196, 196, 0.22); }
.ct-counters { display: flex; gap: 8px; flex-wrap: wrap; }
.ct-counter { font-size: 12px; font-weight: 600; padding: 4px 12px; border-radius: 20px; background: rgba(255,255,255,0.05); border: 1px solid var(--border); color: var(--text-2); }
.ct-counter-client { color: #6fe6dc; background: rgba(46, 196, 196, 0.1); border-color: rgba(46, 196, 196, 0.25); }
.ct-counter-prospect { color: var(--amber); background: var(--amber-soft); border-color: rgba(251, 191, 36, 0.3); }
.ct-counter-supplier { color: var(--violet); background: rgba(167, 139, 250, 0.12); border-color: rgba(167, 139, 250, 0.3); }

.contacts-filters {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  margin: 22px 0 18px;
}
.ct-type-btns { display: flex; gap: 8px; }
.ct-f {
  font-family: var(--font); font-size: 13px; font-weight: 500;
  padding: 8px 18px; border-radius: 99px; border: 1px solid var(--border);
  background: rgba(255,255,255,0.04); color: var(--text-2);
  cursor: pointer; transition: background 0.2s, color 0.2s, border-color 0.2s;
}
.ct-f:hover { background: rgba(255,255,255,0.08); color: var(--text); }
.ct-f.active { background: rgba(46, 196, 196, 0.13); color: #6fe6dc; border-color: rgba(46, 196, 196, 0.38); }
.ct-search-wrap { flex: 1; min-width: 200px; max-width: 380px; }
.ct-search {
  width: 100%; font-family: var(--font); font-size: 13.5px;
  padding: 9px 16px; border-radius: 12px;
  border: 1px solid var(--border-strong); background: rgba(255,255,255,0.04);
  color: var(--text); outline: none;
  transition: border-color 0.25s, box-shadow 0.25s;
}
.ct-search::placeholder { color: var(--text-3); }
.ct-search:focus { border-color: rgba(46, 196, 196, 0.5); box-shadow: 0 0 0 3px rgba(46, 196, 196, 0.1); }

/* Badge tipo */
.ct-badge {
  display: inline-block; font-size: 10.5px; font-weight: 700;
  padding: 3px 10px; border-radius: 99px; letter-spacing: 0.03em;
  white-space: nowrap;
}
.ct-badge-client { color: #061018; background: linear-gradient(135deg, #6fe6dc, #29b6b0); }
.ct-badge-prospect { color: #2a1d00; background: linear-gradient(135deg, #fcd37a, #f59e0b); }
.ct-badge-supplier { color: #1a0f38; background: linear-gradient(135deg, #c4b5fd, #a78bfa); }

/* Email funzionale note */
.ct-email-note { font-size: 11px; color: var(--text-3); font-style: italic; margin-left: 4px; cursor: help; }

/* Link email */
.ct-email-link { color: #6fe6dc; text-decoration: none; transition: color 0.2s; }
.ct-email-link:hover { color: #a8ffed; text-decoration: underline; }
.ct-dim { color: var(--text-3); }

/* Desktop: tabella */
.ct-mobile { display: none; }
.ct-desktop { display: block; }
.ct-table-wrap { overflow-x: auto; border-radius: var(--radius-sm); border: 1px solid var(--border); background: rgba(255,255,255,0.025); }
.ct-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.ct-table thead tr { border-bottom: 1px solid var(--border-strong); }
.ct-table th {
  padding: 12px 16px; text-align: left;
  font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.1em;
  color: var(--text-3); white-space: nowrap;
}
.ct-table td {
  padding: 12px 16px; vertical-align: middle;
  border-bottom: 1px solid rgba(127,200,230,0.06);
  color: var(--text);
}
.ct-table tbody tr:last-child td { border-bottom: none; }
.ct-table tbody tr:hover td { background: rgba(46, 196, 196, 0.04); }
.ct-td-name { font-weight: 600; white-space: nowrap; }
.ct-td-company { color: var(--text-2); }
.ct-td-role { color: var(--text-3); font-size: 12.5px; }
.ct-td-email { font-size: 12.5px; }
.ct-td-project { color: var(--text-2); font-size: 12.5px; max-width: 220px; }
.ct-td-lastcontact { color: var(--text-2); font-size: 12px; max-width: 260px; }
.ct-lc-date { display: block; font-weight: 600; color: var(--text-1); font-size: 11.5px; margin-bottom: 2px; }
.ct-lc-note { display: block; color: var(--text-3); font-size: 11.5px; line-height: 1.35; }

/* Mobile: card */
.ct-cards { display: flex; flex-direction: column; gap: 12px; }
.ct-card {
  background: var(--card); border: 1px solid var(--border);
  border-radius: var(--radius-sm); padding: 16px 18px;
  transition: background 0.2s, border-color 0.2s;
}
.ct-card:hover { background: var(--card-hover); border-color: var(--border-strong); }
.ct-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 6px; }
.ct-card-name { font-weight: 600; font-size: 15px; }
.ct-card-company { font-size: 13px; color: var(--text-2); margin-bottom: 4px; }
.ct-card-role { font-size: 12px; color: var(--text-3); margin-bottom: 6px; }
.ct-card-email { font-size: 13px; margin-bottom: 6px; }
.ct-card-project { font-size: 11.5px; color: var(--text-3); padding-top: 8px; border-top: 1px solid var(--border); margin-top: 6px; }
.ct-card-lastcontact { font-size: 11.5px; color: var(--text-3); padding-top: 6px; margin-top: 4px; line-height: 1.35; }

.contacts-body { padding-bottom: 60px; }

@media (max-width: 740px) {
  .ct-desktop { display: none; }
  .ct-mobile { display: block; }
  .contacts-filters { flex-direction: column; align-items: flex-start; }
  .ct-search-wrap { max-width: 100%; width: 100%; }
  .contacts-hero-meta { flex-direction: column; align-items: flex-start; gap: 10px; }
}

/* ===== CI DETAIL — sezione Brief richiesto ===== */
.ci-brief-section {
  margin: 0 0 18px 0;
  padding: 14px 16px;
  background: rgba(255,180,50,.06);
  border: 1px solid rgba(255,180,50,.22);
  border-radius: 10px;
}
.ci-brief-tag {
  display: block;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #f0a830;
  margin-bottom: 10px;
}
.ci-brief-box + .ci-brief-box { margin-top: 12px; }
.ci-brief-act-name {
  font-size: 12px;
  font-weight: 600;
  color: rgba(255,255,255,.55);
  margin-bottom: 5px;
}
.ci-brief-text {
  font-size: 13px;
  line-height: 1.55;
  color: rgba(255,255,255,.82);
  margin: 0;
}

/* ===== CI TABS ===== */
.ci-tabs {
  display: flex;
  gap: 4px;
  margin: 0 0 24px;
  padding: 4px;
  background: rgba(255,255,255,0.04);
  border-radius: 14px;
  border: 1px solid var(--border);
  width: fit-content;
}
.ci-tab {
  background: transparent;
  border: none;
  color: var(--text-2);
  padding: 8px 20px;
  border-radius: 10px;
  font: 500 13px var(--font);
  cursor: pointer;
  transition: background .18s, color .18s;
  white-space: nowrap;
}
.ci-tab:hover { color: var(--text); background: rgba(255,255,255,0.05); }
.ci-tab.active { background: rgba(46,196,196,0.13); color: #6fe6dc; border: 1px solid rgba(46,196,196,0.25); }
.ci-tab-pane { display: block; }
.ci-tab-pane.hidden { display: none; }

/* ===== PIANO EDITORIALE ===== */
.ci-ped-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  margin-bottom: 24px;
}
.ci-ped-filters {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.ped-pill {
  background: rgba(255,255,255,0.05);
  border: 1px solid var(--border);
  color: var(--text-2);
  padding: 6px 16px;
  border-radius: 99px;
  font: 500 12px var(--font);
  cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
}
.ped-pill:hover { color: var(--text); background: rgba(255,255,255,0.09); }
.ped-pill.active { background: rgba(46,196,196,0.15); color: #6fe6dc; border-color: rgba(46,196,196,0.3); }
.ped-sync-btn {
  background: rgba(46,196,196,0.1);
  border: 1px solid rgba(46,196,196,0.25);
  color: #6fe6dc;
  padding: 7px 18px;
  border-radius: 99px;
  font: 500 12px var(--font);
  cursor: pointer;
  transition: background .15s;
  white-space: nowrap;
}
.ped-sync-btn:hover { background: rgba(46,196,196,0.2); }
.ped-sync-btn.loading { opacity: .6; pointer-events: none; }

/* Sezioni settimane */
.ped-week-section { margin-bottom: 28px; }
.ped-week-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 12px;
}
.ped-week-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--text-2);
  letter-spacing: .04em;
  text-transform: uppercase;
}
.ped-week-section.ped-current-week .ped-week-label { color: #6fe6dc; }
.ped-week-section.ped-current-week { background: rgba(46,196,196,0.04); border: 1px solid rgba(46,196,196,0.12); border-radius: 16px; padding: 16px; }
.ped-week-section.ped-late .ped-week-label { color: var(--red); }
.ped-week-count {
  font-size: 11px;
  font-weight: 700;
  padding: 2px 9px;
  border-radius: 99px;
  background: rgba(255,255,255,0.07);
  color: var(--text-3);
}
.ped-week-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
  gap: 12px;
}

/* Card task PED */
.ped-card {
  background: var(--card);
  border-radius: 14px;
  padding: 14px 14px 12px;
  border-left: 3px solid transparent;
  border-top: 1px solid var(--border);
  border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 6px;
  transition: background .15s;
}
.ped-card:hover { background: var(--card-hover); }
.ped-card.branded { border-left-color: #22d3ee; }
.ped-card.editorial { border-left-color: #4ade80; }
.ped-card.state-late { border-left-color: var(--red) !important; }

.ped-card-date {
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
  letter-spacing: -.01em;
}
.ped-card-date.state-late { color: var(--red); }
.ped-card-date.state-soon { color: var(--amber); }
.ped-card-date.state-future { color: var(--text-2); }

.ped-card-title {
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.ped-card-badges {
  display: flex;
  align-items: center;
  gap: 5px;
  flex-wrap: wrap;
  margin-top: 2px;
}
.ped-badge {
  font-size: 10px;
  font-weight: 700;
  padding: 2px 8px;
  border-radius: 99px;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.ped-badge.branded { background: rgba(34,211,238,0.15); color: #22d3ee; border: 1px solid rgba(34,211,238,0.3); }
.ped-badge.editorial { background: rgba(74,222,128,0.12); color: #4ade80; border: 1px solid rgba(74,222,128,0.25); }
.ped-badge.brand-name { background: rgba(34,211,238,0.09); color: #7fe8f5; border: 1px solid rgba(34,211,238,0.18); }
.ped-badge.channel { background: rgba(255,255,255,0.06); color: var(--text-2); border: 1px solid var(--border); font-size: 10px; }
.ped-card-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 4px;
}
.ped-assignee {
  font-size: 11px;
  font-weight: 600;
  background: rgba(255,255,255,0.09);
  color: var(--text-2);
  border-radius: 99px;
  padding: 2px 9px;
}

/* Collapsible settimane su mobile */
@media (max-width: 768px) {
  .ped-week-grid { grid-template-columns: 1fr; }
  .ped-week-head { cursor: pointer; user-select: none; }
  .ped-week-head::after { content: '▾'; margin-left: auto; font-size: 12px; color: var(--text-3); transition: transform .2s; }
  .ped-week-section.collapsed .ped-week-head::after { transform: rotate(-90deg); }
  .ped-week-section.collapsed .ped-week-grid { display: none; }
}

/* ===== PIANO EDITORIALE — striscia 7gg ===== */
.ci-ped-strip { margin: 0 0 24px 0; padding: 18px 20px; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.07); border-radius: 14px; }
.ci-ped-strip-head { display:flex; justify-content:space-between; align-items:center; margin-bottom:14px; }
.ci-ped-strip-title { font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.45); }
.ci-ped-full-btn { font-size:12px; font-weight:600; color:#38bdf8; background:none; border:1px solid rgba(56,189,248,.3); border-radius:20px; padding:4px 14px; cursor:pointer; transition:all .2s; }
.ci-ped-full-btn:hover { background:rgba(56,189,248,.08); }
.ci-ped-strip-body { display:flex; gap:10px; overflow-x:auto; padding-bottom:4px; scrollbar-width:thin; }

/* ===== CARD PED ===== */
.ped-card { min-width:180px; max-width:220px; flex-shrink:0; padding:12px 14px; border-radius:10px; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.07); border-left:3px solid transparent; display:flex; flex-direction:column; gap:6px; }
.ped-branded { border-left-color:#38bdf8; }
.ped-editorial { border-left-color:#4ade80; }
.ped-overdue { border-left-color:#f87171 !important; background:rgba(248,113,113,.05) !important; }
.ped-today,.ped-soon { border-left-color:#fbbf24 !important; }
.ped-card-date { font-size:13px; font-weight:700; color:#38bdf8; }
.ped-editorial .ped-card-date { color:#4ade80; }
.ped-overdue .ped-card-date { color:#f87171; }
.ped-today .ped-card-date,.ped-soon .ped-card-date { color:#fbbf24; }
.ped-card-title { font-size:12px; font-weight:600; color:rgba(255,255,255,.85); line-height:1.4; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.ped-card-desc { font-size:11px; color:rgba(255,255,255,.5); line-height:1.4; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; margin:0; }
.ped-card-foot { display:flex; flex-wrap:wrap; gap:4px; margin-top:2px; }
.ped-badge { font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:.06em; padding:2px 7px; border-radius:10px; }
.ped-badge-b { background:rgba(56,189,248,.15); color:#38bdf8; }
.ped-badge-e { background:rgba(74,222,128,.12); color:#4ade80; }
.ped-brand-tag { font-size:9px; font-weight:600; padding:2px 7px; border-radius:10px; background:rgba(56,189,248,.1); color:rgba(56,189,248,.8); }
.ped-status-tag { font-size:9px; padding:2px 7px; border-radius:10px; }
.ped-status-tag.ped-overdue { background:rgba(248,113,113,.15); color:#f87171; }
.ped-status-tag.ped-today,.ped-status-tag.ped-soon { background:rgba(251,191,36,.12); color:#fbbf24; }
.ped-ch-tag { font-size:9px; padding:2px 7px; border-radius:10px; background:rgba(255,255,255,.07); color:rgba(255,255,255,.4); }

/* ===== PAGINA PED COMPLETA ===== */
.ped-full-wrap { max-width:1400px; margin:0 auto; padding:24px 20px; }
.ped-full-hero { display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:28px; flex-wrap:wrap; gap:12px; }
.ped-full-hero-left h1 { font-size:26px; font-weight:700; margin:8px 0 0; color:#fff; }
.ped-back-btn { font-size:12px; color:rgba(255,255,255,.4); background:none; border:none; cursor:pointer; padding:0; }
.ped-back-btn:hover { color:#38bdf8; }
.ped-full-hero-right { display:flex; align-items:center; gap:10px; }
.ped-full-filters { display:flex; gap:6px; }
.ped-pill { font-size:11px; font-weight:600; padding:5px 14px; border-radius:20px; border:1px solid rgba(255,255,255,.15); background:none; color:rgba(255,255,255,.5); cursor:pointer; transition:all .2s; }
.ped-pill.active,.ped-pill:hover { border-color:#38bdf8; color:#38bdf8; background:rgba(56,189,248,.08); }
.ped-sync-btn { font-size:11px; font-weight:600; color:#38bdf8; background:none; border:1px solid rgba(56,189,248,.3); border-radius:20px; padding:5px 14px; cursor:pointer; }
.ped-week-block { margin-bottom:32px; }
.ped-week-block.ped-week-current .ped-week-label { color:#38bdf8; }
.ped-week-block.ped-week-overdue .ped-week-label { color:#f87171; }
.ped-week-label { font-size:12px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:rgba(255,255,255,.35); margin-bottom:12px; }
.ped-cur-badge { font-size:10px; font-weight:600; color:#38bdf8; margin-left:8px; }
.ped-week-cards { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:12px; }
.ped-week-cards .ped-card { min-width:0; max-width:none; }
@media(max-width:680px) {
  .ci-ped-strip-body { flex-direction:column; }
  .ped-card { min-width:0; max-width:none; }
  .ped-week-cards { grid-template-columns:1fr; }
}

/* badge formato PED */
.ped-format-tag { display:inline-block; font-size:9px; font-weight:800; letter-spacing:.1em; text-transform:uppercase; padding:2px 8px; border-radius:10px; background:rgba(255,255,255,.08); color:rgba(255,255,255,.55); margin-bottom:4px; }
.ped-branded .ped-format-tag { background:rgba(56,189,248,.12); color:rgba(56,189,248,.7); }
.ped-editorial .ped-format-tag { background:rgba(74,222,128,.1); color:rgba(74,222,128,.65); }
.ped-no-desc { color:rgba(255,255,255,.2) !important; font-style:italic; }

/* ===== IG STRIP — ultimi 7 giorni ===== */
.ci-ig-strip { margin: 0 0 16px 0; padding: 18px 20px; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.07); border-radius: 14px; }
.ci-ig-strip-body { display:flex; gap:10px; overflow-x:auto; padding-bottom:4px; scrollbar-width:thin; }
.ig-card { min-width:160px; max-width:200px; flex-shrink:0; padding:11px 13px; border-radius:10px; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.07); display:flex; flex-direction:column; gap:5px; text-decoration:none; transition:border-color .2s; }
.ig-card:hover { border-color:rgba(56,189,248,.4); }
.ig-card.ig-top { border-left:3px solid #fbbf24; }
.ig-card-date { font-size:11px; font-weight:700; color:rgba(255,255,255,.4); }
.ig-card-cap { font-size:11px; color:rgba(255,255,255,.7); line-height:1.4; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
.ig-card-kpi { display:flex; align-items:center; gap:10px; margin-top:4px; }
.ig-kpi { display:flex; align-items:center; gap:4px; font-size:12px; font-weight:700; color:rgba(255,255,255,.6); }
.ig-kpi-ic { display:inline-block; width:10px; height:10px; border-radius:50%; }
.ig-likes { background:#f87171; }
.ig-comments { background:#60a5fa; }
.ig-top-badge { font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.08em; padding:2px 7px; border-radius:10px; background:rgba(251,191,36,.15); color:#fbbf24; margin-left:auto; }

/* Nuove fasi clienti */
.phase-closed-won { background: rgba(74,222,128,.15); color: #4ade80; border: 1px solid rgba(74,222,128,.3); }
.phase-closed-lost { background: rgba(255,255,255,.06); color: rgba(255,255,255,.35); border: 1px solid rgba(255,255,255,.1); }

/* ============================================================
   GESTIONE COSTI — sezione completa
   ============================================================ */

/* nav voce gestione */
.nav-link[data-nav="gestione"] { display: inline-flex; align-items: center; }

/* wrapper principale */
.gest-wrap {
  max-width: 1100px;
  margin: 0 auto;
  padding: 2rem 1.5rem 6rem;
}

/* hero */
.gest-hero { margin-bottom: 2rem; }
.gest-hero h1 { font-size: 1.9rem; font-weight: 700; color: #f0f8ff; margin: 0 0 .4rem; letter-spacing: -.02em; }
.gest-hero p { color: #94a3b8; font-size: .95rem; margin: 0; }

/* tab bar */
.gest-tabs {
  display: flex;
  gap: .5rem;
  margin-bottom: 1.75rem;
  border-bottom: 1px solid rgba(255,255,255,.08);
  padding-bottom: 0;
}
.gest-tab {
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  color: #94a3b8;
  font-size: .9rem;
  font-weight: 500;
  padding: .6rem 1.1rem;
  cursor: pointer;
  transition: color .2s, border-color .2s;
  font-family: inherit;
  margin-bottom: -1px;
}
.gest-tab:hover { color: #e2e8f0; }
.gest-tab.active { color: #38bdf8; border-bottom-color: #38bdf8; }

.gest-tab-pane { display: block; }
.gest-tab-pane.hidden { display: none !important; }

/* ---- Rate Card ---- */
.rc-header {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1rem;
}
.rc-mult-badge {
  background: rgba(56,189,248,.12);
  color: #38bdf8;
  border: 1px solid rgba(56,189,248,.3);
  padding: .25rem .8rem;
  border-radius: 999px;
  font-size: .82rem;
  font-weight: 600;
}
.rc-update { color: #64748b; font-size: .8rem; }

.rc-table-wrap { overflow-x: auto; }
.rc-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .84rem;
}
.rc-table thead tr { border-bottom: 1px solid rgba(255,255,255,.08); }
.rc-table th {
  text-align: left;
  color: #64748b;
  font-weight: 600;
  padding: .55rem .75rem;
  white-space: nowrap;
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .04em;
}
.rc-table td {
  padding: .55rem .75rem;
  border-bottom: 1px solid rgba(255,255,255,.04);
  color: #cbd5e1;
  white-space: nowrap;
}
.rc-table tbody tr:hover td { background: rgba(255,255,255,.03); }
.rc-name { font-weight: 500; color: #e2e8f0 !important; }
.rc-val { text-align: right; font-variant-numeric: tabular-nums; }
.rc-cliente { color: #38bdf8 !important; font-weight: 600; }
.rc-seniority {
  background: rgba(100,116,139,.15);
  color: #94a3b8;
  padding: .15rem .5rem;
  border-radius: 4px;
  font-size: .75rem;
  font-weight: 600;
}

/* ---- Preventivi ---- */
.gest-preventivi-head { margin-bottom: 1.25rem; }

.gest-prev-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1rem;
}
.gest-prev-card {
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 12px;
  padding: 1.2rem 1.3rem;
  border-left: 3px solid #64748b;
  transition: border-color .2s;
}
.gest-prev-card.sem-verde { border-left-color: #22c55e; }
.gest-prev-card.sem-giallo { border-left-color: #eab308; }
.gest-prev-card.sem-rosso { border-left-color: #ef4444; }

.gest-prev-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: .9rem;
}
.gest-prev-card-head h3 { font-size: 1rem; font-weight: 600; color: #e2e8f0; margin: 0; }

.gest-sem {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #64748b;
  flex-shrink: 0;
}
.gest-sem.sem-verde { background: #22c55e; box-shadow: 0 0 6px #22c55e88; }
.gest-sem.sem-giallo { background: #eab308; box-shadow: 0 0 6px #eab30888; }
.gest-sem.sem-rosso { background: #ef4444; box-shadow: 0 0 6px #ef444488; }

.gest-prev-card-body { display: flex; flex-direction: column; gap: .45rem; }
.gest-prev-row { display: flex; justify-content: space-between; font-size: .84rem; color: #94a3b8; }
.gest-prev-row span:last-child { color: #cbd5e1; font-weight: 500; }
.gest-margine-row span:last-child { font-weight: 700; }

/* stato vuoto preventivi */
.gest-empty-state { text-align: center; padding: 3rem 1rem; color: #64748b; }
.gest-empty-ic { font-size: 2.5rem; margin-bottom: .75rem; }
.gest-empty-state h3 { color: #94a3b8; font-size: 1.1rem; margin: 0 0 .5rem; }
.gest-empty-state p { font-size: .9rem; }

/* ---- Consuntivo ---- */
.gest-consuntivo-head {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.5rem;
}
.gest-month-label { color: #94a3b8; font-size: .88rem; display: flex; align-items: center; gap: .5rem; }
.gest-month-input {
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 6px;
  color: #e2e8f0;
  padding: .35rem .6rem;
  font-family: inherit;
  font-size: .88rem;
}
.gest-month-input:focus { outline: none; border-color: #38bdf8; }

/* Timesheet import */
.gest-timesheet-section {
  margin-top: 2.5rem;
  padding-top: 2rem;
  border-top: 1px solid rgba(255,255,255,.06);
}
.gest-timesheet-section h3 { font-size: 1rem; font-weight: 600; color: #e2e8f0; margin: 0 0 .4rem; }
.gest-ts-hint { color: #64748b; font-size: .83rem; margin-bottom: .75rem; }
.gest-ts-textarea {
  width: 100%;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 8px;
  color: #e2e8f0;
  font-family: 'Courier New', monospace;
  font-size: .82rem;
  padding: .85rem 1rem;
  resize: vertical;
  min-height: 140px;
  line-height: 1.6;
  box-sizing: border-box;
}
.gest-ts-textarea:focus { outline: none; border-color: #38bdf8; }
.gest-ts-textarea::placeholder { color: #475569; }
.gest-ts-actions { display: flex; align-items: center; gap: 1rem; margin-top: .75rem; }
.gest-ts-status { font-size: .83rem; color: #64748b; }
.gest-ts-status.success { color: #22c55e; }
.gest-ts-status.error { color: #ef4444; }

/* ---- Valori positivi/negativi ---- */
.val-pos { color: #22c55e !important; }
.val-neg { color: #f87171 !important; }

/* ---- Pulsanti Gestione ---- */
.gest-btn-primary {
  background: rgba(56,189,248,.15);
  border: 1px solid rgba(56,189,248,.35);
  color: #38bdf8;
  border-radius: 8px;
  padding: .55rem 1.2rem;
  font-size: .88rem;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: background .2s, border-color .2s;
}
.gest-btn-primary:hover { background: rgba(56,189,248,.25); border-color: #38bdf8; }

.gest-btn-secondary {
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  color: #94a3b8;
  border-radius: 8px;
  padding: .45rem 1rem;
  font-size: .86rem;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  transition: background .2s;
}
.gest-btn-secondary:hover { background: rgba(255,255,255,.1); color: #e2e8f0; }

/* ---- MODALE PREVENTIVO ---- */
.gest-modal {
  position: fixed; inset: 0; z-index: 2000;
  display: flex; align-items: flex-start; justify-content: flex-end;
}
.gest-modal.hidden { display: none; }
.gest-modal-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.55);
  backdrop-filter: blur(4px);
}
.gest-modal-panel {
  position: relative;
  width: min(560px, 100vw);
  height: 100vh;
  overflow-y: auto;
  background: #07131f;
  border-left: 1px solid rgba(56,189,248,.15);
  padding: 2rem 1.75rem;
  transform: translateX(100%);
  transition: transform .3s cubic-bezier(.4,0,.2,1);
  box-shadow: -12px 0 40px rgba(0,0,0,.5);
}
.gest-modal-panel.open { transform: translateX(0); }
.gest-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 1.75rem;
}
.gest-modal-head h2 { font-size: 1.2rem; font-weight: 700; color: #f0f8ff; margin: 0; }
.gest-modal-close {
  background: none; border: none; color: #64748b; font-size: 1.1rem;
  cursor: pointer; padding: .25rem .5rem; border-radius: 4px;
  transition: color .2s;
}
.gest-modal-close:hover { color: #e2e8f0; }

.gest-form-row { margin-bottom: 1.1rem; }
.gest-form-row label { display: flex; flex-direction: column; gap: .4rem; font-size: .85rem; color: #94a3b8; font-weight: 500; }
.gest-input {
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 7px;
  color: #e2e8f0;
  padding: .5rem .75rem;
  font-family: inherit;
  font-size: .88rem;
  transition: border-color .2s;
  width: 100%;
  box-sizing: border-box;
}
.gest-input:focus { outline: none; border-color: #38bdf8; }
.gest-input option { background: #07131f; }

/* allocazioni */
.gest-alloc-head {
  display: flex; align-items: center; justify-content: space-between;
  margin: 1.25rem 0 .75rem;
}
.gest-alloc-head h4 { font-size: .9rem; font-weight: 600; color: #cbd5e1; margin: 0; }
.gest-alloc-table { display: flex; flex-direction: column; gap: .5rem; margin-bottom: 1.25rem; }
.gest-alloc-row {
  display: grid;
  grid-template-columns: 1fr 90px 90px 32px;
  gap: .5rem;
  align-items: center;
}
.gest-alloc-del {
  background: none;
  border: none;
  color: #475569;
  cursor: pointer;
  font-size: .9rem;
  padding: .25rem;
  border-radius: 4px;
  transition: color .2s;
}
.gest-alloc-del:hover { color: #ef4444; }

/* riepilogo live */
.gest-prev-summary {
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 8px;
  padding: 1rem 1.2rem;
  margin-bottom: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: .5rem;
}
.gest-prev-sum-row {
  display: flex;
  justify-content: space-between;
  font-size: .88rem;
  color: #94a3b8;
}
.gest-prev-sum-row span:last-child { font-weight: 600; color: #e2e8f0; }

.gest-modal-foot {
  display: flex; align-items: center; gap: 1rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(255,255,255,.06);
}
.gest-save-status { font-size: .83rem; color: #64748b; }
.gest-save-status.success { color: #22c55e; }
.gest-save-status.error { color: #ef4444; }

/* responsive */
@media (max-width: 640px) {
  .gest-alloc-row { grid-template-columns: 1fr 70px 70px 28px; }
  .gest-modal-panel { width: 100vw; }
  .gest-tabs { overflow-x: auto; padding-bottom: 0; }
  .gest-tab { white-space: nowrap; }
}

/* ============================================================
   PREVENTIVI MODULARI — sistema professionale Tuorlo
   ============================================================ */

/* --- lista preventivi --- */
.prev-list-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1rem;
  padding: .25rem 0 1rem;
}

.prev-list-card {
  background: #0f1923;
  border: 1px solid #1e2d3d;
  border-radius: 12px;
  padding: 1.1rem 1.2rem;
  display: flex;
  flex-direction: column;
  gap: .75rem;
  transition: border-color .2s;
}
.prev-list-card:hover { border-color: #2d4a6a; }
.prev-list-card.sem-verde { border-left: 3px solid #22c55e; }
.prev-list-card.sem-giallo { border-left: 3px solid #eab308; }
.prev-list-card.sem-rosso { border-left: 3px solid #ef4444; }

.prev-list-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: .5rem; }
.prev-list-card-info { flex: 1 1 auto; min-width: 0; }
.prev-list-card-name { font-size: 1rem; font-weight: 700; color: #f0f8ff; margin: 0 0 .15rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.prev-list-card-moduli { font-size: .75rem; color: #64748b; }

.prev-list-card-nums { display: flex; flex-direction: column; gap: .3rem; }
.prev-list-num-row { display: flex; justify-content: space-between; font-size: .84rem; color: #94a3b8; }
.prev-list-num-accordato { padding-top: .3rem; border-top: 1px solid #1e2d3d; margin-top: .1rem; }

.prev-val-listino-sm { color: #cbd5e1; }
.prev-val-sconto-sm { color: #ef4444; font-weight: 600; }
.prev-val-accordato-sm { color: #22c55e; font-size: .95rem; font-weight: 700; }

.prev-list-card-foot { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.prev-margine-badge { font-size: .78rem; padding: .2rem .6rem; border-radius: 20px; background: rgba(255,255,255,.05); }

/* --- modale full-screen preventivo --- */
.prev-modal {
  position: fixed; inset: 0; z-index: 1100;
  display: flex; align-items: stretch; justify-content: flex-end;
}
.prev-modal.hidden { display: none; }

.prev-modal-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.6);
  backdrop-filter: blur(4px);
  cursor: pointer;
}

.prev-modal-panel {
  position: relative; z-index: 1;
  width: min(1100px, 96vw);
  height: 100vh;
  background: #0b1622;
  border-left: 1px solid #1e2d3d;
  display: flex;
  flex-direction: column;
  transform: translateX(100%);
  transition: transform .3s cubic-bezier(.4,0,.2,1);
  overflow: hidden;
}
.prev-modal-panel.open { transform: translateX(0); }

.prev-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1.5rem;
  border-bottom: 1px solid #1e2d3d;
  flex-shrink: 0;
  gap: 1rem;
}
.prev-modal-header-left { display: flex; align-items: center; gap: .75rem; flex: 1 1 auto; min-width: 0; }
.prev-modal-label { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: #64748b; white-space: nowrap; }
.prev-client-select {
  background: #0f1923;
  border: 1px solid #1e2d3d;
  color: #f0f8ff;
  padding: .4rem .8rem;
  border-radius: 6px;
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
  flex: 1 1 auto;
  max-width: 320px;
}
.prev-client-select:focus { outline: none; border-color: #00d4d4; }

.prev-modal-close {
  background: none; border: none;
  color: #64748b; font-size: 1.3rem;
  cursor: pointer; padding: .3rem;
  border-radius: 6px; flex-shrink: 0;
  transition: color .15s;
}
.prev-modal-close:hover { color: #e2e8f0; }

/* --- body modale: due colonne --- */
.prev-modal-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  flex: 1 1 auto;
  overflow: hidden;
}

/* --- colonna sinistra: libreria --- */
.prev-col-libreria {
  border-right: 1px solid #1e2d3d;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.prev-libreria-head {
  padding: 1rem 1.25rem .75rem;
  flex-shrink: 0;
  border-bottom: 1px solid #1e2d3d;
}
.prev-section-title { font-size: .95rem; font-weight: 700; color: #e2e8f0; margin: 0 0 .15rem; }
.prev-section-sub { font-size: .78rem; color: #64748b; margin: 0; }

.prev-libreria-grid {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 1rem 1.25rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: .65rem;
  align-content: start;
}

.prev-lib-card {
  background: var(--cat-bg, #0f1923);
  border: 1px solid var(--cat-border, #1e2d3d);
  border-radius: 10px;
  padding: .75rem;
  cursor: pointer;
  transition: transform .15s, box-shadow .15s;
  display: flex;
  flex-direction: column;
  gap: .4rem;
}
.prev-lib-card:hover { transform: translateY(-2px); box-shadow: 0 4px 16px rgba(0,0,0,.4); }

.prev-lib-card-cat { display: flex; align-items: center; gap: .35rem; }
.prev-lib-icon { font-size: .9rem; }
.prev-lib-cat-label { font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; }
.prev-lib-card-nome { font-size: .82rem; font-weight: 700; color: #e2e8f0; line-height: 1.2; }
.prev-lib-card-desc { font-size: .72rem; color: #64748b; line-height: 1.35; flex: 1 1 auto; }
.prev-lib-card-foot { display: flex; align-items: center; justify-content: space-between; margin-top: .1rem; }
.prev-lib-price { font-size: .78rem; color: #22c55e; font-weight: 600; }
.prev-lib-add-btn {
  width: 22px; height: 22px;
  border-radius: 50%;
  border: 1px solid var(--cat-border, #1e2d3d);
  background: var(--cat-bg, #0f1923);
  color: var(--cat-text, #94a3b8);
  font-size: 1rem; font-weight: 700;
  cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  transition: background .15s, color .15s;
  padding: 0;
  line-height: 1;
}
.prev-lib-add-btn:hover { background: var(--cat-border, #1e2d3d); color: #fff; }

/* --- colonna destra --- */
.prev-col-destra {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.prev-moduli-head {
  padding: 1rem 1.25rem .75rem;
  border-bottom: 1px solid #1e2d3d;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-shrink: 0;
}
.prev-subtotale-badge {
  font-size: 1.05rem;
  font-weight: 800;
  color: #22c55e;
}

.prev-moduli-list {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: .75rem 1.25rem;
  display: flex;
  flex-direction: column;
  gap: .5rem;
}

.prev-empty-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  padding: 2.5rem 1rem;
  color: #64748b;
  text-align: center;
}
.prev-empty-ic { font-size: 2rem; }
.prev-empty-state p { font-size: .85rem; margin: 0; }

/* --- righe moduli aggiunti --- */
.prev-modulo-row {
  background: #0f1923;
  border: 1px solid #1e2d3d;
  border-radius: 8px;
  display: flex;
  overflow: hidden;
  transition: border-color .15s;
}
.prev-modulo-row:hover { border-color: #2d4a6a; }

.prev-modulo-row-cat {
  width: 4px;
  flex-shrink: 0;
}

.prev-modulo-row-body {
  flex: 1 1 auto;
  padding: .6rem .75rem;
  display: flex;
  flex-direction: column;
  gap: .45rem;
}

.prev-modulo-row-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .5rem;
  flex-wrap: wrap;
}

.prev-modulo-nome {
  font-size: .84rem;
  font-weight: 700;
  color: #e2e8f0;
  flex: 1 1 auto;
  min-width: 0;
}

.prev-modulo-controls {
  display: flex;
  align-items: center;
  gap: .4rem;
  flex-shrink: 0;
}

.prev-modulo-field {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.prev-modulo-field label {
  font-size: .65rem;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: .05em;
}

.prev-modulo-input {
  background: #071320;
  border: 1px solid #1e2d3d;
  color: #f0f8ff;
  padding: .25rem .45rem;
  border-radius: 5px;
  font-size: .82rem;
  width: 80px;
}
.prev-modulo-input:focus { outline: none; border-color: #00d4d4; }
.prev-modulo-prezzo { color: #22c55e; font-weight: 600; }

.prev-modulo-del {
  background: none; border: none;
  color: #475569; font-size: .85rem;
  cursor: pointer; padding: .25rem;
  border-radius: 4px;
  transition: color .15s;
  align-self: flex-start;
}
.prev-modulo-del:hover { color: #ef4444; }

.prev-modulo-note {
  font-size: .72rem;
  color: #64748b;
  font-style: italic;
}

/* --- riepilogo economico --- */
.prev-riepilogo {
  border-top: 1px solid #1e2d3d;
  padding: 1rem 1.25rem;
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  gap: .6rem;
  background: #080f18;
}

.prev-riep-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  font-size: .85rem;
  color: #94a3b8;
}
.prev-riep-row span:first-child { flex-shrink: 0; }

.prev-val-listino { color: #cbd5e1; font-weight: 600; font-size: .9rem; }

.prev-riep-input {
  background: #0f1923;
  border: 1px solid #1e2d3d;
  color: #f0f8ff;
  padding: .3rem .6rem;
  border-radius: 6px;
  font-size: .85rem;
  width: 120px;
  text-align: right;
}
.prev-riep-input:focus { outline: none; border-color: #00d4d4; }

.prev-riep-divider {
  height: 1px;
  background: #1e2d3d;
  margin: .1rem 0;
}

.prev-riep-totale {
  padding: .35rem 0;
}
.prev-riep-totale span:first-child {
  font-size: .9rem;
  font-weight: 700;
  color: #e2e8f0;
}
.prev-val-totale {
  font-size: 1.5rem;
  font-weight: 800;
  color: #22c55e;
  letter-spacing: -.02em;
}

.prev-val-margine { font-weight: 700; font-size: .88rem; }

.prev-riep-note {
  display: flex;
  flex-direction: column;
  gap: .3rem;
}
.prev-note-label {
  font-size: .72rem;
  color: #64748b;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.prev-note-textarea {
  background: #0f1923;
  border: 1px solid #1e2d3d;
  color: #e2e8f0;
  padding: .5rem .7rem;
  border-radius: 6px;
  font-size: .82rem;
  resize: vertical;
  font-family: inherit;
  min-height: 52px;
}
.prev-note-textarea:focus { outline: none; border-color: #00d4d4; }

.prev-riep-actions {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding-top: .25rem;
}

.prev-save-btn { flex-shrink: 0; }

/* --- responsive modale preventivo --- */
@media (max-width: 800px) {
  .prev-modal-panel { width: 100vw; }
  .prev-modal-body { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .prev-col-libreria { border-right: none; border-bottom: 1px solid #1e2d3d; max-height: 40vh; }
  .prev-libreria-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px) {
  .prev-libreria-grid { grid-template-columns: 1fr; }
  .prev-modulo-controls { flex-wrap: wrap; }
}

/* ===== ALLOCAZIONE TEAM — preventivo modulare ===== */

/* Toggle button per espandere/collassare */
.alloc-toggle-btn {
  background: none;
  border: none;
  color: #38bdf8;
  font-size: .75rem;
  cursor: pointer;
  padding: .2rem .4rem;
  border-radius: 4px;
  display: flex;
  align-items: center;
  gap: .3rem;
  transition: background .15s, color .15s;
  letter-spacing: .03em;
  white-space: nowrap;
}
.alloc-toggle-btn:hover { background: rgba(56,189,248,.1); color: #7dd3fc; }
.alloc-toggle-btn .alloc-arrow { display: inline-block; transition: transform .2s; font-style: normal; }
.alloc-toggle-btn.open .alloc-arrow { transform: rotate(90deg); }

/* Sezione collassabile allocazione */
.alloc-section {
  display: none;
  flex-direction: column;
  gap: .4rem;
  background: rgba(0,0,0,.25);
  border-left: 2px solid #38bdf8;
  border-radius: 0 6px 6px 0;
  padding: .55rem .7rem .6rem .8rem;
  margin-top: .2rem;
}
.alloc-section.open { display: flex; }

/* Righe risorsa */
.alloc-row {
  display: flex;
  align-items: center;
  gap: .4rem;
  flex-wrap: wrap;
}

/* Input compatti: select risorsa */
.alloc-select {
  background: #071320;
  border: 1px solid #1e2d3d;
  color: #e2e8f0;
  padding: .22rem .4rem;
  border-radius: 5px;
  font-size: .78rem;
  min-width: 150px;
  flex: 1 1 auto;
}
.alloc-select:focus { outline: none; border-color: #38bdf8; }

/* Input quantità */
.alloc-qty {
  background: #071320;
  border: 1px solid #1e2d3d;
  color: #e2e8f0;
  padding: .22rem .4rem;
  border-radius: 5px;
  font-size: .78rem;
  width: 60px;
  text-align: right;
}
.alloc-qty:focus { outline: none; border-color: #38bdf8; }

/* Select unità ore/giorni */
.alloc-unit {
  background: #071320;
  border: 1px solid #1e2d3d;
  color: #e2e8f0;
  padding: .22rem .35rem;
  border-radius: 5px;
  font-size: .78rem;
  width: 70px;
}
.alloc-unit:focus { outline: none; border-color: #38bdf8; }

/* Costo calcolato per riga */
.alloc-costo-row {
  color: #38bdf8;
  font-size: .75rem;
  min-width: 75px;
  white-space: nowrap;
}

/* Pulsante rimuovi riga */
.alloc-row-del {
  background: none; border: none;
  color: #475569; font-size: .8rem;
  cursor: pointer; padding: .2rem .3rem;
  border-radius: 4px;
  transition: color .15s;
  flex-shrink: 0;
}
.alloc-row-del:hover { color: #ef4444; }

/* Pulsante aggiungi risorsa */
.alloc-add-btn {
  background: none;
  border: 1px dashed #2d4a6a;
  color: #64748b;
  padding: .25rem .6rem;
  border-radius: 5px;
  font-size: .75rem;
  cursor: pointer;
  align-self: flex-start;
  transition: border-color .15s, color .15s;
}
.alloc-add-btn:hover { border-color: #38bdf8; color: #38bdf8; }

/* Riepilogo costo/suggerito */
.alloc-summary {
  display: flex;
  align-items: center;
  gap: .75rem;
  flex-wrap: wrap;
  padding: .45rem .6rem;
  background: rgba(255,255,255,.03);
  border-radius: 6px;
  font-size: .78rem;
  color: #94a3b8;
}
.alloc-summary strong { font-weight: 700; }

/* Pulsante "Usa suggerito" */
.alloc-apply-btn {
  background: rgba(56,189,248,.15);
  border: 1px solid rgba(56,189,248,.4);
  color: #38bdf8;
  padding: .2rem .5rem;
  border-radius: 5px;
  font-size: .72rem;
  cursor: pointer;
  margin-left: auto;
  transition: background .15s, border-color .15s;
  white-space: nowrap;
}
.alloc-apply-btn:hover { background: rgba(56,189,248,.25); border-color: #38bdf8; }

/* Riepilogo interno (costo azienda totale + margine) nel pannello di riepilogo */
.prev-riep-internal {
  border-top: 1px solid #1e2d3d;
  padding-top: .6rem;
  display: flex;
  flex-direction: column;
  gap: .4rem;
}
.prev-riep-internal-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  font-size: .8rem;
  color: #64748b;
}
.prev-riep-internal-row span:first-child { flex-shrink: 0; }
.prev-riep-internal-row strong { color: #94a3b8; font-weight: 600; }
.prev-riep-internal .margin-val { color: #22c55e; font-weight: 700; }
.prev-riep-internal .margin-neg { color: #ef4444; }

/* ===== UPLOAD PROGRESS BAR ===== */
#uploadProgressWrap {
  display: none;
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 9999;
  background: rgba(10,14,20,.95);
  border: 1px solid rgba(56,189,248,.3);
  border-radius: 12px;
  padding: 12px 20px;
  min-width: 300px;
  max-width: 480px;
  backdrop-filter: blur(12px);
  box-shadow: 0 8px 32px rgba(0,0,0,.5);
}
#uploadProgressLabel {
  font-size: 13px;
  color: rgba(255,255,255,.85);
  margin-bottom: 8px;
  font-family: Inter, sans-serif;
}
#uploadProgressTrack {
  background: rgba(255,255,255,.1);
  border-radius: 6px;
  height: 6px;
  overflow: hidden;
}
#uploadProgressBar {
  height: 100%;
  background: linear-gradient(90deg, #38bdf8, #0ea5e9);
  border-radius: 6px;
  width: 0%;
  transition: width .3s ease;
}

/* ============================================================
   COSTI PROGETTO — card list + allocazioni
   ============================================================ */

/* header tab */
.cp-head {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin-bottom: 1.5rem;
  flex-wrap: wrap;
}
.cp-search {
  flex: 1 1 200px;
  max-width: 320px;
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 8px;
  color: #e2e8f0;
  padding: .45rem .9rem;
  font-family: inherit;
  font-size: .88rem;
  outline: none;
  transition: border-color .2s;
}
.cp-search:focus { border-color: #38bdf8; }
.cp-search::placeholder { color: #475569; }

/* card list */
#cpProgettiList { display: flex; flex-direction: column; gap: .85rem; }

/* singola card progetto */
.cp-card {
  background: rgba(255,255,255,.028);
  border: 1px solid rgba(255,255,255,.07);
  border-left: 3px solid #334155;
  border-radius: 14px;
  overflow: hidden;
  transition: border-color .25s, box-shadow .25s;
}
.cp-card:hover { box-shadow: 0 4px 20px rgba(0,0,0,.3); }
.cp-card.sem-verde { border-left-color: #4ade80; }
.cp-card.sem-giallo { border-left-color: #fbbf24; }
.cp-card.sem-rosso  { border-left-color: #f87171; }

/* riga collassata */
.cp-card-row {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  padding: 1rem 1.25rem;
  flex-wrap: wrap;
}
.cp-card-left {
  display: flex;
  align-items: center;
  gap: .75rem;
  flex: 1 1 200px;
  min-width: 0;
}
.cp-card-nome {
  font-size: 1.1rem;
  font-weight: 700;
  color: #f0f8ff;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.cp-durata-badge {
  background: rgba(56,189,248,.1);
  color: #38bdf8;
  border: 1px solid rgba(56,189,248,.25);
  padding: .15rem .6rem;
  border-radius: 999px;
  font-size: .73rem;
  font-weight: 600;
  white-space: nowrap;
  flex-shrink: 0;
}

/* numeri chiave nella riga */
.cp-card-nums {
  display: flex;
  align-items: center;
  gap: 2rem;
  flex-shrink: 0;
}
.cp-num-block { display: flex; flex-direction: column; align-items: flex-end; gap: .1rem; }
.cp-num-label { font-size: .7rem; text-transform: uppercase; letter-spacing: .05em; color: #475569; font-weight: 600; }
.cp-num-val { font-size: .95rem; font-weight: 700; color: #cbd5e1; font-variant-numeric: tabular-nums; }
.cp-margine-pct { font-size: .78rem; font-weight: 500; }

/* budget inline editable */
.cp-budget-inline {
  font-size: .95rem;
  font-weight: 700;
  color: #cbd5e1;
  cursor: pointer;
  padding: .1rem .3rem;
  border-radius: 4px;
  border: 1px solid transparent;
  transition: border-color .15s, background .15s;
  font-variant-numeric: tabular-nums;
}
.cp-budget-inline:hover { border-color: rgba(56,189,248,.4); background: rgba(56,189,248,.07); color: #38bdf8; }
.cp-budget-input {
  font-size: .88rem;
  font-weight: 600;
  color: #e2e8f0;
  background: rgba(56,189,248,.08);
  border: 1px solid rgba(56,189,248,.4);
  border-radius: 6px;
  padding: .2rem .5rem;
  width: 110px;
  font-family: inherit;
  outline: none;
  font-variant-numeric: tabular-nums;
}

/* azioni card */
.cp-card-actions {
  display: flex;
  align-items: center;
  gap: .5rem;
  flex-shrink: 0;
}
.cp-btn-expand {
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.1);
  color: #94a3b8;
  border-radius: 7px;
  padding: .35rem .9rem;
  font-size: .82rem;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  transition: background .15s, color .15s;
  white-space: nowrap;
}
.cp-btn-expand:hover, .cp-btn-expand.open { background: rgba(56,189,248,.12); border-color: rgba(56,189,248,.3); color: #38bdf8; }
.cp-btn-del {
  background: none;
  border: none;
  color: #475569;
  font-size: 1rem;
  cursor: pointer;
  padding: .3rem .45rem;
  border-radius: 6px;
  transition: color .15s, background .15s;
}
.cp-btn-del:hover { color: #f87171; background: rgba(248,113,113,.1); }

/* dettaglio espanso */
.cp-card-detail {
  border-top: 1px solid rgba(255,255,255,.06);
  background: rgba(0,0,0,.12);
}
.cp-card-detail.hidden { display: none; }
.cp-detail-inner { padding: 1.25rem 1.5rem 1.5rem; }

/* tabella allocazioni */
.cp-alloc-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .83rem;
  margin-bottom: 1rem;
}
.cp-alloc-table th {
  text-align: left;
  color: #475569;
  font-size: .73rem;
  text-transform: uppercase;
  letter-spacing: .05em;
  padding: .4rem .6rem;
  border-bottom: 1px solid rgba(255,255,255,.06);
  font-weight: 600;
}
.cp-alloc-table td {
  padding: .45rem .6rem;
  border-bottom: 1px solid rgba(255,255,255,.035);
  color: #cbd5e1;
  vertical-align: middle;
}
.cp-alloc-table tbody tr:nth-child(even) td { background: rgba(255,255,255,.015); }
.cp-alloc-table tbody tr:hover td { background: rgba(56,189,248,.04); }

.cp-alloc-res {
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 6px;
  color: #e2e8f0;
  padding: .3rem .5rem;
  font-family: inherit;
  font-size: .82rem;
  width: 100%;
  cursor: pointer;
  min-width: 160px;
}
.cp-alloc-res:focus { outline: none; border-color: #38bdf8; }
.cp-alloc-res option { background: #07131f; }

.cp-alloc-qty {
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 6px;
  color: #e2e8f0;
  padding: .3rem .45rem;
  font-family: inherit;
  font-size: .83rem;
  width: 72px;
  text-align: right;
}
.cp-alloc-qty:focus { outline: none; border-color: #38bdf8; }

.cp-alloc-unit {
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 6px;
  color: #e2e8f0;
  padding: .3rem .4rem;
  font-family: inherit;
  font-size: .82rem;
  cursor: pointer;
}
.cp-alloc-unit:focus { outline: none; border-color: #38bdf8; }
.cp-alloc-unit option { background: #07131f; }

.cp-alloc-costo { font-weight: 600; color: #38bdf8; text-align: right; font-variant-numeric: tabular-nums; }
.cp-alloc-ruolo { color: #64748b; font-size: .78rem; }

.cp-alloc-del {
  background: none;
  border: none;
  color: #475569;
  font-size: .85rem;
  cursor: pointer;
  padding: .25rem .4rem;
  border-radius: 4px;
  transition: color .15s;
}
.cp-alloc-del:hover { color: #f87171; }

/* bottone aggiungi risorsa */
.cp-btn-add-risorsa {
  background: rgba(56,189,248,.08);
  border: 1px dashed rgba(56,189,248,.3);
  color: #38bdf8;
  border-radius: 7px;
  padding: .4rem 1rem;
  font-size: .82rem;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  transition: background .15s;
  margin-bottom: 1.25rem;
}
.cp-btn-add-risorsa:hover { background: rgba(56,189,248,.15); }

/* totali */
.cp-totali {
  background: rgba(255,255,255,.025);
  border: 1px solid rgba(255,255,255,.06);
  border-radius: 10px;
  padding: 1rem 1.25rem;
  display: flex;
  flex-direction: column;
  gap: .55rem;
}
.cp-totale-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: .88rem;
  color: #94a3b8;
}
.cp-totale-row strong { font-size: 1.05rem; font-variant-numeric: tabular-nums; }
.cp-tot-costo { color: #38bdf8; }
.cp-margine-val { font-variant-numeric: tabular-nums; }

/* note */
.cp-note-text {
  margin-top: .75rem;
  padding: .65rem .9rem;
  background: rgba(255,255,255,.02);
  border-left: 2px solid rgba(255,255,255,.08);
  border-radius: 4px;
  font-size: .82rem;
  color: #64748b;
  line-height: 1.5;
}

/* ---- MODALE NUOVO PROGETTO ---- */
.cp-modal {
  position: fixed; inset: 0; z-index: 1200;
  display: flex; align-items: center; justify-content: center;
}
.cp-modal.hidden { display: none; }
.cp-modal-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.6);
  backdrop-filter: blur(6px);
  cursor: pointer;
}
.cp-modal-panel {
  position: relative; z-index: 1;
  width: min(480px, 96vw);
  background: #08141f;
  border: 1px solid rgba(56,189,248,.18);
  border-radius: 18px;
  padding: 1.75rem;
  box-shadow: 0 32px 80px rgba(0,0,0,.7);
  transform: scale(.96) translateY(16px);
  opacity: 0;
  transition: transform .25s cubic-bezier(.4,0,.2,1), opacity .25s;
}
.cp-modal-panel.open { transform: scale(1) translateY(0); opacity: 1; }
.cp-modal-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 1.5rem;
}
.cp-modal-head h2 { font-size: 1.2rem; font-weight: 700; color: #f0f8ff; margin: 0; }
.cp-modal-close {
  background: none; border: none; color: #64748b; font-size: 1.2rem;
  cursor: pointer; padding: .25rem .4rem; border-radius: 6px;
  transition: color .15s;
}
.cp-modal-close:hover { color: #e2e8f0; }
.cp-modal-body { display: flex; flex-direction: column; gap: .1rem; }
.cp-form-row { display: flex; flex-direction: column; gap: .4rem; margin-bottom: .9rem; }
.cp-form-row label { font-size: .83rem; color: #94a3b8; font-weight: 500; }
.cp-req { color: #f87171; }
.cp-input {
  background: rgba(255,255,255,.05);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 8px;
  color: #e2e8f0;
  padding: .55rem .8rem;
  font-family: inherit;
  font-size: .9rem;
  transition: border-color .2s;
  width: 100%;
  box-sizing: border-box;
}
.cp-input:focus { outline: none; border-color: #38bdf8; }
.cp-input option { background: #07131f; }
.cp-textarea { resize: vertical; min-height: 80px; line-height: 1.5; }
.cp-modal-foot { display: flex; align-items: center; gap: 1rem; padding-top: .5rem; }

/* responsivo */
@media (max-width: 680px) {
  .cp-card-nums { gap: 1rem; }
  .cp-card-row { gap: .75rem; }
  .cp-num-block { align-items: flex-start; }
  .cp-alloc-table { font-size: .78rem; }
  .cp-alloc-res { min-width: 120px; }
}

/* ===== EFFORT % MENSILE ===== */
.cp-effort-perc {
  font-size: 12px; font-weight: 700;
  letter-spacing: .02em;
}
.cp-effort-na { color: rgba(255,255,255,.25); font-size: 12px; }
.cp-alloc-effort { text-align: center; min-width: 70px; }

/* ===== % EFFORT INPUT ===== */
.cp-alloc-perc-cell { min-width: 90px; }
.cp-perc-wrap { display:flex; align-items:center; gap:4px; }
.cp-alloc-perc {
  width: 60px; background: rgba(255,255,255,.07);
  border: 1px solid rgba(255,255,255,.12); border-radius:6px;
  color:#fff; font-size:13px; padding:4px 8px; text-align:right;
}
.cp-alloc-perc:focus { outline:none; border-color:#38bdf8; }
.cp-perc-sym { color:rgba(255,255,255,.4); font-size:13px; }
.cp-calc-detail { font-size:11px; color:rgba(255,255,255,.45); white-space:nowrap; }
.cp-alloc-detail { min-width:130px; }

/* ===== NOTE CAMPO PROGETTO ===== */
.cp-note-row {
  margin-top: 16px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.cp-note-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: rgba(255,255,255,.35);
}
.cp-note-area {
  width: 100%;
  min-height: 72px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.09);
  border-radius: 10px;
  color: rgba(255,255,255,.8);
  font-size: 13px;
  font-family: Inter, sans-serif;
  line-height: 1.55;
  padding: 10px 14px;
  resize: vertical;
  transition: border-color .2s;
  box-sizing: border-box;
}
.cp-note-area:focus {
  outline: none;
  border-color: rgba(56,189,248,.4);
  background: rgba(255,255,255,.06);
}
.cp-note-area::placeholder { color: rgba(255,255,255,.2); }

/* ===== AI TOOLS SECTION ===== */
.btn-refresh-ai {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(56,189,248,.08);
  border: 1px solid rgba(56,189,248,.2);
  color: #38bdf8;
  padding: 8px 16px;
  border-radius: 8px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: .2s;
  white-space: nowrap;
}
.btn-refresh-ai:hover { background: rgba(56,189,248,.15); border-color: rgba(56,189,248,.4); }
.btn-refresh-ai:disabled { opacity: .5; cursor: not-allowed; }
.ai-tools-col { border-color: rgba(56,189,248,.15) !important; }
.ai-tool-item { align-items: flex-start; }
.ai-tool-bullet { font-size: 14px; flex-shrink: 0; margin-top: 2px; }
.ai-tool-snippet { font-size: 12px; color: rgba(255,255,255,.45); line-height: 1.5; margin-top: 4px; }

/* ===== TIMESHEET ===== */
.ts-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0 6px}
.ts-subtabs{display:flex;gap:6px;flex-wrap:wrap}
.ts-subtab{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.1);color:#94a3b8;border-radius:999px;padding:.4rem .9rem;font:inherit;font-size:.85rem;cursor:pointer}
.ts-subtab.active{background:rgba(56,189,248,.15);border-color:#38bdf8;color:#38bdf8}
.ts-month{color:#94a3b8;font-size:.85rem;display:flex;gap:8px;align-items:center}
.ts-month input{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);border-radius:8px;color:#e2e8f0;padding:.35rem .6rem;font:inherit;color-scheme:dark}
.ts-claim{color:#64748b;font-size:.8rem;margin:2px 0 14px}
.ts-card{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:14px;padding:16px 18px;margin-bottom:16px}
.ts-card h3{margin:0 0 12px;font-size:.95rem;color:#e2e8f0;font-weight:600}
.ts-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}
.ts-grid label{display:flex;flex-direction:column;gap:5px;color:#94a3b8;font-size:.78rem}
.ts-grid label small{color:#64748b}
.ts-grid .ts-wide{grid-column:1/-1}
.ts-check{flex-direction:row!important;align-items:center;gap:8px!important;font-size:.85rem!important;color:#cbd5e1!important}
.ts-quick{display:flex;gap:6px;align-items:flex-end;flex-wrap:wrap}
.ts-chip{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);color:#cbd5e1;border-radius:8px;padding:.45rem .6rem;font:inherit;font-size:.8rem;cursor:pointer}
.ts-chip:hover{border-color:#38bdf8;color:#38bdf8}
.ts-actions{display:flex;gap:10px;align-items:center;margin-top:14px;flex-wrap:wrap}
.ts-btn-ghost{background:none;border:1px solid rgba(255,255,255,.15);color:#cbd5e1;border-radius:8px;padding:.45rem .9rem;font:inherit;font-size:.85rem;cursor:pointer}
.ts-btn-ghost:hover{border-color:#38bdf8;color:#38bdf8}
.ts-link{background:none;border:none;color:#38bdf8;cursor:pointer;font:inherit;font-size:.8rem;padding:0}
.ts-status{font-size:.82rem}.ts-ok{color:#4ade80}.ts-err{color:#fbbf24}
.ts-listhead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.ts-listhead h3{margin:0}.ts-listhead span{color:#94a3b8;font-size:.82rem}
.ts-day{border-top:1px solid rgba(255,255,255,.06);padding:10px 0}
.ts-dayhead{display:flex;justify-content:space-between;color:#cbd5e1;font-size:.85rem;margin-bottom:6px;text-transform:capitalize}
.ts-row{display:grid;grid-template-columns:64px 1fr auto auto;gap:10px;align-items:center;padding:6px 0;font-size:.84rem;color:#cbd5e1}
.ts-row small{color:#64748b}.ts-h{color:#38bdf8;font-weight:600}
.ts-tags{display:flex;gap:4px;flex-wrap:wrap}
.ts-tag{font-style:normal;font-size:.7rem;padding:2px 7px;border-radius:999px;background:rgba(255,255,255,.06);color:#94a3b8}
.ts-tag-b{background:rgba(74,222,128,.12);color:#4ade80}.ts-tag-o{background:rgba(251,191,36,.12);color:#fbbf24}.ts-tag-v{background:rgba(56,189,248,.12);color:#38bdf8}
.ts-ops button{background:none;border:none;color:#64748b;cursor:pointer;font-size:.9rem;padding:2px 5px}.ts-ops button:hover{color:#e2e8f0}
.ts-kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px;margin-bottom:16px}
.ts-kpi{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:4px}
.ts-kpi small{color:#64748b;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em}
.ts-kpi b{font-size:1.25rem;color:#e2e8f0}.ts-kpi em{font-style:normal;color:#64748b;font-size:.72rem}
.ts-v{color:#4ade80!important}.ts-g{color:#fbbf24!important}.ts-r{color:#f87171!important}
.ts-alert{font-size:.84rem;padding:4px 0}.ts-al-rosso{color:#f87171}.ts-al-giallo{color:#fbbf24}
.ts-note{color:#94a3b8;font-size:.8rem;margin:-6px 0 14px}
.ts-help{color:#64748b;font-size:.76rem;margin:10px 0 0;line-height:1.5}
.ts-bar{position:relative;width:110px;height:16px;background:rgba(255,255,255,.06);border-radius:8px;overflow:hidden}
.ts-bar-fill{height:100%}.ts-bar span{position:absolute;inset:0;font-size:.7rem;display:flex;align-items:center;justify-content:center;color:#e2e8f0}
.ts-bg-v{background:rgba(74,222,128,.45)}.ts-bg-g{background:rgba(251,191,36,.5)}.ts-bg-r{background:rgba(248,113,113,.55)}
.ts-two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.ts-arch td{opacity:.45}
@media (max-width:760px){.ts-two{grid-template-columns:1fr}.ts-row{grid-template-columns:52px 1fr;}.ts-tags,.ts-ops{grid-column:2}}
.team-user{color:#94a3b8;font-size:.8rem;margin-right:10px;white-space:nowrap}
.team-user a{color:#38bdf8;text-decoration:none}
.beta-tag{font-size:.55em;letter-spacing:.08em;text-transform:uppercase;color:#38bdf8;border:1px solid rgba(56,189,248,.5);border-radius:999px;padding:1px 7px;margin-left:6px;vertical-align:middle;font-weight:600}
/* Standby: schede più piccole e attenuate */
.group-standby .cl-group-compact-body{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px}
.group-standby .ccc{opacity:.7;transform:scale(.96);transform-origin:top left}
.group-standby .ccc:hover{opacity:1}
.group-standby .ccc-act-row,.group-standby .ccc-dl{display:none}
.cc-phase-standby{background:rgba(148,163,184,.15);color:#94a3b8;border:1px solid rgba(148,163,184,.35)}

/* ===== PRESENZE ===== */
.pr-top{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin:14px 0 8px}
.pr-nav{display:flex;gap:8px;align-items:center;color:#e2e8f0}
.pr-legend{display:flex;gap:6px;flex-wrap:wrap}
.pr-pill{display:inline-block;font-size:.72rem;padding:2px 8px;border-radius:999px;white-space:nowrap}
.pr-uff{background:rgba(56,189,248,.14);color:#38bdf8}.pr-smart{background:rgba(167,139,250,.16);color:#a78bfa}
.pr-ferie{background:rgba(74,222,128,.14);color:#4ade80}.pr-mal{background:rgba(248,113,113,.16);color:#f87171}
.pr-perm{background:rgba(251,191,36,.14);color:#fbbf24}.pr-none{color:#475569}
.pr-table td,.pr-table th{text-align:center}.pr-table td:first-child,.pr-table th:first-child{text-align:left}
.pr-table small{color:#64748b;font-weight:400}
.pr-sel{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);border-radius:8px;color:#cbd5e1;padding:.3rem .4rem;font:inherit;font-size:.78rem;cursor:pointer}
.pr-sel option{background:#07131f;color:#e2e8f0}
.pr-today{background:rgba(56,189,248,.05)}.pr-me td{background:rgba(56,189,248,.04)}
/* mini schema home */
.home-presenze{flex:0 1 auto;min-width:220px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:12px;padding:8px 10px;margin:0 12px}
.home-presenze:empty{display:none}
.hp-head{display:flex;justify-content:space-between;font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin-bottom:5px}
.hp-head a{color:#38bdf8;text-decoration:none;text-transform:none;letter-spacing:0}
.hp-grid{display:grid;gap:2px 3px;align-items:center}
.hp-day{font-size:.62rem;color:#64748b;text-align:center}.hp-day.hp-today{color:#38bdf8;font-weight:600}
.hp-name{font-size:.62rem;color:#94a3b8;padding-right:4px}
.hp-cell{font-size:.62rem;text-align:center;border-radius:4px;line-height:15px;min-width:16px}
.hp-cell.pr-none{background:rgba(255,255,255,.03)}.hp-cell.hp-today{outline:1px solid rgba(56,189,248,.35)}
/* ===== BUDGET DI PRODUZIONE ===== */
.bp-card{margin-top:14px}
.bp-proj{border-top:1px solid rgba(255,255,255,.06)}
.bp-head{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr 120px 1.3fr;gap:10px;align-items:center;padding:12px 4px;cursor:pointer;font-size:.84rem;color:#cbd5e1}
.bp-head b{color:#e2e8f0}.bp-head:hover{background:rgba(255,255,255,.02)}
.bp-detail{padding:4px 4px 16px}
.bp-tot td{font-weight:700;color:#e2e8f0!important;border-top:1px solid rgba(255,255,255,.12)}
.bp-sel td{background:rgba(56,189,248,.05)}
.bp-spese{padding:8px 4px 4px;white-space:normal}
.bp-edit{display:flex;gap:10px;align-items:flex-end;margin-bottom:10px;flex-wrap:wrap}
.bp-edit label{display:flex;flex-direction:column;gap:4px;font-size:.75rem;color:#94a3b8;width:160px}
.bp-sp td{white-space:normal}.bp-grp td{color:#38bdf8;font-weight:600;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;padding-top:12px}
.bp-add input{padding:.35rem .5rem;font-size:.8rem}
@media (max-width:860px){.bp-head{grid-template-columns:1fr 1fr}.home-presenze{margin:10px 0;width:100%}}
.pr-prod{background:rgba(244,114,182,.15);color:#f472b6}.pr-tras{background:rgba(45,212,191,.14);color:#2dd4bf}
.bp-head small{color:#64748b;font-weight:400}
.bp-newform{background:rgba(56,189,248,.04);border:1px solid rgba(56,189,248,.2);border-radius:12px;padding:12px;margin-bottom:12px}
.bp-edit label{width:150px}
/* ===== CLIENTI ===== */
.cl-bar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:6px 0 12px}
.cl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.cl-card{all:unset;box-sizing:border-box;cursor:pointer;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:10px;transition:border-color .2s,background .2s}
.cl-card:hover{border-color:#38bdf8;background:rgba(56,189,248,.05)}
.cl-card-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.cl-card-h b{color:#e2e8f0;font-size:.95rem}.cl-card-h span{color:#64748b;font-size:.75rem;white-space:nowrap}
.cl-card-n{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.cl-card-n span{display:flex;flex-direction:column;color:#64748b;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}.cl-card-n b{color:#e2e8f0;font-size:.92rem;text-transform:none;letter-spacing:0}
.cl-card-f{display:flex;justify-content:space-between;align-items:center;gap:8px}.cl-card-f small{color:#64748b;font-size:.72rem}
.cl-muted{color:#64748b;font-size:.8rem}
.cl-title{color:#e2e8f0;margin:12px 0 10px;font-size:1.35rem}
.cl-split{display:flex;height:22px;border-radius:8px;overflow:hidden;margin:-4px 0 18px;gap:2px}
.cl-sp{display:flex;align-items:center;justify-content:center;font-size:.66rem;color:#04101c;font-weight:600;white-space:nowrap;overflow:hidden;padding:0 4px}
.cl-sp0{background:#38bdf8}.cl-sp1{background:#a78bfa}.cl-sp2{background:#4ade80}.cl-sp3{background:#fbbf24}.cl-sp4{background:#f472b6}.cl-sp5{background:#2dd4bf}
.att-list{display:flex;flex-direction:column;gap:8px}
.att{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:12px}
.att.open{border-color:rgba(56,189,248,.4)}
.att-h{all:unset;box-sizing:border-box;cursor:pointer;width:100%;display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:10px;align-items:center;padding:12px 14px}
.att-h>span{display:flex;flex-direction:column;color:#64748b;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}
.att-h>span b{color:#e2e8f0;font-size:.9rem;text-transform:none;letter-spacing:0}.att-h small{color:#64748b;font-size:.7rem;text-transform:none;letter-spacing:0}
.att-name{font-size:.9rem!important;text-transform:none!important;letter-spacing:0!important}
.att-body{padding:0 14px 14px}
.att-cols{display:grid;grid-template-columns:1.3fr 1fr;gap:16px}
.att-col h4{margin:4px 0 10px;color:#cbd5e1;font-size:.85rem;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.att-add{display:grid;grid-template-columns:2fr 1.3fr .8fr auto;gap:6px;margin-bottom:10px}.att-add input{padding:.4rem .55rem;font-size:.82rem}
.att-costs{max-height:340px;overflow:auto}
.att-grp{color:#38bdf8;font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;margin:10px 0 4px}
.att-cost{display:grid;grid-template-columns:1fr auto 22px;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.04);font-size:.82rem;color:#cbd5e1}
.att-cost small{display:block;color:#64748b;font-size:.72rem}
.att-tk{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.att-tk span{display:flex;flex-direction:column;color:#64748b;font-size:.68rem;text-transform:uppercase}.att-tk b{color:#e2e8f0;font-size:.95rem;text-transform:none}.att-tk small{text-transform:none;font-size:.7rem}
.att-people div{display:grid;grid-template-columns:1fr auto auto;gap:12px;font-size:.82rem;color:#cbd5e1;padding:4px 0;border-bottom:1px solid rgba(255,255,255,.04)}
.att-edit{margin-top:12px}.att-edit summary{color:#64748b;font-size:.8rem;cursor:pointer}
@media (max-width:860px){.att-h{grid-template-columns:1fr 1fr}.att-cols{grid-template-columns:1fr}.att-add{grid-template-columns:1fr 1fr}}
/* Pianifica effort */
.ts-chip.on{border-color:#38bdf8;color:#38bdf8;background:rgba(56,189,248,.12)}
.pl-step{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:14px}.pl-step>span{color:#94a3b8;font-size:.78rem;width:95px}
.pl-in{width:90px!important;padding:.4rem .5rem}
.pl-pending{border-color:rgba(251,191,36,.35)}
.pl-conf{display:flex;justify-content:space-between;gap:12px;align-items:center;flex-wrap:wrap;padding:10px 0;border-top:1px solid rgba(255,255,255,.06);color:#cbd5e1;font-size:.84rem}
.pl-conf small{color:#64748b}.pl-btns{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.pl-table td,.pl-table th{text-align:center;padding:.45rem .4rem}.pl-table td:first-child,.pl-table th:first-child{text-align:left}
.pl-ok{color:#4ade80!important}.pl-more{color:#f87171!important}.pl-less{color:#38bdf8!important}.pl-due{color:#fbbf24!important;font-weight:600}
/* Presenze 2 settimane */
.pr-two{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07);border-radius:14px;padding:12px 14px;margin:14px 0 6px;overflow-x:auto}
.pr-two-h{display:grid;grid-template-columns:150px 1fr 10px 1fr;color:#94a3b8;font-size:.78rem;margin-bottom:6px}.pr-two-h b:first-child{grid-column:2}.pr-two-h b:last-child{grid-column:4}
.pr-two-grid{display:grid;gap:3px;align-items:center;min-width:820px}
.pr-two-n{font-size:.78rem;color:#cbd5e1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pr-two .hp-cell{font-size:.66rem;line-height:20px;padding:0 3px;white-space:nowrap;overflow:hidden}
.cl-team{margin:4px 0 16px}
.ci-gest-link{display:inline-block;margin-left:10px;font-size:.78rem;color:#38bdf8;text-decoration:none;border:1px solid rgba(56,189,248,.4);border-radius:999px;padding:2px 10px}
.att-ci{background:rgba(56,189,248,.06);border:1px solid rgba(56,189,248,.2);border-radius:10px;padding:8px 10px;font-size:.8rem;color:#cbd5e1;margin-bottom:12px}
.cl-del{color:#f87171!important;border-color:rgba(248,113,113,.4)!important}
.cl-trash{margin:4px 0 14px}.cl-trash summary{cursor:pointer;color:#94a3b8;font-size:.84rem}
.cl-trash-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 0;border-top:1px solid rgba(255,255,255,.06);color:#cbd5e1;font-size:.84rem}
.cl-trash-row small{display:block;color:#64748b;font-size:.74rem}
.ccc-sub{margin:2px 0 0;font-size:.74rem;color:#94a3b8;font-weight:400;line-height:1.3}
.cc-phase-concluded{background:rgba(74,222,128,.1);color:#86efac;border:1px solid rgba(74,222,128,.3)}
.group-concluded .ccc{opacity:.55}
.cc-row-wide{grid-column:1/-1}
.ci-budget-recap{margin-top:12px;padding:12px;border:1px solid rgba(56,189,248,.2);border-radius:12px;background:rgba(56,189,248,.04)}
.ci-br-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;margin:8px 0}
.ci-br-grid span{display:flex;flex-direction:column;color:#64748b;font-size:.68rem;text-transform:uppercase;letter-spacing:.04em}.ci-br-grid b{color:#e2e8f0;font-size:.95rem;text-transform:none}.ci-br-grid small{text-transform:none;font-size:.7rem}
.ci-analisi{margin:16px 0;padding:12px 14px;border-radius:12px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07)}
.ci-analisi-txt{color:#cbd5e1;font-size:.86rem;line-height:1.55;margin:8px 0}
.ci-sugg{margin-top:8px}.ci-sugg-lbl{font-size:.75rem;color:#fbbf24;font-weight:600}.ci-sugg ul{margin:6px 0 0 18px;padding:0;color:#cbd5e1;font-size:.84rem;line-height:1.5}
.ci-gest-acts{margin:16px 0}.ci-ga-list{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.ci-ga{display:grid;grid-template-columns:1fr;gap:2px;padding:9px 12px;border-radius:10px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.06);font-size:.84rem;color:#e2e8f0}
.ci-ga span{color:#94a3b8;font-size:.78rem}.ci-ga i{font-style:normal}.ci-ga small{color:#38bdf8;font-size:.74rem}
.csb-tag{font-size:.62rem;color:#fbbf24;border:1px solid rgba(251,191,36,.4);border-radius:999px;padding:0 5px;margin-left:4px;font-weight:400}
/* titolo brand + progetto impilati, senza sovrapposizioni */
.ccc-title{display:flex;flex-direction:column;gap:3px;flex:1 1 auto;min-width:0}
.ccc-title .ccc-name,.ccc-title .ci-detail-name{margin:0;line-height:1.2;overflow-wrap:anywhere}
.ccc-title .ccc-sub{margin:0;display:block;line-height:1.35;white-space:normal;overflow-wrap:anywhere}
.ccc-top{align-items:flex-start}.ccc-top .ccc-phase{flex:0 0 auto;margin-top:2px}
.ci-detail-name-row{align-items:flex-start}
.ci-ga-h{display:flex;justify-content:space-between;gap:10px;align-items:baseline;flex-wrap:wrap}.ci-ga-h small{color:#64748b;font-size:.72rem}
.ci-ga-desc{margin:4px 0 0;color:#cbd5e1;font-size:.82rem;line-height:1.5}
.ci-ga-evo{margin-top:6px;padding-left:10px;border-left:2px solid rgba(56,189,248,.35)}
.ci-ga-evo>span{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:#38bdf8}
.ci-ga-evo p{margin:3px 0;color:#cbd5e1;font-size:.8rem;line-height:1.45}.ci-ga-evo small{color:#94a3b8}

/* ===== SCHEDA CLIENTE v3 — leggibile e immediata ===== */
.cd{display:flex;flex-direction:column;gap:18px;font-size:15px;color:#e2e8f0}
.cd h3{margin:0 0 10px;font-size:.8rem;text-transform:uppercase;letter-spacing:.07em;color:#94a3b8;font-weight:600}
.cd h3 small{color:#64748b;font-weight:400;margin-left:6px}
.cd-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.cd-head .ci-detail-name{font-size:clamp(24px,4vw,32px)}
.cd-sub{font-size:1rem!important;color:#cbd5e1!important;margin-top:4px!important}
.cd-badges{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.cd-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.cd-tile{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:3px;min-width:0}
.cd-tile span{font-size:.72rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}
.cd-tile b{font-size:1.05rem;color:#f1f5f9;line-height:1.25;overflow-wrap:anywhere}
.cd-tile small{font-size:.8rem;color:#94a3b8;line-height:1.3}
.cd-tile.dl-soon b{color:#fbbf24}.cd-tile.dl-overdue b{color:#f87171}
.cd-box{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:14px 16px}
.cd-todo{border-color:rgba(251,191,36,.35);background:rgba(251,191,36,.05)}
.cd-todo ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.cd-todo li{position:relative;padding-left:22px;font-size:.95rem;line-height:1.45;color:#f1f5f9}
.cd-todo li.cd-todo-act::before{content:'';position:absolute;left:2px;top:5px;width:12px;height:12px;border:2px solid #fbbf24;border-radius:4px}
.cd-todo li.cd-todo-tip{padding-left:0;color:#cbd5e1}
.cd-lead{margin:0;font-size:1rem;line-height:1.55;color:#e2e8f0}
.cd-more{margin-top:8px}.cd-more summary,.cd-ref summary{cursor:pointer;color:#38bdf8;font-size:.85rem}
.cd-more p{margin:8px 0 0;font-size:.92rem;line-height:1.55;color:#cbd5e1}
.cd-budget-h{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}.cd-budget-h h3{margin:0}
.ci-budget-recap{padding:14px 16px}
.cd-sec{display:flex;flex-direction:column;gap:8px}
.cd-act{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:12px;overflow:hidden}
.cd-act[open]{border-color:rgba(56,189,248,.35)}
.cd-act summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:12px 1fr auto;gap:12px;align-items:center;padding:12px 14px}
.cd-act summary::-webkit-details-marker{display:none}
.cd-dot{width:10px;height:10px;border-radius:50%;background:#38bdf8}
.cd-act.status-in-attesa .cd-dot{background:#fbbf24}.cd-act.status-brief .cd-dot{background:#a78bfa}.cd-act.status-chiuso .cd-dot{background:#4ade80}
.cd-voce .cd-dot{background:#475569}
.cd-act-main{display:flex;flex-direction:column;gap:3px;min-width:0}
.cd-act-main b{font-size:.98rem;color:#f1f5f9;line-height:1.3}
.cd-act-main span{font-size:.88rem;color:#94a3b8;line-height:1.4}
.cd-act-meta{display:flex;flex-direction:column;align-items:flex-end;gap:4px;white-space:nowrap}
.cd-act-meta small{font-size:.78rem;color:#64748b}.cd-act-meta small.dl-soon{color:#fbbf24}.cd-act-meta small.dl-overdue{color:#f87171}
.cd-chip{font-style:normal;font-size:.75rem;padding:3px 9px;border-radius:999px;background:rgba(56,189,248,.12);color:#7dd3fc;max-width:200px;overflow:hidden;text-overflow:ellipsis}
.cd-chip.status-in-attesa{background:rgba(251,191,36,.12);color:#fcd34d}
.cd-act-body{padding:0 14px 14px 38px;display:flex;flex-direction:column;gap:10px}
.cd-act-body>p{margin:0;font-size:.92rem;line-height:1.55;color:#cbd5e1}
.cd-kv{display:grid;grid-template-columns:96px 1fr;gap:10px;align-items:start}
.cd-kv>span{font-size:.75rem;color:#64748b;text-transform:uppercase;letter-spacing:.04em;padding-top:2px}
.cd-kv p,.cd-kv ul{margin:0;font-size:.9rem;line-height:1.5;color:#cbd5e1}.cd-kv ul{padding-left:16px}
.cd-ref .cd-kv{margin-top:10px}
@media (max-width:640px){.cd-act summary{grid-template-columns:10px 1fr}.cd-act-meta{grid-column:2;flex-direction:row;align-items:center}.cd-act-body{padding-left:14px}.cd-kv{grid-template-columns:1fr;gap:2px}}
/* targhette, aperta/chiusa, da fare, sentiment, trend */
.cd-tagrow{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:2px}
.cd-tag{font-style:normal;font-size:.72rem;font-weight:600;padding:2px 9px;border-radius:999px;display:none}
.cd-tag.on{display:inline-block;--tc:#38bdf8;color:var(--tc);background:color-mix(in srgb,var(--tc) 14%,transparent);border:1px solid color-mix(in srgb,var(--tc) 45%,transparent)}
.cd-oc{font-style:normal;font-size:.7rem;padding:2px 8px;border-radius:999px}
.oc-o{background:rgba(74,222,128,.12);color:#86efac}.oc-c{background:rgba(148,163,184,.14);color:#94a3b8}
.cd-voce.is-closed{opacity:.6}
.cd-voce-on{margin-top:4px;font-size:.84rem!important;color:#cbd5e1!important;line-height:1.5}
.cd-todo-list{margin:0;padding:0;list-style:none;counter-reset:td;display:flex;flex-direction:column;gap:10px}
.cd-todo-list li{counter-increment:td;display:grid;grid-template-columns:28px 1fr;gap:4px 10px;align-items:start}
.cd-todo-list li::before{content:counter(td);grid-row:span 2;width:24px;height:24px;border-radius:50%;background:rgba(251,191,36,.18);color:#fbbf24;font-weight:700;font-size:.82rem;display:flex;align-items:center;justify-content:center}
.cd-todo-t{font-size:1rem;line-height:1.45;color:#f8fafc;font-weight:500}
.cd-todo-a{display:inline-block;justify-self:start;font-size:.72rem;color:#94a3b8;padding:1px 8px;border-radius:999px;background:rgba(255,255,255,.05)}
.cd-todo-a.on{display:inline-block}
.cd-tips{margin-top:14px;padding-top:12px;border-top:1px dashed rgba(251,191,36,.3)}.cd-tips>span{font-size:.75rem;color:#fbbf24;font-weight:600;text-transform:uppercase;letter-spacing:.05em}
.cd-tips p{margin:6px 0 0;font-size:.92rem;line-height:1.5;color:#cbd5e1}
.cd-sent b{display:flex;align-items:center;gap:8px}.cd-sent-dot{width:12px;height:12px;border-radius:50%;background:#94a3b8;display:inline-block}
.cd-sent.sent-positive{border-color:rgba(74,222,128,.35)}.cd-sent.sent-positive .cd-sent-dot{background:#4ade80}.cd-sent.sent-positive b{color:#86efac}
.cd-sent.sent-negative{border-color:rgba(248,113,113,.4)}.cd-sent.sent-negative .cd-sent-dot{background:#f87171}.cd-sent.sent-negative b{color:#fca5a5}
.cd-sent.sent-neutral .cd-sent-dot{background:#fbbf24}
.cd-trend{border-color:rgba(167,139,250,.3)}
.cd-tr{padding:10px 0;border-top:1px solid rgba(255,255,255,.06)}.cd-tr:first-of-type{border-top:0}
.cd-tr b{font-size:.96rem;color:#f1f5f9}.cd-tr p{margin:4px 0;font-size:.9rem;line-height:1.5;color:#cbd5e1}.cd-tr a{font-size:.8rem;color:#a78bfa;text-decoration:none}
.ccc-trend{font-size:.72rem;color:#c4b5fd;margin-left:8px}
.cd-team{border-color:rgba(56,189,248,.3)}
.cd-people{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.cd-person-h{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:.92rem}.cd-person-h b{color:#f1f5f9}.cd-person-h span{color:#94a3b8;font-size:.85rem}.cd-person-h i{font-style:normal}
.cd-pbar{position:relative;height:8px;border-radius:6px;background:rgba(255,255,255,.05);margin:5px 0 3px;overflow:hidden}
.cd-pbar span{position:absolute;left:0;top:0;bottom:0;border-radius:6px}.cd-pbar-p{background:rgba(56,189,248,.25)}.cd-pbar-c{background:#38bdf8}
.cd-person small{color:#64748b;font-size:.76rem}
.cd-team-idx{font-size:.8rem;font-weight:600;padding:3px 10px;border-radius:999px;background:rgba(255,255,255,.05)}
.cd-team-sum{display:flex;gap:16px;flex-wrap:wrap;font-size:.84rem;color:#94a3b8;margin-bottom:10px}.cd-team-sum b{color:#f1f5f9}.cd-team-sum i{font-style:normal;color:#64748b}
.cd-tgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:4px 18px}
.cd-trow{display:grid;grid-template-columns:1fr 38px 60px 78px;gap:8px;align-items:center;padding:5px 0;border-bottom:1px solid rgba(255,255,255,.05);font-size:.86rem}
.cd-trow b{color:#e2e8f0;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-al{color:#38bdf8;font-weight:700;text-align:right}.cd-trow small{color:#64748b;font-size:.74rem;text-align:right;white-space:nowrap}
.cd-mini{height:6px;border-radius:4px;background:rgba(255,255,255,.07);overflow:hidden}.cd-mini i{display:block;height:100%}
.bg-v{background:#4ade80}.bg-g{background:#fbbf24}.bg-r{background:#f87171}
/* Team allocato v3: ruolo sopra il nome, niente sovrapposizioni */
.cd-tgrid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:2px 24px}
.cd-trow{grid-template-columns:minmax(0,1fr) 44px 72px;gap:12px;padding:9px 0;align-items:center}
.cd-who{display:flex;flex-direction:column;gap:2px;min-width:0}
.cd-who em{font-style:normal;font-size:.68rem;text-transform:uppercase;letter-spacing:.06em;color:#64748b;line-height:1.2;white-space:normal}
.cd-who b{font-size:.94rem;font-weight:600;color:#f1f5f9;line-height:1.25;white-space:normal;overflow:visible;text-overflow:clip}
.cd-al{font-size:.95rem}
.cd-mini{height:7px}
.cd-trow{grid-template-columns:minmax(0,1fr) 44px 110px}
.cd-mini{height:8px;background:rgba(255,255,255,.06)}.cd-mini i{background:#38bdf8!important;border-radius:4px}
/* Budget e Team a tendina, compatti */
.cd-fold{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:0}
.cd-fold>summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:11px 14px;flex-wrap:wrap}
.cd-fold>summary::-webkit-details-marker{display:none}
.cd-fold>summary::after{content:'▾';margin-left:auto;color:#64748b;transition:transform .2s}
.cd-fold:not([open])>summary::after{transform:rotate(-90deg)}
.cd-fold-t{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#cbd5e1;white-space:nowrap}
.cd-fold-s{font-size:.86rem;color:#94a3b8}.cd-fold-s b{color:#f1f5f9}
.cd-fold-b{padding:0 14px 12px}
.cd-fold.ci-budget-recap{border-color:rgba(56,189,248,.25);background:rgba(56,189,248,.04)}
.cd-brow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:8px}
.cd-bt{background:rgba(255,255,255,.04);border-radius:10px;padding:8px 10px;min-width:0}
.cd-bt span{display:block;font-size:.66rem;color:#64748b;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-bt b{display:block;font-size:.95rem;color:#f1f5f9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-bt small{font-size:.72rem;color:#94a3b8;font-weight:400}
.cd-fold .ci-gest-link{font-size:.75rem}
/* Team: ruolo + nome su due righe al massimo */
.cd-team .cd-tgrid{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:0 18px}
.cd-team .cd-trow{grid-template-columns:minmax(0,1fr) 36px 70px;gap:8px;padding:6px 0}
.cd-team .cd-who em,.cd-team .cd-who b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.cd-team .cd-who em{font-size:.62rem}.cd-team .cd-who b{font-size:.86rem}
.cd-team .cd-al{font-size:.86rem}
@media (max-width:560px){.cd-brow{grid-template-columns:repeat(2,minmax(0,1fr))}}
.cd-prog{border-color:rgba(167,139,250,.3)}
.cd-prog .cd-fold-s{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:62ch}
.cd-lead-more{margin-top:8px!important;font-size:.92rem!important;color:#cbd5e1!important}
.cd-voce-acts{display:flex;flex-direction:column;gap:6px}
.cd-voce-acts:empty{display:none}
.cd-voce-acts::before{content:'Attività in corso';font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--tc,#38bdf8)}
.cd-act-in{background:rgba(255,255,255,.025);border-color:rgba(255,255,255,.06);border-left:3px solid var(--tc,#38bdf8)}
.cd-act-in summary{padding:9px 12px;grid-template-columns:10px 1fr auto}
.cd-act-in .cd-act-body{padding:0 12px 12px 32px}
/* voci con attività in corso: in alto ed evidenziate */
.cd-voce.is-live{border:1px solid var(--tc,#38bdf8);background:color-mix(in srgb,var(--tc,#38bdf8) 8%,rgba(255,255,255,.02));box-shadow:0 0 0 1px color-mix(in srgb,var(--tc,#38bdf8) 25%,transparent)}
.cd-voce.is-live>summary .cd-act-main>b,.cd-voce.is-live>summary .cd-tag{font-weight:700}
.cd-voce.is-live>summary .cd-chip{background:color-mix(in srgb,var(--tc,#38bdf8) 22%,transparent);color:#f1f5f9;font-weight:600}
.cd-voce.is-live>summary .cd-dot{box-shadow:0 0 0 4px color-mix(in srgb,var(--tc,#38bdf8) 25%,transparent)}
.cd-act.is-storico{opacity:.65}.cd-act.is-storico .cd-dot{background:#64748b!important}
.cd-voce-st{margin-top:4px}.cd-voce-st>summary{cursor:pointer;font-size:.75rem;color:#94a3b8;list-style:none}
.cd-voce-st>div{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.cd-storico-all{margin-top:4px}
/* ===== Voci del progetto v2: grafiche, compatte ===== */
.cd-vh{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.cd-vh h3{margin:0}
.cd-vleg{font-size:.74rem;color:#64748b;display:flex;gap:10px}.cd-vleg i{font-style:normal;color:#94a3b8;margin-right:3px}
.cd-voci{display:flex;flex-direction:column;gap:6px}
.cd-voce2{--tc:#38bdf8;background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.07);border-radius:12px;overflow:hidden}
.cd-voce2>summary{list-style:none;cursor:pointer;display:grid;grid-template-columns:4px minmax(0,1.6fr) auto auto 52px;gap:12px;align-items:center;padding:10px 12px 10px 0}
.cd-voce2>summary::-webkit-details-marker{display:none}
.cd-vbar{align-self:stretch;background:var(--tc);border-radius:0 3px 3px 0}
.cd-vname{display:flex;align-items:center;gap:8px;min-width:0}.cd-vname b{font-size:.95rem;color:#f1f5f9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-vcount{display:flex;flex-direction:column;align-items:flex-end;font-size:.8rem;color:#cbd5e1;white-space:nowrap}.cd-vcount b{color:var(--tc);font-size:.95rem}.cd-vcount small{color:#64748b;font-size:.72rem}
.cd-vnum{display:grid;grid-template-columns:auto 70px;gap:2px 8px;align-items:center;font-size:.8rem;white-space:nowrap}.cd-vnum b{color:#e2e8f0;grid-row:span 2}.cd-vnum small{color:#64748b;font-size:.7rem}
.cd-vdate{font-size:.74rem;color:#64748b;text-align:right}
.cd-voce2.is-live{border-color:var(--tc);background:color-mix(in srgb,var(--tc) 7%,rgba(255,255,255,.02))}
.cd-voce2.is-closed{opacity:.55}
.cd-vbody{padding:0 12px 10px 16px}.cd-vdesc{margin:0;font-size:.82rem}
.cd-rows{display:flex;flex-direction:column}
.cd-rows:empty{display:none}
.cd-row{display:grid;grid-template-columns:22px minmax(0,1fr) 110px 62px 26px;gap:10px;align-items:center;padding:7px 0;border-top:1px solid rgba(255,255,255,.05);font-size:.86rem}
.cd-row:first-child{border-top:0}
.cd-ic{text-align:center;color:var(--tc,#38bdf8);font-size:.85rem}
.cd-row.is-app .cd-ic{font-size:.9rem}
.cd-rmain{display:flex;flex-direction:column;min-width:0}.cd-rmain b{font-weight:500;color:#f1f5f9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-rmain small{font-size:.76rem;color:#94a3b8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-row.is-app .cd-rmain b{font-weight:400;color:#cbd5e1}
.cd-row.is-app{grid-template-columns:22px minmax(0,1fr) 172px 26px}
.cd-pgr{display:flex;align-items:center;gap:6px;min-width:0}.cd-pgr em{font-style:normal;font-size:.74rem;color:#94a3b8;width:32px;text-align:right}
.cd-st{width:auto!important;text-align:left!important}
.cd-pb{flex:1;height:6px;border-radius:4px;background:rgba(255,255,255,.07);overflow:hidden;display:block}.cd-pb i{display:block;height:100%;background:var(--tc,#38bdf8)}
.cd-pb.sm{height:5px}
.cd-when{font-size:.76rem;color:#94a3b8;text-align:right;white-space:nowrap}.cd-when.dl-soon{color:#fbbf24;font-weight:600}.cd-when.dl-overdue{color:#f87171}
.cd-row.is-app .cd-when{text-align:left;color:#cbd5e1}.cd-row.is-app .cd-when.dl-soon{color:#fbbf24}
.cd-own{width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.08);color:#cbd5e1;font-size:.64rem;font-weight:700;display:flex;align-items:center;justify-content:center}
.cd-own:empty{background:none}
.cd-row.is-storico{opacity:.55}.cd-row.is-storico .cd-ic{color:#4ade80}
.cd-voce-st{margin-top:4px}.cd-voce-st>summary{font-size:.74rem}
#ciActsSec .cd-rows,.cd-storico-all .cd-rows{padding:0 4px}
@media (max-width:640px){.cd-voce2>summary{grid-template-columns:4px 1fr auto}.cd-vnum,.cd-vdate{display:none}.cd-row{grid-template-columns:20px 1fr 70px 24px}.cd-row .cd-when{display:none}.cd-row.is-app{grid-template-columns:20px 1fr 90px 24px}.cd-row.is-app .cd-when{display:block}}
/* ===== CRUSCOTTO ===== */
.cr-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin-bottom:14px}
.cr-tiles-s{margin:10px 0 0}
.cr-tile{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:14px;padding:12px 14px;display:flex;flex-direction:column;gap:3px;min-width:0}
.cr-tile span{font-size:.7rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}
.cr-tile b{font-size:1.3rem;color:#f1f5f9;white-space:nowrap}.cr-tile small{font-size:.78rem;color:#94a3b8}
.cr-box{background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:16px 18px;margin-bottom:16px}
.cr-box h3{margin:0 0 10px;font-size:.82rem;text-transform:uppercase;letter-spacing:.07em;color:#cbd5e1}
.cr-be{border-color:rgba(251,191,36,.35);background:rgba(251,191,36,.04)}
.cr-bebar{position:relative;height:22px;border-radius:11px;background:rgba(255,255,255,.07);overflow:hidden}
.cr-bebar i{position:absolute;inset:0 auto 0 0;background:linear-gradient(90deg,#f87171,#fbbf24)}
.cr-bebar span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:.78rem;font-weight:600;color:#f1f5f9}
.cr-levers{margin:14px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:7px;font-size:.92rem;line-height:1.5;color:#cbd5e1}.cr-levers b{color:#f1f5f9}
.cr-t td small{color:#64748b;font-size:.74rem}
.cr-b td{font-weight:700;color:#f1f5f9!important;border-top:1px solid rgba(255,255,255,.1)}
.cr-mbar,.cr-cbar{display:block;height:6px;border-radius:4px;background:rgba(255,255,255,.07);overflow:hidden;min-width:70px}.cr-mbar i,.cr-cbar i{display:block;height:100%;background:#4ade80}.cr-cbar i{background:#38bdf8}
.cr-clients{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:4px 22px}
.cr-cli{display:grid;grid-template-columns:minmax(0,1fr) 80px 46px 82px;gap:8px;align-items:center;padding:6px 0;border-bottom:1px solid rgba(255,255,255,.05);font-size:.86rem}
.cr-cli b{font-weight:500;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cr-cli em{font-style:normal;color:#f1f5f9;text-align:right}.cr-cli small{color:#64748b;font-size:.72rem;text-align:right}
.cr-notes{margin:12px 0 0;padding-left:18px;font-size:.8rem;color:#94a3b8;line-height:1.5}
.cr-cov{margin:0 0 14px}.cr-cov>span{font-size:.72rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.cr-cov .cr-bebar{margin:6px 0}.cr-cov .cr-bebar i{background:linear-gradient(90deg,#38bdf8,#a78bfa)}.cr-cov small{font-size:.78rem;color:#94a3b8}
.bs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.bs-grid label{display:flex;flex-direction:column;gap:4px;font-size:.78rem;color:#94a3b8}
.bs-in{padding:.3rem .5rem!important;font-size:.82rem!important;width:100%}
/* Anno di competenza */
.yr-sel{display:flex;flex-direction:column;gap:3px;font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:#64748b}
.yr-sel select{background:rgba(56,189,248,.1);border:1px solid rgba(56,189,248,.45);color:#e2e8f0;border-radius:10px;padding:.45rem .7rem;font:inherit;font-size:.95rem;font-weight:600;text-transform:none;letter-spacing:0;cursor:pointer}
.yr-sel select option{background:#07131f}
.yr-home{display:flex;align-items:center;margin:0 10px}
.gest-hero-row{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap}
/* Brief in pipeline: righe larghe e leggibili */
.bs-brief{display:flex;flex-direction:column;gap:8px}
.bs-b{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(200px,1fr) 120px;gap:14px;align-items:center;padding:10px 12px;border-radius:12px;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.07)}
.bs-b-n{display:flex;flex-direction:column;min-width:0}.bs-b-n b{color:#f1f5f9;font-size:.95rem}.bs-b-n small{color:#94a3b8;font-size:.8rem}
.bs-b-v{display:flex;flex-direction:column;gap:3px}.bs-b-v span{font-size:.66rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}
.bs-b-v input{width:100%!important;font-size:1rem!important;padding:.55rem .7rem!important;background:rgba(255,255,255,.07)!important;border:1px solid rgba(56,189,248,.4)!important}
.bs-b-v small{font-size:.72rem;color:#94a3b8}
.bs-b-p{display:flex;flex-direction:column;align-items:flex-end}.bs-b-p span{font-size:.66rem;color:#64748b;text-transform:uppercase}.bs-b-p b{color:#fbbf24;font-size:1.05rem}
@media (max-width:640px){.bs-b{grid-template-columns:1fr}.bs-b-p{align-items:flex-start}}
.yr-acts{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px dashed rgba(255,255,255,.1)}
.yr-acts-l{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:#64748b;margin-right:4px}
.yr-acts .on{border-color:#4ade80;color:#86efac}
.yr-badge{display:inline-block;margin-left:6px;font-size:.66rem;color:#a78bfa;border:1px solid rgba(167,139,250,.4);border-radius:999px;padding:0 6px}.yr-badge.ok{color:#86efac;border-color:rgba(74,222,128,.4)}
.cd-rename{background:none;border:1px solid rgba(255,255,255,.12);color:#94a3b8;border-radius:8px;font-size:.8rem;padding:2px 8px;margin-left:10px;cursor:pointer;vertical-align:middle}
.cd-rename:hover{color:#38bdf8;border-color:#38bdf8}
.cd-ren{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:100%;min-width:min(560px,100%)}
.cd-ren label{display:flex;flex-direction:column;gap:4px;font-size:.72rem;color:#94a3b8;text-transform:uppercase;letter-spacing:.04em}
.cd-ren input{font-size:1rem}.cd-ren .ts-actions{grid-column:1/-1;margin-top:0}
@media (max-width:560px){.cd-ren{grid-template-columns:1fr}}
/* classificazione manuale */
.cd-phasebtns{display:inline-flex;gap:4px;flex-wrap:wrap}
.cd-pb{font:inherit;font-size:.72rem;font-weight:600;padding:4px 10px;border-radius:999px;cursor:pointer;background:transparent;border:1px solid;opacity:.55;transition:opacity .15s,background .15s}
.cd-pb:hover{opacity:.9}.cd-pb.is-on{opacity:1}
.pb-on{color:#7dd3fc;border-color:rgba(56,189,248,.5)}.pb-on.is-on{background:rgba(56,189,248,.18)}
.pb-sb{color:#cbd5e1;border-color:rgba(148,163,184,.5)}.pb-sb.is-on{background:rgba(148,163,184,.2)}
.pb-co{color:#86efac;border-color:rgba(74,222,128,.5)}.pb-co.is-on{background:rgba(74,222,128,.18)}
.pb-fa{color:#fca5a5;border-color:rgba(248,113,113,.5)}.pb-fa.is-on{background:rgba(248,113,113,.18)}
.cc-phase-fail{background:rgba(248,113,113,.12);color:#fca5a5;border:1px solid rgba(248,113,113,.35)}
.group-fail .ccc{opacity:.5}.group-fail .cl-group-compact-head{color:#fca5a5}
/* tasti classificazione v2: controllo segmentato leggibile */
.cd-seg{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:999px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12)}
.cd-seg>em{font-style:normal;font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:#94a3b8;padding:0 6px 0 8px}
.cd-seg .cd-phb{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:.8rem;font-weight:600;padding:5px 11px;border-radius:999px;border:0;background:transparent;color:#cbd5e1;opacity:1;cursor:pointer}
.cd-seg .cd-phb i{width:9px;height:9px;border-radius:50%;display:inline-block}
.cd-seg .cd-phb:hover{background:rgba(255,255,255,.08);color:#f8fafc}
.cd-seg .pb-on i{background:#38bdf8}.cd-seg .pb-sb i{background:#94a3b8}.cd-seg .pb-co i{background:#4ade80}.cd-seg .pb-fa i{background:#f87171}
.cd-seg .pb-on.is-on{background:#0ea5e9;color:#04101c}.cd-seg .pb-sb.is-on{background:#94a3b8;color:#04101c}.cd-seg .pb-co.is-on{background:#22c55e;color:#04101c}.cd-seg .pb-fa.is-on{background:#ef4444;color:#fff}
.cd-seg .is-on i{background:currentColor!important}
@media (max-width:560px){.cd-seg>em{display:none}.cd-seg .cd-phb{padding:5px 8px;font-size:.74rem}}
/* New Biz: tab piccole */
.group-newbiz .cl-group-compact-head{color:#fbbf24}
.nb-chips{display:flex;flex-wrap:wrap;gap:8px}
.nb-chip{all:unset;box-sizing:border-box;cursor:pointer;display:flex;flex-direction:column;gap:1px;padding:7px 12px;border-radius:10px;background:rgba(251,191,36,.06);border:1px solid rgba(251,191,36,.3)}
.nb-chip:hover{border-color:#fbbf24;background:rgba(251,191,36,.12)}
.nb-chip b{font-size:.86rem;color:#f1f5f9;font-weight:600}.nb-chip small{font-size:.68rem;color:#94a3b8}
.cc-phase-newbiz{background:rgba(251,191,36,.12);color:#fcd34d;border:1px solid rgba(251,191,36,.35)}
/* ===== Funzioni: Strategia · Creatività · Services · Accounting ===== */
.fun-dots{display:inline-flex;gap:3px;margin-left:8px;vertical-align:middle}
.fun-dots i{width:9px;height:9px;border-radius:50%;display:inline-block;border:2px solid var(--fc);background:transparent}
.fun-dots i.fs-green{background:var(--fc)}.fun-dots i.fs-amber{background:#fbbf24;border-color:#fbbf24}.fun-dots i.fs-red{background:#f87171;border-color:#f87171}.fun-dots i.fs-none{opacity:.25}
.cd-fun{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;align-items:start}
.cd-fn{--fc:#38bdf8;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-top:3px solid var(--fc);border-radius:12px;padding:10px 12px;min-width:0;overflow:hidden}
.cd-fn.fs-none{opacity:.5}
.cd-fn-h{display:flex;align-items:center;gap:6px;min-width:0}.cd-fn-h b{font-size:.88rem;color:#f1f5f9;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-fn-h i{flex:none;width:9px;height:9px;border-radius:50%;background:#64748b}.cd-fn.fs-green .cd-fn-h i{background:#4ade80}.cd-fn.fs-amber .cd-fn-h i{background:#fbbf24}.cd-fn.fs-red .cd-fn-h i{background:#f87171}
.cd-fn-n{flex:none;font-size:.72rem;font-weight:700;color:#04101c;background:var(--fc);border-radius:999px;padding:0 7px;line-height:1.5}
.cd-fn-s{font-size:.7rem;color:#94a3b8;margin:2px 0 6px}
.cd-fn-team{display:flex;flex-direction:column;gap:1px;font-size:.8rem;color:#e2e8f0;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.06)}
.cd-fn-team span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cd-fn-team small{font-size:.7rem;color:#94a3b8}
.cd-fn-list{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;max-height:168px;overflow:auto}
.cd-fn-list li{display:flex;align-items:baseline;gap:6px;font-size:.76rem;color:#cbd5e1;min-width:0}
.cd-fn-li{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cd-fn-list em{flex:none;font-style:normal;font-size:.68rem;color:#94a3b8;white-space:nowrap}.cd-fn-list em.dl-soon{color:#fbbf24;font-weight:600}.cd-fn-w{color:#fcd34d!important}
@media (max-width:760px){.cd-fun{grid-template-columns:repeat(2,minmax(0,1fr))}}
.fn-load{margin:0 0 14px}.fn-load h3{margin:0 0 8px;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:#94a3b8}
.fn-load-g{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}
.fn-l{--fc:#38bdf8;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-left:3px solid var(--fc);border-radius:12px;padding:10px 12px}
.fn-l-h{display:flex;justify-content:space-between;align-items:baseline;gap:8px;min-width:0}.fn-l-h b{color:#f1f5f9;font-size:.9rem}.fn-l-h em{font-style:normal;font-weight:700;font-size:1rem}
.fn-l-bar{display:block;height:6px;border-radius:4px;background:rgba(255,255,255,.07);margin:6px 0;overflow:hidden}.fn-l-bar i{display:block;height:100%;background:var(--fc)}
.fn-l small{display:block;font-size:.72rem;color:#94a3b8;line-height:1.4;overflow-wrap:anywhere}.fn-l{min-width:0}
/* ===== Instagram KPI ===== */
.ci-ig-strip-body{display:block!important}
.ig-sec-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:6px 0 8px}.ig-sec-h b{font-size:.82rem;color:#e2e8f0;text-transform:uppercase;letter-spacing:.05em}.ig-sec-h small{font-size:.74rem;color:#64748b}
.ig-tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:8px;margin-bottom:16px}
.ig-t{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px;min-width:0}
.ig-t span{font-size:.66rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}
.ig-t b{font-size:1.25rem;color:#f1f5f9;white-space:nowrap}
.ig-t small{font-size:.72rem;color:#94a3b8;line-height:1.35}
.ig-d{font-style:normal;font-size:.74rem;font-weight:700}.ig-up{color:#4ade80}.ig-down{color:#f87171}.ig-d0{color:#94a3b8}
.ig-t small .ig-d{font-size:.7rem}
.ig-posts{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:10px}
.ig-p{display:flex;flex-direction:column;text-decoration:none;color:inherit;background:rgba(255,255,255,.03);border:1px solid rgba(255,255,255,.08);border-radius:12px;overflow:hidden;min-width:0}
.ig-p:hover{border-color:rgba(56,189,248,.5)}
.ig-p-img{position:relative;aspect-ratio:4/5;background:linear-gradient(135deg,#0b2233,#123047);overflow:hidden}
.ig-p-img img{width:100%;height:100%;object-fit:cover;display:block}
.ig-p-type{position:absolute;left:8px;top:8px;font-size:.66rem;font-weight:700;background:rgba(4,16,28,.75);color:#e2e8f0;padding:2px 7px;border-radius:999px}
.ig-p-b{padding:9px 10px 10px;display:flex;flex-direction:column;gap:5px}
.ig-p-d{font-size:.7rem;color:#64748b}
.ig-p-cap{font-size:.78rem;color:#cbd5e1;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.1em}
.ig-p-reach{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid rgba(255,255,255,.06);padding-top:6px}
.ig-p-reach span{font-size:.64rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.ig-p-reach b{font-size:1.05rem;color:#38bdf8}
.ig-p-g{display:grid;grid-template-columns:1fr 1fr;gap:3px 8px;font-size:.74rem;color:#cbd5e1}
.ig-p-g span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ig-p-w{font-size:.7rem;color:#94a3b8}
.home-refresh{display:inline-flex;align-items:center;gap:6px;align-self:center;font:inherit;font-size:.86rem;font-weight:600;color:#e2e8f0;background:rgba(56,189,248,.1);border:1px solid rgba(56,189,248,.45);border-radius:10px;padding:.5rem .85rem;cursor:pointer;white-space:nowrap}
.home-refresh:hover{background:rgba(56,189,248,.2);border-color:#38bdf8}
.home-refresh span{display:inline-block;font-size:1.05rem;line-height:1}
.home-refresh.is-spin span{animation:hr-spin .8s linear infinite}
@keyframes hr-spin{to{transform:rotate(360deg)}}
.ig-p-big{display:grid;grid-template-columns:1fr 1fr;gap:6px;border-top:1px solid rgba(255,255,255,.06);padding-top:6px}
.ig-p-big span{display:block;font-size:.6rem;color:#64748b;text-transform:uppercase;letter-spacing:.05em}.ig-p-big b{font-size:1.02rem;color:#f1f5f9}.ig-p-big div+div b{color:#38bdf8}
.ig-adv{font-size:.7rem;color:#64748b;border-top:1px dashed rgba(255,255,255,.08);padding-top:5px}
.ig-adv.is-on{color:#cbd5e1;background:rgba(251,191,36,.07);border:1px solid rgba(251,191,36,.3);border-radius:8px;padding:6px 7px}
.ig-adv-h{display:flex;justify-content:space-between;align-items:baseline}.ig-adv-h b{font-size:.72rem;color:#fcd34d}.ig-adv-h em{font-style:normal;font-weight:700;color:#fbbf24}
.ig-adv-g{display:grid;grid-template-columns:1fr 1fr;gap:2px 6px;margin-top:3px;font-size:.68rem}
.top-refresh{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:.82rem;font-weight:600;color:#04101c;background:#38bdf8;border:0;border-radius:999px;padding:.4rem .8rem;cursor:pointer;white-space:nowrap;margin-right:8px}
.top-refresh:hover{background:#7dd3fc}
.top-refresh span{display:inline-block;font-size:1rem;line-height:1}
.top-refresh.is-spin span{animation:hr-spin .8s linear infinite}
@media (max-width:640px){.top-refresh b{display:none}.top-refresh{padding:.4rem .6rem}}

.fab-refresh{display:none;position:fixed;right:14px;bottom:16px;z-index:9999;align-items:center;gap:6px;font:inherit;font-size:.9rem;font-weight:700;color:#04101c;background:#38bdf8;border:0;border-radius:999px;padding:.75rem 1rem;box-shadow:0 6px 20px rgba(0,0,0,.45);cursor:pointer}
.fab-refresh span{display:inline-block;font-size:1.05rem;line-height:1}.fab-refresh.is-spin span{animation:hr-spin .8s linear infinite}
@media (max-width:860px){.top-refresh{display:none!important}.fab-refresh{display:inline-flex}}
.lock-email{display:block;width:100%;margin-bottom:10px;font:inherit;padding:.7rem .9rem;border-radius:12px;border:1px solid rgba(255,255,255,.15);background:rgba(255,255,255,.05);color:#e2e8f0}
/* mobile: funzioni e carico a colonna singola sotto i 560 px */
@media (max-width:560px){.cd-fun{grid-template-columns:minmax(0,1fr)}.fn-load-g{grid-template-columns:minmax(0,1fr)}.ig-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.ig-posts{grid-template-columns:repeat(2,minmax(0,1fr))}}
