:root {
  --navy-950: #061a37;
  --navy-900: #082248;
  --navy-800: #0c3266;
  --blue-700: #0b57bf;
  --blue-600: #1267d6;
  --blue-500: #2e7de9;
  --blue-200: #bfd7fb;
  --blue-100: #eaf2ff;
  --blue-50: #f5f8ff;
  --surface: #ffffff;
  --canvas: #f4f7fb;
  --line: #dce4ef;
  --line-soft: #ebf0f6;
  --text: #10213f;
  --muted: #63738c;
  --muted-2: #8795a8;
  --green: #239b62;
  --green-bg: #e9f8f0;
  --amber: #dc8c10;
  --amber-bg: #fff6df;
  --red: #d73d43;
  --red-bg: #fff0f1;
  --shadow: 0 5px 18px rgba(18, 42, 76, .055);
  --shadow-lg: 0 14px 35px rgba(18, 42, 76, .09);
  --sidebar: 196px;
  --topbar: 58px;
  --radius: 12px;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  margin: 0;
  font-family: Inter, "Segoe UI", Roboto, Arial, sans-serif;
  background: var(--canvas);
  color: var(--text);
  -webkit-font-smoothing: antialiased;
}
a { color: var(--blue-700); text-decoration: none; }
a:hover { color: var(--blue-600); }
button, input, select, textarea { font: inherit; }
button { color: inherit; }
svg { fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }

