/* ── KPI row: 5 cols ── */
    .kpi-row-5{display:grid;grid-template-columns:repeat(5,1fr);gap:0.75rem}

    /* ── View toggle tabs ── */
    .view-tabs{display:flex;background:var(--card2);border:1px solid var(--border);border-radius:7px;padding:2px;gap:2px}
    .view-tab{padding:0.3rem 0.75rem;border-radius:5px;font-size:0.75rem;font-weight:600;cursor:pointer;color:var(--muted);border:none;background:none;transition:all 0.15s;font-family:inherit}
    .view-tab.active{background:var(--card);color:var(--kai-blue);box-shadow:0 1px 4px rgba(0,0,0,0.08)}
    .view-tab:hover:not(.active){color:var(--text)}

    /* ── Filter bar ── */
    .filter-row{display:flex;align-items:center;gap:0.5rem;flex-wrap:wrap}
    .filter-label{font-size:0.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em;color:var(--muted);white-space:nowrap}

    /* ── Gantt PM grid ── */
    .gantt-wrap{
      background:var(--card);
      border:1px solid var(--border);
      border-radius:10px;
      overflow:hidden;
    }
    .gantt-hdr{
      padding:0.625rem 1rem;
      border-bottom:1px solid var(--border);
      display:flex;align-items:center;justify-content:space-between;
      flex-wrap:wrap;gap:0.5rem;
    }
    .gantt-title{font-size:0.8125rem;font-weight:700;color:var(--text);display:flex;align-items:center;gap:0.5rem;}

    .gantt-scroll{overflow-x:auto;}
    .pm-grid{
      width:100%;
      border-collapse:collapse;
      min-width:960px;
    }
    .pm-grid th{
      font-size:9px;text-transform:uppercase;letter-spacing:0.05em;
      color:var(--muted);font-weight:700;
      padding:0.4rem 0.2rem;
      text-align:center;
      border-bottom:1px solid var(--border);
      white-space:nowrap;
    }
    .pm-grid th.unit-col{
      text-align:left;padding-left:0.875rem;min-width:120px;font-size:10px;
    }
    .pm-grid th.date-col{
      background:rgba(0,48,130,0.03);
      border-left:1px solid rgba(0,0,0,0.05);
      min-width:48px;
    }
    .pm-grid th.today-col{
      background:rgba(0,48,130,0.08);color:var(--kai-blue);
    }
    .pm-grid tbody tr{transition:background 0.12s;}
    .pm-grid tbody tr:hover{background:rgba(0,48,130,0.025);}
    .pm-grid td{
      padding:4px 3px;
      border-top:1px solid rgba(0,0,0,0.04);
      text-align:center;
      vertical-align:middle;
      border-left:1px solid rgba(0,0,0,0.03);
    }
    .pm-grid td.unit-cell{
      text-align:left;
      padding-left:0.875rem;
      font-size:0.75rem;font-weight:700;
      font-family:'JetBrains Mono',monospace;
      color:var(--text);
      white-space:nowrap;
      border-left:none;
    }
    .pm-grid td.today-bg{
      background:rgba(0,48,130,0.04);
    }

    /* ── PM block styles ── */
    .pm-block{
      display:inline-flex;align-items:center;justify-content:center;
      border-radius:4px;
      font-size:9px;font-weight:700;
      padding:2px 5px;
      cursor:pointer;
      transition:box-shadow 0.12s,transform 0.1s;
      white-space:nowrap;
      min-width:32px;
      line-height:1.4;
      font-family:'JetBrains Mono',monospace;
    }
    .pm-block:hover{box-shadow:0 2px 8px rgba(0,0,0,0.18);transform:translateY(-1px);}
    .pm-none{display:block;width:8px;height:8px;border-radius:50%;background:rgba(0,0,0,0.06);margin:auto;}

    /* P1 — Harian — abu-abu */
    .pm-p1{background:rgba(100,116,139,0.15);color:#334155;border:1px solid rgba(100,116,139,0.3);}
    /* P2 — Mingguan — biru */
    .pm-p2{background:rgba(37,99,235,0.12);color:#1e40af;border:1px solid rgba(37,99,235,0.3);}
    /* P3 — Bulanan — hijau */
    .pm-p3{background:rgba(22,163,74,0.12);color:#14532d;border:1px solid rgba(22,163,74,0.3);}
    /* P4 — 3 Bulanan — oranye */
    .pm-p4{background:rgba(217,119,6,0.15);color:#92400e;border:1px solid rgba(217,119,6,0.3);}
    /* P5 — 6 Bulanan — merah muda */
    .pm-p5{background:rgba(236,72,153,0.12);color:#9d174d;border:1px solid rgba(236,72,153,0.3);}
    /* P6 — Tahunan — ungu */
    .pm-p6{background:rgba(124,58,237,0.12);color:#4c1d95;border:1px solid rgba(124,58,237,0.3);}
    /* Overdue — merah */
    .pm-overdue{background:rgba(220,38,38,0.12);color:#991b1b;border:1px solid rgba(220,38,38,0.4);animation:blink-border 2s infinite;}
    @keyframes blink-border{0%,100%{box-shadow:none;}50%{box-shadow:0 0 0 2px rgba(220,38,38,0.2);}}
    /* Done — dengan checkmark */
    .pm-done{background:rgba(22,163,74,0.08);color:#15803d;border:1px solid rgba(22,163,74,0.2);opacity:0.7;}

    /* ── Legend ── */
    .pm-legend{display:flex;gap:0.75rem;flex-wrap:wrap;align-items:center;font-size:0.6875rem;}
    .legend-item{display:flex;align-items:center;gap:4px;color:var(--muted);}

    /* ── Bottom section ── */
    .bottom-section{display:grid;grid-template-columns:1fr 1fr;gap:1rem;}

    /* ── Schedule list items ── */
    .sched-item{
      display:grid;
      grid-template-columns:90px 40px 80px 1fr 80px;
      gap:0.25rem;
      padding:0.5rem 1rem;
      border-bottom:1px solid rgba(0,0,0,0.04);
      font-size:0.75rem;
      align-items:center;
    }
    .sched-item:last-child{border-bottom:none;}
    .sched-item.header{
      background:rgba(0,48,130,0.03);
      font-size:9px;text-transform:uppercase;letter-spacing:0.05em;
      color:var(--muted);font-weight:700;
      padding-top:0.5rem;padding-bottom:0.5rem;
    }
    .sched-unit{font-weight:700;font-family:'JetBrains Mono',monospace;color:var(--text);}
    .sched-mech{color:var(--muted);font-size:0.6875rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}

    /* ── Overdue list ── */
    .overdue-item{
      padding:0.625rem 1rem;
      border-bottom:1px solid rgba(0,0,0,0.04);
      display:flex;align-items:center;gap:0.75rem;
      font-size:0.75rem;
    }
    .overdue-item:last-child{border-bottom:none;}
    .overdue-dot{width:8px;height:8px;border-radius:50%;background:var(--red);flex-shrink:0;}
    .overdue-unit{font-weight:700;font-family:'JetBrains Mono',monospace;color:var(--text);flex-shrink:0;}
    .overdue-desc{color:var(--muted);flex:1;}
    .overdue-days{
      font-size:0.6875rem;font-weight:700;
      background:rgba(220,38,38,0.1);color:#991b1b;
      padding:0.15rem 0.5rem;border-radius:100px;
      white-space:nowrap;
    }
