    :root {
      --ink: #1a2733;
      --muted: #5f6c79;
      --line: #d9dfe6;
      --line-strong: #b6c0cb;
      --paper: #f4f6f9;
      --panel: #ffffff;
      --wash: #eef2f6;
      --blue: #0f5aa0;
      --teal: #0c8c78;
      --green: #16834a;
      --amber: #b87900;
      --red: #b83d36;
      --coal: #12365e;
      --yellow: #f7c600;
      --sky: #ddeaf7;
      --mint: #dff1e7;
      --cream: #f7efd4;
      --rose: #f5e1df;
      --grey-bg: #eef0f3;
      --shadow: 0 10px 26px rgba(18, 54, 94, .08);
      --radius: 8px;
    }
    * { box-sizing: border-box; }
    /* overflow-x:hidden is a safety net, not the fix for the Jadwal overflow
       bug (that was .phase-steps missing flex-wrap, fixed above) -- without
       this, any single element that overflows its container drags the
       *entire* page sideways, which is what made unrelated cards further
       down look cut off too. This does not affect the sticky tab bar:
       sticky-to-viewport still works when body is the scrolling ancestor. */
    body { margin:0; background:var(--paper); color:var(--ink); font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif; line-height:1.45; overflow-x:hidden; }
    button,select { font:inherit; }
    .shell { max-width:1480px; margin:0 auto; padding:24px; }
    .topbar { display:flex; align-items:flex-start; justify-content:space-between; gap:24px; padding:18px 22px; background:linear-gradient(120deg,var(--coal),#1b4a7e); color:#fff; border-radius:var(--radius); border-bottom:4px solid var(--yellow); box-shadow:var(--shadow); flex-wrap:wrap; }
    .brand { display:flex; gap:16px; align-items:flex-start; }
    .mark { width:48px; height:48px; display:grid; place-items:center; background:var(--yellow); color:var(--coal); font-weight:900; border-radius:6px; flex:0 0 auto; }
    h1 { margin:0; font-size:clamp(22px,3vw,32px); line-height:1.1; }
    .subtitle { margin:8px 0 0; max-width:940px; color:#d5e1ee; font-size:14px; }
    .asof { min-width:220px; padding:11px 14px; border:1px solid rgba(255,255,255,.22); border-radius:7px; color:#eef6f7; background:rgba(255,255,255,.07); font-size:12px; }
    .asof strong { display:block; font-size:17px; color:#fff; margin-top:2px; }
    .tabbar-wrap { position:sticky; top:0; z-index:20; margin:14px 0; }
    .tabbar-wrap::after { content:""; position:absolute; top:0; right:0; bottom:0; width:28px; border-radius:0 var(--radius) var(--radius) 0; background:linear-gradient(to right,transparent,rgba(244,246,249,.94)); pointer-events:none; }
    .tabbar { position:relative; padding:9px 10px; background:rgba(244,246,249,.94); border:1px solid var(--line); border-radius:var(--radius); backdrop-filter:blur(10px); display:flex; flex-wrap:nowrap; gap:6px; overflow-x:auto; scroll-snap-type:x proximity; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
    .tabbar::-webkit-scrollbar { display:none; }
    .tab-button { flex:0 0 auto; scroll-snap-align:start; border:1px solid transparent; border-radius:999px; background:transparent; color:var(--coal); cursor:pointer; font-size:13px; font-weight:800; padding:10px 14px; min-height:44px; white-space:nowrap; }
    .tab-button:hover,.tab-button:focus-visible { background:var(--sky); border-color:#bcd4ec; outline:none; }
    .tab-button.active { background:var(--coal); border-color:var(--coal); color:#fff; }
    .tab-panel { display:none; }
    .tab-panel.active { display:block; }
    [id] { scroll-margin-top:150px; }
    .section { background:rgba(255,255,255,.86); border:1px solid var(--line); border-radius:var(--radius); padding:16px; box-shadow:0 8px 24px rgba(23,33,43,.04); margin-bottom:16px; }
    .section-head { display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:12px; flex-wrap:wrap; }
    h2 { margin:0; font-size:18px; color:var(--coal); }
    .h3 { font-size:15px; }
    .hint { color:var(--muted); font-size:12px; }
    .pill { display:inline-flex; align-items:center; gap:4px; padding:3px 8px; border-radius:999px; font-size:11px; font-weight:700; white-space:nowrap; border:1px solid transparent; }
    .pill.wrap-pill { white-space:normal; line-height:1.25; border-radius:6px; max-width:100%; overflow-wrap:anywhere; }
    .phase-planning { background:#eef0f3; color:#5f6c79; }
    .phase-assessment { background:#e8ecf0; color:#4a5662; }
    .phase-mockup { background:var(--cream); color:#725200; }
    .phase-sprint { background:#f5e8c6; color:#7a5a00; }
    .phase-dev { background:var(--sky); color:#0f5aa0; }
    .phase-uat { background:#c4d9f0; color:#0b4580; }
    .phase-live { background:var(--mint); color:#0c6b3a; }
    .phase-hypercare { background:#cce8e1; color:#0a6a5e; }
    .health-green { background:var(--mint); color:#0c6b3a; border-color:#9ed4b8; }
    .health-amber { background:var(--cream); color:#7a5a00; border-color:#dbc67a; }
    .health-red { background:var(--rose); color:#8b2d28; border-color:#d49a96; }
    .health-grey { background:var(--grey-bg); color:#5f6c79; border-color:#c4c9cf; }
    .outcome-judgment { background:#fff8dc; color:#725200; border-color:#d8b85a; }

    /* Summary cards */
    .summary-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:12px; margin-bottom:16px; }
    .summary-card { border:1px solid var(--line); border-radius:var(--radius); background:#fff; padding:14px; box-shadow:0 4px 12px rgba(23,33,43,.03); }
    .summary-card .label { font-size:12px; color:var(--muted); margin-bottom:6px; font-weight:700; }
    .summary-card .value { font-size:26px; font-weight:800; color:var(--coal); line-height:1; }
    .summary-card .note { margin-top:8px; font-size:12px; color:var(--muted); }
    .summary-card.alert { border-left:4px solid var(--red); }
    .summary-card.clickable { cursor:pointer; transition:box-shadow .15s,transform .15s; }
    .summary-card.clickable:hover,.summary-card.clickable:focus-visible { box-shadow:0 6px 16px rgba(18,54,94,.14); transform:translateY(-1px); outline:none; }
    .summary-card.clickable:active { transform:translateY(0); box-shadow:0 2px 6px rgba(18,54,94,.1); }
    .summary-card.warn { border-left:4px solid var(--amber); }

    /* Action items */
    .action-list { display:grid; grid-template-columns:minmax(0,1fr); gap:8px; }
    .action-item { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:10px; padding:10px; border:1px solid var(--line); border-radius:7px; background:#fff; align-items:start; }
    .action-item.overdue { border-color:#d9877f; background:#fff7f6; }
    .action-item strong { display:block; color:var(--ink); margin-bottom:4px; }
    .action-meta { color:var(--muted); font-size:11px; text-align:right; }

    /* Process map */
    .process-group { border:1px solid var(--line); border-radius:var(--radius); background:#fff; padding:14px; margin-bottom:12px; cursor:pointer; transition:border-color .15s,box-shadow .15s; }
    .process-group:hover,.process-group.active { border-color:#a9c0d8; box-shadow:0 6px 18px rgba(18,54,94,.08); }
    .process-group h3 { margin:0 0 6px; font-size:15px; color:var(--coal); }
    .process-group .module-chips { display:flex; flex-wrap:wrap; gap:5px; margin-top:8px; }
    .process-group .module-chip { padding:4px 8px; border-radius:6px; font-size:11px; font-weight:700; cursor:pointer; border:1px solid var(--line); background:#f8fbfb; transition:background .12s; }
    .process-group .module-chip:hover { background:var(--sky); }
    .process-group .module-chip.health-green { border-color:#9ed4b8; }
    .process-group .module-chip.health-amber { border-color:#dbc67a; }
    .process-group .module-chip.health-red { border-color:#d49a96; }
    .process-group .module-chip.health-grey { border-color:#c4c9cf; }
    .process-groups-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(380px,1fr)); gap:12px; }

    /* Timeline schedule */
    .schedule-axis { display:grid; grid-template-columns:200px repeat(4,1fr); gap:1px; margin-bottom:12px; font-size:12px; }
    .schedule-header { padding:8px; background:var(--coal); color:#fff; font-weight:800; text-align:center; border-radius:4px; }
    .schedule-header:first-child { text-align:left; }
    .schedule-row { display:contents; }
    .schedule-module { padding:8px; background:#fff; border:1px solid var(--line); border-radius:4px; font-weight:700; font-size:12px; display:flex; align-items:center; gap:6px; cursor:pointer; }
    .schedule-module:hover { background:var(--sky); }
    .schedule-cell { padding:6px; background:#fff; border:1px solid var(--line); border-radius:4px; font-size:11px; min-height:40px; display:flex; flex-wrap:wrap; gap:4px; align-items:center; }
    .schedule-cell .milestone-dot { width:8px; height:8px; border-radius:50%; flex:0 0 auto; }
    .schedule-cell .milestone-dot.confirmed { background:var(--green); }
    .schedule-cell .milestone-dot.unconfirmed { background:var(--amber); }
    .schedule-cell .milestone-dot.overdue { background:var(--red); }

    /* Tracker cards for live modules */
    .tracker-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(420px,1fr)); gap:12px; }
    .tracker-card { border:1px solid var(--line); border-radius:7px; background:#fff; padding:12px; display:grid; gap:10px; }
    .tracker-card.redflag { border-color:#d9877f; background:#fff7f6; }
    .tracker-card.sunset { border-color:#d8b85a; background:#fffaf0; }
    .tracker-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; flex-wrap:wrap; }
    .tracker-head h3 { margin:0; color:var(--coal); font-size:16px; line-height:1.25; }
    .metric-mini-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
    .metric-mini { border:1px solid var(--line); border-radius:6px; padding:8px; background:#f8fbfb; }
    .metric-mini .label { font-size:10px; text-transform:uppercase; color:var(--muted); font-weight:900; }
    .metric-mini .value { margin-top:4px; font-size:12px; color:var(--coal); font-weight:800; overflow-wrap:anywhere; }

    /* Evidence ladder */
    .evidence-ladder { display:grid; grid-template-columns:minmax(0,1fr); gap:2px; }
    .evidence-level { display:grid; grid-template-columns:40px 1fr auto; gap:10px; padding:10px; border:1px solid var(--line); border-radius:6px; background:#fff; align-items:center; }
    .evidence-level .level-num { width:32px; height:32px; border-radius:50%; display:grid; place-items:center; font-weight:900; font-size:14px; color:#fff; }
    .evidence-level .level-label { font-weight:700; font-size:14px; }
    .evidence-level .level-count { font-size:22px; font-weight:800; color:var(--coal); }

    /* Decision table */
    .decision-table,.follow-table { width:100%; border-collapse:collapse; font-size:12px; background:#fff; }
    .decision-table th,.follow-table th { background:var(--coal); color:#fff; padding:8px; text-align:left; font-weight:700; }
    .decision-table td,.follow-table td { padding:8px; border-bottom:1px solid var(--line); vertical-align:top; }
    .decision-table tr:hover td,.follow-table tr:hover td { background:var(--sky); }

    /* Module detail */
    .module-list { display:grid; grid-template-columns:minmax(0,1fr); gap:8px; }
    .module { border:1px solid var(--line); border-radius:var(--radius); background:#fff; overflow:hidden; }
    .module.selected-module { border-color:#a9c0d8; box-shadow:0 8px 20px rgba(18,54,94,.08); }
    .module > summary { padding:12px; cursor:pointer; list-style:none; }
    .module > summary::-webkit-details-marker { display:none; }
    .module-row { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap; }
    .module-name { font-weight:800; color:var(--coal); font-size:15px; }
    .module-sub { font-size:12px; color:var(--muted); margin-top:4px; max-width:700px; }
    .module-badges { display:flex; flex-wrap:wrap; gap:5px; align-items:center; }
    .module-body { padding:0 12px 12px; }
    .detail-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:8px; margin-bottom:10px; }
    .detail-grid .box { border:1px solid var(--line); border-radius:6px; padding:8px; background:#f8fbfb; }
    .detail-grid .box .label { font-size:10px; text-transform:uppercase; color:var(--muted); font-weight:900; margin-bottom:4px; }
    .detail-grid .box .text { font-size:12px; color:var(--ink); }
    .workflow { display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:8px; }
    .workflow .box { border:1px solid var(--line); border-radius:6px; padding:8px; background:#f8fbfb; }
    .workflow .box .label { font-size:10px; text-transform:uppercase; color:var(--muted); font-weight:900; margin-bottom:4px; }
    .workflow .box .text { font-size:12px; color:var(--ink); }

    /* Adjustment table */
    .adjustment-panel { margin-top:10px; }
    .adjustment-summary { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; margin-bottom:10px; }
    .adjustment-stat { border:1px solid var(--line); border-radius:6px; padding:8px; background:#f8fbfb; text-align:center; }
    .adjustment-stat strong { display:block; font-size:20px; color:var(--blue); }
    .adjustment-stat span { font-size:11px; color:var(--muted); }
    .adjustment-table { width:100%; border-collapse:collapse; font-size:12px; }
    .adjustment-table th { background:var(--wash); padding:7px; text-align:left; font-weight:700; }
    .adjustment-table td { padding:7px; border-bottom:1px solid var(--line); }
    .adjustment-title { font-weight:700; }
    .adjustment-note { font-size:11px; color:var(--muted); margin-top:3px; }
    .task-chip { display:inline-block; padding:2px 6px; border-radius:4px; background:var(--wash); font-size:10px; font-weight:700; }
    .task-chip.blocked { background:#fff0ef; color:var(--red); }

    /* Search */
    .search-bar { display:grid; grid-template-columns:1fr auto; gap:8px; margin-bottom:14px; }
    .search { width:100%; border:1px solid var(--line-strong); border-radius:6px; background:#fff; color:var(--ink); padding:8px 12px; font-size:13px; }
    .search-count { font-size:12px; color:var(--muted); align-self:center; white-space:nowrap; }

    /* Footer */
    .footer { margin-top:24px; padding:14px; font-size:11px; color:var(--muted); border-top:1px solid var(--line); }

    /* Responsive */
    @media (max-width:900px) {
      .summary-grid { grid-template-columns:repeat(2,1fr); }
      .process-groups-grid { grid-template-columns:1fr; }
      .tracker-grid { grid-template-columns:1fr; }
      .schedule-axis { grid-template-columns:1fr; }
      .schedule-header:first-child { display:none; }
      .schedule-row .schedule-module { grid-column:1/-1; }
      .metric-mini-grid { grid-template-columns:repeat(2,1fr); }
      .detail-grid { grid-template-columns:1fr; }
      .adjustment-summary { grid-template-columns:repeat(2,1fr); }
    }
    @media (max-width:640px) {
      .summary-grid { grid-template-columns:repeat(2,1fr); }
      .summary-card .value { font-size:22px; }
      .tabbar { gap:4px; }
      .topbar { padding:14px 16px; gap:14px; }
      .mark { width:40px; height:40px; font-size:13px; }
      .subtitle { display:none; }
      .asof { min-width:0; width:100%; }
      .hint { font-size:12px; }
      .pill { font-size:12px; }
      .task-chip { font-size:11px; }
      .adjustment-note { font-size:12px; }
      .footer { font-size:12px; }

      /* Tables -> stacked cards */
      .stack-wrap { overflow-x:visible; }
      .stack-table { width:100%; }
      .stack-table thead { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
      .stack-table tbody { display:block; }
      .stack-table tr { display:block; border:1px solid var(--line); border-radius:7px; background:#fff; padding:10px; margin-bottom:8px; }
      .stack-table tr.overdue { border-left:4px solid var(--red); background:#fff7f6; }
      .stack-table td { display:grid; grid-template-columns:104px minmax(0,1fr); gap:10px; border:0; padding:4px 0; align-items:baseline; }
      .stack-table td::before { content:attr(data-label); font-size:11px; font-weight:800; color:var(--muted); text-transform:uppercase; }
      .stack-table td.stack-title { grid-template-columns:1fr; }
      .stack-table td.stack-title::before { display:none; }
    }
    @media (max-width:480px) {
      .summary-grid { grid-template-columns:1fr; }
    }

    /* Meta bar */
    .meta-bar { display:flex; flex-wrap:wrap; gap:16px; padding:10px 14px; background:var(--wash); border:1px solid var(--line); border-radius:var(--radius); margin-bottom:14px; font-size:12px; color:var(--muted); font-weight:700; }

    /* Board grid */
    .board-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
    @media(max-width:900px){ .board-grid { grid-template-columns:1fr; } }

    /* Evidence ladder (v7) */
    .evidence-ladder { display:grid; grid-template-columns:minmax(0,1fr); gap:4px; margin:8px 0; }
    .evidence-ladder.big .evidence-step { padding:12px; }
    .evidence-step { display:flex; align-items:center; gap:10px; padding:8px 12px; border:1px solid var(--line); border-radius:6px; background:#fff; font-size:13px; }
    .evidence-step.highlight { border-color:var(--teal); background:var(--mint); }
    .evidence-count { min-width:32px; height:32px; display:inline-grid; place-items:center; border-radius:50%; font-weight:900; font-size:14px; color:#fff; background:var(--coal); flex:0 0 auto; }

    /* Outcome card grid */
    .outcome-card-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; }
    .outcome-card { border:1px solid var(--line); border-radius:6px; padding:10px; background:#fff; text-align:center; }
    .outcome-card strong { display:block; font-size:20px; color:var(--coal); }
    .outcome-card span { font-size:11px; color:var(--muted); }

    /* Coverage bars */
    .coverage-bars { display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:8px; }
    .coverage-stat { border:1px solid var(--line); border-radius:6px; padding:8px; background:#fff; text-align:center; }
    .coverage-stat strong { display:block; font-size:22px; color:var(--coal); }

    /* Ask list */
    .ask-list { display:grid; grid-template-columns:minmax(0,1fr); gap:8px; }
    .ask-item { padding:10px; border:1px solid var(--line); border-radius:6px; background:#fff; }
    .ask-item strong { display:block; margin-bottom:4px; color:var(--coal); }
    .ask-meta { font-size:11px; color:var(--muted); margin-top:4px; }

    /* Attention cards */
    .attention-card { border-left:4px solid var(--line); }
    .attn-decision { border-left-color:var(--red); }
    .attn-schedule { border-left-color:var(--amber); }

    /* Cluster cards (peta) */
    .cluster { border:1px solid var(--line); border-radius:var(--radius); background:#fff; padding:14px; cursor:pointer; transition:border-color .15s,box-shadow .15s; }
    .cluster:hover,.cluster.active { border-color:#a9c0d8; box-shadow:0 6px 18px rgba(18,54,94,.08); }
    .cluster-title h3 { margin:0 0 6px; font-size:15px; color:var(--coal); }
    .cluster-meta { display:flex; flex-wrap:wrap; gap:5px; margin-top:8px; }

    /* Map chip */
    .map-modules-compact { display:flex; flex-wrap:wrap; gap:5px; margin-top:8px; }
    .map-chip { display:inline-flex; align-items:center; gap:4px; padding:4px 8px; border-radius:6px; font-size:11px; font-weight:700; border:1px solid var(--line); background:#f8fbfb; }
    .map-chip:hover { background:var(--sky); }
    .map-chip .dot { width:8px; height:8px; border-radius:50%; flex:0 0 auto; }
    .map-chip.green .dot { background:var(--green); }
    .map-chip.amber .dot { background:var(--amber); }
    .map-chip.red .dot { background:var(--red); }
    .map-chip.grey .dot { background:#9aa5af; }
    .map-chip .phase-tag { font-size:9px; color:var(--muted); }
    .map-chip .health-tag { font-size:9px; font-weight:800; }
    .map-chip.green .health-tag { color:var(--green); }
    .map-chip.amber .health-tag { color:var(--amber); }
    .map-chip.red .health-tag { color:var(--red); }
    .map-chip.grey .health-tag { color:#7c8894; }

    /* Execution cards */
    /* grid-template-columns:minmax(0,1fr) -- without this, CSS Grid's default
       implicit column has an unbounded content-based minimum width ("auto"
       sizing, min-width:auto on items), so a single long unbreakable string
       anywhere inside any card silently stretches this ENTIRE column -- and
       therefore every sibling in it, including .today-marker -- past the
       viewport. minmax(0,1fr) is the standard fix: it lets the column (and
       everything in it) shrink to the available width instead of growing to
       fit its widest descendant's intrinsic content. */
    .execution-list { display:grid; grid-template-columns:minmax(0,1fr); gap:10px; }
    .execution-card { border:1px solid var(--line); border-radius:7px; background:#fff; padding:12px; }
    .execution-card.overdue { border-color:#d9877f; background:#fff7f6; }
    .execution-head { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; flex-wrap:wrap; margin-bottom:8px; }
    .execution-head h3 { margin:0; font-size:15px; color:var(--coal); }
    .today-marker { padding:6px 12px; background:var(--coal); color:#fff; border-radius:999px; font-size:12px; font-weight:800; text-align:center; }

    /* Plan-to-live progress */
    .lifecycle-progress { margin:10px 0 8px; padding:10px 12px; border:1px solid var(--line); border-radius:7px; background:linear-gradient(90deg,#f8fbfd,#fff); }
    .lifecycle-progress-head { display:flex; align-items:flex-end; justify-content:space-between; gap:12px; margin-bottom:7px; }
    .lifecycle-progress-title { font-size:11px; font-weight:800; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; }
    .lifecycle-progress-value { display:flex; align-items:baseline; gap:7px; text-align:right; }
    .lifecycle-progress-value strong { font-size:24px; line-height:1; color:var(--coal); }
    .lifecycle-progress-value span { font-size:11px; font-weight:700; color:var(--muted); }
    .lifecycle-progress-track { position:relative; height:13px; overflow:hidden; border-radius:999px; background:#e4e9ee; box-shadow:inset 0 1px 2px rgba(18,54,94,.08); }
    .lifecycle-progress-fill { height:100%; min-width:10px; border-radius:999px; transition:width .25s ease; }
    .lifecycle-progress-note { margin-top:5px; font-size:10px; color:var(--muted); }

    /* Phase steps */
    .phase-steps { display:flex; flex-wrap:wrap; gap:4px; margin-top:8px; }
    .phase-step { padding:3px 8px; border-radius:4px; font-size:10px; font-weight:800; background:var(--wash); color:var(--muted); white-space:nowrap; }
    .phase-step.done { background:var(--mint); color:var(--green); }
    .phase-step.current { background:var(--sky); color:var(--blue); border:2px solid var(--blue); }
    .phase-step.future { background:var(--grey-bg); color:#b0b8c1; }

    /* fromto table reuse */
    .fromto-table { width:100%; border-collapse:collapse; font-size:12px; background:#fff; }
    .fromto-table th { background:var(--coal); color:#fff; padding:8px; text-align:left; font-weight:700; }
    .fromto-table td { padding:8px; border-bottom:1px solid var(--line); vertical-align:top; }
    .fromto-table tr:hover td { background:var(--sky); }
    .fromto-table tr.overdue td { background:#fff7f6; }

    /* Filter select */
    .filter-select { border:1px solid var(--line-strong); border-radius:6px; background:#fff; color:var(--ink); padding:7px 10px; font-size:12px; }

    /* Print */
    @media print {
      body { background:#fff; }
      .tabbar-wrap { display:none; }
      .tab-panel { display:block !important; break-before:page; }
      .tab-panel:first-of-type { break-before:auto; }
      .topbar { break-after:avoid; }
      .module[open] .module-body { display:block; }
      details[open] .fold-body { display:block; }
      .process-group { break-inside:avoid; }
      .tracker-card { break-inside:avoid; }
      .action-item { break-inside:avoid; }
      .execution-card { break-inside:avoid; }
      .section { box-shadow:none; border:1px solid #ccc; }
    }