/* Shell ------------------------------------------------------------------ */
.app-shell { min-height: 100vh; }
.sidebar {
  position: fixed; inset: 0 auto 0 0; z-index: 50;
  width: var(--sidebar); min-height: 100vh;
  display: flex; flex-direction: column;
  padding: 14px 12px 16px;
  color: #dbe8fa;
  background:
    radial-gradient(circle at 20% 0%, rgba(44, 124, 230, .18), transparent 30%),
    linear-gradient(180deg, var(--navy-950), #031833 100%);
  box-shadow: 12px 0 30px rgba(0, 20, 54, .09);
}
.sidebar-brand { display: flex; align-items: center; min-height: 46px; padding: 0 4px 12px; border-bottom: 1px solid rgba(255,255,255,.09); }
.omni-lockup { display: flex; align-items: center; gap: 6px; color: #fff; min-width: 0; }
.omni-lockup:hover { color: #fff; }
.omni-mark { display: flex; width: 30px; height: 29px; align-items: center; gap: 2px; transform: skewX(-13deg); }
.omni-mark i { display: block; width: 7px; border-radius: 2px; background: linear-gradient(180deg, #2aa9ff, #1766c7); }
.omni-mark i:nth-child(1) { height: 20px; }
.omni-mark i:nth-child(2) { height: 26px; background: linear-gradient(180deg, #dfe7ed, #73869b); }
.omni-mark i:nth-child(3) { height: 17px; }
.omni-word { line-height: .8; display: flex; flex-direction: column; }
.omni-word strong { font-size: 18px; letter-spacing: -.05em; }
.omni-word small { font-size: 7px; text-align: right; color: #5fc4ff; margin-top: 5px; }
.brand-divider { height: 30px; width: 1px; background: rgba(255,255,255,.22); margin: 0 3px; }
.pipo-word { font-size: 20px; font-weight: 800; letter-spacing: .02em; }
.sidebar-close { display: none; margin-left: auto; border: 0; background: transparent; color: #fff; font-size: 28px; }
.sidebar-product { padding: 17px 7px 14px; }
.sidebar-product strong { display: block; font-size: 13px; margin-bottom: 8px; }
.sidebar-product span { display: block; font-size: 10px; color: #9eb1cc; line-height: 1.55; }
.sidebar-nav { display: flex; flex-direction: column; gap: 4px; }
.sidebar-nav a, .sidebar-settings {
  display: flex; align-items: center; gap: 11px;
  min-height: 43px; padding: 0 10px; border-radius: 8px;
  color: #c9d8ec; font-size: 13px; transition: .18s ease;
}
.sidebar-nav a:hover, .sidebar-settings:hover { color: #fff; background: rgba(255,255,255,.07); }
.sidebar-nav a.active { color: #fff; background: linear-gradient(100deg, #0c62d2, #1678ef); box-shadow: 0 7px 17px rgba(7, 99, 222, .28); }
.sidebar-nav a.nav-muted { opacity: .62; }
.sidebar-nav svg, .sidebar-settings svg { width: 19px; height: 19px; flex: none; }
.sidebar-spacer { flex: 1; }
.sidebar-user { display: flex; align-items: center; gap: 9px; padding: 12px 7px; border-top: 1px solid rgba(255,255,255,.09); border-bottom: 1px solid rgba(255,255,255,.09); }
.avatar { width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; background: #536d91; color: #fff; font-size: 12px; }
.sidebar-user span:last-child { min-width: 0; }
.sidebar-user strong, .sidebar-user small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sidebar-user strong { font-size: 11px; color: #fff; }
.sidebar-user small { font-size: 9px; color: #9eb1cc; margin-top: 4px; }
.sidebar-settings { margin-top: 8px; align-items: flex-start; padding-top: 9px; padding-bottom: 9px; }
.sidebar-settings > span { min-width: 0; }
.sidebar-settings strong, .sidebar-settings small { display: block; }
.sidebar-settings strong { color: inherit; font-size: 11px; }
.sidebar-settings small { margin-top: 3px; color: #8fa6c4; font-size: 8px; }
.sidebar-version { color: #7890af; font-size: 10px; padding: 12px 8px 0; }
.workspace { min-height: 100vh; margin-left: var(--sidebar); }
.workspace-topbar {
  position: sticky; top: 0; z-index: 35;
  height: var(--topbar); display: flex; align-items: center; gap: 14px;
  padding: 0 22px; background: rgba(255,255,255,.93); border-bottom: 1px solid var(--line-soft);
  backdrop-filter: blur(12px);
}
.menu-toggle { display: none; border: 0; background: transparent; padding: 5px; }
.menu-toggle span { display: block; width: 22px; height: 2px; background: var(--text); margin: 4px 0; }
.project-switcher { min-width: 205px; display: flex; align-items: center; gap: 9px; padding: 6px 10px; border: 1px solid var(--line); border-radius: 9px; background: #fff; color: var(--text); }
.project-switcher:hover { box-shadow: var(--shadow); color: var(--text); }
.aircraft-chip { width: 35px; height: 29px; border-radius: 6px; display: grid; place-items: center; color: var(--navy-800); background: var(--blue-50); }
.project-switcher strong, .project-switcher small { display: block; }
.project-switcher strong { font-size: 12px; }
.project-switcher small { font-size: 9px; color: var(--muted); margin-top: 2px; }
.project-switcher .chevron { margin-left: auto; }
.topbar-actions { margin-left: auto; display: flex; align-items: center; gap: 13px; color: var(--muted); }
.topbar-icon { position: relative; width: 27px; height: 27px; display: grid; place-items: center; border-radius: 50%; color: var(--navy-800); font-size: 13px; }
.topbar-icon:hover { background: var(--blue-50); }
.topbar-icon b { position: absolute; top: -3px; right: -2px; min-width: 14px; height: 14px; border-radius: 8px; display: grid; place-items: center; font-size: 8px; color: #fff; background: var(--blue-600); }
.last-update { font-size: 10px; color: var(--muted-2); }
.page-content { width: 100%; max-width: 1700px; margin: 0 auto; padding: 20px 22px 38px; }
.sidebar-overlay { display: none; position: fixed; inset: 0; z-index: 45; background: rgba(3, 18, 40, .52); }

/* Typography and generic components ------------------------------------- */
h1, h2, h3, p { margin-top: 0; }
h1 { margin-bottom: 6px; font-size: 29px; line-height: 1.1; letter-spacing: -.035em; color: #0b2147; }
h2 { font-size: 16px; letter-spacing: -.01em; margin-bottom: 10px; }
h3 { font-size: 13px; margin-bottom: 0; }
p { color: var(--muted); line-height: 1.55; }
.eyebrow { display: block; margin-bottom: 7px; color: var(--blue-600); font-weight: 800; font-size: 10px; letter-spacing: .12em; }
.muted-text { color: var(--muted); }
.text-link { font-size: 11px; font-weight: 700; }
.back-link { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 50%; font-size: 23px; color: var(--navy-800); }
.back-link:hover { background: var(--blue-50); }
.button {
  display: inline-flex; align-items: center; justify-content: center; gap: 7px;
  min-height: 36px; padding: 8px 13px; border: 1px solid var(--line); border-radius: 7px;
  background: #fff; color: var(--text); font-size: 11px; font-weight: 700; cursor: pointer;
  transition: .15s ease;
}
.button:hover { color: var(--text); box-shadow: 0 4px 13px rgba(15, 55, 105, .08); transform: translateY(-1px); }
.button.primary { border-color: var(--blue-600); background: var(--blue-600); color: #fff; }
.button.primary:hover { color: #fff; background: var(--blue-700); }
.button.danger { color: var(--red); border-color: #efc9cc; background: #fff8f8; }
.button.small { min-height: 31px; padding: 6px 10px; font-size: 10px; }
.button-icon { font-size: 15px; line-height: 1; }
.actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.actions form { margin: 0; }
.card, .panel, .metrics article {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); box-shadow: var(--shadow);
}
.card, .panel { padding: 15px; }
.card-heading, .section-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin-bottom: 12px; }
.card-heading h2, .card-heading h3, .section-header h2 { margin-bottom: 0; }
.card-heading p { margin: 5px 0 0; font-size: 11px; }
.card-heading > a, .card-heading > div + a { font-size: 10px; font-weight: 700; }
.heading-with-icon { display: flex; align-items: center; gap: 7px; }
.section-icon { width: 18px; height: 18px; display: grid; place-items: center; border-radius: 5px; font-size: 10px; font-weight: 800; }
.section-icon.danger { color: var(--red); background: var(--red-bg); }
.section-icon.info, .section-icon.pulse { color: var(--blue-600); background: var(--blue-100); }
.badge { display: inline-flex; align-items: center; justify-content: center; gap: 4px; padding: 4px 7px; border-radius: 999px; background: var(--blue-100); color: #235a9d; font-size: 9px; font-weight: 800; letter-spacing: .025em; text-transform: none; }
.badge.subtle { background: #eef2f6; color: #596a80; }
.type-badge { background: #eef3fb; color: #355c8e; }
.danger-badge, .status-blocked { background: var(--red-bg); color: var(--red); }
.status-done, .status-completed, .status-resolved, .status-closed { background: var(--green-bg); color: var(--green); }
.status-in_progress, .status-active, .status-mitigating, .status-monitoring { background: var(--blue-100); color: var(--blue-700); }
.status-todo, .status-planned, .status-planning, .status-identified, .status-open { background: #eef2f6; color: #5b6c80; }
.status-on_hold, .status-under_assessment { background: var(--amber-bg); color: var(--amber); }
.status-cancelled, .status-materialized { background: #f0f1f3; color: #747e8c; }
.rating-low, .severity-low { background: #edf5ef; color: #4c7a5a; }
.rating-medium, .severity-medium { background: var(--amber-bg); color: #a56608; }
.rating-high, .severity-high { background: #fff0df; color: #cc6f08; }
.rating-critical, .severity-critical { background: var(--red-bg); color: var(--red); }
.priority { display: inline-flex; font-size: 9px; font-weight: 800; letter-spacing: .05em; }
.priority.low { color: #508365; }.priority.medium { color: #65758a; }.priority.high { color: var(--amber); }.priority.critical { color: var(--red); }
.danger-text { color: var(--red) !important; font-weight: 700; }
.warning-text { color: var(--amber) !important; font-weight: 700; }
.count-pill { display: inline-grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 11px; background: var(--blue-100); color: var(--blue-700); font-size: 10px; }
.alert { position: relative; z-index: 5; margin-bottom: 13px; padding: 11px 13px; border-radius: 8px; font-size: 11px; }
.alert.success { border: 1px solid #bde5cd; background: var(--green-bg); color: #197446; }
.alert.error { border: 1px solid #efc6c9; background: var(--red-bg); color: #a52f36; white-space: pre-wrap; }
.inline-badges { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-bottom: 6px; }

/* Dashboard --------------------------------------------------------------- */
.dashboard-heading, .page-header, .hero { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; margin-bottom: 18px; }
.dashboard-heading p, .page-header p { margin-bottom: 0; font-size: 12px; }
.kpi-grid { display: grid; gap: 10px; }
.dashboard-kpis { grid-template-columns: repeat(6, minmax(0, 1fr)); margin-bottom: 13px; }
.kpi-card { min-width: 0; min-height: 86px; display: flex; align-items: center; gap: 11px; padding: 13px; border: 1px solid var(--line); border-radius: 10px; background: #fff; box-shadow: var(--shadow); }
.kpi-card > div { min-width: 0; }
.kpi-card small, .kpi-card span { display: block; }
.kpi-card small { color: var(--muted); font-size: 9px; text-transform: uppercase; letter-spacing: .04em; }
.kpi-card strong { display: block; margin: 4px 0 3px; color: #102a58; font-size: 19px; line-height: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kpi-card > div > span { color: var(--muted-2); font-size: 9px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kpi-card.kpi-danger { border-color: #efcdd0; background: linear-gradient(135deg, #fff, #fff9f9); }
.kpi-card.kpi-warning { border-color: #f1dfbb; background: linear-gradient(135deg, #fff, #fffcf4); }
.kpi-icon { width: 38px; height: 38px; display: grid; place-items: center; flex: none; border-radius: 9px; font-size: 19px; font-weight: 500; }
.icon-blue { color: var(--blue-600); background: var(--blue-50); }
.icon-red { color: var(--red); background: var(--red-bg); }
.icon-amber { color: var(--amber); background: var(--amber-bg); }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 1fr) 350px; gap: 12px; align-items: start; }
.portfolio-card { padding: 0; overflow: hidden; }
.portfolio-card .card-heading { padding: 15px 16px 9px; }
.portfolio-table-wrap { overflow: auto; }
.portfolio-table { min-width: 920px; }
.portfolio-table tbody tr { cursor: pointer; }
.clickable-row:hover { background: #f8fbff; }
.project-cell { display: flex; align-items: center; gap: 10px; min-width: 245px; }
.aircraft-avatar { width: 35px; height: 35px; display: grid; place-items: center; border-radius: 8px; background: var(--blue-100); color: var(--blue-700); font-size: 9px; font-weight: 800; }
.project-cell strong, .project-cell small { display: block; }
.project-cell strong { font-size: 11px; color: var(--text); }.project-cell small { margin-top: 3px; color: var(--muted); font-size: 9px; }
.health-pill { display: inline-flex; align-items: center; gap: 6px; font-size: 9px; font-weight: 700; white-space: nowrap; }
.health-pill i { width: 7px; height: 7px; border-radius: 50%; }
.health-at-risk { color: var(--red); }.health-at-risk i { background: var(--red); }
.health-attention { color: var(--amber); }.health-attention i { background: var(--amber); }
.health-on-track { color: var(--green); }.health-on-track i { background: var(--green); }
.health-completed { color: var(--blue-600); }.health-completed i { background: var(--blue-600); }
.critical-count { display: inline-grid; place-items: center; min-width: 24px; height: 24px; border-radius: 12px; background: #eef2f6; color: var(--muted); font-size: 10px; font-weight: 800; }
.critical-count.has-critical { background: var(--red-bg); color: var(--red); }
.dashboard-rail, .cockpit-rail { display: flex; flex-direction: column; gap: 11px; }
.compact-card { padding: 12px; }
.attention-list { display: flex; flex-direction: column; }
.attention-item { min-height: 45px; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: 8px; padding: 7px 2px; border-top: 1px solid var(--line-soft); color: var(--text); }
.attention-item:hover { color: var(--text); background: #fbfdff; }
.attention-item strong, .attention-item small { display: block; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.attention-item strong { font-size: 10px; font-weight: 600; }.attention-item small { margin-top: 3px; color: var(--muted); font-size: 8px; }
.attention-item time, .mini-label { color: var(--muted); font-size: 8px; white-space: nowrap; }
.attention-icon { width: 24px; height: 24px; display: grid; place-items: center; border-radius: 50%; font-size: 9px; font-weight: 800; }
.attention-icon.danger { color: var(--red); background: var(--red-bg); }.attention-icon.info { color: var(--blue-600); background: var(--blue-100); }
.attention-icon.rating-critical { color: #fff; background: var(--red); }.attention-icon.rating-high { color: #fff; background: #e67e22; }.attention-icon.rating-medium { color: #fff; background: var(--amber); }.attention-icon.rating-low { color: #fff; background: #6f9e7b; }
.empty-compact { padding: 18px 6px; text-align: center; color: var(--muted); font-size: 10px; }

/* Project cockpit --------------------------------------------------------- */
.cockpit-header { display: flex; justify-content: space-between; align-items: flex-start; gap: 18px; margin-bottom: 13px; }
.cockpit-title { display: flex; align-items: flex-start; gap: 7px; }
.cockpit-title p { margin: 0; font-size: 11px; }
.cockpit-actions { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
.more-menu { position: relative; }
.more-menu summary { width: 34px; height: 34px; display: grid; place-items: center; list-style: none; border-radius: 7px; border: 1px solid var(--line); background: #fff; cursor: pointer; font-weight: 800; }
.more-menu summary::-webkit-details-marker { display: none; }
.more-menu > div { position: absolute; right: 0; top: 40px; z-index: 20; min-width: 150px; padding: 5px; border: 1px solid var(--line); border-radius: 8px; background: #fff; box-shadow: var(--shadow-lg); }
.more-menu button, .more-menu a { display: block; width: 100%; padding: 8px 9px; border: 0; background: transparent; text-align: left; font-size: 10px; cursor: pointer; }
.cockpit-kpis { grid-template-columns: repeat(6, minmax(0, 1fr)); margin-bottom: 11px; }
.cockpit-kpis .kpi-card { min-height: 76px; padding-top: 12px; padding-bottom: 12px; }
.dashboard-kpis .kpi-card strong,
.cockpit-kpis .kpi-card strong { font-size: 16px; }
.health-card.health-at-risk { border-color: #efc9cc; }.health-card.health-at-risk strong, .health-card.health-at-risk .kpi-icon { color: var(--red); }
.health-card.health-attention { border-color: #f0dab0; }.health-card.health-attention strong, .health-card.health-attention .kpi-icon { color: var(--amber); }
.health-card.health-on-track strong, .health-card.health-on-track .kpi-icon, .health-card.health-completed strong { color: var(--green); }
.mini-donut { --progress: 0deg; width: 44px; height: 44px; flex: none; display: grid !important; place-items: center; border-radius: 50%; background: conic-gradient(var(--blue-600) 0 var(--progress), #e7edf5 var(--progress) 360deg); position: relative; }
.mini-donut::after { content: ""; position: absolute; inset: 5px; border-radius: 50%; background: #fff; }
.mini-donut b { position: relative; z-index: 1; font-size: 10px; color: var(--navy-800); }
.project-tabs { display: flex; align-items: center; gap: 4px; min-height: 39px; padding: 0 10px; margin-bottom: 10px; border: 1px solid var(--line); border-radius: 9px; background: #fff; box-shadow: var(--shadow); }
.project-tabs a { position: relative; align-self: stretch; display: flex; align-items: center; gap: 6px; padding: 0 14px; color: var(--muted); font-size: 10px; font-weight: 700; }
.project-tabs a::after { content: ""; position: absolute; left: 12px; right: 12px; bottom: -1px; height: 2px; background: transparent; }
.project-tabs a.active { color: var(--blue-700); }.project-tabs a.active::after { background: var(--blue-600); }
.project-tabs span { min-width: 17px; height: 17px; display: grid; place-items: center; border-radius: 9px; background: #edf2f8; font-size: 8px; }
.cockpit-grid { display: grid; grid-template-columns: minmax(0, 1fr) 350px; gap: 11px; align-items: start; }
.gantt-card { padding: 12px; min-width: 0; }
.overview-bottom-grid { display: grid; grid-template-columns: minmax(0, .95fr) minmax(0, 1.05fr); gap: 11px; margin-top: 11px; }
.full-gantt-card { min-width: 0; }
.timeline-note { display: flex; gap: 9px; margin-top: 10px; padding: 9px 11px; border-radius: 7px; background: var(--blue-50); color: var(--muted); font-size: 9px; }
.timeline-note strong { color: var(--blue-700); white-space: nowrap; }

/* Gantt ------------------------------------------------------------------- */
.gantt-shell { min-width: 0; }
.gantt-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 7px; }
.gantt-legend { display: flex; align-items: center; gap: 11px; flex-wrap: wrap; font-size: 8px; color: var(--muted); }
.gantt-legend span { display: inline-flex; align-items: center; gap: 4px; }
.legend-swatch { width: 12px; height: 5px; border-radius: 1px; }.legend-swatch.done { background: var(--green); }.legend-swatch.in-progress { background: var(--blue-600); }.legend-swatch.planned { background: #9dbff3; }.legend-swatch.overdue { border: 1px dashed var(--red); background: #fff; }
.legend-diamond { width: 7px; height: 7px; transform: rotate(45deg); background: var(--navy-800); }
.gantt-period { color: var(--muted-2); font-size: 8px; }
.gantt-scroll { overflow-x: auto; border: 1px solid var(--line-soft); border-radius: 7px; }
.gantt-grid { min-width: 830px; display: grid; grid-template-columns: var(--gantt-label-width) minmax(550px, 1fr); font-size: 9px; }
.gantt-label-head, .gantt-timeline-head { height: 32px; border-bottom: 1px solid var(--line); background: #fbfcfe; }
.gantt-label-head { display: flex; align-items: center; padding: 0 10px; color: var(--muted); font-size: 8px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; }
.gantt-timeline-head { position: relative; }
.gantt-month { position: absolute; top: 0; bottom: 0; display: flex; align-items: center; justify-content: center; gap: 3px; border-left: 1px solid var(--line-soft); color: #455a76; font-size: 8px; font-weight: 700; }
.gantt-month small { color: var(--muted-2); font-size: 7px; }
.today-head { position: absolute; top: 2px; z-index: 3; transform: translateX(-50%); padding: 3px 6px; border-radius: 3px; color: #fff; background: var(--navy-800); font-size: 7px; font-weight: 700; }
.gantt-row-label, .gantt-row-track { min-height: 30px; border-bottom: 1px solid var(--line-soft); }
.gantt-row-label { display: flex; align-items: center; gap: 7px; padding: 4px 8px; background: #fff; overflow: hidden; }
.gantt-row-label.child-label { padding-left: 23px; }
.gantt-row-label.group-label { background: #fbfcfe; }
.gantt-row-label strong, .gantt-row-label small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gantt-row-label strong { color: #263b59; font-size: 9px; }.gantt-row-label small { margin-top: 2px; color: var(--muted-2); font-size: 7px; }
.row-state { width: 16px; height: 16px; display: grid; place-items: center; flex: none; border-radius: 50%; border: 1px solid #90a1b7; color: #6d7f96; font-size: 8px; }
.row-state.done { color: var(--green); border-color: var(--green); }.row-state.overdue { color: var(--red); border-color: var(--red); }.row-state.milestone { color: var(--blue-600); border-color: var(--blue-600); }
.gantt-row-track { position: relative; background: #fff; overflow: visible; }
.grid-lines { position: absolute; inset: 0; background: repeating-linear-gradient(90deg, transparent 0, transparent calc(8.333% - 1px), var(--line-soft) calc(8.333% - 1px), var(--line-soft) 8.333%); pointer-events: none; }
.today-line { position: absolute; top: 0; bottom: 0; z-index: 2; width: 1px; background: var(--navy-800); }
.today-line::before { content: ""; position: absolute; top: -3px; left: -3px; width: 7px; height: 7px; border-radius: 50%; background: var(--navy-800); }
.gantt-bar { position: absolute; top: 9px; z-index: 3; height: 11px; min-width: 7px; border-radius: 2px; overflow: hidden; background: #9ebdf0; }
.gantt-bar.done { background: var(--green); }.gantt-bar.in-progress { background: #a8c8f8; }.gantt-bar.planned { border: 1px dashed var(--blue-500); background: #edf4ff; }.gantt-bar.blocked { border: 1px dashed var(--amber); background: var(--amber-bg); }.gantt-bar.overdue { border: 1px dashed var(--red); background: #fff3f3; }
.gantt-progress { display: block; height: 100%; background: var(--blue-700); }.gantt-bar.done .gantt-progress { background: #167948; }.gantt-bar.overdue .gantt-progress { background: #ef777b; }
.milestone-marker { position: absolute; top: 11px; z-index: 4; width: 9px; height: 9px; transform: translateX(-50%) rotate(45deg); background: var(--navy-800); border: 1px solid #fff; box-shadow: 0 0 0 1px var(--navy-800); }.milestone-marker.overdue { background: var(--red); box-shadow: 0 0 0 1px var(--red); }
.delay-label { position: absolute; top: 8px; z-index: 4; color: var(--red); font-size: 7px; white-space: nowrap; }
.gantt-empty { grid-column: 1 / -1; padding: 28px; color: var(--muted); text-align: center; }
.gantt-compact .gantt-row-label, .gantt-compact .gantt-row-track { min-height: 27px; }.gantt-compact .gantt-bar { top: 8px; height: 10px; }

/* Health / overview ------------------------------------------------------- */
.attention-list.dense .attention-item { min-height: 37px; padding: 5px 2px; }
.risk-level { min-width: 38px; padding: 3px 4px; border-radius: 5px; text-align: center; font-size: 7px; font-weight: 800; }
.blue-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--blue-600); }
.health-chart-wrap { display: grid; grid-template-columns: 118px minmax(0, 1fr); align-items: center; gap: 14px; padding: 6px 4px 2px; }
.health-donut { position: relative; width: 105px; height: 105px; border-radius: 50%; display: grid; place-items: center; }
.health-donut::after { content: ""; position: absolute; inset: 14px; border-radius: 50%; background: #fff; }
.health-donut span { position: relative; z-index: 1; text-align: center; }.health-donut strong, .health-donut small { display: block; }.health-donut strong { font-size: 20px; }.health-donut small { color: var(--muted); font-size: 8px; }
.health-legend { list-style: none; padding: 0; margin: 0; }
.health-legend li { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: 7px; min-height: 25px; border-bottom: 1px solid var(--line-soft); font-size: 9px; }
.health-legend i { width: 8px; height: 8px; border-radius: 50%; }.health-legend i.red { background: var(--red); }.health-legend i.amber { background: #f5a524; }.health-legend i.green { background: var(--green); }.health-legend i.blue { background: var(--blue-600); }
.milestone-summary-list { display: flex; flex-direction: column; }
.milestone-summary-item { display: grid; grid-template-columns: auto minmax(0,1fr) auto; align-items: center; gap: 9px; min-height: 47px; padding: 7px 3px; border-top: 1px solid var(--line-soft); color: var(--text); }
.milestone-summary-item strong, .milestone-summary-item small { display: block; }.milestone-summary-item strong { font-size: 10px; }.milestone-summary-item small { color: var(--muted); font-size: 8px; margin-top: 3px; }.milestone-summary-item time { color: var(--muted); font-size: 9px; }
.milestone-symbol { color: var(--blue-600); }.milestone-symbol.done { color: var(--green); }.milestone-symbol.overdue { color: var(--red); }
.summary-metrics { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 8px; }
.summary-metrics article { padding: 10px; border: 1px solid var(--line-soft); border-radius: 8px; background: #fbfcfe; }
.summary-metrics span, .summary-metrics strong, .summary-metrics small { display: block; }.summary-metrics span { color: var(--muted); font-size: 8px; }.summary-metrics strong { margin: 5px 0 3px; color: var(--navy-800); font-size: 19px; }.summary-metrics small { color: var(--muted-2); font-size: 8px; }
.project-meta-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 0 20px; margin: 13px 0 0; border-top: 1px solid var(--line-soft); }
.project-meta-grid div { padding: 9px 0; }.project-meta-grid dt { color: var(--muted); font-size: 8px; text-transform: uppercase; letter-spacing: .05em; }.project-meta-grid dd { margin: 4px 0 0; font-size: 10px; }

/* Tables, lists and forms ------------------------------------------------- */
.table-wrap { overflow: auto; background: #fff; border: 1px solid var(--line); border-radius: 9px; }
.table-wrap.embedded { border-color: var(--line-soft); box-shadow: none; }
table { width: 100%; border-collapse: collapse; }
th, td { padding: 10px 11px; border-bottom: 1px solid var(--line-soft); text-align: left; vertical-align: middle; }
th { position: relative; background: #fafbfd; color: var(--muted); font-size: 8px; text-transform: uppercase; letter-spacing: .055em; white-space: nowrap; }
td { font-size: 10px; } td strong { color: var(--text); } td small { display: block; margin-top: 3px; color: var(--muted); font-size: 8px; }
tbody tr:last-child td { border-bottom: 0; }
tbody tr:hover { background: #fbfdff; }
.empty { padding: 28px; color: var(--muted); text-align: center; }
.overdue-row { background: #fffafa; }.overdue-row td:first-child { box-shadow: inset 2px 0 var(--red); }
.muted { opacity: .56; }
.progress { height: 7px; border-radius: 999px; background: #e8eef5; overflow: hidden; }
.progress > div { height: 100%; border-radius: inherit; background: linear-gradient(90deg, var(--blue-700), var(--blue-500)); }
.progress.large { height: 12px; }.progress.compact { width: 110px; }
.progress-with-value { min-width: 112px; display: flex; align-items: center; gap: 8px; }.progress-with-value .progress { flex: 1; }.progress-with-value strong { min-width: 29px; font-size: 9px; }.progress-with-value.compact { min-width: 100px; }
.owner-chip { display: inline-grid; place-items: center; width: 20px; height: 20px; margin-right: 5px; border-radius: 50%; background: #e9eff8; color: #49617f; font-size: 8px; font-weight: 800; }
.filters { display: flex; align-items: center; gap: 8px; padding: 10px; margin-bottom: 12px; border: 1px solid var(--line); border-radius: 9px; background: #fff; box-shadow: var(--shadow); }
.filters.multi { flex-wrap: wrap; }.filters input:not([type=checkbox]), .filters select { min-width: 135px; flex: 1; }
.check { display: inline-flex; align-items: center; gap: 5px; color: var(--muted); font-size: 9px; white-space: nowrap; }.check input { width: auto; }
input, select, textarea { width: 100%; border: 1px solid #ccd7e5; border-radius: 7px; padding: 9px 10px; background: #fff; color: var(--text); font-size: 11px; outline: none; }
input:focus, select:focus, textarea:focus { border-color: var(--blue-500); box-shadow: 0 0 0 3px rgba(46,125,233,.12); }
textarea { min-height: 90px; resize: vertical; }
.form-panel { max-width: 980px; }.form-panel.panel { padding: 20px; }
.form-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 15px; }.form-grid label { display: flex; flex-direction: column; gap: 6px; color: #34465f; font-size: 10px; font-weight: 700; }.form-grid .full { grid-column: 1 / -1; }
.details dl, .aircraft-card dl { margin: 0; }.details dl div, .aircraft-card dl div { border-top: 1px solid var(--line-soft); padding: 11px 0; }.details dt, .aircraft-card dt { color: var(--muted); font-size: 8px; text-transform: uppercase; letter-spacing: .05em; }.details dd, .aircraft-card dd { margin: 4px 0 0; font-size: 11px; }
.grid { display: grid; gap: 12px; }.grid.two { grid-template-columns: repeat(2, minmax(0,1fr)); }.grid.three { grid-template-columns: repeat(3, minmax(0,1fr)); }.grid.four-cards { grid-template-columns: repeat(4, minmax(0,1fr)); }
.metrics { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 10px; margin-bottom: 12px; }.metrics.four { grid-template-columns: repeat(4, minmax(0,1fr)); }.metrics.six { grid-template-columns: repeat(6, minmax(0,1fr)); }.metrics article { padding: 15px; }.metrics span, .metrics small { display: block; color: var(--muted); font-size: 9px; }.metrics strong { display: block; margin: 6px 0; color: var(--navy-800); font-size: 25px; }
.hero { padding: 25px; border: 0; border-radius: 13px; background: linear-gradient(120deg, var(--navy-900), #155595); color: #fff; box-shadow: var(--shadow-lg); }.hero h1 { color: #fff; }.hero p { color: #c7d9ef; }.hero .eyebrow { color: #8fc9ff; }
.page-header h1, .hero h1 { font-size: 27px; }.page-header { margin-bottom: 16px; }
.section-block { margin-top: 11px; }.project-overview { margin-bottom: 12px; }

/* Milestones and governance ---------------------------------------------- */
.milestone-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
.milestone-card { padding: 13px; border: 1px solid var(--line-soft); border-radius: 9px; background: #fbfcfe; }.milestone-card p { min-height: 32px; margin: 8px 0; font-size: 10px; }.milestone-head, .milestone-foot, .meta-line { display: flex; justify-content: space-between; gap: 10px; align-items: flex-start; }.milestone-head h3 { margin-top: 7px; }.meta-line { margin: 10px 0; color: var(--muted); font-size: 8px; }.meta-line span strong { display: block; margin-top: 2px; color: var(--text); font-size: 9px; }.milestone-card .progress { margin: 11px 0 8px; }.milestone-foot { align-items: center; color: var(--muted); font-size: 8px; }
.empty-state { grid-column: 1 / -1; padding: 25px; border: 1px dashed #c9d5e4; border-radius: 8px; color: var(--muted); text-align: center; }.empty-state strong, .empty-state span { display: block; }.empty-state span { margin-top: 4px; font-size: 9px; }
.governance-tab-grid, .governance-project-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 11px; }
.governance-cards { display: flex; flex-direction: column; gap: 6px; }.governance-card { display: flex; justify-content: space-between; gap: 10px; align-items: center; padding: 10px; border: 1px solid var(--line-soft); border-radius: 8px; color: var(--text); }.governance-card:hover { border-color: var(--blue-200); color: var(--text); background: var(--blue-50); }.governance-card strong, .governance-card small { display: block; }.governance-card strong { margin: 6px 0 3px; font-size: 10px; }.governance-card small { color: var(--muted); font-size: 8px; }
.risk-score { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; font-size: 10px; font-weight: 800; }.rating-text { font-size: 8px; font-weight: 700; }.governance-section { margin-top: 11px; }


/* UX polish 0.5.1 -------------------------------------------------------- */
.attention-item { cursor: pointer; border-radius: 7px; transition: background .15s ease, box-shadow .15s ease, transform .15s ease; }
.attention-item:hover, .attention-item:focus-visible { background: var(--blue-50); color: var(--text); box-shadow: inset 0 0 0 1px var(--blue-200); transform: translateY(-1px); outline: none; }
.gantt-scroll { overflow: auto; scrollbar-gutter: stable; }
.gantt-compact .gantt-scroll { max-height: 420px; }
.full-gantt-card .gantt-scroll { max-height: 640px; }
.gantt-label-head { position: sticky; left: 0; top: 0; z-index: 12; border-right: 1px solid var(--line); box-shadow: 5px 0 10px rgba(16, 33, 63, .035); }
.gantt-timeline-head { position: sticky; top: 0; z-index: 10; }
.gantt-row-label { position: sticky; left: 0; z-index: 7; border-right: 1px solid var(--line-soft); box-shadow: 5px 0 10px rgba(16, 33, 63, .025); color: var(--text); }
.gantt-row-link { cursor: pointer; transition: background .14s ease, box-shadow .14s ease; }
.gantt-row-link:hover, .gantt-row-link:focus-visible { color: var(--text); background: var(--blue-50); box-shadow: inset 3px 0 var(--blue-600), 5px 0 10px rgba(16, 33, 63, .035); outline: none; }
.gantt-row-label.overdue-row-label { background: #fff9f9; box-shadow: inset 3px 0 var(--red), 5px 0 10px rgba(16, 33, 63, .025); }
.gantt-row-label.overdue-row-label strong { color: var(--red); }
.gantt-row-label.overdue-row-label small { color: #a4575b; }
.gantt-bar, .milestone-marker { transition: filter .14s ease, transform .14s ease, box-shadow .14s ease; }
.gantt-bar:hover, .gantt-bar:focus-visible { filter: saturate(1.15); box-shadow: 0 0 0 2px rgba(18, 103, 214, .2); outline: none; }
.milestone-marker:hover, .milestone-marker:focus-visible { transform: translateX(-50%) rotate(45deg) scale(1.2); outline: none; }
@media (min-width: 1500px) {
  .cockpit-kpis { grid-template-columns: repeat(6, minmax(0,1fr)); }
}

/* Responsive -------------------------------------------------------------- */
@media (max-width: 1380px) {
  :root { --sidebar: 182px; }
  .dashboard-kpis, .cockpit-kpis { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .dashboard-grid, .cockpit-grid { grid-template-columns: minmax(0,1fr) 310px; }
}
@media (max-width: 1100px) {
  .dashboard-grid, .cockpit-grid { grid-template-columns: 1fr; }
  .dashboard-rail, .cockpit-rail { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); }
  .overview-bottom-grid { grid-template-columns: 1fr; }
  .health-chart-wrap { grid-template-columns: 95px 1fr; }.health-donut { width: 88px; height: 88px; }
}
@media (max-width: 900px) {
  :root { --sidebar: 220px; }
  .sidebar { transform: translateX(-102%); transition: transform .22s ease; }
  .sidebar-open .sidebar { transform: translateX(0); }.sidebar-open .sidebar-overlay { display: block; }
  .sidebar-close { display: block; }.workspace { margin-left: 0; }.menu-toggle { display: block; }
  .last-update { display: none; }
  .dashboard-rail, .cockpit-rail { grid-template-columns: 1fr; }
  .milestone-grid, .governance-tab-grid, .governance-project-grid, .grid.two, .grid.three, .grid.four-cards { grid-template-columns: 1fr; }
  .summary-metrics { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 680px) {
  .page-content { padding: 14px 12px 28px; }.workspace-topbar { padding: 0 12px; }.project-switcher { min-width: 0; flex: 1; }.topbar-actions { gap: 5px; }
  .dashboard-heading, .page-header, .cockpit-header { flex-direction: column; }.cockpit-actions { justify-content: flex-start; }
  .dashboard-kpis, .cockpit-kpis, .metrics, .metrics.four, .metrics.six { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .project-tabs { overflow-x: auto; }.project-tabs a { white-space: nowrap; }
  .form-grid, .project-meta-grid { grid-template-columns: 1fr; }.form-grid .full { grid-column: auto; }
  .filters { align-items: stretch; flex-direction: column; }.filters input:not([type=checkbox]), .filters select { width: 100%; }
  .kpi-card { min-height: 78px; }.kpi-card strong { font-size: 16px; }.kpi-icon { width: 34px; height: 34px; }
}
@media (max-width: 430px) {
  .dashboard-kpis, .cockpit-kpis { grid-template-columns: 1fr; }
  .cockpit-actions .button { flex: 1; }.summary-metrics { grid-template-columns: 1fr; }
}

/* Release 0.5.2 — Branding and Gantt intelligence ----------------------- */
.omni-lockup { gap: 7px; }
.omni-logo-frame {
  width: 82px; height: 36px; display: grid; place-items: center; flex: none;
  padding: 3px 5px; border-radius: 6px; background: #fff;
  box-shadow: 0 2px 8px rgba(0, 15, 38, .18); overflow: hidden;
}
.omni-logo-frame img { display: block; width: 100%; height: 100%; object-fit: contain; }
.brand-divider { margin: 0 2px; height: 31px; }
.pipo-word { font-size: 19px; }

.status-completed-late { background: #fff0e3; color: #c96800; }
.critical-inline { margin-left: 7px; color: var(--red); font-size: 8px; font-weight: 800; text-transform: uppercase; }
.form-section-title { margin: 5px 0 -1px; padding: 10px 0 5px; border-bottom: 1px solid var(--line-soft); }
.form-section-title strong, .form-section-title span { display: block; }
.form-section-title strong { color: var(--navy-800); font-size: 12px; }
.form-section-title span { margin-top: 3px; color: var(--muted); font-size: 9px; }
.checkbox-card { display: flex !important; flex-direction: row !important; align-items: flex-start; gap: 10px; padding: 11px 12px; border: 1px solid var(--line); border-radius: 8px; background: #fbfcfe; cursor: pointer; }
.checkbox-card input { width: 17px; height: 17px; margin: 1px 0 0; accent-color: var(--blue-600); }
.checkbox-card span, .checkbox-card strong, .checkbox-card small { display: block; }
.checkbox-card strong { color: var(--text); font-size: 11px; }
.checkbox-card small { margin-top: 4px; color: var(--muted); font-size: 9px; font-weight: 400; line-height: 1.45; }
.late-summary { align-self: end; padding: 9px 11px; border: 1px solid #f1d0b0; border-radius: 8px; background: #fff8ed; }
.late-summary strong, .late-summary span { display: block; }
.late-summary strong { color: #b65d00; font-size: 10px; }
.late-summary span { margin-top: 3px; color: #90643b; font-size: 8px; }

.gantt-toolbar { align-items: flex-start; }
.gantt-toolbar-right { margin-left: auto; display: flex; align-items: center; justify-content: flex-end; gap: 10px; flex-wrap: wrap; }
.gantt-controls { display: inline-flex; align-items: center; padding: 2px; border: 1px solid var(--line-soft); border-radius: 6px; background: #f8fafc; }
.gantt-controls button { min-height: 25px; padding: 4px 7px; border: 0; border-radius: 4px; background: transparent; color: var(--muted); font-size: 8px; font-weight: 700; cursor: pointer; }
.gantt-controls button:hover, .gantt-controls button.active { color: var(--blue-700); background: #fff; box-shadow: 0 1px 4px rgba(12, 50, 102, .08); }
.legend-swatch.completed-late { border: 1px solid #d36a13; background: repeating-linear-gradient(135deg, #f7a04a 0 2px, #fff3e5 2px 4px); }
.legend-critical { width: 12px; height: 6px; border: 1px dashed var(--red); border-radius: 1px; background: #fff; }
.gantt-grid { min-width: 930px; }
.gantt-row-label.group-label { gap: 5px; }
.gantt-row-label.group-label .gantt-row-link { min-width: 0; flex: 1; display: flex; align-items: center; gap: 7px; color: var(--text); }
.gantt-toggle { width: 18px; height: 18px; display: grid; place-items: center; flex: none; padding: 0; border: 0; border-radius: 4px; color: var(--blue-700); background: transparent; cursor: pointer; font-size: 13px; transition: transform .15s ease, background .15s ease; }
.gantt-toggle:hover { background: var(--blue-100); }
.gantt-toggle[aria-expanded="false"] { transform: rotate(-90deg); }
.gantt-row-hidden { display: none !important; }
.gantt-row-label.critical-row-label { box-shadow: inset 3px 0 var(--red), 5px 0 10px rgba(16,33,63,.025); }
.gantt-row-label.critical-row-label strong { color: #9b2730; }
.row-state.completed-late { color: var(--green); border-color: #20a66a; background: #ecf9f2; }
.today-line::before { display: none !important; content: none !important; }
.today-line { z-index: 5; width: 1.5px; background: var(--navy-800); pointer-events: none; }
.target-line, .forecast-line { position: absolute; top: 0; bottom: 0; z-index: 2; width: 1px; pointer-events: none; }
.target-line { border-left: 1px dashed #6b54d9; }
.forecast-line { border-left: 1px dashed var(--amber); }
.target-head, .forecast-head { position: absolute; bottom: 1px; z-index: 4; transform: translateX(-50%); padding: 2px 4px; border-radius: 3px; color: #fff; font-size: 6px; font-weight: 800; white-space: nowrap; }
.target-head { background: #6b54d9; }
.forecast-head { background: var(--amber); }
.baseline-bar { position: absolute; top: 21px; z-index: 2; height: 3px; min-width: 5px; border-radius: 2px; background: #aeb9c8; opacity: .78; }
.gantt-bar { top: 7px; height: 11px; }
.gantt-bar.completed-late { background: var(--green); }
.gantt-bar.completed-late .gantt-progress { background: #167948; }
.gantt-bar.critical-path, .late-extension.critical-path { outline: 1px dashed var(--red); outline-offset: 2px; }
.late-extension { position: absolute; top: 7px; z-index: 4; height: 11px; min-width: 4px; border: 1px dashed var(--red); border-radius: 1px; background: repeating-linear-gradient(135deg, rgba(215,61,67,.75) 0 2px, rgba(255,240,241,.95) 2px 5px); }
.late-extension.completed { border-color: #d36a13; background: repeating-linear-gradient(135deg, #ed8d35 0 2px, #fff2e2 2px 5px); }
.milestone-marker.baseline { z-index: 3; background: #fff; border: 1px solid #8290a4; box-shadow: 0 0 0 1px #8290a4; opacity: .78; }
.milestone-marker.current { z-index: 5; }
.milestone-marker.completed-late { background: var(--green); box-shadow: 0 0 0 1px #167948; }
.milestone-marker.baseline.completed-late-baseline { background: #fff7e8; border-color: #e68a24; box-shadow: 0 0 0 1px #e68a24; opacity: 1; }
.milestone-marker.critical-path { box-shadow: 0 0 0 2px #fff, 0 0 0 3px var(--red); }
.delay-label { top: 5px; padding: 2px 4px; border-radius: 3px; background: rgba(255,255,255,.92); font-weight: 700; }
.gantt-compact .gantt-bar, .gantt-compact .late-extension { top: 6px; height: 10px; }
.gantt-compact .baseline-bar { top: 19px; }
.health-legend .health-submetric { min-height: 22px; color: #9b5c1d; border-bottom: 0; font-size: 8px; }
.health-legend i.late { border-radius: 2px; background: repeating-linear-gradient(135deg, #ed8d35 0 2px, #fff2e2 2px 4px); }


/* Release 0.6.0.1 — completed-late items are completed first, delayed second. */
.gantt-row-label.completed-late-row-label { background: #fff; box-shadow: none; }
.gantt-row-label.completed-late-row-label strong { color: var(--text); }
.gantt-row-label.completed-late-row-label small { color: var(--muted); }
.gantt-label-copy { min-width: 0; display: block; }
.completion-late-note { display: block; margin-top: 3px; color: #c96800; font-size: 8px; font-style: normal; font-weight: 700; }
.delay-label.completed-late-delay { color: #c96800; background: rgba(255, 250, 242, .96); }
.completed-late-row { background: #fffdf8; }
.completed-late-row td:first-child { box-shadow: inset 2px 0 #e68a24; }

/* Dashboard table fits the executive viewport without unnecessary scroll. */
.portfolio-table-wrap { overflow-x: visible; }
.portfolio-table { min-width: 0; width: 100%; table-layout: fixed; }
.portfolio-table th:nth-child(1), .portfolio-table td:nth-child(1) { width: 34%; }
.portfolio-table th:nth-child(2), .portfolio-table td:nth-child(2) { width: 10%; }
.portfolio-table th:nth-child(3), .portfolio-table td:nth-child(3) { width: 15%; }
.portfolio-table th:nth-child(4), .portfolio-table td:nth-child(4) { width: 13%; }
.portfolio-table th:nth-child(5), .portfolio-table td:nth-child(5) { width: 17%; }
.portfolio-table th:nth-child(6), .portfolio-table td:nth-child(6) { width: 11%; }
.portfolio-table td { overflow: hidden; }
.portfolio-table td strong, .portfolio-table td small { overflow: hidden; text-overflow: ellipsis; }
.health-cell small { margin-top: 4px; }

@media (max-width: 1450px) {
  .omni-logo-frame { width: 78px; }
  .dashboard-grid { grid-template-columns: minmax(0, 1fr) 315px; }
  .portfolio-table th, .portfolio-table td { padding-left: 8px; padding-right: 8px; }
}
@media (max-width: 1100px) {
  .portfolio-table th:nth-child(2), .portfolio-table td:nth-child(2) { display: none; }
  .portfolio-table th:nth-child(1), .portfolio-table td:nth-child(1) { width: 39%; }
  .portfolio-table th:nth-child(3), .portfolio-table td:nth-child(3) { width: 17%; }
  .portfolio-table th:nth-child(4), .portfolio-table td:nth-child(4) { width: 15%; }
  .portfolio-table th:nth-child(5), .portfolio-table td:nth-child(5) { width: 18%; }
  .portfolio-table th:nth-child(6), .portfolio-table td:nth-child(6) { width: 11%; }
}

/* Release 0.5.2.1 — Branding & KPI Polish ------------------------------- */
/* Official white Omni lockup sits directly on the sidebar background. */
.omni-lockup { gap: 7px; }
.omni-logo-frame {
  width: 91px;
  height: 34px;
  padding: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  overflow: visible;
}
.omni-logo-frame img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: left center;
}
.brand-divider { height: 31px; background: rgba(255,255,255,.24); }

/* Compact executive KPI strip: six cards in one row on standard desktops. */
.dashboard-kpis,
.cockpit-kpis {
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 10px;
}
.dashboard-kpis .kpi-card,
.cockpit-kpis .kpi-card {
  min-height: 66px;
  gap: 8px;
  padding: 9px 10px;
  border-radius: 9px;
}
.dashboard-kpis .kpi-icon,
.cockpit-kpis .kpi-icon {
  width: 30px;
  height: 30px;
  border-radius: 7px;
  font-size: 15px;
}
.dashboard-kpis .mini-donut,
.cockpit-kpis .mini-donut {
  width: 36px;
  height: 36px;
  flex-basis: 36px;
}
.dashboard-kpis .mini-donut::after,
.cockpit-kpis .mini-donut::after { inset: 5px; }
.dashboard-kpis .mini-donut b,
.cockpit-kpis .mini-donut b { font-size: 8px; }
.dashboard-kpis .kpi-card small,
.cockpit-kpis .kpi-card small { font-size: 7.5px; letter-spacing: .035em; }
.dashboard-kpis .kpi-card strong,
.cockpit-kpis .kpi-card strong {
  margin: 3px 0 2px;
  font-size: 14px;
  line-height: 1.05;
}
.dashboard-kpis .kpi-card > div > span,
.cockpit-kpis .kpi-card > div > span { font-size: 7.5px; }

/* Keep the six-card strip through common 1366/1440 laptop resolutions. */
@media (max-width: 1380px) and (min-width: 1181px) {
  .dashboard-kpis, .cockpit-kpis { grid-template-columns: repeat(6, minmax(0,1fr)); }
  .dashboard-kpis .kpi-card, .cockpit-kpis .kpi-card { padding-left: 8px; padding-right: 8px; gap: 6px; }
  .dashboard-kpis .kpi-icon, .cockpit-kpis .kpi-icon { width: 27px; height: 27px; font-size: 13px; }
  .dashboard-kpis .mini-donut, .cockpit-kpis .mini-donut { width: 33px; height: 33px; flex-basis: 33px; }
  .dashboard-kpis .kpi-card strong, .cockpit-kpis .kpi-card strong { font-size: 12.5px; }
  .dashboard-kpis .kpi-card small,
  .cockpit-kpis .kpi-card small,
  .dashboard-kpis .kpi-card > div > span,
  .cockpit-kpis .kpi-card > div > span { font-size: 7px; }
}
@media (max-width: 1180px) {
  .dashboard-kpis, .cockpit-kpis { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (max-width: 680px) {
  .dashboard-kpis, .cockpit-kpis { grid-template-columns: repeat(2, minmax(0,1fr)); }
}
@media (max-width: 430px) {
  .dashboard-kpis, .cockpit-kpis { grid-template-columns: 1fr; }
}

/* Release 0.6.0 — Users, Access & Audit ------------------------------- */
.sidebar-account-actions { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 7px 2px; }
.sidebar-account-actions a, .sidebar-account-actions button { border:0; background:transparent; color:#9eb1cc; padding:3px 0; font-size:9px; cursor:pointer; }
.sidebar-account-actions a:hover, .sidebar-account-actions button:hover { color:#fff; }
.sidebar-settings.active { color:#fff; background:rgba(255,255,255,.08); }
.auth-page { min-height:100vh; background:#eef3fa; }
.auth-shell { min-height:100vh; display:grid; grid-template-columns:minmax(360px, 1.05fr) minmax(360px,.95fr); }
.auth-brand-panel { display:flex; flex-direction:column; justify-content:space-between; padding:52px 64px; color:#fff; background:radial-gradient(circle at 15% 10%,rgba(32,126,242,.28),transparent 32%),linear-gradient(145deg,#061a37,#0a3973); }
.auth-brand-lockup { display:flex; align-items:center; gap:16px; }
.auth-brand-lockup img { width:132px; height:48px; object-fit:contain; }
.auth-brand-lockup span { width:1px; height:39px; background:rgba(255,255,255,.25); }
.auth-brand-lockup strong { font-size:28px; letter-spacing:.04em; }
.auth-brand-panel .eyebrow { color:#75b9ff; }
.auth-brand-panel h1 { max-width:650px; color:#fff; font-size:42px; line-height:1.08; }
.auth-brand-panel p { max-width:620px; color:#c4d7ee; font-size:16px; }
.auth-brand-panel > small { color:#8eabc9; }
.auth-card { align-self:center; width:min(440px, calc(100% - 48px)); margin:auto; padding:38px; border:1px solid var(--line); border-radius:18px; background:#fff; box-shadow:var(--shadow-lg); }
.auth-card-header h2 { font-size:28px; margin-bottom:6px; }
.auth-card-header p, .auth-help { font-size:11px; }
.auth-form { display:grid; gap:17px; margin-top:24px; }
.auth-form label, .form-card label { display:flex; flex-direction:column; gap:6px; color:var(--text); font-size:10px; font-weight:700; }
.auth-form input, .form-card input, .form-card select, .form-card textarea { width:100%; min-height:39px; padding:9px 11px; border:1px solid var(--line); border-radius:7px; background:#fff; color:var(--text); }
.auth-submit { width:100%; min-height:43px; margin-top:4px; }
.auth-help { margin:20px 0 0; text-align:center; }
.narrow-form-page { max-width:780px; margin:auto; }
.access-denied-card { max-width:620px; margin:80px auto; padding:54px; border:1px solid #f0c7ca; border-radius:16px; background:#fff; text-align:center; box-shadow:var(--shadow-lg); }
.access-denied-icon { width:58px; height:58px; margin:0 auto 18px; display:grid; place-items:center; border-radius:50%; color:var(--red); background:var(--red-bg); font-size:30px; font-weight:800; }
.admin-kpis { margin-bottom:16px; }
.admin-grid { display:grid; grid-template-columns:minmax(280px,.8fr) minmax(0,1.2fr); gap:14px; }
.admin-shortcuts { display:grid; gap:5px; }
.admin-shortcuts .card-heading { margin-bottom:7px; }
.admin-shortcuts > a { display:flex; flex-direction:column; gap:4px; padding:12px; border:1px solid var(--line-soft); border-radius:8px; color:var(--text); }
.admin-shortcuts > a:hover { border-color:var(--blue-200); background:var(--blue-50); }
.admin-shortcuts > a strong { font-size:12px; }
.admin-shortcuts > a span { color:var(--muted); font-size:9px; }
.audit-feed { display:grid; gap:10px; }
.audit-feed > div { display:flex; gap:9px; align-items:flex-start; padding-bottom:10px; border-bottom:1px solid var(--line-soft); }
.audit-dot { width:8px; height:8px; margin-top:4px; border-radius:50%; background:var(--blue-600); }
.audit-feed strong, .audit-feed small { display:block; }
.audit-feed strong { font-size:10px; }
.audit-feed small { margin-top:3px; color:var(--muted); font-size:8px; }
.user-cell { display:flex; align-items:center; gap:9px; }
.user-cell strong, .user-cell small, .data-table td > small { display:block; }
.user-cell small, .data-table td > small { margin-top:3px; color:var(--muted); font-size:8px; }
.admin-user-actions { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:14px; }
.admin-user-actions .form-card { display:flex; flex-direction:column; gap:10px; }
.permission-table td:not(:first-child), .permission-table th:not(:first-child) { text-align:center; }
.access-member-list { display:grid; gap:8px; }
.access-member-list > div { display:grid; grid-template-columns:auto minmax(0,1fr) auto; align-items:center; gap:9px; padding:9px; border:1px solid var(--line-soft); border-radius:8px; }
.access-member-list strong, .access-member-list small { display:block; }
.access-member-list small { color:var(--muted); font-size:8px; margin-top:3px; }
.audit-table details { max-width:430px; }
.audit-table summary { cursor:pointer; color:var(--blue-700); font-size:9px; font-weight:700; }
.audit-table pre { max-width:420px; max-height:180px; overflow:auto; padding:8px; border-radius:6px; background:#f5f7fb; white-space:pre-wrap; font-size:8px; }
.empty-inline { margin:0; padding:18px; text-align:center; font-size:10px; }
@media (max-width:900px){.auth-shell{grid-template-columns:1fr}.auth-brand-panel{display:none}.admin-grid,.admin-user-actions{grid-template-columns:1fr}}

/* Release 0.6.1 — Portfolio Timeline & Macro Gantt ---------------------- */
.portfolio-header { align-items:flex-end; }
.page-header-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.portfolio-kpi-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); gap:9px; margin-bottom:12px; }
.portfolio-kpi { min-height:70px; display:flex; align-items:center; gap:9px; padding:10px 11px; border:1px solid var(--line); border-radius:10px; background:#fff; box-shadow:var(--shadow); }
.portfolio-kpi .kpi-symbol { width:31px; height:31px; flex:0 0 31px; display:grid; place-items:center; border-radius:8px; background:var(--blue-50); color:var(--blue-600); font-weight:800; }
.portfolio-kpi small,.portfolio-kpi strong,.portfolio-kpi div>span { display:block; }
.portfolio-kpi small { color:var(--muted); font-size:7.5px; text-transform:uppercase; letter-spacing:.045em; }
.portfolio-kpi strong { margin:3px 0 2px; font-size:17px; line-height:1; }
.portfolio-kpi div>span { color:var(--muted-2); font-size:7.5px; }
.portfolio-kpi.warning { border-color:#f1d39b; background:#fffdf8; }.portfolio-kpi.warning .kpi-symbol { background:var(--amber-bg); color:var(--amber); }
.portfolio-kpi.danger { border-color:#f0c4c8; background:#fffafa; }.portfolio-kpi.danger .kpi-symbol { background:var(--red-bg); color:var(--red); }
.portfolio-filters { display:grid; grid-template-columns:minmax(210px,1.4fr) repeat(6,minmax(120px,.7fr)) auto; gap:8px; margin-bottom:12px; padding:11px; }
.portfolio-filters input,.portfolio-filters select { min-width:0; height:36px; border:1px solid var(--line); border-radius:7px; padding:0 9px; background:#fff; color:var(--text); font-size:9px; }
.portfolio-gantt-panel,.portfolio-table-panel { margin-bottom:14px; }
.panel-heading { margin-bottom:12px; }.split-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:18px; }
.split-heading h2 { margin-bottom:3px; }.split-heading p { margin:0; font-size:9px; }
.portfolio-legend { display:flex; gap:12px; align-items:center; flex-wrap:wrap; color:var(--muted); font-size:8px; }
.portfolio-legend span { display:flex; align-items:center; gap:4px; white-space:nowrap; }.portfolio-legend i { width:16px; height:6px; display:inline-block; border-radius:3px; }
.portfolio-legend .acceptance { background:#9fc4fb; }.portfolio-legend .original { width:9px;height:9px;transform:rotate(45deg);background:#fff;border:2px solid #9ba9bb;border-radius:1px; }.portfolio-legend .forecast { width:9px;height:9px;transform:rotate(45deg);background:var(--blue-600); }.portfolio-legend .eis { width:9px;height:9px;border-radius:50%;background:var(--green); }
.portfolio-gantt-scroll { overflow:auto; border:1px solid var(--line); border-radius:9px; }
.portfolio-gantt { min-width:1450px; display:grid; grid-template-columns:330px minmax(1100px,1fr); background:#fff; }
.portfolio-gantt-head { position:sticky; top:0; z-index:7; min-height:48px; display:flex; align-items:center; padding:0 12px; border-bottom:1px solid var(--line); background:#f8fafd; color:#53657d; font-size:8px; font-weight:800; letter-spacing:.04em; }
.sticky-project-col { position:sticky; left:0; z-index:6; border-right:1px solid var(--line); }
.portfolio-timeline-head { position:sticky; top:0; z-index:5; min-height:48px; border-bottom:1px solid var(--line); background:#f8fafd; }
.portfolio-month { position:absolute; top:0; bottom:0; display:flex; align-items:center; justify-content:center; flex-direction:column; border-left:1px solid var(--line-soft); color:#354c6d; font-size:9px; font-weight:700; }.portfolio-month small { margin-top:2px; color:var(--muted-2); font-size:7px; }
.portfolio-project-cell { min-height:68px; display:grid; grid-template-columns:38px minmax(0,1fr) 10px; gap:9px; align-items:center; padding:9px 11px; border-bottom:1px solid var(--line-soft); background:#fff; color:var(--text); }
.portfolio-project-cell:hover { color:var(--text); background:#f8fbff; }
.portfolio-aircraft-avatar { width:36px;height:36px;display:grid;place-items:center;border-radius:8px;background:var(--blue-100);color:#275da3;font-size:9px;font-weight:800; }
.portfolio-project-copy { min-width:0; }.portfolio-project-copy strong,.portfolio-project-copy small,.portfolio-project-copy em { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.portfolio-project-copy strong { font-size:10px; }.portfolio-project-copy small { margin-top:3px;color:var(--muted);font-size:7.5px; }.portfolio-project-copy em { margin-top:3px;color:var(--muted-2);font-size:7px;font-style:normal; }
.health-dot { width:8px;height:8px;border-radius:50%;background:#94a1b2; }.health-dot.critical { background:var(--red);box-shadow:0 0 0 3px var(--red-bg); }.health-dot.at-risk { background:var(--amber); }.health-dot.attention { background:#e6b13c; }.health-dot.on-track { background:var(--green); }.health-dot.completed { background:var(--blue-600); }
.portfolio-timeline-row { position:relative; min-height:68px; border-bottom:1px solid var(--line-soft); background:#fff; color:var(--text); overflow:hidden; }
.portfolio-timeline-row:hover { background:#fbfdff; }
.portfolio-gridline { position:absolute; top:0; bottom:0; border-left:1px solid var(--line-soft); }
.portfolio-today,.portfolio-today-line { position:absolute; top:0; bottom:0; z-index:4; width:0; border-left:1.5px solid var(--navy-800); }.portfolio-today span { position:absolute; top:4px; left:0; transform:translateX(-50%); padding:3px 6px; border-radius:4px; background:var(--navy-800);color:#fff;font-size:7px;font-weight:700; }
.portfolio-today-line { z-index:1; opacity:.8; }
.portfolio-acceptance-bar { position:absolute; top:17px; height:8px; min-width:5px; border-radius:4px; background:#a7c8f7; box-shadow:inset 0 0 0 1px #84afe9; }
.portfolio-variance-line { position:absolute; top:34px; height:0; border-top:2px dashed #9ba9bb; }.portfolio-variance-line::after { content:""; position:absolute; right:-2px; top:-4px; width:6px;height:6px;border-radius:50%;background:#9ba9bb; }.portfolio-variance-line.late { border-color:var(--amber); }.portfolio-variance-line.late::after { background:var(--amber); }.portfolio-variance-line.early { border-color:var(--green); }.portfolio-variance-line.early::after { background:var(--green); }
.portfolio-event { position:absolute; top:29px; z-index:3; transform:translateX(-50%); color:var(--muted); font-size:6.5px; white-space:nowrap; text-align:center; }.portfolio-event i { display:block; width:9px;height:9px;margin:0 auto 4px;transform:rotate(45deg);background:#fff;border:2px solid #99a8ba;border-radius:1px; }.portfolio-event b { display:none; font-weight:700; }.portfolio-event em { position:absolute; left:8px; top:-3px; padding:2px 3px;border-radius:4px;background:var(--amber-bg);color:var(--amber);font-size:6px;font-style:normal;font-weight:800; }
.portfolio-event.forecast i { background:var(--blue-600);border-color:var(--navy-800); }.portfolio-event.pickup i,.portfolio-event.arrival i { background:#fff;border-color:var(--blue-500); }.portfolio-event.eis i { border-radius:50%;transform:none;background:var(--green);border-color:#147d4b; }.portfolio-event.contract i { transform:none;width:3px;height:13px;border:0;border-radius:1px;background:var(--green); }
.portfolio-table td strong,.portfolio-table td small { display:block; }.portfolio-table td small { margin-top:3px;color:var(--muted);font-size:7px; }.clickable-row { cursor:pointer; }.clickable-row:hover { background:#f7fbff; }
.variance-badge,.health-badge { display:inline-flex; align-items:center; padding:4px 6px;border-radius:999px;background:#eef2f6;color:#56677d;font-size:7px;font-weight:800;white-space:nowrap; }.variance-badge.late { background:var(--amber-bg);color:var(--amber); }.variance-badge.early { background:var(--green-bg);color:var(--green); }
.health-badge.critical { background:var(--red-bg);color:var(--red); }.health-badge.at-risk,.health-badge.attention { background:var(--amber-bg);color:var(--amber); }.health-badge.on-track { background:var(--green-bg);color:var(--green); }.health-badge.completed { background:var(--blue-100);color:var(--blue-700); }
.project-form { padding:0; overflow:hidden; }.form-section { padding:18px; border-bottom:1px solid var(--line-soft); }.form-section:last-of-type { border-bottom:0; }.form-section-heading { display:flex; gap:10px; align-items:flex-start; margin-bottom:15px; }.form-section-heading>span { width:25px;height:25px;flex:0 0 25px;display:grid;place-items:center;border-radius:7px;background:var(--blue-100);color:var(--blue-700);font-size:10px;font-weight:800; }.form-section-heading h2 { margin:1px 0 3px; }.form-section-heading p { margin:0;font-size:9px; }.form-actions-sticky { position:sticky; bottom:0; justify-content:flex-end; padding:12px 18px; background:rgba(255,255,255,.96);border-top:1px solid var(--line);backdrop-filter:blur(8px); }
.import-panel,.import-validation { max-width:1200px; margin:0 auto 14px; }.import-upload-form { display:flex;gap:12px;align-items:flex-end; }.file-drop { flex:1; min-height:90px; display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;border:1px dashed #9db5d4;border-radius:10px;background:#f8fbff;color:var(--text);cursor:pointer; }.file-drop input { max-width:320px; }.file-drop strong { font-size:11px; }.file-drop span { color:var(--muted);font-size:8px; }.import-errors { padding:13px;border-radius:8px;background:var(--red-bg);color:#9f2930;font-size:9px; }.import-errors ul { margin:8px 0 0;padding-left:18px; }.import-validation .actions { justify-content:flex-end;margin-top:13px; }
@media(max-width:1450px){.portfolio-filters{grid-template-columns:repeat(4,minmax(0,1fr));}.portfolio-kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:850px){.portfolio-kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.portfolio-filters{grid-template-columns:1fr 1fr}.portfolio-header,.split-heading{align-items:flex-start;flex-direction:column}.import-upload-form{flex-direction:column;align-items:stretch}}
@media(max-width:520px){.portfolio-kpi-grid,.portfolio-filters{grid-template-columns:1fr}.portfolio-gantt{grid-template-columns:280px minmax(1100px,1fr)}}
.card-footer-link { margin-top:12px; padding-top:10px; border-top:1px solid var(--line-soft); text-align:right; font-size:9px; font-weight:700; }

/* Release 0.6.1.1 — Unified Milestones & Gantt Hierarchy ---------------- */
/* Etapas are visually dominant; executable activities are nested. */
.gantt-row-label.group-label,
.gantt-row-track.group-track {
  min-height: 43px;
  background: #f4f8fd;
  border-top: 1px solid #cfdbeb;
  border-bottom-color: #dbe4ef;
}
.gantt-row-label.group-label {
  box-shadow: inset 3px 0 #4d86d8, 5px 0 10px rgba(16, 33, 63, .035);
}
.gantt-row-label.group-label .gantt-row-link { align-items: flex-start; padding-top: 2px; }
.gantt-row-label.group-label .row-state { margin-top: 3px; }
.gantt-row-label.group-label strong { font-size: 10px; color: var(--navy-800); }
.gantt-row-label.group-label small { color: #607590; }
.gantt-row-label.child-label {
  position: sticky;
  padding-left: 47px;
  background: #fff;
}
.gantt-row-label.child-label::before {
  content: "";
  position: absolute;
  left: 27px;
  top: 0;
  bottom: 0;
  width: 1px;
  background: #d2dfed;
}
.gantt-child-connector {
  position: absolute;
  left: 27px;
  top: 50%;
  width: 13px;
  height: 1px;
  background: #aabdd4;
}
.gantt-row-label.child-label .row-state { width: 14px; height: 14px; font-size: 7px; }
.gantt-row-label.child-label strong { font-size: 9px; font-weight: 650; }
.gantt-kind-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  margin-bottom: 2px;
  color: #2766b5;
  font-size: 6.5px;
  font-weight: 850;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.gantt-kind-badge i {
  padding: 1px 4px;
  border-radius: 5px;
  color: #fff;
  background: #6b54d9;
  font-size: 5.5px;
  font-style: normal;
  letter-spacing: .02em;
}
.gantt-kind-badge.activity { color: #7c8da3; }
.macro-baseline-bar {
  position: absolute;
  top: 29px;
  z-index: 2;
  height: 3px;
  min-width: 5px;
  border-radius: 2px;
  background: #9daabc;
  opacity: .8;
}
.macro-summary-bar {
  position: absolute;
  top: 12px;
  z-index: 4;
  height: 12px;
  min-width: 7px;
  overflow: hidden;
  border: 1px solid #7ba5dc;
  border-radius: 6px;
  background: #d9e8fb;
}
.macro-summary-bar > span { display: block; height: 100%; background: #2f6fd2; }
.macro-summary-bar.status-completed { border-color: #1b935b; background: #dff5e9; }
.macro-summary-bar.status-completed > span { background: #249b62; }
.macro-summary-bar.status-on_hold { border-color: #d99018; background: #fff3d6; }
.macro-summary-bar.status-on_hold > span { background: #e2a12f; }
.macro-summary-bar.critical-path { outline: 1px dashed var(--red); outline-offset: 2px; }
.gantt-compact .gantt-row-label.group-label,
.gantt-compact .gantt-row-track.group-track { min-height: 38px; }
.gantt-compact .macro-summary-bar { top: 10px; height: 10px; }
.gantt-compact .macro-baseline-bar { top: 26px; }

/* Single-source portfolio guidance and source milestones. */
.single-source-card {
  display: flex;
  gap: 13px;
  align-items: flex-start;
  padding: 15px;
  border: 1px solid #cddcf0;
  border-radius: 10px;
  background: linear-gradient(135deg, #f5f9ff, #fff);
}
.single-source-icon {
  width: 34px;
  height: 34px;
  display: grid;
  place-items: center;
  flex: none;
  border-radius: 9px;
  color: #fff;
  background: var(--blue-600);
}
.single-source-card strong { display: block; color: var(--navy-800); font-size: 12px; }
.single-source-card p { margin: 5px 0 10px; color: var(--muted); font-size: 9px; line-height: 1.55; }
.single-source-card small { color: var(--muted); font-size: 9px; }
.portfolio-source-list { display: grid; gap: 6px; margin-top: 10px; }
.portfolio-source-list a {
  display: grid;
  grid-template-columns: 145px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  padding: 9px 11px;
  border: 1px solid var(--line-soft);
  border-radius: 8px;
  color: var(--text);
  background: #fff;
}
.portfolio-source-list a:hover { border-color: #9dbce7; background: #fbfdff; }
.portfolio-source-list strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 10px; }
.portfolio-source-list time { color: var(--muted); font-size: 9px; }
.portfolio-source-badge,
.portfolio-badge {
  display: inline-flex;
  width: fit-content;
  padding: 3px 6px;
  border-radius: 6px;
  color: #553bb8;
  background: #eeeaff;
  font-size: 7px;
  font-weight: 800;
}

/* Portfolio markers link back to their single source milestone. */
.portfolio-timeline-row[data-href] { cursor: pointer; }
a.portfolio-event, a.portfolio-acceptance-bar { cursor: pointer; text-decoration: none; }
a.portfolio-event:hover i { box-shadow: 0 0 0 3px rgba(47,111,210,.13); }
a.portfolio-acceptance-bar:hover { filter: brightness(.94); box-shadow: inset 0 0 0 1px #5c91d7, 0 0 0 3px rgba(47,111,210,.10); }
.portfolio-event.custom i { background:#6b54d9; border-color:#4f3ba9; }

@media (max-width: 760px) {
  .portfolio-source-list a { grid-template-columns: 1fr; gap: 4px; }
}

/* Release 0.6.1.2 — Clean Workspace Foundation ------------------------- */
.page-header-actions,
.panel-actions,
.portfolio-gantt-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 7px;
  flex-wrap: wrap;
}
.panel-actions > a { font-size: 10px; font-weight: 700; }
.icon-button,
.panel-toggle,
.drawer-close,
.sidebar-collapse-toggle {
  display: inline-grid;
  place-items: center;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--navy-800);
  cursor: pointer;
}
.icon-button {
  width: 30px;
  height: 30px;
  border-radius: 7px;
  font-size: 14px;
}
.icon-button:hover,
.icon-button.is-active,
.panel-toggle:hover,
.sidebar-collapse-toggle:hover,
.workspace-toggle.is-active {
  border-color: #a9c4e9;
  background: var(--blue-50);
  color: var(--blue-700);
}
.panel-toggle {
  width: 24px;
  height: 24px;
  padding: 0;
  border-color: transparent;
  border-radius: 6px;
  background: transparent;
  font-size: 12px;
}
.collapsible-panel.is-collapsed {
  padding-bottom: 10px;
  box-shadow: none;
}
.collapsible-panel.is-collapsed .card-heading,
.collapsible-panel.is-collapsed .panel-heading { margin-bottom: 0; }
[data-panel-content][hidden],
[data-disclosure-target][hidden] { display: none !important; }

/* Less visual chrome in the executive and planning workspaces. */
.dashboard-workspace-page .card,
.project-workspace-page .card,
.portfolio-workspace-page .panel,
.dashboard-workspace-page .kpi-card,
.project-workspace-page .kpi-card,
.portfolio-workspace-page .portfolio-kpi {
  box-shadow: 0 2px 10px rgba(18, 42, 76, .035);
}
.project-workspace-page .gantt-card,
.project-workspace-page .full-gantt-card,
.portfolio-workspace-page .portfolio-gantt-panel {
  border-color: #d5dfeb;
}
.project-workspace-page .cockpit-header,
.portfolio-workspace-page .portfolio-header,
.dashboard-workspace-page .dashboard-heading { margin-bottom: 13px; }
.project-workspace-page .overview-bottom-grid { margin-top: 9px; }

/* Persistent compact sidebar on desktop. */
.sidebar-collapse-toggle {
  width: 30px;
  height: 30px;
  flex: 0 0 30px;
  border-radius: 7px;
  font-size: 14px;
}
body.sidebar-collapsed,
body.gantt-focus-mode { --sidebar: 68px; }
body.sidebar-collapsed .sidebar,
body.gantt-focus-mode .sidebar { padding-left: 8px; padding-right: 8px; }
body.sidebar-collapsed .sidebar-brand,
body.gantt-focus-mode .sidebar-brand { justify-content: center; padding-left: 0; padding-right: 0; }
body.sidebar-collapsed .omni-lockup,
body.gantt-focus-mode .omni-lockup { justify-content: center; width: 100%; }
body.sidebar-collapsed .omni-logo-frame,
body.gantt-focus-mode .omni-logo-frame { width: 45px; height: 31px; }
body.sidebar-collapsed .brand-divider,
body.sidebar-collapsed .pipo-word,
body.sidebar-collapsed .sidebar-product,
body.sidebar-collapsed .sidebar-nav a span,
body.sidebar-collapsed .sidebar-settings span,
body.sidebar-collapsed .sidebar-user span:last-child,
body.sidebar-collapsed .sidebar-account-actions,
body.sidebar-collapsed .sidebar-version,
body.gantt-focus-mode .brand-divider,
body.gantt-focus-mode .pipo-word,
body.gantt-focus-mode .sidebar-product,
body.gantt-focus-mode .sidebar-nav a span,
body.gantt-focus-mode .sidebar-settings span,
body.gantt-focus-mode .sidebar-user span:last-child,
body.gantt-focus-mode .sidebar-account-actions,
body.gantt-focus-mode .sidebar-version { display: none; }
body.sidebar-collapsed .sidebar-nav a,
body.sidebar-collapsed .sidebar-settings,
body.gantt-focus-mode .sidebar-nav a,
body.gantt-focus-mode .sidebar-settings { justify-content: center; padding: 0; }
body.sidebar-collapsed .sidebar-user,
body.gantt-focus-mode .sidebar-user { justify-content: center; padding-left: 0; padding-right: 0; }
body.sidebar-collapsed .sidebar-nav svg,
body.sidebar-collapsed .sidebar-settings svg,
body.gantt-focus-mode .sidebar-nav svg,
body.gantt-focus-mode .sidebar-settings svg { width: 21px; height: 21px; }
body.sidebar-collapsed .sidebar-nav a.active,
body.gantt-focus-mode .sidebar-nav a.active { box-shadow: none; }

/* Filter drawer: controls are available on demand without shrinking Gantt. */
.ui-drawer-overlay {
  display: block;
  position: fixed;
  inset: 0;
  z-index: 69;
  background: rgba(3, 18, 40, .36);
  opacity: 0;
  visibility: hidden;
  transition: opacity .18s ease, visibility .18s ease;
}
.ui-drawer {
  position: fixed;
  top: 0;
  right: 0;
  z-index: 70;
  width: min(430px, 92vw);
  height: 100vh;
  padding: 20px;
  overflow-y: auto;
  background: #fff;
  border-left: 1px solid var(--line);
  box-shadow: -18px 0 45px rgba(5, 27, 61, .16);
  transform: translateX(102%);
  visibility: hidden;
  transition: transform .2s ease, visibility .2s ease;
}
.ui-drawer.is-open { transform: translateX(0); visibility: visible; }
body.drawer-open { overflow: hidden; }
body.drawer-open .ui-drawer-overlay { opacity: 1; visibility: visible; }
.ui-drawer-header {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  padding-bottom: 15px;
  border-bottom: 1px solid var(--line-soft);
}
.ui-drawer-header h2 { margin-bottom: 5px; font-size: 20px; }
.ui-drawer-header p { margin: 0; font-size: 10px; }
.drawer-close {
  width: 32px;
  height: 32px;
  flex: 0 0 32px;
  border-color: transparent;
  border-radius: 8px;
  font-size: 24px;
}
.drawer-filter-form,
.ui-drawer .portfolio-filters {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin: 0;
  padding: 18px 0 0;
  border: 0;
  background: transparent;
  box-shadow: none;
}
.drawer-field { display: grid; gap: 6px; }
.drawer-field.full { grid-column: 1 / -1; }
.drawer-field > span { color: var(--muted); font-size: 9px; font-weight: 750; }
.ui-drawer .portfolio-filters input,
.ui-drawer .portfolio-filters select { width: 100%; height: 39px; font-size: 10px; }
.drawer-actions {
  position: sticky;
  bottom: -20px;
  grid-column: 1 / -1;
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin: 8px -20px -20px;
  padding: 13px 20px;
  border-top: 1px solid var(--line);
  background: rgba(255, 255, 255, .97);
  backdrop-filter: blur(8px);
}
.filter-count {
  min-width: 17px;
  height: 17px;
  display: inline-grid;
  place-items: center;
  border-radius: 9px;
  color: #fff;
  background: var(--blue-600);
  font-size: 8px;
}
.filter-count[hidden] { display: none; }
.button.has-active-filters { border-color: #91b7eb; color: var(--blue-700); background: var(--blue-50); }

/* Focus mode makes the Gantt the primary workspace while retaining exit controls. */
body.gantt-focus-mode .page-content { max-width: none; padding: 8px 10px 18px; }
body.gantt-focus-mode .workspace-topbar { height: 48px; padding-left: 12px; padding-right: 14px; }
body.gantt-focus-mode.project-workspace-page .cockpit-header,
body.gantt-focus-mode.project-workspace-page .cockpit-kpis,
body.gantt-focus-mode.project-workspace-page .project-tabs,
body.gantt-focus-mode.project-workspace-page .cockpit-rail,
body.gantt-focus-mode.project-workspace-page .overview-bottom-grid,
body.gantt-focus-mode.portfolio-workspace-page .portfolio-header,
body.gantt-focus-mode.portfolio-workspace-page .portfolio-kpi-grid,
body.gantt-focus-mode.portfolio-workspace-page .portfolio-table-panel { display: none !important; }
body.gantt-focus-mode.project-workspace-page .cockpit-grid { display: block; }
body.gantt-focus-mode .workspace-primary-panel {
  margin: 0;
  padding: 10px;
  border-color: transparent;
  border-radius: 6px;
  box-shadow: none;
}
body.gantt-focus-mode .workspace-primary-panel .gantt-scroll,
body.gantt-focus-mode .workspace-primary-panel .portfolio-gantt-scroll { max-height: calc(100vh - 155px); }
body.gantt-focus-mode .workspace-primary-panel .card-heading,
body.gantt-focus-mode .workspace-primary-panel .panel-heading { margin-bottom: 7px; }
body.gantt-focus-mode .workspace-primary-panel h2 { font-size: 15px; }
body.gantt-focus-mode .timeline-note { display: none; }

/* Fullscreen surfaces work for native and fallback fullscreen modes. */
[data-fullscreen-surface]:fullscreen,
[data-fullscreen-surface].pseudo-fullscreen {
  width: 100vw;
  height: 100vh;
  max-width: none;
  margin: 0;
  padding: 12px;
  overflow: auto;
  border: 0;
  border-radius: 0;
  background: #fff;
  box-shadow: none;
}
[data-fullscreen-surface]:fullscreen .gantt-scroll,
[data-fullscreen-surface].pseudo-fullscreen .gantt-scroll,
[data-fullscreen-surface]:fullscreen .portfolio-gantt-scroll,
[data-fullscreen-surface].pseudo-fullscreen .portfolio-gantt-scroll { max-height: calc(100vh - 105px); }
[data-fullscreen-surface].pseudo-fullscreen {
  position: fixed;
  inset: 0;
  z-index: 100;
}
body.has-pseudo-fullscreen { overflow: hidden; }

/* Portfolio clean planning canvas. */
.portfolio-gantt-actions { max-width: 54%; }
.portfolio-gantt-actions .portfolio-legend { justify-content: flex-end; }
.portfolio-workspace-page .portfolio-gantt-panel { padding: 13px; }
.portfolio-workspace-page .portfolio-table-panel.is-collapsed { margin-bottom: 0; }

/* Assistive-only live feedback. */
.ui-live-region {
  position: fixed;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

@media (max-width: 900px) {
  .sidebar-collapse-toggle { display: none; }
  body.sidebar-collapsed,
  body.gantt-focus-mode { --sidebar: 220px; }
  body.sidebar-collapsed .sidebar,
  body.gantt-focus-mode .sidebar { transform: translateX(-102%); }
  body.gantt-focus-mode .workspace { margin-left: 0; }
  body.gantt-focus-mode .sidebar-nav a span,
  body.gantt-focus-mode .sidebar-product,
  body.gantt-focus-mode .pipo-word,
  body.gantt-focus-mode .brand-divider { display: initial; }
  body.gantt-focus-mode .omni-logo-frame { width: 91px; height: 34px; }
  .portfolio-gantt-actions { max-width: none; }
}

@media (max-width: 680px) {
  .page-header-actions { width: 100%; justify-content: flex-start; }
  .page-header-actions .button { flex: 1 1 auto; }
  .drawer-filter-form,
  .ui-drawer .portfolio-filters { grid-template-columns: 1fr; }
  .drawer-field.full { grid-column: auto; }
  .portfolio-gantt-actions { align-items: flex-start; flex-direction: column; }
}


/* Release 0.6.1.3 — Etapas & Delay Management -------------------------- */
.stage-date-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:10px; padding:12px; border:1px solid var(--line-soft); border-radius:9px; background:#f8fbff; }
.stage-date-summary div { min-width:0; }
.stage-date-summary small,.stage-date-summary strong,.stage-date-summary span { display:block; }
.stage-date-summary small { color:var(--muted); font-size:8px; text-transform:uppercase; letter-spacing:.04em; }
.stage-date-summary strong { margin-top:4px; color:var(--navy-800); font-size:10px; }
.stage-date-summary span { margin-top:3px; color:var(--muted); font-size:8px; }
.stage-date-summary .variance-late { color:#bf6800; font-weight:700; }
.stage-date-summary .variance-early { color:var(--green); font-weight:700; }
.delay-management { padding:13px; border:1px solid #f0c98e; border-radius:9px; background:#fffbf3; }
.delay-management.is-not-applicable { border-color:var(--line-soft); background:#fbfcfe; }
.delay-management-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; }
.delay-management-heading strong,.delay-management-heading span { display:block; }
.delay-management-heading>div>strong { color:var(--navy-800); font-size:12px; }
.delay-management-heading>div>span { margin-top:3px; color:var(--muted); font-size:9px; }
.delay-state-badge { flex:none; padding:5px 8px; border-radius:999px; background:#fff0db; color:#b45f00; font-size:8px; font-weight:800; }
.delay-management.is-open-delay { border-color:#efb4b8; background:#fff9f9; }
.delay-management.is-open-delay .delay-state-badge { color:var(--red); background:#ffe9eb; }
.delay-management.is-completed-delay .delay-state-badge { color:#b45f00; background:#fff0db; }
.delay-management.is-not-applicable .delay-state-badge { color:var(--muted); background:#eef2f7; }
.delay-management.is-not-applicable .delay-fields { display:none; }
.delay-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:13px; padding-top:13px; border-top:1px solid rgba(188,129,46,.18); }
.delay-fields label { display:flex; flex-direction:column; gap:6px; color:#34465f; font-size:10px; font-weight:700; }
.delay-fields .full { grid-column:1/-1; }
.delay-history { margin-top:14px; padding-top:12px; border-top:1px solid rgba(188,129,46,.2); }
.delay-history>strong { color:var(--navy-800); font-size:10px; }
.delay-history article { display:grid; grid-template-columns:180px minmax(0,1fr); gap:10px; margin-top:8px; padding:9px 10px; border:1px solid var(--line-soft); border-radius:7px; background:#fff; }
.delay-history article div b,.delay-history article div span { display:block; }
.delay-history article div b { color:var(--text); font-size:8px; }
.delay-history article div span,.delay-history article p,.delay-history article small { color:var(--muted); font-size:8px; line-height:1.45; }
.delay-history article p { margin:0; }
.delay-history article small { grid-column:2; }
@media(max-width:680px){.stage-date-summary,.delay-fields{grid-template-columns:1fr}.delay-fields .full{grid-column:auto}.delay-management-heading{flex-direction:column}.delay-history article{grid-template-columns:1fr}.delay-history article small{grid-column:auto}}

/* Release 0.6.1.4 — Gantt Quick Edit ----------------------------------- */
.quick-edit-drawer { width: min(460px, 94vw); }
.quick-drawer-body { min-height: calc(100vh - 110px); padding-top: 16px; }
.quick-drawer-placeholder {
  display: grid;
  place-items: center;
  align-content: center;
  min-height: 300px;
  padding: 30px;
  color: var(--muted);
  text-align: center;
}
.quick-drawer-placeholder strong { margin-top: 10px; color: var(--navy-800); font-size: 13px; }
.quick-drawer-placeholder p { max-width: 290px; margin: 7px 0 0; font-size: 10px; line-height: 1.5; }
.quick-drawer-placeholder.error strong { color: var(--red); }
.loading-dot { width: 15px; height: 15px; border: 2px solid #c9d9ec; border-top-color: var(--blue-600); border-radius: 50%; animation: quick-spin .75s linear infinite; }
@keyframes quick-spin { to { transform: rotate(360deg); } }

.quick-edit-pane { display: grid; gap: 16px; }
.quick-edit-context { display: flex; justify-content: space-between; gap: 14px; align-items: flex-start; }
.quick-edit-context h3 { margin: 4px 0 0; color: var(--navy-800); font-size: 17px; }
.quick-edit-context p { margin: 5px 0 0; color: var(--muted); font-size: 9px; }
.quick-edit-context > .badge { flex: none; }
.quick-edit-form { display: grid; gap: 15px; }
.quick-edit-section-heading { display: grid; gap: 3px; padding-bottom: 7px; border-bottom: 1px solid var(--line-soft); }
.quick-edit-section-heading strong { color: var(--navy-800); font-size: 10px; }
.quick-edit-section-heading span { color: var(--muted); font-size: 8px; line-height: 1.45; }
.quick-edit-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.quick-edit-grid label { display: grid; gap: 6px; color: #34465f; font-size: 9px; font-weight: 750; }
.quick-edit-grid label.full { grid-column: 1 / -1; }
.quick-edit-grid input,
.quick-edit-grid select { width: 100%; height: 39px; font-size: 10px; }
.quick-edit-grid input:disabled,
.quick-edit-grid select:disabled { color: #62748d; background: #f4f7fa; cursor: not-allowed; }
.quick-progress-input { display: grid; grid-template-columns: 1fr 48px; gap: 10px; align-items: center; }
.quick-progress-input input[type="range"] { height: 26px; padding: 0; }
.quick-progress-input output { display: grid; place-items: center; height: 32px; border-radius: 7px; color: var(--blue-700); background: var(--blue-50); font-size: 10px; font-weight: 800; }
.quick-baseline-summary { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; padding: 11px; border: 1px solid var(--line-soft); border-radius: 8px; background: #f8fbff; }
.quick-baseline-summary small,
.quick-baseline-summary strong { display: block; }
.quick-baseline-summary small { color: var(--muted); font-size: 8px; text-transform: uppercase; letter-spacing: .04em; }
.quick-baseline-summary strong { margin-top: 4px; color: var(--navy-800); font-size: 9px; }
.quick-add-note { padding: 10px 11px; border-radius: 8px; color: #5e718b; background: #f5f8fc; font-size: 9px; line-height: 1.5; }
.quick-form-feedback { padding: 10px 11px; border: 1px solid #efb4b8; border-radius: 8px; color: var(--red); background: #fff7f8; font-size: 9px; }
.quick-edit-actions { position: sticky; bottom: -20px; display: flex; justify-content: flex-end; gap: 8px; margin: 4px -20px -20px; padding: 13px 20px; border-top: 1px solid var(--line); background: rgba(255,255,255,.97); backdrop-filter: blur(8px); }
.quick-edit-actions .button { min-width: 118px; justify-content: center; }

.gantt-inline-action {
  width: 25px;
  height: 25px;
  flex: 0 0 25px;
  display: inline-grid;
  place-items: center;
  margin-left: auto;
  border: 1px solid transparent;
  border-radius: 6px;
  color: var(--blue-700);
  background: transparent;
  opacity: .18;
  cursor: pointer;
  transition: opacity .14s ease, border-color .14s ease, background .14s ease;
}
.gantt-row-label.group-label:hover .gantt-inline-action,
.gantt-inline-action:focus-visible { opacity: 1; border-color: #b7cce8; background: var(--blue-50); outline: none; }
[data-task-quick-edit-url] { cursor: pointer; }
[data-task-quick-edit-url]:focus-visible { outline: 2px solid rgba(18,103,214,.35); outline-offset: 2px; }
.text-action { padding: 0; border: 0; color: var(--blue-700); background: transparent; font: inherit; font-weight: 700; cursor: pointer; }
.text-action:hover { text-decoration: underline; }
.status-overdue { color: var(--red); background: #ffe9eb; }

@media (max-width: 680px) {
  .quick-edit-grid,
  .quick-baseline-summary { grid-template-columns: 1fr; }
  .quick-edit-grid label.full { grid-column: auto; }
  .quick-edit-actions { flex-direction: column-reverse; }
  .quick-edit-actions .button { width: 100%; }
}
.quick-readonly-note { align-self: center; color: var(--muted); font-size: 9px; font-weight: 700; }


/* Release 0.6.1.6 — Planning & Presentation Workspaces ------------------ */
.workspace-mode-bar {
  position: relative; z-index: 18; min-height: 58px; display: grid;
  grid-template-columns: minmax(250px,.8fr) auto minmax(280px,.9fr);
  align-items: center; gap: 18px; margin: 0 0 12px; padding: 8px 12px;
  border: 1px solid var(--line); border-radius: 11px; background: rgba(255,255,255,.96);
  box-shadow: 0 2px 10px rgba(18,42,76,.035); backdrop-filter: blur(12px);
}
.workspace-mode-identity { min-width: 0; display: grid; grid-template-columns: 34px minmax(0,auto) minmax(70px,150px); align-items:center; gap:10px; }
.workspace-mode-aircraft { width:34px; height:34px; display:grid; place-items:center; border-radius:8px; color:var(--blue-700); background:var(--blue-50); font-size:16px; }
.workspace-mode-identity strong,.workspace-mode-identity small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.workspace-mode-identity strong { font-size:13px; }.workspace-mode-identity small { margin-top:2px; color:var(--muted); font-size:8px; }
.workspace-progress { height:6px; overflow:hidden; border-radius:4px; background:#e6ebf2; }.workspace-progress i { display:block; height:100%; border-radius:inherit; background:var(--blue-600); }
.workspace-segmented { display:inline-flex; padding:3px; border:1px solid var(--line); border-radius:9px; background:#f8fafd; }
.workspace-segmented button { min-height:32px; padding:6px 13px; border:0; border-radius:6px; color:var(--muted); background:transparent; font-size:10px; font-weight:700; cursor:pointer; }
.workspace-segmented button:hover,.workspace-segmented button.is-active { color:var(--blue-700); background:#fff; box-shadow:0 2px 7px rgba(12,50,102,.08); }
.workspace-mode-tools { min-width:0; display:flex; justify-content:flex-end; align-items:center; gap:6px; }
.workspace-tool { min-height:32px; display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:6px 9px; border:1px solid transparent; border-radius:7px; color:var(--navy-800); background:transparent; font-size:9px; font-weight:700; cursor:pointer; }
.workspace-tool:hover,.workspace-tool.is-active { border-color:var(--line); background:var(--blue-50); color:var(--blue-700); }
.workspace-zoom { display:inline-flex; align-items:center; gap:4px; height:32px; padding:2px 5px 2px 8px; border:1px solid var(--line); border-radius:7px; color:var(--muted); background:#fff; font-size:8px; }
.workspace-zoom button { width:25px; height:25px; border:0; border-radius:5px; background:transparent; color:var(--navy-800); cursor:pointer; }.workspace-zoom button:hover{background:var(--blue-50)}.workspace-zoom b{min-width:34px;text-align:center;color:var(--text);font-size:8px}
.presentation-only { display:none; }
.workspace-summary-ribbon { display:none; grid-template-columns:repeat(3,minmax(0,1fr)); align-items:stretch; margin:0 0 12px; border:1px solid var(--line); border-radius:11px; background:#fff; overflow:hidden; }
.workspace-summary-ribbon article { min-height:64px; display:flex; align-items:center; gap:11px; padding:10px 18px; border-right:1px solid var(--line-soft); }.workspace-summary-ribbon article:last-child{border-right:0}
.workspace-summary-ribbon small,.workspace-summary-ribbon strong,.workspace-summary-ribbon span { display:block; }.workspace-summary-ribbon small{color:var(--muted);font-size:8px}.workspace-summary-ribbon strong{margin:3px 0 2px;font-size:14px}.workspace-summary-ribbon article>div>span{color:var(--muted);font-size:8px}
.summary-ribbon-icon { width:38px;height:38px;display:grid;place-items:center;flex:none;border-radius:50%;font-size:17px}.summary-ribbon-icon.blue{color:var(--blue-600);background:var(--blue-100)}.summary-ribbon-icon.green{color:var(--green);background:var(--green-bg)}.summary-ribbon-icon.red{color:var(--red);background:var(--red-bg)}

/* Planning makes the schedule dominant without removing context. */
/* Planejamento starts with the regular sidebar collapsed by JavaScript, but the user may expand it. */
body.workspace-mode-planning.project-workspace-page .cockpit-header,body.workspace-mode-planning.project-workspace-page .cockpit-kpis,body.workspace-mode-planning.project-workspace-page .project-tabs,body.workspace-mode-planning.project-workspace-page .cockpit-rail,body.workspace-mode-planning.project-workspace-page .overview-bottom-grid{display:none!important}
body.workspace-mode-planning.project-workspace-page .cockpit-grid{display:block}body.workspace-mode-planning .workspace-summary-ribbon{display:grid}
body.workspace-mode-planning.portfolio-workspace-page .portfolio-header,body.workspace-mode-planning.portfolio-workspace-page .portfolio-kpi-grid,body.workspace-mode-planning.portfolio-workspace-page .portfolio-table-panel{display:none!important}
body.workspace-mode-planning .page-content{max-width:none;padding:10px 12px 24px}body.workspace-mode-planning .workspace-primary-panel{margin:0;padding:10px;border-color:#dbe4ef;box-shadow:none}
body.workspace-mode-planning .workspace-primary-panel .gantt-scroll,body.workspace-mode-planning .workspace-primary-panel .portfolio-gantt-scroll{max-height:calc(100vh - 245px)}

/* Compact view preserves the essential schedule with reduced density. */
body.workspace-mode-compact{--sidebar:68px}body.workspace-mode-compact .sidebar{display:none}body.workspace-mode-compact .workspace{margin-left:0}
body.workspace-mode-compact .workspace-topbar,body.workspace-mode-compact .cockpit-header,body.workspace-mode-compact .cockpit-kpis,body.workspace-mode-compact .project-tabs,body.workspace-mode-compact .cockpit-rail,body.workspace-mode-compact .overview-bottom-grid,body.workspace-mode-compact .portfolio-header,body.workspace-mode-compact .portfolio-kpi-grid,body.workspace-mode-compact .portfolio-table-panel{display:none!important}
body.workspace-mode-compact .workspace-summary-ribbon{display:grid}body.workspace-mode-compact .page-content{max-width:none;padding:7px 9px 18px}body.workspace-mode-compact .workspace-mode-bar{min-height:48px;margin-bottom:7px;padding:5px 9px}
body.workspace-mode-compact .workspace-mode-identity small,body.workspace-mode-compact .workspace-progress{display:none}body.workspace-mode-compact .workspace-primary-panel{padding:7px;border-radius:7px;box-shadow:none}
body.workspace-mode-compact .gantt-row-label,body.workspace-mode-compact .gantt-row-track{min-height:30px}body.workspace-mode-compact .gantt-kind-badge,body.workspace-mode-compact .gantt-label-copy small{display:none}
body.workspace-mode-compact .workspace-primary-panel .gantt-scroll,body.workspace-mode-compact .workspace-primary-panel .portfolio-gantt-scroll{max-height:calc(100vh - 185px)}

/* Presentation removes application chrome and keeps explicit exit controls. */
body.workspace-mode-presentation{--sidebar:0;background:#fff}body.workspace-mode-presentation .sidebar,body.workspace-mode-presentation .workspace-topbar,body.workspace-mode-presentation .cockpit-header,body.workspace-mode-presentation .cockpit-kpis,body.workspace-mode-presentation .project-tabs,body.workspace-mode-presentation .cockpit-rail,body.workspace-mode-presentation .overview-bottom-grid,body.workspace-mode-presentation .portfolio-header,body.workspace-mode-presentation .portfolio-kpi-grid,body.workspace-mode-presentation .portfolio-table-panel{display:none!important}
body.workspace-mode-presentation .workspace{margin-left:0}body.workspace-mode-presentation .page-content{max-width:none;padding:5px 7px 10px;background:#fff}
body.workspace-mode-presentation .workspace-mode-bar{position:sticky;top:0;margin-bottom:5px;border-width:0 0 1px;border-radius:0;box-shadow:none}body.workspace-mode-presentation .workspace-summary-ribbon{display:grid;margin-bottom:5px;border-radius:7px}
body.workspace-mode-presentation .presentation-only{display:inline-flex}body.workspace-mode-presentation .workspace-primary-panel{margin:0;padding:7px;border:0;border-radius:0;box-shadow:none}
body.workspace-mode-presentation .workspace-primary-panel .card-heading>div:first-child p,body.workspace-mode-presentation .workspace-primary-panel .panel-heading>div:first-child p,body.workspace-mode-presentation .timeline-note{display:none}
body.workspace-mode-presentation .workspace-primary-panel .gantt-scroll,body.workspace-mode-presentation .workspace-primary-panel .portfolio-gantt-scroll{max-height:calc(100vh - 170px)}

/* Portfolio contextual inspection in planning and presentation workspaces. */
.portfolio-presentation-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-items:start}.portfolio-context-panel{display:none;position:relative;padding:16px;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:var(--shadow-lg)}
body.workspace-mode-planning .portfolio-presentation-layout.has-context,body.workspace-mode-presentation .portfolio-presentation-layout.has-context{grid-template-columns:minmax(0,1fr) 280px}body.workspace-mode-planning .portfolio-context-panel,body.workspace-mode-presentation .portfolio-context-panel{display:block}
.portfolio-context-close{position:absolute;top:8px;right:8px;width:28px;height:28px;border:0;background:transparent;color:var(--muted);font-size:20px;cursor:pointer}.context-selected{display:inline-flex;padding:4px 7px;border-radius:9px;color:var(--blue-700);background:var(--blue-50);font-size:8px;font-weight:700}.portfolio-context-panel h3{margin:16px 0;font-size:18px}.portfolio-context-panel dl{display:grid;gap:9px;margin:0}.portfolio-context-panel dl div{display:flex;justify-content:space-between;gap:10px}.portfolio-context-panel dt{color:var(--muted);font-size:9px}.portfolio-context-panel dd{margin:0;text-align:right;font-size:9px;font-weight:700}.context-health{color:var(--green)}.context-health-critical{color:var(--red)}.context-health-at-risk,.context-health-attention{color:var(--amber)}.context-health-completed{color:var(--blue-700)}.context-section{display:grid;gap:5px;margin-top:15px;padding-top:13px;border-top:1px solid var(--line-soft)}.context-section small{color:var(--muted);font-size:8px}.context-section strong{font-size:11px}.context-section span{display:flex;justify-content:space-between;color:var(--muted);font-size:8px}.context-variance{color:var(--green)!important}.portfolio-context-panel .button{width:100%;margin-top:17px}
.portfolio-project-cell.is-selected,.portfolio-timeline-row.is-selected{background:#f5f9ff}.portfolio-project-cell.is-selected{box-shadow:inset 3px 0 var(--blue-600)}
.portfolio-presentation-legend{display:none;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap;margin-top:10px;padding:10px;border-top:1px solid var(--line-soft);color:var(--muted);font-size:8px}.portfolio-presentation-legend span{display:inline-flex;align-items:center;gap:5px}.portfolio-presentation-legend i{width:10px;height:10px;display:inline-block;border-radius:50%;background:#8fa4bd}.portfolio-presentation-legend i.original{border-radius:2px;background:var(--blue-600)}.portfolio-presentation-legend i.forecast{border:2px solid #6ba1e8;background:#fff}.portfolio-presentation-legend i.pickup{border-radius:1px;background:var(--green);transform:rotate(45deg)}.portfolio-presentation-legend i.arrival{border:2px solid #7856df;background:#fff}.portfolio-presentation-legend i.eis{border:2px solid var(--navy-800);background:#fff}.portfolio-presentation-legend i.contract{border:2px solid var(--amber);background:#fff}.portfolio-presentation-legend i.custom{border-radius:1px;background:#8290a4;transform:rotate(45deg)}
body.workspace-mode-planning .portfolio-presentation-legend,body.workspace-mode-presentation .portfolio-presentation-legend{display:flex}

/* Temporal zoom changes the rendered schedule width, not only a minimum width. */
[data-zoom-surface] .gantt-grid,[data-zoom-surface] .portfolio-gantt{width:var(--gantt-zoom-width,100%);max-width:none;transition:width .18s ease}
[data-zoom-surface].gantt-zoom-80 .gantt-grid{width:80%;min-width:760px}[data-zoom-surface].gantt-zoom-100 .gantt-grid{width:100%;min-width:930px}[data-zoom-surface].gantt-zoom-125 .gantt-grid{width:125%;min-width:1160px}[data-zoom-surface].gantt-zoom-150 .gantt-grid{width:150%;min-width:1395px}
[data-zoom-surface].gantt-zoom-80 .portfolio-gantt{width:80%;min-width:1180px;grid-template-columns:290px minmax(890px,1fr)}[data-zoom-surface].gantt-zoom-100 .portfolio-gantt{width:100%;min-width:1450px;grid-template-columns:330px minmax(1100px,1fr)}[data-zoom-surface].gantt-zoom-125 .portfolio-gantt{width:125%;min-width:1810px;grid-template-columns:360px minmax(1450px,1fr)}[data-zoom-surface].gantt-zoom-150 .portfolio-gantt{width:150%;min-width:2140px;grid-template-columns:390px minmax(1750px,1fr)}

@media(max-width:1180px){.workspace-mode-bar{grid-template-columns:1fr;gap:8px}.workspace-segmented{justify-self:start}.workspace-mode-tools{justify-content:flex-start;flex-wrap:wrap}.workspace-summary-ribbon{grid-template-columns:1fr}.workspace-summary-ribbon article{border-right:0;border-bottom:1px solid var(--line-soft)}.workspace-summary-ribbon article:last-child{border-bottom:0}body.workspace-mode-planning .portfolio-presentation-layout,body.workspace-mode-presentation .portfolio-presentation-layout{grid-template-columns:1fr}.portfolio-context-panel{display:none!important}}
@media(max-width:760px){.workspace-mode-identity{grid-template-columns:34px 1fr}.workspace-progress{display:none}.workspace-segmented{width:100%;overflow:auto}.workspace-segmented button{flex:1;min-width:92px}.workspace-tool span,.workspace-zoom>span{display:none}}

/* Release 0.6.1.6 — Portfolio Visual Upgrade -------------------------- */
.portfolio-gantt-panel {
  --portfolio-event-size: 24px;
  --portfolio-event-center: 42px;
}
.portfolio-gantt-panel > .panel-heading {
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line-soft);
}
.portfolio-gantt-panel > .panel-heading p { max-width: 720px; }
.portfolio-gantt-actions { display: flex; align-items: center; gap: 7px; max-width: none; }
.portfolio-gantt-scroll {
  margin-top: 12px;
  border-color: #d9e4f2;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 1px 0 rgba(15,47,102,.03);
}
.portfolio-gantt { grid-template-columns: 340px minmax(1110px,1fr); }
.portfolio-gantt-head,
.portfolio-timeline-head { min-height: 54px; background: #f9fbfe; }
.portfolio-project-cell,
.portfolio-timeline-row { min-height: 82px; }
.portfolio-project-cell {
  grid-template-columns: 42px minmax(0,1fr) 11px;
  gap: 11px;
  padding: 12px 13px;
  transition: background .15s ease, box-shadow .15s ease;
}
.portfolio-aircraft-avatar {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  background: linear-gradient(145deg,#eef5ff,#dbeafe);
  color: #1f5ca8;
  box-shadow: inset 0 0 0 1px #d7e5f8;
}
.portfolio-project-copy strong { font-size: 10.5px; }
.portfolio-project-copy small { font-size: 7.7px; }
.portfolio-project-copy em { font-size: 7.2px; }
.portfolio-project-cell:hover,
.portfolio-timeline-row:hover { background: #f8fbff; }
.portfolio-project-cell.is-selected,
.portfolio-timeline-row.is-selected {
  background: linear-gradient(90deg,#f1f7ff 0%,#f8fbff 72%,#fff 100%);
}
.portfolio-project-cell.is-selected {
  box-shadow: inset 4px 0 #1769e0;
}
.portfolio-timeline-row.is-selected {
  box-shadow: inset 0 1px #d9e8fb, inset 0 -1px #d9e8fb;
}
.portfolio-timeline-row::after {
  content: "";
  position: absolute;
  z-index: 0;
  left: 0;
  right: 0;
  top: var(--portfolio-event-center);
  border-top: 1px solid #dce6f3;
  pointer-events: none;
}
.portfolio-today,
.portfolio-today-line { z-index: 5; border-left-color: #0c3f88; }
.portfolio-acceptance-bar {
  z-index: 1;
  top: calc(var(--portfolio-event-center) - 4px);
  height: 8px;
  min-width: 8px;
  border-radius: 999px;
  background: #a9cbfb;
  box-shadow: inset 0 0 0 1px #77a8e8;
  opacity: .9;
}
.portfolio-variance-line {
  z-index: 1;
  top: var(--portfolio-event-center);
  border-top-width: 2px;
}
.portfolio-event {
  top: calc(var(--portfolio-event-center) - (var(--portfolio-event-size) / 2));
  z-index: 4;
  min-width: var(--portfolio-event-size);
  min-height: var(--portfolio-event-size);
  color: var(--muted);
  font-size: 7px;
  text-decoration: none;
}
.portfolio-event i {
  position: relative;
  display: grid;
  place-items: center;
  width: var(--portfolio-event-size);
  height: var(--portfolio-event-size);
  margin: 0 auto;
  border: 2px solid #94a3b8;
  border-radius: 50%;
  background: #fff;
  color: #475569;
  transform: none;
  box-shadow: 0 2px 6px rgba(15,47,102,.10), 0 0 0 2px #fff;
  transition: transform .15s ease, box-shadow .15s ease, filter .15s ease;
}
.portfolio-event i::after {
  font-size: 12px;
  font-weight: 800;
  line-height: 1;
}
.portfolio-event:hover i,
.portfolio-event:focus-visible i {
  transform: scale(1.12);
  box-shadow: 0 4px 10px rgba(15,47,102,.17), 0 0 0 4px rgba(47,111,210,.12);
}
.portfolio-event b {
  position: absolute;
  top: 30px;
  left: 50%;
  display: none;
  transform: translateX(-50%);
  padding: 3px 6px;
  border-radius: 5px;
  background: #0f2f66;
  color: #fff;
  font-size: 7px;
  font-weight: 700;
  box-shadow: 0 4px 12px rgba(15,47,102,.18);
}
.portfolio-event:hover b,
.portfolio-event:focus-visible b { display: block; }
.portfolio-event em {
  left: 21px;
  top: -8px;
  padding: 3px 5px;
  border: 1px solid #f3d9a4;
  border-radius: 999px;
  background: #fff8e9;
  color: #9a6200;
  font-size: 6.5px;
  box-shadow: 0 1px 3px rgba(154,98,0,.08);
}
.portfolio-event.technical i {
  border-color: #c3cedb;
  background: #f7f9fc;
  color: #475569;
}
.portfolio-event.technical i::after { content: "✓"; }
.portfolio-event.original i {
  width: 20px;
  height: 20px;
  margin-top: 2px;
  border-radius: 4px;
  border-color: #1d64db;
  background: #1d64db;
  color: #fff;
}
.portfolio-event.original i::after { content: ""; }
.portfolio-event.forecast i {
  border-color: #5f9eea;
  background: #eef6ff;
  color: #1769e0;
}
.portfolio-event.forecast i::after { content: "▦"; font-size: 13px; }
.portfolio-event.pickup i {
  width: 18px;
  height: 18px;
  margin-top: 3px;
  border-radius: 2px;
  border-color: #159a50;
  background: #18a957;
  transform: rotate(45deg);
  box-shadow: 0 2px 6px rgba(21,154,80,.16), 0 0 0 2px #fff;
}
.portfolio-event.pickup:hover i,
.portfolio-event.pickup:focus-visible i { transform: rotate(45deg) scale(1.12); }
.portfolio-event.arrival i {
  width: 21px;
  height: 21px;
  margin-top: 1px;
  border-color: #8557e6;
  border-radius: 50% 50% 50% 0;
  background: #fff;
  transform: rotate(-45deg);
}
.portfolio-event.arrival i::after {
  content: "";
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: #8557e6;
}
.portfolio-event.arrival:hover i,
.portfolio-event.arrival:focus-visible i { transform: rotate(-45deg) scale(1.12); }
.portfolio-event.eis i {
  border-color: #123d7a;
  background: #fff;
  color: #123d7a;
}
.portfolio-event.eis i::after { content: "✈"; font-size: 12px; }
.portfolio-event.contract i {
  border-color: #f0a21a;
  background: #fffaf0;
  color: #d88600;
}
.portfolio-event.contract i::after { content: "▤"; font-size: 12px; }
.portfolio-event.custom i {
  width: 17px;
  height: 17px;
  margin-top: 4px;
  border-radius: 2px;
  border-color: #8a98ab;
  background: #9ba7b8;
  transform: rotate(45deg);
  box-shadow: 0 2px 6px rgba(71,85,105,.14), 0 0 0 2px #fff;
}
.portfolio-event.custom i::after { content: ""; }
.portfolio-event.custom:hover i,
.portfolio-event.custom:focus-visible i { transform: rotate(45deg) scale(1.12); }

/* Single consolidated legend. */
.portfolio-presentation-legend {
  display: grid !important;
  gap: 9px;
  margin-top: 12px;
  padding: 12px 14px;
  border: 1px solid #dce6f3;
  border-radius: 10px;
  background: #fbfdff;
  color: #53657d;
}
.portfolio-event-legend-group,
.portfolio-line-legend-group {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 18px;
  flex-wrap: wrap;
}
.portfolio-event-legend-group span,
.portfolio-line-legend-group span {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  white-space: nowrap;
  font-size: 8px;
}
.portfolio-presentation-legend i:not(.line-key) {
  position: relative;
  display: grid;
  place-items: center;
  width: 18px;
  height: 18px;
  border: 1.8px solid #94a3b8;
  border-radius: 50%;
  background: #fff;
  color: #475569;
  transform: none;
}
.portfolio-presentation-legend i:not(.line-key)::after {
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
}
.portfolio-presentation-legend i.technical { border-color: #c3cedb; background: #f7f9fc; }
.portfolio-presentation-legend i.technical::after { content: "✓"; }
.portfolio-presentation-legend i.original { width: 15px; height: 15px; border-radius: 3px; border-color: #1d64db; background: #1d64db; }
.portfolio-presentation-legend i.forecast { border-color: #5f9eea; background: #eef6ff; color: #1769e0; }
.portfolio-presentation-legend i.forecast::after { content: "▦"; }
.portfolio-presentation-legend i.pickup { width: 14px; height: 14px; border-radius: 2px; border-color: #159a50; background: #18a957; transform: rotate(45deg); }
.portfolio-presentation-legend i.arrival { width: 16px; height: 16px; border-color: #8557e6; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); }
.portfolio-presentation-legend i.arrival::after { content: ""; width: 4px; height: 4px; border-radius: 50%; background: #8557e6; }
.portfolio-presentation-legend i.eis { border-color: #123d7a; color: #123d7a; }
.portfolio-presentation-legend i.eis::after { content: "✈"; }
.portfolio-presentation-legend i.contract { border-color: #f0a21a; background: #fffaf0; color: #d88600; }
.portfolio-presentation-legend i.contract::after { content: "▤"; }
.portfolio-presentation-legend i.custom { width: 13px; height: 13px; border-radius: 2px; border-color: #8a98ab; background: #9ba7b8; transform: rotate(45deg); }
.portfolio-presentation-legend .line-key {
  width: 34px;
  height: 0;
  border: 0;
  border-top: 3px solid #1769e0;
  border-radius: 0;
  background: transparent;
}
.portfolio-presentation-legend .forecast-line { border-top-style: dashed; }
.portfolio-presentation-legend .future-line { border-top: 2px dashed #aab5c3; }

/* Executive context card. */
.portfolio-context-panel {
  border-color: #d9e4f2;
  border-radius: 12px;
  box-shadow: 0 10px 28px rgba(15,47,102,.10);
}
.context-critical-event {
  display: flex;
  align-items: center;
  gap: 8px;
}
.context-critical-event > i {
  position: relative;
  display: grid;
  place-items: center;
  width: 21px;
  height: 21px;
  flex: 0 0 21px;
  border: 2px solid #94a3b8;
  border-radius: 50%;
  background: #fff;
}
.context-critical-event > i::after { font-size: 10px; font-weight: 800; }
.context-critical-event > i.context-event-forecast { border-color: #5f9eea; background: #eef6ff; color: #1769e0; }
.context-critical-event > i.context-event-forecast::after { content: "▦"; }
.context-critical-event > i.context-event-arrival { border-color: #8557e6; border-radius: 50% 50% 50% 0; transform: rotate(-45deg); }
.context-critical-event > i.context-event-arrival::after { content: ""; width: 5px; height: 5px; border-radius: 50%; background: #8557e6; }
.context-critical-event > i.context-event-custom { border-radius: 2px; border-color: #8a98ab; background: #9ba7b8; transform: rotate(45deg); }
.context-critical-event > i.context-event-custom::after { content: ""; }
.context-critical-section > span { padding-left: 29px; }

@media(max-width:1180px) {
  .portfolio-event-legend-group,
  .portfolio-line-legend-group { justify-content: flex-start; }
}
