/* EstimatorPro — compact operational workspace
   Single token layer. Desktop keeps the wide top navigation; mobile uses the
   existing off-canvas navigation. Component rules below retain existing hooks. */
:root,
[data-theme="dark"] {
  color-scheme: dark;
  --font-sans: 'Public Sans', 'IBM Plex Sans', 'Segoe UI', sans-serif;
  --font-display: 'Public Sans', 'IBM Plex Sans', 'Segoe UI', sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, SFMono-Regular, Consolas, monospace;
  --type-body: .875rem;
  --type-label: .66rem;
  --type-caption: .72rem;
  --type-title: clamp(1.42rem, 1.15rem + .7vw, 1.9rem);
  --type-section: clamp(1rem, .94rem + .25vw, 1.2rem);
  --bg-base: #0d0d0d;
  --bg-primary: #111111;
  --bg-secondary: #181818;
  --bg-tertiary: #222222;
  --bg-hover: #2a2a2a;
  --bg-sidebar: #0e0e0e;
  --bg-card: #171717;
  --bg-input: #1c1c1c;
  --bg-modal: #181818;
  --bg-toast: #222222;
  --border: #2e2e2e;
  --border-light: #242424;
  --border-card: #2a2a2a;
  --text-primary: #f0f0f0;
  --text-secondary: #9e9e9e;
  --text-muted: #737373;
  --accent: #94a3b8;
  --accent-hover: #cbd5e1;
  --accent-light: rgba(148, 163, 184, .14);
  --accent-contrast: #0f172a;
  --accent-shadow: rgba(148, 163, 184, .18);
  --netco: #4d8dff;
  --netco-bg: rgba(77, 141, 255, .14);
  --netco-border: rgba(77, 141, 255, .34);
  --omg: #34c77a;
  --omg-bg: rgba(52, 199, 122, .14);
  --omg-border: rgba(52, 199, 122, .34);
  --itsol: #a66cff;
  --itsol-bg: rgba(166, 108, 255, .14);
  --itsol-border: rgba(166, 108, 255, .34);
  --pipe-todo: #737373;
  --pipe-inprog: #e5a33d;
  --pipe-review: #4d8dff;
  --pipe-done: #34c77a;
  --pipe-revisi: #e26a9d;
  --pipe-todo-bg: rgba(115, 115, 115, .14);
  --pipe-inprog-bg: rgba(229, 163, 61, .14);
  --pipe-review-bg: rgba(77, 141, 255, .14);
  --pipe-done-bg: rgba(52, 199, 122, .14);
  --pipe-revisi-bg: rgba(226, 106, 157, .14);
  --green: #34c77a;
  --green-bg: rgba(52, 199, 122, .14);
  --orange: #e5a33d;
  --orange-bg: rgba(229, 163, 61, .14);
  --red: #f07882;
  --red-bg: rgba(240, 120, 130, .14);
  --blue: #4d8dff;
  --blue-bg: rgba(77, 141, 255, .14);
  --purple: #a66cff;
  --purple-bg: rgba(166, 108, 255, .14);
  --pink: #e26a9d;
  --pink-bg: rgba(226, 106, 157, .14);
  --cyan: #52c3d2;
  --cyan-bg: rgba(82, 195, 210, .14);
  --shadow: 0 1px 2px rgba(0, 0, 0, .2), 0 12px 28px rgba(0, 0, 0, .18);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, .16);
  --shadow-lg: 0 20px 56px rgba(0, 0, 0, .42);
  --radius: 6px;
  --radius-sm: 5px;
  --radius-lg: 8px;
  --transition: .16s ease;
  --sidebar-width: 240px;
  --sidebar-width-min: 64px;
  --topbar-h: 64px;
  --layout-gutter: clamp(14px, 2vw, 32px);
  --layout-gap: 12px;
}
[data-theme="light"] {
  color-scheme: light;
  --bg-base: #f4f4f2;
  --bg-primary: #ffffff;
  --bg-secondary: #f0f0ee;
  --bg-tertiary: #e6e6e3;
  --bg-hover: #e0e0dc;
  --bg-sidebar: #fafaf8;
  --bg-card: #ffffff;
  --bg-input: #fafaf9;
  --bg-modal: #ffffff;
  --bg-toast: #202020;
  --border: #d8d8d3;
  --border-light: #e9e9e5;
  --border-card: #ddddda;
  --text-primary: #1d1d1b;
  --text-secondary: #62625d;
  --text-muted: #8b8b84;
  --accent: #334155;
  --accent-hover: #1e293b;
  --accent-light: rgba(51, 65, 85, .1);
  --accent-contrast: #ffffff;
  --accent-shadow: rgba(51, 65, 85, .16);
  --netco: #2864c7;
  --netco-bg: rgba(40, 100, 199, .1);
  --netco-border: rgba(40, 100, 199, .25);
  --omg: #16834d;
  --omg-bg: rgba(22, 131, 77, .1);
  --omg-border: rgba(22, 131, 77, .24);
  --itsol: #7544c5;
  --itsol-bg: rgba(117, 68, 197, .1);
  --itsol-border: rgba(117, 68, 197, .24);
  --pipe-todo: #8b8b84;
  --pipe-inprog: #b36d19;
  --pipe-review: #2864c7;
  --pipe-done: #16834d;
  --pipe-revisi: #b7487a;
  --green: #16834d;
  --green-bg: rgba(22, 131, 77, .1);
  --orange: #b36d19;
  --orange-bg: rgba(179, 109, 25, .1);
  --red: #c84754;
  --red-bg: rgba(200, 71, 84, .1);
  --blue: #2864c7;
  --blue-bg: rgba(40, 100, 199, .1);
  --purple: #7544c5;
  --purple-bg: rgba(117, 68, 197, .1);
  --pink: #b7487a;
  --pink-bg: rgba(183, 72, 122, .1);
  --cyan: #197c8c;
  --cyan-bg: rgba(25, 124, 140, .1);
  --shadow: 0 1px 2px rgba(20, 20, 18, .08), 0 10px 24px rgba(20, 20, 18, .06);
  --shadow-sm: 0 1px 2px rgba(20, 20, 18, .06);
  --shadow-lg: 0 20px 56px rgba(20, 20, 18, .16);
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { min-width: 320px; min-height: 100%; font-size: 15px; scroll-behavior: smooth; background: var(--bg-base); }
body { min-width: 320px; min-height: 100dvh; overflow-x: hidden; background: var(--bg-base); color: var(--text-primary); font: var(--type-body)/1.45 var(--font-sans); font-feature-settings: 'cv02', 'cv03', 'cv04', 'cv11'; -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
::selection { color: var(--accent-contrast); background: var(--accent); }
.page-title { font: 650 var(--type-title)/1.08 var(--font-display); letter-spacing: -.035em; }
.page-subtitle { color: var(--text-secondary); font-size: .82rem; }
.workspace-eyebrow, .workspace-filter-label, .nav-section-label { font-size: var(--type-label); font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.workspace-eyebrow { color: var(--text-muted); }
.btn { min-height: 34px; border-radius: var(--radius); font-weight: 600; letter-spacing: -.01em; transition: background var(--transition), border-color var(--transition), box-shadow var(--transition), color var(--transition), transform var(--transition); }
.btn-primary { background: var(--accent); color: var(--accent-contrast); box-shadow: 0 2px 7px var(--accent-shadow); }
.btn-primary:hover { background: var(--accent-hover); box-shadow: 0 6px 14px var(--accent-shadow); transform: translateY(-1px); }
.card, .kpi-card, .settings-card, .table-container, .workspace-table-card, .kanban-column, .est-summary-card { border-color: var(--border-card); border-radius: var(--radius-lg); box-shadow: var(--shadow-sm); }
.form-input, .form-select, .form-textarea, .search-input, .login-input { border-radius: var(--radius); }
.form-input:focus, .form-select:focus, .form-textarea:focus, .search-input:focus, .login-input:focus { box-shadow: 0 0 0 3px var(--accent-light); }
.modal-box, .account-popover, .presence-popover, .export-menu-list { border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; } }

/* ============================================================
   EXPORT MENU
   ============================================================ */
.export-menu { position:relative; display:inline-block; }
.export-menu > .btn span { margin-left:5px; font-size:12px; }
.export-menu-list { display:none; position:absolute; z-index:50; top:calc(100% + 6px); right:0; min-width:205px; padding:5px; border:1px solid var(--border); border-radius:var(--radius); background:var(--bg-primary); box-shadow:0 10px 24px rgba(15,23,42,.15); }
.export-menu-list.is-open { display:block; }
.export-menu-list button { display:flex; width:100%; align-items:baseline; gap:6px; border:0; border-radius:5px; padding:9px 10px; color:var(--text-primary); background:transparent; font:inherit; font-size:12px; text-align:left; cursor:pointer; }
.export-menu-list button:hover { background:var(--bg-secondary); }
.export-menu-list small { margin-left:auto; color:var(--text-muted); font-size:9px; white-space:nowrap; }

/* ============================================================
   WBS PRESENTATION / PROPOSAL
   ============================================================ */
.wbs-presentation { background:var(--bg-primary); border:1px solid var(--border); border-radius:var(--radius-lg); padding:24px; }
.wbs-present-hero { display:flex; justify-content:space-between; gap:24px; border-bottom:2px solid var(--border); padding-bottom:18px; margin-bottom:20px; }
.wbs-present-kicker { font-size:10px; font-weight:700; letter-spacing:1.2px; color:var(--text-muted); }
.wbs-present-hero h2 { margin:6px 0; font-size:24px; }
.wbs-present-hero p { margin:0; max-width:680px; color:var(--text-secondary); font-size:13px; }
.wbs-present-summary { display:grid; grid-template-columns:repeat(4,auto); align-content:center; gap:3px 13px; text-align:center; white-space:nowrap; }
.wbs-present-summary strong { color:var(--text-primary); font-size:20px; }
.wbs-present-summary span { color:var(--text-muted); font-size:9px; text-transform:uppercase; }
.wbs-present-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.wbs-present-phase { border:1px solid var(--border); border-top:4px solid var(--wbs-color); border-radius:6px; padding:14px; }
.wbs-present-phase header { display:flex; align-items:center; gap:9px; margin-bottom:11px; }
.wbs-present-num { padding:4px 7px; border-radius:3px; background:var(--wbs-color); color:#fff; font-size:11px; font-weight:700; }
.wbs-present-phase h3 { margin:0; font-size:15px; }
.wbs-present-deliverable { padding:9px 0; border-top:1px solid var(--border); }
.wbs-present-deliv-title { display:grid; grid-template-columns:36px 1fr auto; gap:7px; font-size:11px; }
.wbs-present-deliv-title > span { color:var(--wbs-color); font-weight:700; }
.wbs-present-deliv-title em { color:var(--text-muted); font-size:9px; font-style:normal; white-space:nowrap; }
.wbs-present-deliverable ol { list-style:none; padding:0; margin:7px 0 0; }
.wbs-present-deliverable li { display:grid; grid-template-columns:43px 1fr auto; gap:6px; padding:3px 0; font-size:10px; }
.wbs-present-act-num { color:var(--text-muted); }
.wbs-present-deliverable li b { color:var(--text-secondary); font-size:9px; white-space:nowrap; }
.wbs-present-empty { padding:8px 0; color:var(--text-muted); font-size:10px; }
.wbs-present-footer { display:flex; justify-content:space-between; margin-top:22px; padding-top:9px; border-top:1px solid var(--border); color:var(--text-muted); font-size:9px; }
@media (max-width:800px) { .wbs-present-hero{display:block}.wbs-present-summary{margin-top:16px;justify-content:start}.wbs-present-grid{grid-template-columns:1fr} }

/* Tender identifiers — EstimatorPro immutable request codes */
.tender-code-cell,
.tender-code-readonly {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
}
.tender-code-cell code,
.tender-code-readonly code,
.tender-code-inline {
  font-family: var(--font-mono);
  font-size: .72rem;
  font-weight: 700;
  color: var(--accent);
  letter-spacing: -.01em;
  white-space: nowrap;
}
.tender-code-pending {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 11px 12px;
  margin-bottom: 17px;
  color: var(--text-secondary);
  background: var(--surface-2);
  border: 1px dashed var(--border);
  border-radius: var(--radius-sm);
}
.tender-code-pending > i { color: var(--accent); margin-top: 2px; }
.tender-code-pending strong,
.tender-code-pending small { display: block; }
.tender-code-pending strong { color: var(--text-primary); font-size: .78rem; }
.tender-code-pending small { margin-top: 3px; font-size: .72rem; line-height: 1.45; }
.tender-code-form-group { margin-bottom: 17px; }
.tender-code-readonly {
  width: 100%;
  min-height: 38px;
  padding: 8px 10px;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: var(--radius-sm);
}

/* Online presence */
.presence-wrap { position:relative; }
.presence-button { display:flex; align-items:center; gap:7px; min-height:34px; padding:4px 9px; border:1px solid var(--border); border-radius:9px; background:var(--bg-card); color:var(--text-primary); cursor:pointer; font:inherit; font-size:.76rem; font-weight:600; transition:border-color .15s, background .15s; }
.presence-button:hover, .presence-button[aria-expanded="true"] { border-color:var(--accent); background:var(--bg-hover); }
.presence-indicator { width:7px; height:7px; flex:0 0 7px; border-radius:50%; background:#22c55e; box-shadow:0 0 0 3px rgba(34,197,94,.15); }
.presence-avatars { display:flex; align-items:center; padding-left:2px; }
.presence-avatar { display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; margin-left:-5px; border:2px solid var(--bg-card); border-radius:50%; color:#fff; font-size:.57rem; font-weight:700; line-height:1; }
.presence-avatar:first-child { margin-left:0; }
.presence-extra { background:var(--text-muted); font-size:.55rem; }
.presence-count { white-space:nowrap; }
.presence-popover { display:none; position:absolute; z-index:100; top:calc(100% + 8px); right:0; width:230px; max-height:300px; overflow-y:auto; padding:8px; border:1px solid var(--border); border-radius:10px; background:var(--bg-card); box-shadow:0 12px 30px rgba(0,0,0,.2); }
.presence-popover.is-open { display:block; }
.presence-popover-title { padding:5px 6px 9px; border-bottom:1px solid var(--border); color:var(--text-primary); font-size:.78rem; font-weight:700; }
.presence-user { display:flex; align-items:center; gap:9px; padding:9px 6px 5px; }
.presence-avatar-large { width:29px; height:29px; margin:0; border:0; font-size:.66rem; }
.presence-user-details { min-width:0; }
.presence-user-name { overflow:hidden; color:var(--text-primary); font-size:.79rem; font-weight:600; text-overflow:ellipsis; white-space:nowrap; }
.presence-user-status { display:flex; align-items:center; gap:5px; margin-top:2px; color:#22c55e; font-size:.68rem; }
.presence-user-status::before { content:''; width:5px; height:5px; border-radius:50%; background:currentColor; }

/* Indikator cloud sync */
.sync-status{display:inline-flex;align-items:center;gap:4px;margin-top:2px;font-size:.6rem;color:var(--text-muted)}
.sync-status::before{content:'';width:6px;height:6px;border-radius:50%;background:#6b7280}
.sync-status[data-state="syncing"]::before,.sync-status[data-state="pending"]::before{background:var(--orange)}
.sync-status[data-state="synced"]::before{background:var(--green)}
.sync-status[data-state="error"]{color:var(--red)}
.sync-status[data-state="error"]::before{background:var(--red)}
.sync-now-button{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:4px 9px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text-secondary);font:inherit;font-size:.72rem;font-weight:600;cursor:pointer;transition:background var(--transition),border-color var(--transition),color var(--transition)}
.sync-now-button:hover:not(:disabled){border-color:var(--accent);background:var(--bg-hover);color:var(--text-primary)}
.sync-now-button:disabled{opacity:.55;cursor:wait}.sync-now-button svg{width:14px;height:14px}.sync-now-button[hidden]{display:none}
.location-master-field{min-width:0}.location-master-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:8px}.location-site-detail{margin-top:0}.location-master-field .form-hint{line-height:1.4}@media(max-width:720px){.location-master-grid{grid-template-columns:1fr}}
.sync-error-detail{display:flex;flex-direction:column;gap:3px;margin-top:13px;padding:10px 12px;border:1px solid color-mix(in srgb,var(--orange) 55%,var(--border));border-radius:var(--radius-sm);background:color-mix(in srgb,var(--orange) 8%,var(--bg-card));color:var(--text-secondary);font-size:.78rem;line-height:1.45}.sync-error-detail strong{color:var(--text-primary)}.sync-error-detail small{color:var(--text-muted);font-family:var(--font-mono);font-size:.68rem}

/* ============================================================
   LOGIN GATE
   ============================================================ */
.login-gate {
  position: fixed; inset: 0; z-index: 9999;
  display: flex; align-items: center; justify-content: center;
  background: var(--bg-base);
  background-image: radial-gradient(ellipse at 20% 50%, rgba(59,130,246,0.06) 0%, transparent 50%),
                    radial-gradient(ellipse at 80% 50%, rgba(34,197,94,0.06) 0%, transparent 50%),
                    radial-gradient(ellipse at 50% 80%, rgba(168,85,247,0.06) 0%, transparent 50%);
  padding: 20px;
}
.login-card {
  width: 100%; max-width: 400px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 16px;
  padding: 36px 32px;
  box-shadow: 0 8px 40px rgba(0,0,0,0.5);
  animation: loginFadeIn 0.4s ease;
}
@keyframes loginFadeIn {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}
.login-brand {
  display: flex; align-items: center; justify-content: center;
  font-size: 1.6rem; font-weight: 800; color: var(--text-primary);
  letter-spacing: -0.5px;
}
.login-logo-img { height: 64px; max-width: 100%; background:#fff; border-radius:14px; padding:8px; box-sizing:border-box; }
.login-subtitle {
  text-align: center; font-size: 0.8rem; color: var(--text-muted);
  margin-top: 4px;
}
.login-divider {
  display: flex; justify-content: center; gap: 8px;
  margin: 20px 0 24px;
}
.login-dot {
  width: 10px; height: 10px; border-radius: 50%;
}
.login-dot.netco  { background: var(--netco); }
.login-dot.omg    { background: var(--omg); }
.login-dot.itsol  { background: var(--itsol); }
.login-form { display: flex; flex-direction: column; gap: 14px; }
.login-label {
  font-size: 0.75rem; font-weight: 600; color: var(--text-secondary);
  text-transform: uppercase; letter-spacing: 0.5px;
  margin-bottom: -10px;
}
.login-input {
  width: 100%; padding: 11px 14px;
  background: var(--bg-input); border: 1px solid var(--border);
  border-radius: 8px; color: var(--text-primary);
  font-size: 0.9rem; outline: none; transition: border 0.2s;
  box-sizing: border-box;
}
.account-avatar-lg{background-size:cover;background-position:center;background-repeat:no-repeat}.account-settings-grid{display:grid;grid-template-columns:180px 1fr;gap:24px;align-items:start}.account-avatar-editor{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}.account-avatar-editor small{font-size:.72rem;color:var(--text-muted)}.settings-form{display:flex;flex-direction:column;gap:10px}.settings-form h4{margin:0 0 4px}.settings-divider{height:1px;background:var(--border-light);margin:22px 0}.settings-password-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}@media(max-width:640px){.account-settings-grid,.settings-password-grid{grid-template-columns:1fr}}
.login-input::placeholder { color: var(--text-muted); }
.login-btn {
  width: 100%; padding: 12px;
  background: var(--accent); color: var(--accent-contrast);
  border: none; border-radius: 8px;
  font-size: 0.9rem; font-weight: 700; cursor: pointer;
  transition: background 0.2s, transform 0.1s;
  margin-top: 4px;
}
.login-btn:hover { background: var(--accent-hover); }
.login-btn:active { transform: scale(0.98); }
.register-btn { background: var(--bg-tertiary); color: var(--text-primary); border: 1px solid var(--border); }
.register-btn:hover { background: var(--bg-hover); }
.login-toggle {
  text-align: center; margin-top: 18px;
  font-size: 0.82rem; color: var(--text-muted);
}
.login-toggle a { color: var(--accent); text-decoration: none; font-weight: 600; }
.login-toggle a:hover { text-decoration: underline; }
.login-error {
  display: none; padding: 8px 12px;
  background: rgba(239,68,68,0.12); border: 1px solid rgba(239,68,68,0.3);
  border-radius: 6px; color: #ef4444; font-size: 0.8rem;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:15px;scroll-behavior:smooth}
body{font-family:var(--font-sans);background:var(--bg-base);color:var(--text-primary);line-height:1.5;font-feature-settings:'cv02','cv03','cv04','cv11';-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh;display:flex;overflow-x:hidden}
a{color:inherit;text-decoration:none}
button{cursor:pointer;font-family:inherit;font-size:inherit}
input,select,textarea{font-family:inherit;font-size:inherit}
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* ===== SIDEBAR ===== */
.sidebar{width:var(--sidebar-width);height:100vh;position:fixed;left:0;top:0;background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;z-index:100;transition:width .22s ease,transform var(--transition)}
.sidebar-brand{display:flex;align-items:center;gap:11px;padding:18px 16px 17px;border-bottom:1px solid var(--border)}
.sidebar-toggle{margin-left:auto;background:none;border:1px solid var(--border);color:var(--text-muted);border-radius:6px;padding:4px 9px;font-size:0.85rem;transition:all var(--transition);flex-shrink:0}
.sidebar-toggle:hover{background:var(--bg-hover);color:var(--accent)}
.brand-icon{font-size:1.4rem}
.brand-logo{width:38px;height:38px;object-fit:contain;flex-shrink:0;background:#fff;border-radius:10px;padding:4px;box-sizing:border-box;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.brand-text-wrap{overflow:hidden;white-space:nowrap;transition:opacity .15s}
.brand-text{font-family:var(--font-display);font-weight:700;font-size:.98rem;letter-spacing:-.04em;color:var(--text-primary)}
.brand-sub{font-size:.6rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-top:2px}
.sidebar-nav{flex:1;display:flex;flex-direction:column;gap:2px;padding:15px 10px;overflow-y:auto}
.nav-section-label{padding:0 10px;margin:0 0 6px;color:var(--text-muted);font-size:.62rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase}
.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:.84rem;font-weight:500;transition:background var(--transition),color var(--transition),box-shadow var(--transition);border:none;background:none;width:100%;text-align:left;position:relative}
.nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}
.nav-item.active{background:var(--accent-light);color:var(--accent);font-weight:600;box-shadow:inset 2px 0 0 var(--accent)}
.nav-icon{width:18px;height:18px;flex-shrink:0}
.nav-badge{background:var(--accent);color:var(--accent-contrast);font-size:0.68rem;padding:1px 7px;border-radius:10px;margin-left:auto;font-weight:600;min-width:20px;text-align:center}
.nav-item:not(.active) .nav-badge{background:var(--bg-tertiary);color:var(--text-secondary)}
.sidebar-footer{padding:10px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:2px}
.nav-section-preferences{margin-top:12px;padding-top:12px;border-top:1px solid var(--border-light)}
.account-wrap{position:relative}.account-chip{display:flex;align-items:center;gap:9px;min-width:0;padding:7px 8px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--text-primary);text-align:left;transition:background var(--transition),border-color var(--transition)}.account-chip:hover,.account-chip[aria-expanded="true"]{background:var(--bg-hover);border-color:var(--border)}.account-avatar{display:flex;align-items:center;justify-content:center;width:31px;height:31px;flex:0 0 31px;border-radius:10px;background:var(--accent);color:var(--accent-contrast);font-family:var(--font-display);font-weight:700;font-size:.72rem;box-shadow:0 2px 7px var(--accent-shadow)}.account-copy{display:block;min-width:0;flex:1}.account-name,.account-role,.sync-status{display:block}.account-name{overflow:hidden;color:var(--text-primary);font-size:.76rem;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.account-role{overflow:hidden;margin-top:1px;color:var(--text-muted);font-size:.65rem;text-overflow:ellipsis;white-space:nowrap}.account-chevron{width:14px;height:14px;flex:0 0 14px;color:var(--text-muted);transition:transform var(--transition)}.account-chip[aria-expanded="true"] .account-chevron{transform:rotate(180deg)}.account-popover{display:none;position:absolute;z-index:130;top:calc(100% + 8px);right:0;width:286px;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:var(--bg-card);box-shadow:var(--shadow-lg)}.account-popover.is-open{display:block}.account-popover-header{display:flex;align-items:center;gap:11px;padding:15px}.account-avatar-lg{width:39px;height:39px;flex-basis:39px;border-radius:12px;font-size:.88rem}.account-popover-identity{min-width:0}.account-popover-name{overflow:hidden;color:var(--text-primary);font-size:.84rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.account-popover-email{overflow:hidden;margin-top:2px;color:var(--text-secondary);font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}.account-popover-meta{padding:6px 15px 10px;border-top:1px solid var(--border-light)}.account-meta-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 0;color:var(--text-muted);font-size:.72rem}.account-meta-row strong{overflow:hidden;color:var(--text-secondary);font-size:.72rem;font-weight:600;text-align:right;text-overflow:ellipsis;white-space:nowrap}.account-online{display:inline-flex;align-items:center;gap:6px;color:var(--green)!important}.account-online i{display:block;width:6px;height:6px;border-radius:50%;background:currentColor;box-shadow:0 0 0 3px color-mix(in srgb,currentColor 13%,transparent)}.account-popover-footer{padding:10px 12px;border-top:1px solid var(--border-light)}.account-signout{width:100%;padding:8px 9px;border:0;border-radius:7px;background:transparent;color:var(--red);font-size:.76rem;font-weight:600;text-align:left;transition:background var(--transition),color var(--transition)}.account-signout:hover{background:var(--red-bg);color:var(--red)}
.theme-toggle{display:flex;align-items:center;justify-content:center;gap:8px;padding:10px 12px;border-radius:var(--radius-sm);background:none;border:1px solid var(--border);color:var(--text-secondary);font-size:0.81rem;transition:all var(--transition);margin-top:4px}
.theme-toggle:hover{background:var(--bg-hover);color:var(--text-primary)}
.theme-toggle svg{width:16px;height:16px}
[data-theme="dark"] .sun-icon{display:none}
[data-theme="dark"] .moon-icon{display:block}
[data-theme="light"] .sun-icon{display:block}
[data-theme="light"] .moon-icon{display:none}

/* Mobile */
.mobile-header{display:none;position:fixed;top:0;left:0;right:0;height:50px;background:var(--bg-sidebar);border-bottom:1px solid var(--border);align-items:center;padding:0 16px;z-index:99;gap:10px}
.mobile-menu-btn{background:none;border:none;color:var(--text-primary);padding:4px;border-radius:6px}
.mobile-menu-btn svg{width:22px;height:22px}
.mobile-brand-logo{display:none;width:26px;height:26px;object-fit:contain;border-radius:7px;background:#fff;padding:3px}.mobile-brand{font-family:var(--font-display);font-weight:700;font-size:.92rem;letter-spacing:-.025em}
.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,0.5);z-index:98}
.sidebar-overlay.show{display:block}

/* ===== MAIN ===== */
.main-content{margin-left:var(--sidebar-width);flex:1;min-height:100vh;padding:32px 36px;transition:margin .22s ease;max-width:100%;width:100%}

/* ===== SIDEBAR COLLAPSED ===== */
body.sidebar-min .sidebar{width:var(--sidebar-width-min)}
body.sidebar-min .main-content{margin-left:var(--sidebar-width-min)}
body.sidebar-min .brand-text-wrap{opacity:0;width:0}
body.sidebar-min .sidebar-brand{justify-content:center;padding:18px 8px}
body.sidebar-min .sidebar-toggle{position:absolute;right:6px;top:10px;margin:0;padding:2px 6px;font-size:0.7rem;opacity:0.5}
body.sidebar-min .sidebar-toggle:hover{opacity:1}
body.sidebar-min .nav-item{justify-content:center;padding:10px 8px}
body.sidebar-min .nav-section-label{display:none}
body.sidebar-min .nav-item span:not(.nav-badge){display:none}
body.sidebar-min .nav-item{position:relative}
body.sidebar-min .nav-badge{position:absolute;top:2px;right:4px;min-width:16px;font-size:0.58rem;padding:0 4px;line-height:16px}
body.sidebar-min .sidebar-user{flex-direction:column;gap:6px;justify-content:center;padding:8px 0;margin:0 6px 8px}
body.sidebar-min .account-chip{justify-content:center;padding:8px 0}.sidebar-min .account-copy{display:none}.sidebar-min .account-popover .account-copy{display:block}.sidebar-min .account-chevron{display:none}
body.sidebar-min .sidebar-user-info{display:none}
body.sidebar-min .sidebar-user-avatar{width:32px;height:32px;font-size:0.85rem;line-height:32px;border-radius:50%}
body.sidebar-min .sidebar-user-logout{position:static;width:24px;height:24px;font-size:0.7rem}
body.sidebar-min .sidebar-nav::-webkit-scrollbar{width:3px}
@media(max-width:768px){
  .sidebar{transform:translateX(-100%);box-shadow:var(--shadow-lg)}.sidebar.open{transform:translateX(0)}
  .mobile-header{display:flex}.mobile-brand-logo{display:block}
  .main-content{margin-left:0;padding:70px 14px 20px}
  body.sidebar-min .sidebar{width:var(--sidebar-width);transform:translateX(-100%)}body.sidebar-min .sidebar.open{transform:translateX(0)}body.sidebar-min .main-content{margin-left:0}
}

/* ===== TOP NAVIGATION (desktop ≥769px) ===== */
@media(min-width:769px){
  :root{--topbar-h:64px}
  .sidebar{width:100%;height:var(--topbar-h);left:0;right:0;top:0;bottom:auto;flex-direction:row;align-items:center;border-right:none!important;border-bottom:1px solid var(--border);padding:0 18px;z-index:105;box-shadow:0 1px 0 rgba(255,255,255,.02)}
  .sidebar-brand{padding:0 15px 0 0;border-bottom:none;flex-shrink:0;gap:8px}.sidebar-brand .brand-logo{width:32px;height:32px;border-radius:9px}.sidebar-brand .brand-text{font-size:.91rem}.sidebar-brand .brand-sub{display:none}
  .sidebar-nav{flex:1;flex-direction:row;align-items:center;overflow-x:auto;overflow-y:hidden;padding:0 4px;gap:3px;justify-content:flex-start;scrollbar-width:none}.sidebar-nav::-webkit-scrollbar{height:0}.nav-section-label{display:none}
  .nav-divider{display:block;width:1px;height:22px;flex:0 0 1px;margin:0 8px;background:var(--border)}
  .nav-item{flex-direction:row;align-items:center;justify-content:center;padding:7px 10px;gap:7px;width:auto;border-radius:8px;border-bottom:0;position:relative;font-size:.78rem;font-weight:600;transition:background var(--transition),color var(--transition),box-shadow var(--transition)}
  .nav-item:hover{background:var(--bg-hover)}.nav-item.active{background:var(--accent-light);border-bottom:0;color:var(--accent);font-weight:700;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 12%,transparent)}
  .nav-item .nav-icon{width:16px;height:16px;margin:0}.nav-item span:not(.nav-badge){font-size:.75rem;font-weight:inherit;letter-spacing:-.01em}.nav-badge{position:static;min-width:16px;height:16px;margin:0 0 0 1px;padding:0 4px;line-height:16px;border-radius:999px;font-size:.58rem}
  .sidebar-user{display:none!important}.sidebar-footer{flex-direction:row;border-top:none;border-left:1px solid var(--border);padding:0 0 0 12px;gap:9px;align-items:center;flex-shrink:0}.sidebar-footer .nav-section-label{display:none}
  .sidebar-footer #authArea{display:block!important;margin:0}.sidebar-footer #authArea .account-chip{gap:7px;padding:5px 7px}.sidebar-footer #authArea .account-avatar{width:30px;height:30px;flex-basis:30px;border-radius:9px}.sidebar-footer #authArea .account-role,.sidebar-footer #authArea .sync-status{display:none}.sidebar-footer #authArea .account-name{max-width:96px;font-size:.72rem}.sidebar-footer #authArea .account-chevron{width:12px;height:12px;flex-basis:12px}.sidebar-footer #authArea .account-popover{top:calc(100% + 9px);right:0}
  .topbar-utilities{display:flex;align-items:center;gap:3px;padding-left:4px}.presence-wrap{position:relative}.presence-button{display:flex;align-items:center;gap:6px;min-height:32px;padding:4px 8px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--text-secondary);font:inherit;font-size:.72rem;font-weight:600;cursor:pointer;transition:background var(--transition),border-color var(--transition),color var(--transition)}.presence-button:hover,.presence-button[aria-expanded="true"]{background:var(--bg-hover);border-color:var(--border);color:var(--text-primary)}.presence-indicator{width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 15%,transparent)}.presence-avatars{display:flex;align-items:center}.presence-avatar{display:inline-flex;align-items:center;justify-content:center;width:21px;height:21px;margin-left:-5px;border:2px solid var(--bg-sidebar);border-radius:50%;color:#fff;font-size:.55rem;font-weight:700;line-height:1}.presence-avatar:first-child{margin-left:0}.presence-extra{background:var(--text-muted);font-size:.52rem}.presence-count{white-space:nowrap}.presence-popover{display:none;position:absolute;z-index:120;top:calc(100% + 8px);right:0;width:230px;max-height:300px;overflow-y:auto;padding:8px;border:1px solid var(--border);border-radius:10px;background:var(--bg-card);box-shadow:var(--shadow-lg)}.presence-popover.is-open{display:block}.presence-popover-title{padding:5px 6px 9px;border-bottom:1px solid var(--border);color:var(--text-primary);font-size:.78rem;font-weight:700}.presence-user{display:flex;align-items:center;gap:9px;padding:9px 6px 5px}.presence-avatar-large{width:29px;height:29px;margin:0;border:0;font-size:.66rem}.presence-user-details{min-width:0}.presence-user-name{overflow:hidden;color:var(--text-primary);font-size:.79rem;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.presence-user-status{display:flex;align-items:center;gap:5px;margin-top:2px;color:var(--green);font-size:.68rem}.presence-user-status::before{content:'';width:5px;height:5px;border-radius:50%;background:currentColor}
  .theme-toggle{margin-top:0;padding:7px 8px;border:none;font-size:0;border-radius:8px}.theme-toggle:hover{background:var(--bg-hover)}.theme-toggle svg{width:17px;height:17px}
  .main-content{margin-left:0!important;margin-top:var(--topbar-h);padding:28px 30px;width:100%;max-width:100vw;box-sizing:border-box}
  .mobile-header{display:none!important}
  .sidebar-overlay{display:none!important}
}

/* ===== PAGE HEADER ===== */
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}
.page-title{font-family:var(--font-display);font-size:1.75rem;font-weight:700;letter-spacing:-0.045em;color:var(--text-primary)}
.page-subtitle{color:var(--text-secondary);font-size:0.85rem;margin-top:4px;font-weight:400;letter-spacing:-0.01em}
.page-actions{display:flex;gap:8px;flex-wrap:wrap}

/* ===== BUTTONS ===== */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 17px;border-radius:var(--radius-sm);font-weight:600;font-size:0.84rem;border:1px solid transparent;transition:background var(--transition),border-color var(--transition),box-shadow var(--transition),transform var(--transition);white-space:nowrap;letter-spacing:-0.01em}
.btn svg{width:15px;height:15px}
.btn-primary{background:var(--accent);color:var(--accent-contrast);box-shadow:0 1px 2px rgba(0,0,0,.12)}
.btn-primary:hover{background:var(--accent-hover);box-shadow:0 4px 12px var(--accent-shadow);transform:translateY(-1px)}
.btn-primary:active{transform:translateY(0);box-shadow:none}
.btn-secondary{background:var(--bg-card);color:var(--text-primary);border-color:var(--border)}
.btn-secondary:hover{background:var(--bg-hover);border-color:var(--text-muted)}
.btn-danger{background:var(--red-bg);color:var(--red);border:1px solid transparent}
.btn-danger:hover{background:var(--red);color:#fff}
.btn-sm{padding:6px 12px;font-size:0.8rem}
.btn-xs{padding:4px 8px;font-size:0.73rem;border-radius:4px}
.btn-icon{width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-secondary)}
.btn-icon:hover{background:var(--bg-hover);color:var(--text-primary)}
.btn-icon svg{width:15px;height:15px}

/* ===== FORMS ===== */
.form-group{margin-bottom:14px}
.form-label{display:block;font-size:0.74rem;font-weight:600;color:var(--text-secondary);margin-bottom:5px;text-transform:uppercase;letter-spacing:0.6px}
.form-input,.form-select,.form-textarea{width:100%;padding:10px 13px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:.86rem;line-height:1.45;transition:border-color var(--transition),box-shadow var(--transition),background var(--transition);outline:none}
.form-input:hover,.form-select:hover,.form-textarea:hover{border-color:var(--text-muted)}
.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light);background:var(--bg-card)}
.form-select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:32px}
.form-textarea{resize:vertical;min-height:70px}
.form-row{display:flex;gap:14px}
.form-row>*{flex:1}
.form-hint{font-size:0.73rem;color:var(--text-muted);margin-top:4px}
.form-inline{display:flex;align-items:center;gap:6px;color:var(--text-secondary)}

/* ===== CARDS ===== */
.card{background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-lg);padding:22px;box-shadow:var(--shadow-sm)}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px}
.card-title{font-family:var(--font-display);font-size:.95rem;font-weight:700;letter-spacing:-.02em;color:var(--text-primary)}

/* ===== KPI (High Contrast) ===== */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px}
.kpi-card{background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-lg);padding:20px 22px;box-shadow:var(--shadow-sm);transition:border-color var(--transition),box-shadow var(--transition),transform var(--transition)}
.kpi-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border-card));box-shadow:var(--shadow);transform:translateY(-1px)}
.kpi-label{font-size:.7rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.075em;margin-bottom:9px;font-weight:700}
.kpi-value{font-family:var(--font-display);font-size:2.35rem;font-weight:700;letter-spacing:-.055em;line-height:1;color:var(--text-primary)}
.kpi-sub{font-size:0.78rem;color:var(--text-secondary);margin-top:6px}
.kpi-delta{font-size:0.74rem;font-weight:600}
.kpi-delta.up{color:var(--green)}
.kpi-delta.down{color:var(--red)}

/* ===== TABLES ===== */
.table-container{overflow:auto;max-height:72vh;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card)}
.table-container table{min-width:100%;border-collapse:separate;border-spacing:0}
.table-container thead th{position:sticky;top:0;z-index:5;background:var(--bg-card);box-shadow:0 1px 0 var(--border)}
table{width:100%;border-collapse:collapse}
th,td{padding:12px 15px;text-align:left;font-size:.82rem;border-bottom:1px solid var(--border-light);color:var(--text-primary)}
th{font-size:.68rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.075em;background:var(--bg-secondary);white-space:nowrap;position:sticky;top:0;z-index:1}
tr:last-child td{border-bottom:none}
tr:hover td{background:color-mix(in srgb,var(--accent) 4%,transparent)}
/* Preserve the Actions cell as a table cell: display:flex removed its shared
   horizontal divider, making the line beside Status appear misaligned. */
td.actions{display:table-cell;text-align:right;white-space:nowrap;vertical-align:middle}
td.actions .btn-icon{margin-left:4px;vertical-align:middle}
td.actions .btn-icon:first-child{margin-left:0}

/* Keep the operational tables fully visible on desktop after adding EP Code. */
@media(min-width:1025px){
  .workspace-table-container:has(.request-table),.workspace-table-container:has(.task-table){overflow-x:hidden}
  .workspace-table-container .request-table,.workspace-table-container .task-table{width:100%;min-width:0;table-layout:fixed}
  .workspace-table-container .request-table th,.workspace-table-container .request-table td,.workspace-table-container .task-table th,.workspace-table-container .task-table td{padding:10px 8px}
  .workspace-table-container .request-table th:nth-child(1),.workspace-table-container .request-table td:nth-child(1){width:8%}
  .workspace-table-container .request-table th:nth-child(2),.workspace-table-container .request-table td:nth-child(2){width:5%}
  .workspace-table-container .request-table th:nth-child(3),.workspace-table-container .request-table td:nth-child(3){width:23%}
  .workspace-table-container .request-table th:nth-child(4),.workspace-table-container .request-table td:nth-child(4){width:11%}
  .workspace-table-container .request-table th:nth-child(5),.workspace-table-container .request-table td:nth-child(5){width:8%}
  .workspace-table-container .request-table th:nth-child(6),.workspace-table-container .request-table td:nth-child(6){width:13%}
  .workspace-table-container .request-table th:nth-child(7),.workspace-table-container .request-table td:nth-child(7){width:13%}
  .workspace-table-container .request-table th:nth-child(8),.workspace-table-container .request-table td:nth-child(8){width:7%}
  .workspace-table-container .request-table th:nth-child(9),.workspace-table-container .request-table td:nth-child(9){width:7%}
  .workspace-table-container .request-table th:nth-child(10),.workspace-table-container .request-table td:nth-child(10){width:5%}
  .workspace-table-container .task-table th:nth-child(1),.workspace-table-container .task-table td:nth-child(1){width:8%}
  .workspace-table-container .task-table th:nth-child(2),.workspace-table-container .task-table td:nth-child(2){width:4%}
  .workspace-table-container .task-table th:nth-child(3),.workspace-table-container .task-table td:nth-child(3){width:14%}
  .workspace-table-container .task-table th:nth-child(4),.workspace-table-container .task-table td:nth-child(4){width:15%}
  .workspace-table-container .task-table th:nth-child(5),.workspace-table-container .task-table td:nth-child(5){width:4%}
  .workspace-table-container .task-table th:nth-child(6),.workspace-table-container .task-table td:nth-child(6){width:5%}
  .workspace-table-container .task-table th:nth-child(7),.workspace-table-container .task-table td:nth-child(7){width:5%}
  .workspace-table-container .task-table th:nth-child(8),.workspace-table-container .task-table td:nth-child(8){width:5%}
  .workspace-table-container .task-table th:nth-child(9),.workspace-table-container .task-table td:nth-child(9){width:7%}
  .workspace-table-container .task-table th:nth-child(10),.workspace-table-container .task-table td:nth-child(10){width:7%}
  .workspace-table-container .task-table th:nth-child(11),.workspace-table-container .task-table td:nth-child(11){width:4%}
  .workspace-table-container .task-table th:nth-child(12),.workspace-table-container .task-table td:nth-child(12){width:6%}
  .workspace-table-container .task-table th:nth-child(13),.workspace-table-container .task-table td:nth-child(13){width:8%}
  .workspace-table-container .task-table th:nth-child(14),.workspace-table-container .task-table td:nth-child(14){width:4%}
  .workspace-table-container .task-table th:nth-child(15),.workspace-table-container .task-table td:nth-child(15){width:4%}
  .workspace-table-container .request-table td:not(.actions),.workspace-table-container .task-table td:not(.actions){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  /* Review fields must always be readable in full; Scope may wrap when it has PL, PS, and MS. */
  .workspace-table-container .task-table td:nth-child(8),.workspace-table-container .task-table td:nth-child(9),.workspace-table-container .task-table td:nth-child(10),.workspace-table-container .task-table td:nth-child(12),.workspace-table-container .task-table td:nth-child(13){overflow:visible;text-overflow:clip;white-space:normal}
  .workspace-table-container .request-table .tender-code-cell,.workspace-table-container .task-table .tender-code-inline{font-size:.67rem}
  .workspace-table-container .request-table td.actions,.workspace-table-container .task-table td.actions{padding-left:4px;padding-right:4px}
  .workspace-table-container .request-table td.actions .btn-icon,.workspace-table-container .task-table td.actions .btn-icon{width:23px;height:23px}
  .workspace-table-container .request-table td.actions .btn-icon+.btn-icon,.workspace-table-container .task-table td.actions .btn-icon+.btn-icon{margin-left:0}
}
.res-col{color:var(--text-secondary);font-size:0.8rem}

/* ===== BADGES ===== */
.badge{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border-radius:999px;font-size:.69rem;font-weight:700;letter-spacing:-.01em;white-space:nowrap}
.badge-green{background:var(--green-bg);color:var(--green)}
.badge-orange{background:var(--orange-bg);color:var(--orange)}
.badge-red{background:var(--red-bg);color:var(--red)}
.badge-blue{background:var(--blue-bg);color:var(--blue)}
.badge-purple{background:var(--purple-bg);color:var(--purple)}
.badge-pink{background:var(--pink-bg);color:var(--pink)}
.badge-cyan{background:var(--cyan-bg);color:var(--cyan)}
.badge-neutral{background:var(--bg-tertiary);color:var(--text-secondary)}

/* Division badges */
.badge-netco{background:var(--netco-bg);color:var(--netco);border:1px solid var(--netco-border)}
.badge-omg{background:var(--omg-bg);color:var(--omg);border:1px solid var(--omg-border)}
.badge-itsol{background:var(--itsol-bg);color:var(--itsol);border:1px solid var(--itsol-border)}

/* ===== MODAL ===== */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,0.7);display:flex;align-items:center;justify-content:center;z-index:200;animation:fadeIn .15s ease}
.modal-overlay.hidden{display:none}
.modal-box{background:var(--bg-modal);border:1px solid var(--border);border-radius:var(--radius-lg);padding:26px;max-width:560px;width:94%;max-height:85vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:slideUp .2s ease}
.modal-box.wide{max-width:720px}.modal-box.dashboard-detail-modal-box{width:min(1120px,95vw);max-width:1120px;max-height:min(78vh,760px);padding:0;overflow:hidden}
.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}
.modal-title{font-family:var(--font-display);font-size:1.12rem;font-weight:700;letter-spacing:-.025em;color:var(--text-primary)}
.modal-close{background:none;border:none;color:var(--text-secondary);padding:6px;border-radius:6px;display:flex;font-size:1.1rem}
.modal-close:hover{background:var(--bg-hover);color:var(--text-primary)}
.modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;padding-top:14px;border-top:1px solid var(--border-light)}

/* ===== TOAST ===== */
.toast-container{position:fixed;bottom:20px;right:20px;z-index:300;display:flex;flex-direction:column-reverse;gap:8px}
.toast{background:var(--bg-toast);color:#fff;padding:11px 18px;border-radius:var(--radius);font-size:0.83rem;font-weight:500;box-shadow:var(--shadow-lg);animation:slideInRight .3s ease,fadeOut .3s ease 2.5s forwards;max-width:360px}
.toast.success{border-left:3px solid var(--green)}
.toast.error{border-left:3px solid var(--red)}
.toast.info{border-left:3px solid var(--blue)}

/* ===== FILTER PILLS ===== */
.filter-pills{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.filter-pill{padding:6px 13px;border-radius:999px;font-size:.74rem;font-weight:700;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);cursor:pointer;transition:background var(--transition),border-color var(--transition),color var(--transition)}
.filter-pill:hover{border-color:var(--accent);color:var(--text-primary);background:var(--bg-hover)}
.filter-pill.active{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}

/* ===== SEARCH ===== */
.search-bar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.search-input{flex:1;min-width:200px;padding:9px 14px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);outline:none;font-size:.86rem;transition:border-color var(--transition),box-shadow var(--transition),background var(--transition)}
.search-input:hover{border-color:var(--text-muted)}
.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-light);background:var(--bg-card)}
.search-input::placeholder{color:var(--text-muted)}

/* ===== KANBAN ===== */
.kanban-wrapper{display:flex;gap:14px;overflow-x:auto;padding-bottom:6px;min-height:350px}
.kanban-column{flex:1;min-width:230px;max-width:420px;background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-lg);padding:14px;display:flex;flex-direction:column;box-shadow:var(--shadow-sm)}
.kanban-col-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;padding:2px 2px 12px}
.kanban-col-title{font-family:var(--font-display);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.kanban-col-count{font-size:.7rem;color:var(--text-muted);background:var(--bg-tertiary);padding:3px 8px;border-radius:999px}
.kanban-cards{display:flex;flex-direction:column;gap:7px;min-height:60px;flex:1}
.kanban-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:11px 12px;cursor:grab;transition:background var(--transition),border-color var(--transition),box-shadow var(--transition),transform var(--transition);font-size:.81rem}
.kanban-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));box-shadow:var(--shadow);transform:translateY(-1px)}
.kanban-card:active{cursor:grabbing}
.kanban-card.dragging{opacity:0.4;transform:rotate(1.5deg)}
.kanban-column.drag-over{border-color:var(--accent);background:var(--accent-light)}

/* ===== PIPELINE BAR ===== */
.pipeline-bar{display:flex;height:10px;border-radius:5px;overflow:hidden;gap:2px;background:var(--bg-tertiary)}
.pipeline-segment{border-radius:4px;transition:width .4s}
.pipeline-segment.todo{background:var(--pipe-todo)}
.pipeline-segment.in_progress{background:var(--pipe-inprog)}
.pipeline-segment.review{background:var(--pipe-review)}
.pipeline-segment.done{background:var(--pipe-done)}
.pipeline-segment.revisi{background:var(--pipe-revisi)}

/* ===== BAR CHART ===== */
.bar-chart{display:flex;flex-direction:column;gap:10px}
.bar-row{display:flex;align-items:center;gap:10px}
.bar-label{width:56px;font-size:0.74rem;font-weight:600;text-align:right;flex-shrink:0}
.bar-track{flex:1;height:26px;background:var(--bg-tertiary);border-radius:5px;overflow:hidden;position:relative}
.bar-fill{height:100%;border-radius:5px;transition:width .5s ease;display:flex;align-items:center;padding-left:10px}
.bar-fill.netco{background:var(--netco)}
.bar-fill.omg{background:var(--omg)}
.bar-fill.itsol{background:var(--itsol)}
.bar-value{font-size:0.73rem;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,0.4)}
.bar-value-out{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:0.73rem;font-weight:700;color:var(--text-secondary);z-index:1}
.bar-count{font-size:0.74rem;color:var(--text-secondary);width:38px;text-align:right;flex-shrink:0;font-weight:600}

/* ===== ESTIMATE SUMMARY ===== */
.est-summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin-bottom:24px}
.est-summary-card{background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius-lg);padding:20px;text-align:center}
.est-summary-card.grand{border-color:var(--accent);background:var(--accent-light)}
.est-summary-label{font-size:0.8rem;color:var(--text-secondary);margin-bottom:6px;font-weight:600}
.est-summary-value{font-size:1.6rem;font-weight:700;color:var(--text-primary);font-family:var(--font-mono);letter-spacing:-0.5px}
.est-summary-value.grand{color:var(--accent)}

/* ===== LINK BTN ===== */
.link-btn{color:var(--blue);font-size:0.76rem;display:inline-flex;align-items:center;gap:3px;font-weight:500}
.link-btn:hover{color:var(--accent-hover);text-decoration:underline}
.link-btn svg{width:12px;height:12px}

/* ============================================================
   Requests / Tasks fluid fit
   Tables fill the workspace at desktop sizes. At narrower widths the
   table owns its scroll region instead of forcing the entire page wider.
   ============================================================ */
.workspace-table-card,
.workspace-table-container {
  width: 100%;
  max-width: none;
  min-width: 0;
}
.workspace-table-card { overflow: hidden; }
.workspace-table-container {
  overflow-x: auto;
  overflow-y: auto;
  max-height: min(72dvh, 760px);
  scrollbar-gutter: stable;
}
.workspace-table-container .request-table,
.workspace-table-container .task-table {
  width: 100%;
  min-width: 980px;
  table-layout: fixed;
}
.workspace-table-container .request-table th,
.workspace-table-container .request-table td,
.workspace-table-container .task-table th,
.workspace-table-container .task-table td {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.requests-toolbar,
.tasks-toolbar { width: 100%; align-items: flex-end; }
.workspace-search {
  flex: 1 1 220px;
  width: auto;
  max-width: 360px;
}
@media (min-width: 768px) {
  .workspace-table-container .request-table,
  .workspace-table-container .task-table { min-width: 0; }
}
@media (max-width: 767px) {
  .workspace-table-container .request-table,
  .workspace-table-container .task-table { min-width: 900px; }
  .workspace-search { width: 100%; max-width: none; flex-basis: 100%; }
  .requests-toolbar,
  .tasks-toolbar { align-items: stretch; }
}

/* ===== EMPTY STATE ===== */
.empty-state{text-align:center;padding:44px 20px;color:var(--text-secondary)}
.empty-state-icon{font-size:2.6rem;margin-bottom:10px;opacity:0.5}
.empty-state-title{font-family:var(--font-display);font-size:1.05rem;font-weight:700;letter-spacing:-.02em;margin-bottom:6px;color:var(--text-primary)}
.empty-state-desc{font-size:.84rem;max-width:400px;margin:0 auto 14px}

/* ===== SETTINGS ===== */
.settings-section{margin-bottom:28px}
.settings-section-title{font-family:var(--font-display);font-size:.95rem;font-weight:700;letter-spacing:-.02em;color:var(--text-primary);margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border-light)}
.settings-card{background:var(--bg-card);border:1px solid var(--border-card);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm)}
.status-badge{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:.75rem;font-weight:700;white-space:nowrap}
.status-badge.success{color:#047857;background:#d1fae5}.status-badge.warning{color:#a16207;background:#fef3c7}
.sync-info-item{padding:11px 12px;border:1px solid var(--border-light);border-radius:8px;background:var(--bg-secondary)}
.sync-info-item span{display:block;margin-bottom:4px;font-size:.72rem;color:var(--text-muted)}.sync-info-item strong{display:block;font-size:.82rem;color:var(--text-primary);line-height:1.35}

/* ===== ANIMATIONS ===== */
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideInRight{from{opacity:0;transform:translateX(80px)}to{opacity:1;transform:translateX(0)}}
@keyframes fadeOut{from{opacity:1}to{opacity:0}}

/* ===== RESPONSIVE ===== */
@media(max-width:900px){
  .kanban-wrapper{flex-wrap:wrap}
  .kanban-column{min-width:200px;flex:1 1 180px}
}
@media(max-width:768px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0)}
  .mobile-header{display:flex}
  .main-content{margin-left:0;padding:62px 14px 20px}
  .kpi-grid{grid-template-columns:1fr 1fr}
  .kanban-wrapper{flex-direction:column}
  .kanban-column{min-width:100%;max-width:100%}
  .form-row{flex-direction:column;gap:0}
  .page-header{flex-direction:column;align-items:flex-start}
  .est-summary-grid{grid-template-columns:1fr 1fr}
  .dashboard-filters{align-items:flex-start;gap:10px}.dashboard-reset{margin-left:0}
  .dashboard-recent-button{grid-template-columns:48px minmax(0,1fr) auto}.dashboard-recent-button .recent-ago{display:none}
}
@media(max-width:600px){
  .dashboard-filters{padding:12px}.dashboard-filter-group{width:100%}.dashboard-select{flex:1}
  .dashboard-sales-row{grid-template-columns:minmax(0,1fr) auto}.dashboard-sales-total{display:none}
  .modal-overlay:has(.dashboard-detail-modal-box){align-items:flex-end}.modal-box.dashboard-detail-modal-box{width:100%;max-width:none;max-height:90vh;border-radius:16px 16px 0 0}.dashboard-detail-modal{max-height:90vh}.dashboard-detail-table{max-height:calc(90vh - 228px)}.dashboard-detail-table table,.dashboard-detail-table thead,.dashboard-detail-table tbody,.dashboard-detail-table th,.dashboard-detail-table td,.dashboard-detail-table tr{display:block}.dashboard-detail-table table{min-width:0}.dashboard-detail-table thead{display:none}.dashboard-detail-table tr{padding:10px 14px;border-bottom:1px solid var(--border)}.dashboard-detail-table td{display:flex;justify-content:space-between;gap:10px;padding:4px 0;border:0;text-align:right}.dashboard-detail-table td::before{content:attr(data-label);color:var(--text-muted);font-size:.7rem;font-weight:700;text-align:left}.dashboard-detail-table td:first-child{text-align:right}.dashboard-detail-table td:first-child::before{flex:0 0 auto}.dashboard-detail-modal-header{padding:17px 16px 13px}.dashboard-detail-modal-summary{padding:9px 16px}.dashboard-detail-modal-footer{padding:11px 16px}.dashboard-detail-modal-footer>span{display:none}
}
@media(max-width:480px){
  .kpi-grid{grid-template-columns:1fr}
  .est-summary-grid{grid-template-columns:1fr}
  .kanban-column{min-width:100%;max-width:100%}
}

/* ===== Sortable table headers ===== */
th.sortable { cursor: pointer; user-select: none; white-space: nowrap; transition: color .15s; }
th.sortable:hover { color: var(--accent); }
th.sort-active { color: var(--accent); }
.sort-arrow { opacity: 0.55; font-size: 0.72em; margin-left: 2px; }
th.sort-active .sort-arrow { opacity: 1; }

/* ============================================================
   WORKFLOW WORKSPACES — REQUESTS / TASKS / KANBAN
   ============================================================ */
.workspace-page-header{align-items:flex-end;margin-bottom:17px}.workspace-eyebrow{margin-bottom:5px;color:var(--text-muted);font-size:.64rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.workspace-page-header .page-title{font-family:var(--font-display);letter-spacing:-.035em}.workspace-page-header .page-subtitle{display:flex;flex-wrap:wrap;align-items:center;gap:5px}.workspace-page-header .page-subtitle span{color:var(--text-muted)}
.workspace-toolbar{display:flex;align-items:flex-end;gap:13px 17px;flex-wrap:wrap;margin-bottom:16px;padding:13px 15px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card);box-shadow:0 1px 1px rgba(15,23,42,.03)}.workspace-filter-block{display:flex;flex-direction:column;gap:5px;min-width:0}.workspace-filter-label{color:var(--text-muted);font-size:.62rem;font-weight:800;letter-spacing:.065em;text-transform:uppercase}.workspace-toolbar .filter-pills{gap:4px;margin:0}.workspace-toolbar .filter-pill{padding:5px 9px;font-size:.71rem}.workspace-search{width:min(250px,100%);margin:0 0 0 auto}.workspace-search .search-input{height:31px;padding:6px 10px}.workspace-filter-select{min-width:250px}.workspace-select-row{display:flex;align-items:center;gap:6px}.workspace-combobox{position:relative;min-width:170px;flex:1}.workspace-request-select{width:min(360px,100%);height:31px;padding:3px 28px 3px 8px;font-size:.72rem}.workspace-category-select{width:auto;min-width:115px;height:31px;padding:3px 24px 3px 8px;font-size:.72rem}
.workspace-table-card{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-card);box-shadow:var(--shadow)}.workspace-table-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border-light);color:var(--text-muted);font-size:.68rem}.workspace-table-meta span:first-child{color:var(--text-secondary);font-weight:700}.workspace-table-container{margin:0;border:0;border-radius:0;box-shadow:none}.workspace-table-container table thead{background:var(--bg-secondary)}.workspace-table-container table th{height:38px;font-size:.65rem;letter-spacing:.035em}.workspace-table-container table td{height:47px}.workspace-table-container table th:nth-last-child(2),.workspace-table-container table td:nth-last-child(2){text-align:center;white-space:nowrap}.workspace-table-container table tbody tr{transition:background .15s}.workspace-table-container table tbody tr:hover{background:var(--bg-hover)}.workspace-request-link,.workspace-request-task-link{display:inline-flex;align-items:center;gap:6px;max-width:100%;padding:0;border:0;background:transparent;color:var(--text-primary);font:inherit;font-size:.75rem;font-weight:700;line-height:1.35;text-align:left;cursor:pointer}.workspace-request-link span,.workspace-request-task-link span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-request-link i,.workspace-request-task-link i{flex:0 0 auto;color:var(--accent);font-size:.82rem;font-style:normal;opacity:.72;transition:transform .15s,opacity .15s}.workspace-request-link:hover,.workspace-request-task-link:hover{color:var(--accent);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent) 36%,transparent);text-underline-offset:3px}.workspace-request-link:hover i,.workspace-request-task-link:hover i{opacity:1;transform:translate(2px,-2px)}.workspace-request-task-count{margin-top:3px;color:var(--text-muted);font-size:.67rem}
.workspace-context-card{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 13px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border));border-radius:var(--radius-lg);background:color-mix(in srgb,var(--accent) 6%,var(--bg-card))}.workspace-context-kicker{color:var(--accent);font-size:.63rem;font-weight:800;letter-spacing:.065em;text-transform:uppercase}.workspace-context-title{margin-top:3px;color:var(--text-primary);font-size:.88rem;font-weight:700}.workspace-context-meta{margin-top:3px;color:var(--text-muted);font-size:.68rem}.workspace-context-meta span{padding:0 3px}.workspace-context-actions{display:flex;align-items:center;gap:9px;flex:0 0 auto}.workspace-context-count{padding:4px 8px;border-radius:999px;background:var(--accent-light);color:var(--accent);font-size:.68rem;font-weight:800}
.kanban-toolbar{align-items:center;padding:11px 14px}.kanban-filter-pill{border-color:var(--border)!important;color:var(--text-secondary)!important}.kanban-filter-pill.active{border-color:var(--filter-color)!important;background:color-mix(in srgb,var(--filter-color) 12%,var(--bg-card))!important;color:var(--filter-color)!important}.kanban-filter-pill span{margin-left:3px;opacity:.65;font-weight:700}.kanban-toolbar-hint{display:flex;align-items:center;gap:7px;margin-left:auto;color:var(--text-muted);font-size:.69rem}.kanban-toolbar-hint span{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}
.workspace-kanban-board{display:flex;flex-direction:row;gap:12px;align-items:stretch;min-height:calc(100vh - 250px);padding-bottom:3px}.workspace-kanban-column{display:flex;flex:1;flex-direction:column;min-width:238px;padding:10px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-secondary);transition:border-color .15s,background .15s,box-shadow .15s}.workspace-kanban-column.drag-over{border-color:var(--pipeline-color);background:color-mix(in srgb,var(--pipeline-color) 7%,var(--bg-secondary));box-shadow:0 0 0 3px color-mix(in srgb,var(--pipeline-color) 12%,transparent)}.workspace-kanban-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin:0 0 10px;padding:3px 2px 10px;border-bottom:2px solid var(--pipeline-color)}.kanban-col-title{display:block;color:var(--pipeline-color);font-size:.75rem;font-weight:800;letter-spacing:.045em;text-transform:uppercase}.workspace-kanban-caption{display:block;margin-top:3px;color:var(--text-muted);font-size:.63rem}.workspace-kanban-count{display:grid;place-items:center;min-width:24px;height:23px;padding:0 7px;border-radius:8px;background:color-mix(in srgb,var(--pipeline-color) 13%,var(--bg-card));color:var(--pipeline-color);font-family:var(--font-display);font-size:.72rem;font-weight:800}.workspace-kanban-cards{display:flex;flex:1;flex-direction:column;gap:7px;min-height:90px}.workspace-kanban-card{padding:10px 10px 9px;border:1px solid var(--border);border-left:3px solid var(--division-color);border-radius:9px;background:var(--bg-card);box-shadow:0 1px 1px rgba(15,23,42,.03);cursor:grab;transition:transform .15s,border-color .15s,box-shadow .15s}.workspace-kanban-card:hover{border-color:color-mix(in srgb,var(--division-color) 55%,var(--border));box-shadow:var(--shadow);transform:translateY(-1px)}.workspace-kanban-card.dragging{opacity:.42;transform:rotate(1deg)}.workspace-kanban-card-title{overflow:hidden;margin-bottom:7px;color:var(--text-primary);font-size:.77rem;font-weight:700;line-height:1.36;text-overflow:ellipsis;white-space:nowrap}.workspace-kanban-card-meta{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.workspace-kanban-card-meta .badge{font-size:.59rem}.workspace-kanban-priority{padding:2px 5px;border-radius:4px;background:var(--red-bg);color:var(--red);font-size:.58rem;font-weight:800}.workspace-kanban-card-footer{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:8px;padding-top:7px;border-top:1px solid var(--border-light);color:var(--text-muted);font-size:.61rem}.workspace-kanban-card-footer .badge{font-size:.58rem}.workspace-kanban-empty{display:grid;place-items:center;min-height:66px;border:1px dashed var(--border);border-radius:8px;color:var(--text-muted);font-size:.68rem}
@media(max-width:768px){.workspace-page-header{align-items:flex-start}.workspace-toolbar{align-items:stretch;flex-direction:column;gap:11px}.workspace-search{width:100%;margin:0}.workspace-request-select{width:100%;max-width:none}.workspace-filter-select{min-width:0}.workspace-select-row{width:100%}.workspace-context-card{align-items:flex-start;flex-direction:column}.workspace-context-actions{width:100%;justify-content:space-between}.workspace-table-meta span:last-child{display:none}.workspace-kanban-board{min-height:auto;padding-bottom:8px}.kanban-toolbar-hint{margin:0}.workspace-kanban-column{min-width:min(83vw,300px)}}

/* ============================================================
   DASHBOARD: SUMMARY & INTERACTIVE ANALYSIS
   ============================================================ */
/* Compact workspace density: Linear precision + Notion calm, without making the data feel cramped. */
.main-content{padding:24px 28px 32px;max-width:1440px;margin-right:auto}
.page-header{margin-bottom:16px;gap:10px}.page-title{font-size:1.65rem;line-height:1.08}.page-subtitle{font-size:.78rem;margin-top:3px}
.card{padding:16px}.card-header{margin-bottom:11px}.kpi-grid{gap:10px;margin-bottom:14px}.kpi-card{padding:14px 16px}.kpi-label{margin-bottom:7px}.kpi-value{font-size:2rem}.kpi-sub{margin-top:5px;font-size:.72rem}
.dashboard-tabs{margin-bottom:14px}.dashboard-summary-head,.dashboard-analysis-head{margin-bottom:12px}.dashboard-summary-grid{margin-bottom:10px}.dashboard-summary-panel .card-header{margin-bottom:9px}
.dashboard-filters{gap:9px 13px;padding:10px 12px;margin-bottom:12px}.workspace-page-header{margin-bottom:12px}.workspace-toolbar{gap:10px 13px;margin-bottom:12px;padding:10px 12px}.workspace-table-meta{padding:8px 12px}.workspace-table-container table th{height:34px}.workspace-table-container table td{height:42px}
.kanban-wrapper{gap:10px;min-height:300px}.kanban-column{padding:11px}.kanban-col-header{margin-bottom:7px;padding-bottom:9px}.kanban-cards{gap:5px}.kanban-card{padding:9px 10px}
@media(max-width:768px){.main-content{padding:62px 12px 18px}.page-header{margin-bottom:12px}.kpi-grid{gap:8px;margin-bottom:10px}.kpi-card{padding:12px}.kpi-value{font-size:1.7rem}.dashboard-tabs{margin-bottom:12px}.dashboard-summary-grid{margin-bottom:8px}}

.dashboard-tabs { display:flex; gap:3px; width:max-content; max-width:100%; margin:0 0 22px; padding:4px; border:1px solid var(--border); border-radius:11px; background:var(--bg-card); box-shadow:0 1px 1px rgba(15,23,42,.03); }
.dashboard-tab { display:flex; flex-direction:column; align-items:flex-start; gap:1px; min-width:156px; padding:8px 12px; border:0; border-radius:8px; background:transparent; color:var(--text-secondary); cursor:pointer; font:inherit; font-size:.78rem; font-weight:700; line-height:1.2; transition:.15s; white-space:nowrap; }.dashboard-tab span{font-weight:700}.dashboard-tab small{color:inherit;font-size:.65rem;font-weight:500;opacity:.67}
.dashboard-tab:hover { background:var(--bg-hover); color:var(--text-primary); }.dashboard-tab.active { background:var(--accent); color:var(--accent-contrast); box-shadow:0 2px 7px color-mix(in srgb, var(--accent) 35%, transparent); }
.dashboard-summary-head, .dashboard-analysis-head { display:flex; align-items:flex-end; justify-content:space-between; gap:16px; margin:0 0 18px; }.dashboard-eyebrow{margin:0 0 5px;color:var(--text-muted);font-size:.65rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.dashboard-summary-head h2, .dashboard-analysis-head h2 { margin:0; color:var(--text-primary); font-family:var(--font-display); font-size:1.18rem; letter-spacing:-.025em; }.dashboard-summary-head p, .dashboard-analysis-head p { margin:5px 0 0; color:var(--text-muted); font-size:.76rem; }.dashboard-head-status,.dashboard-period-badge { display:inline-flex; align-items:center; gap:6px; padding:6px 10px; border:1px solid var(--border); border-radius:999px; color:var(--text-secondary); font-size:.68rem; font-weight:800; letter-spacing:.04em; text-transform:uppercase; }.dashboard-head-status i,.dashboard-period-badge i{width:6px;height:6px;border-radius:50%;background:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 13%,transparent)}.dashboard-analysis-actions { display:flex; align-items:center; justify-content:flex-end; flex-wrap:wrap; gap:8px; }.dashboard-export-btn { display:inline-flex; align-items:center; gap:6px; white-space:nowrap; }
.dashboard-summary-grid{margin-bottom:16px}.dashboard-summary-panel{min-height:0}.dashboard-summary-panel .card-header{margin-bottom:13px}.dashboard-summary-legend{margin-top:12px}.dashboard-summary-donut{justify-content:center;min-height:152px}.dashboard-summary-bars{margin-top:5px}.dashboard-bar-detail{min-width:66px;color:var(--text-secondary);font-size:.67rem;line-height:1.4;text-align:right}.dashboard-bar-detail span{color:var(--green);font-weight:700}.dashboard-rate-guide{display:flex;flex-wrap:wrap;gap:8px;margin-top:13px;color:var(--text-muted);font-size:.64rem}.dashboard-rate-guide span{display:inline-flex;align-items:center;gap:4px}.dashboard-rate-guide span::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--green)}.dashboard-rate-guide span:nth-child(2)::before{background:var(--orange)}.dashboard-rate-guide span:nth-child(3)::before{background:var(--red)}.dashboard-summary-mini { margin-bottom:16px; }.dashboard-target-card { margin-bottom:16px; }.dashboard-target-kpis{margin-top:2px}.dashboard-truncate { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.dashboard-entity-label{width:144px;white-space:normal;overflow:visible;text-overflow:clip;text-align:left;line-height:1.3}.dashboard-summary-entity{width:100%;padding:0;border:0;background:transparent;color:inherit;font:inherit;cursor:pointer}.dashboard-summary-entity:hover .bar-label{text-decoration:underline;text-underline-offset:3px}.dashboard-summary-entity:hover .bar-track{filter:brightness(1.06)}.dashboard-row-note { display:flex;gap:7px;margin:-5px 0 7px 154px;color:var(--text-muted);font-size:.64rem; }.dashboard-row-note span:first-child{color:var(--green)}.dashboard-row-note span:last-child{color:var(--red)}
.dashboard-entity-panel{min-width:0}.dashboard-entity-list{max-height:356px;overflow:auto;border-top:1px solid var(--border-light)}.dashboard-entity-row{width:100%;display:grid;grid-template-columns:26px minmax(180px,1fr) auto auto;align-items:center;gap:10px;padding:10px 2px;border:0;border-bottom:1px solid var(--border-light);background:transparent;color:var(--text-primary);font:inherit;text-align:left;cursor:pointer}.dashboard-entity-row:last-child{border-bottom:0}.dashboard-entity-row:hover{background:var(--bg-hover)}.dashboard-entity-rank{color:var(--text-muted);font-size:.68rem;font-weight:700;text-align:center}.dashboard-entity-name{min-width:0;white-space:normal;overflow-wrap:anywhere;font-size:.74rem;font-weight:650;line-height:1.35}.dashboard-entity-metric,.dashboard-entity-status{white-space:nowrap;color:var(--text-muted);font-size:.66rem;text-align:right}.dashboard-entity-metric b{color:var(--text-primary)}.dashboard-entity-status em{color:var(--green);font-style:normal;font-weight:700}@media (max-width:760px){.dashboard-entity-row{grid-template-columns:24px minmax(0,1fr) auto;gap:8px}.dashboard-entity-status{grid-column:2 / -1;text-align:left}.dashboard-entity-list{max-height:420px}.dashboard-entity-label{width:118px;font-size:.68rem}}
.dashboard-kpi-grid{gap:12px}.dashboard-kpi-card{position:relative;min-height:138px;padding:15px 16px;border-color:var(--border);box-shadow:none}.dashboard-kpi-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));box-shadow:var(--shadow)}.kpi-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.kpi-card-marker,.dashboard-kpi-action{display:inline-flex;align-items:center;min-height:20px;padding:2px 7px;border-radius:999px;background:var(--bg-hover);color:var(--text-muted);font-size:.61rem;font-weight:800;letter-spacing:.02em;white-space:nowrap}.kpi-card-marker.success{background:var(--green-bg);color:var(--green)}.kpi-card-marker.warning{background:var(--orange-bg);color:var(--orange)}.kpi-card-marker.danger{background:var(--red-bg);color:var(--red)}.dashboard-kpi-action{color:var(--accent)}.dashboard-kpi-card .kpi-value{margin-top:11px;font-family:var(--font-display);letter-spacing:-.04em}.kpi-duration{font-size:1.55rem!important}.dashboard-kpi-card .kpi-sub{margin-top:7px;line-height:1.35}.kpi-separator{padding:0 2px;color:var(--text-muted)}.kpi-scope-row{display:flex;gap:10px;margin-top:8px;font-size:.67rem;font-weight:700}.kpi-scope-row b{font-family:var(--font-display)}.kpi-footnote{margin-top:8px;color:var(--text-muted);font-size:.65rem;line-height:1.35}.kpi-trend{font-weight:800}.kpi-trend.neutral{color:var(--accent)}
/* ============================================================
   INTERACTIVE WEEKLY DASHBOARD
   ============================================================ */
.dashboard-filters { display:flex; align-items:flex-end; flex-wrap:wrap; gap:13px 18px; padding:14px 16px 15px; margin-bottom:18px; border-color:var(--border); }
.dashboard-filter-intro{display:flex;flex-direction:column;gap:2px;margin-right:3px}.dashboard-filter-kicker{color:var(--text-primary);font-size:.73rem;font-weight:800}.dashboard-filter-summary{color:var(--text-muted);font-size:.67rem}.dashboard-filter-group { display:flex; align-items:center; flex-wrap:wrap; gap:6px; }
.dashboard-filter-label { width:100%; color:var(--text-muted); font-size:.64rem; font-weight:800; text-transform:uppercase; letter-spacing:.055em; }.dashboard-filter-group:first-of-type .dashboard-filter-label{width:auto;margin-right:2px}
.filter-pill { padding:5px 9px; border:1px solid var(--border); border-radius:999px; background:var(--bg-card); color:var(--text-secondary); cursor:pointer; font:inherit; font-size:.72rem; transition:.15s; }
.filter-pill:hover, .filter-pill.active { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 12%, var(--bg-card)); color:var(--accent); font-weight:800; }
.dashboard-select { min-width:138px; height:31px; padding:3px 25px 3px 8px; font-size:.75rem; }.dashboard-date-range{gap:5px}.dashboard-date-input { width:136px; min-height:31px; padding:4px 7px; font-size:.75rem; }.dashboard-reset { margin-left:auto; }
.dashboard-kpi-button, .dashboard-pipeline-row, .dashboard-attention, .dashboard-breakdown-row, .dashboard-sales-row, .dashboard-recent-button { width:100%; border:0; font:inherit; text-align:left; cursor:pointer; }
.dashboard-kpi-button { background:var(--bg-card); transition:transform .15s, border-color .15s, box-shadow .15s; }.dashboard-kpi-button:hover { transform:translateY(-2px); border-color:var(--accent); box-shadow:var(--shadow-md); }
.dashboard-panel{border-color:var(--border);box-shadow:none}.dashboard-panel:hover{box-shadow:var(--shadow)}.dashboard-panel-header{align-items:flex-start;margin-bottom:12px}.dashboard-panel-header>div{position:relative;padding-left:30px}.dashboard-section-index{position:absolute;top:1px;left:0;display:grid;place-items:center;width:21px;height:21px;border-radius:7px;background:var(--accent-light);color:var(--accent);font-size:.61rem;font-weight:800}.dashboard-section-index.attention{background:var(--red-bg);color:var(--red)}.dashboard-card-hint { display:block; margin-top:3px; color:var(--text-muted); font-size:.68rem; font-weight:400; }.dashboard-total, .dashboard-detail-count { color:var(--text-muted); font-size:.72rem; }
.dashboard-pipeline-list { display:grid; gap:2px; }.dashboard-pipeline-row { display:grid; grid-template-columns:9px minmax(82px,1fr) minmax(44px,1.35fr) 24px 34px; align-items:center; gap:9px; padding:9px 8px; border-radius:7px; background:transparent; color:var(--text-primary); transition:background .15s; }.dashboard-pipeline-row:hover { background:var(--bg-hover); }.dashboard-pipeline-row .pipe-dot { width:8px; height:8px; border-radius:50%; }.dashboard-pipeline-meter{display:block;height:5px;overflow:hidden;border-radius:99px;background:var(--bg-hover)}.dashboard-pipeline-meter i{display:block;height:100%;border-radius:inherit;min-width:0}.dashboard-pipeline-count { min-width:22px; text-align:right; font-weight:700; }.dashboard-pipeline-percent { color:var(--text-muted); font-size:.72rem; text-align:right; }
.dashboard-attention-grid { display:grid; grid-template-columns:repeat(2, 1fr); gap:8px; }
.dashboard-attention { display:flex; flex-direction:column; gap:4px; min-height:82px; padding:12px; border:1px solid transparent; border-radius:8px; background:var(--bg-hover); color:var(--text-primary); transition:transform .15s,filter .15s,border-color .15s; }.dashboard-attention:hover { transform:translateY(-1px); filter:brightness(.97); border-color:var(--border); }.dashboard-attention strong { font-family:var(--font-display);font-size:1.35rem;line-height:1;letter-spacing:-.035em; }.dashboard-attention span { color:var(--text-secondary); font-size:.7rem; }
.dashboard-attention.danger { border-left:3px solid var(--red); }.dashboard-attention.danger strong { color:var(--red); }
.dashboard-attention.warning { border-left:3px solid var(--orange); }.dashboard-attention.warning strong { color:var(--orange); }
.dashboard-attention.high { border-left:3px solid #e879f9; }.dashboard-attention.high strong { color:#d946ef; }
.dashboard-attention.revisi { border-left:3px solid var(--orange); }.dashboard-attention.revisi strong { color:var(--orange); }
.dashboard-detail-card { border-color:var(--accent); }.dashboard-detail-table { max-height:calc(min(78vh,760px) - 238px);overflow:auto;border-top:1px solid var(--border-light);border-bottom:1px solid var(--border-light) }.dashboard-detail-table table{min-width:760px}.dashboard-detail-table thead th{position:sticky;top:0;z-index:1;background:var(--bg-modal)}
.dashboard-detail-modal{display:flex;flex-direction:column;max-height:min(78vh,760px)}.dashboard-detail-modal-header{align-items:flex-start;gap:18px;margin:0;padding:19px 21px 14px}.dashboard-detail-modal-header .modal-title{margin-top:3px;font-size:1.2rem}.dashboard-detail-modal-header p{margin:5px 0 0;color:var(--text-secondary);font-size:.76rem;line-height:1.4}.dashboard-detail-modal-header .modal-close{width:30px;height:30px;flex:0 0 30px;align-items:center;justify-content:center;border:1px solid var(--border);font-size:1.25rem}.dashboard-detail-modal-kicker{display:flex;align-items:center;gap:6px;color:var(--text-muted);font-size:.63rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.dashboard-detail-modal-kicker span{display:block;width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-light)}.dashboard-detail-modal[data-tone="success"] .dashboard-detail-modal-kicker span{background:var(--green);box-shadow:0 0 0 3px var(--green-bg)}.dashboard-detail-modal[data-tone="warning"] .dashboard-detail-modal-kicker span{background:var(--orange);box-shadow:0 0 0 3px var(--orange-bg)}.dashboard-detail-modal[data-tone="danger"] .dashboard-detail-modal-kicker span{background:var(--red);box-shadow:0 0 0 3px var(--red-bg)}.dashboard-detail-modal-summary{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 21px;border-top:1px solid var(--border-light);background:var(--bg-hover);color:var(--text-muted);font-size:.7rem}.dashboard-detail-result-count{color:var(--text-primary);font-family:var(--font-display);font-size:.77rem;font-weight:800}.dashboard-detail-modal-footer{align-items:center;justify-content:space-between;margin:0;padding:12px 21px;color:var(--text-muted);font-size:.69rem}.dashboard-detail-modal-footer b{color:var(--text-secondary)}
.dash-detail-subject { max-width:270px; overflow:hidden; margin-top:3px; color:var(--text-muted); font-size:.7rem; font-weight:400; text-overflow:ellipsis; white-space:nowrap; }.dashboard-empty { padding:28px 16px; color:var(--text-muted); text-align:center; font-size:.82rem; }.dash-overdue-text { color:var(--red) !important; font-weight:700; }
.dashboard-breakdown { display:grid; gap:4px; }.dashboard-breakdown-row { padding:10px 8px; border-radius:7px; background:transparent; color:var(--text-primary); transition:background .15s; }.dashboard-breakdown-row:hover { background:var(--bg-hover); }.dashboard-breakdown-head,.dashboard-breakdown-meta { display:flex; justify-content:space-between; gap:10px; font-size:.76rem; }.dashboard-breakdown-head strong { color:var(--text-primary); }.dashboard-breakdown-head span { font-family:var(--font-display);font-weight:800; }.dashboard-breakdown-meta { margin-top:5px; color:var(--text-muted); font-size:.68rem; }.dashboard-progress-track { height:6px; margin-top:8px; overflow:hidden; border-radius:99px; background:var(--bg-hover); }.dashboard-progress-track span { display:block; height:100%; border-radius:inherit; opacity:.9; }
.dashboard-sales-list { display:grid; gap:2px; }.dashboard-sales-row { display:grid; grid-template-columns:minmax(0, 1fr) auto 28px; align-items:center; gap:10px; padding:10px 8px; border-radius:7px; background:transparent; color:var(--text-primary); transition:background .15s; }.dashboard-sales-row:hover { background:var(--bg-hover); }.dashboard-sales-name { overflow:hidden; font-weight:700; text-overflow:ellipsis; white-space:nowrap; }.dashboard-sales-meta { color:var(--text-muted); font-size:.68rem; white-space:nowrap; }.dashboard-sales-meta b { color:var(--green); }.dashboard-sales-meta em { color:var(--red); font-style:normal; }.dashboard-sales-total { font-family:var(--font-display);font-weight:800;text-align:right; }
.dashboard-recent-button { display:grid; grid-template-columns:60px minmax(0,1fr) auto 80px; align-items:center; gap:10px; padding:7px 8px; border-radius:7px; background:transparent; color:var(--text-primary); transition:background .15s; }.dashboard-recent-button:hover { background:var(--bg-hover); }.recent-subject small { display:block; margin-top:2px; color:var(--text-muted); font-size:.67rem; }

/* ============================================================
   DASHBOARD: Donut Chart, Pipeline Legend, Recent
   ============================================================ */
.dash-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.donut-wrap { display: flex; align-items: center; gap: 24px; padding: 8px 0; }
.donut-chart { flex-shrink: 0; }
.donut-center { font-size: 1.2rem; font-weight: 700; fill: var(--text-primary); font-family: var(--font-mono); }
.donut-legend { display: flex; flex-direction: column; gap: 10px; }
.legend-item { display: flex; align-items: center; gap: 10px; font-size: 0.85rem; }
.legend-dot { width: 12px; height: 12px; border-radius: 3px; flex-shrink: 0; }
.legend-label { color: var(--text-secondary); min-width: 48px; }
.legend-value { font-weight: 700; color: var(--text-primary); font-family: var(--font-mono); }

/* Pipeline legend rows */
.pipe-legend-row { display: flex; justify-content: space-between; align-items: center; padding: 7px 0; font-size: 0.85rem; }
.pipe-dot { width: 10px; height: 10px; border-radius: 2px; display: inline-block; flex-shrink: 0; }
.pipe-label { color: var(--text-primary); }
.pipe-count { font-weight: 700; font-family: var(--font-mono); font-size: 0.9rem; color: var(--text-primary); }

/* Recent activity */
.recent-list { display: flex; flex-direction: column; gap: 6px; font-size: 0.83rem; }
.recent-row { display: flex; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px solid var(--border-light); }
.recent-div { font-weight: 600; font-size: 0.72rem; width: 48px; flex-shrink: 0; }
.recent-subject { flex: 1; color: var(--text-primary); }
.recent-ago { color: var(--text-muted); font-size: 0.72rem; white-space: nowrap; }

/* ============================================================
   SIDEBAR: User card at top
   ============================================================ */
.sidebar-user {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px; margin: 0 10px 8px;
  background: var(--bg-input); border-radius: 10px;
  border: 1px solid var(--border);
  cursor: default; transition: background 0.2s;
  position: relative;
}
.sidebar-user.clickable { cursor: pointer; }
.sidebar-user.clickable:hover { background: var(--bg-hover); }
.sidebar-user-avatar {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--accent); color: #000;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 0.95rem; flex-shrink: 0;
}
.sidebar-user-avatar.muted { background: var(--bg-tertiary); color: var(--text-muted); }
.sidebar-user-info { flex: 1; min-width: 0; }
.sidebar-user-name { font-size: 0.84rem; font-weight: 600; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sidebar-user-email { font-size: 0.72rem; color: var(--text-muted); margin-top: 1px; }
.sidebar-user-logout {
  background: none; border: 1px solid var(--border); color: var(--text-muted);
  width: 28px; height: 28px; border-radius: 6px; cursor: pointer;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.8rem; transition: all 0.2s; flex-shrink: 0;
}
.sidebar-user-logout:hover { background: var(--red); color: #fff; border-color: var(--red); }


/* Dashboard asymmetric grids */
.dash-grid-211 { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 14px; margin-bottom: 14px; }
.dash-grid-121 { display: grid; grid-template-columns: 1fr 2fr 1fr; gap: 14px; margin-bottom: 14px; }
.map-wrap { display: flex; gap: 14px; align-items: flex-start; }
.indo-map { width: 100%; height: auto; border-radius: 8px; }
.map-legend { display: flex; flex-direction: column; gap: 6px; font-size: 0.76rem; min-width: 110px; }
.map-legend-row { display: flex; align-items: center; gap: 8px; }
.map-dot { border-radius: 50%; flex-shrink: 0; opacity: 0.85; }
.badge-amber{background:rgba(245,158,11,0.15);color:#f59e0b;border:1px solid rgba(245,158,11,0.25)}
.badge-cyan{background:rgba(6,182,212,0.15);color:#06b6d4;border:1px solid rgba(6,182,212,0.25)}

@media(max-width:1024px){
  .dash-grid-211, .dash-grid-121 { grid-template-columns: 1fr 1fr; }
  .dash-grid-2 { grid-template-columns: 1fr; }
  .donut-wrap { justify-content: center; }
  .map-wrap { flex-direction: column; }
}
@media(max-width:768px){
  .dash-grid-211, .dash-grid-121 { grid-template-columns: 1fr; }
  .dashboard-tabs{width:100%;gap:2px}.dashboard-tab{flex:1;min-width:0;padding:8px 9px}.dashboard-tab small{overflow:hidden;max-width:100%;text-overflow:ellipsis}.dashboard-summary-head,.dashboard-analysis-head{align-items:flex-start;flex-direction:column}.dashboard-analysis-actions{justify-content:flex-start}.dashboard-filters{align-items:stretch;flex-direction:column;gap:12px}.dashboard-filter-intro{margin-bottom:1px}.dashboard-filter-group{justify-content:flex-start}.dashboard-reset{margin-left:0;align-self:flex-start}.dashboard-select{min-width:0;flex:1}.dashboard-date-input{width:calc(50% - 4px)}.dashboard-pipeline-row{grid-template-columns:9px minmax(68px,1fr) minmax(32px,1fr) 22px 32px;gap:6px}.dashboard-sales-row{grid-template-columns:minmax(0,1fr) auto}.dashboard-sales-total{display:none}.dashboard-recent-button{grid-template-columns:55px minmax(0,1fr) auto}.dashboard-recent-button .priority-badge{display:none}.dashboard-row-note{margin-left:0}.dashboard-panel-header>div{padding-left:28px}.dashboard-kpi-card{min-height:126px}
}
@media(max-width:1024px){
  .dash-grid-2 { grid-template-columns: 1fr; }
  .donut-wrap { justify-content: center; }
}

/* ===== RESPONSIVE: Card mode for tables (mobile/tablet) ===== */
@media(max-width:1024px){
  .main-content{padding:20px 14px}
  /* Convert every data table row into a stacked card — vertical scroll only */
  .table-container{max-height:none;overflow:visible;border:none;background:transparent}
  .table-container thead{display:none}
  .table-container tbody{display:block}
  .table-container tbody tr{display:block;border:1px solid var(--border);border-radius:12px;margin-bottom:12px;background:var(--bg-card);padding:6px 0}
  .table-container tbody tr td{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 14px;border:none;border-bottom:1px dashed var(--border);text-align:right;font-size:0.82rem}
  .table-container tbody tr td:last-child{border-bottom:none}
  .table-container tbody tr td::before{content:attr(data-label);font-size:0.66rem;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.4px;text-align:left;flex-shrink:0;min-width:86px}
  .table-container tbody tr td.actions{justify-content:flex-end;gap:6px}
  .table-container tbody tr td.actions::before{display:none}
}
@media(max-width:640px){
  .table-container tbody tr td{flex-direction:column;align-items:flex-start;text-align:left}
  .table-container tbody tr td::before{min-width:0}
}

/* ===== WBS Builder ===== */
.wbs-tree { display:flex; flex-direction:column; gap:10px; }
.wbs-phase { background:var(--bg-secondary); border:1px solid var(--border); border-radius:var(--radius-lg); padding:12px; }
.wbs-phase-head, .wbs-deliverable-head { display:flex; align-items:center; justify-content:space-between; gap:8px; flex-wrap:wrap; }
.wbs-phase-title, .wbs-deliverable-title { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.wbs-level-tag { color:#fff; font-size:0.62rem; font-weight:700; padding:2px 8px; border-radius:4px; letter-spacing:0.3px; }
.wbs-level-2 { background:var(--purple); }
.wbs-deliverables { margin-left:22px; margin-top:10px; display:flex; flex-direction:column; gap:8px; }
.wbs-deliverable { border-left:2px dashed var(--border); padding-left:12px; }
.wbs-actions { display:flex; gap:4px; }
.btn-xs { padding:3px 7px; font-size:0.66rem; border-radius:5px; }
.wbs-activities { margin-top:8px; display:flex; flex-direction:column; gap:4px; }
.wbs-activity { display:flex; align-items:center; gap:8px; padding:5px 8px; background:var(--bg-tertiary); border-radius:6px; font-size:0.8rem; }
/* ============================================================
   Adaptive workspace sizing
   Viewport-first layout for high-DPI monitors, tablets, and phones.
   Kanban stays a five-lane workspace on wide screens, scrolls cleanly
   at intermediate widths, and becomes a readable single-column stack
   on touch-sized screens.
   ============================================================ */
html { min-width: 320px; }
body { min-height: 100dvh; }
.main-content {
  padding: clamp(20px, 2.2vw, 36px) clamp(16px, 3vw, 48px) clamp(28px, 4vw, 56px);
}
.page-header { margin-bottom: clamp(16px, 2vw, 26px); }
.page-title { font-size: clamp(1.35rem, 1.2rem + .75vw, 1.95rem); }
.page-subtitle { font-size: clamp(.76rem, .72rem + .15vw, .88rem); }
.workspace-page-header { align-items: flex-start; }
.workspace-toolbar {
  gap: clamp(10px, 1.5vw, 18px);
  padding: clamp(10px, 1.3vw, 16px);
}
.workspace-kanban-board {
  display: grid;
  grid-template-columns: repeat(5, minmax(220px, 1fr));
  gap: clamp(10px, 1.15vw, 16px);
  align-items: stretch;
  min-height: max(420px, calc(100dvh - 270px));
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
}
.workspace-kanban-column {
  width: auto;
  min-width: 0;
  max-width: none;
  min-height: 420px;
  scroll-snap-align: start;
}
.workspace-kanban-cards { min-height: 120px; }
.workspace-kanban-card {
  padding: clamp(10px, .8vw, 14px);
  min-height: 94px;
}
.workspace-kanban-card-title {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
  line-height: 1.38;
}

/* Large desktop: use the available canvas rather than fixed pixel gutters. */
@media (min-width: 1440px) {
  .main-content { padding-inline: clamp(40px, 4vw, 84px); }
  .workspace-kanban-board { grid-template-columns: repeat(5, minmax(240px, 1fr)); }
}
/* Tablet / laptop: preserve all lanes, provide intentional horizontal scroll. */
@media (min-width: 769px) and (max-width: 1180px) {
  .workspace-kanban-board { grid-template-columns: repeat(5, minmax(205px, 1fr)); }
  .sidebar { width: 224px; }
  .main-content { margin-left: 224px; }
  body.sidebar-min .main-content { margin-left: var(--sidebar-width-min); }
}
/* Phone: remove canvas overflow and make every lane easy to scan/tap. */
@media (max-width: 768px) {
  .main-content { margin-left: 0; padding: 72px 14px 28px; }
  .workspace-page-header { gap: 14px; }
  .workspace-page-header .page-actions { width: 100%; }
  .workspace-page-header .page-actions .btn { flex: 1; }
  .workspace-toolbar { align-items: stretch; }
  .workspace-filter-block, .filter-pills { width: 100%; }
  .filter-pills { overflow-x: auto; flex-wrap: nowrap; padding-bottom: 3px; scrollbar-width: none; }
  .filter-pills::-webkit-scrollbar { display: none; }
  .filter-pill { flex: 0 0 auto; min-height: 36px; }
  .workspace-kanban-board {
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-height: 0;
    overflow: visible;
  }
  .workspace-kanban-column {
    min-height: 0;
    width: 100%;
  }
  .workspace-kanban-cards { min-height: 56px; }
  .workspace-kanban-card { min-height: 86px; }
}
/* Coarse-pointer devices get larger hit targets without changing desktop density. */
@media (pointer: coarse) {
  .workspace-kanban-card { min-height: 100px; }
  .filter-pill, .btn, .nav-item { min-height: 40px; }
}
@media (prefers-reduced-motion: reduce) {
  .workspace-kanban-board { scroll-behavior: auto; scroll-snap-type: none; }
}

/* ============================================================
   Responsive layout system
   One source of truth for viewport geometry. Desktop uses a full-width
   top navigation; mobile uses the off-canvas navigation. Content owns
   the space below the top bar and never carries a phantom left rail.
   ============================================================ */
:root {
  --layout-gutter: clamp(14px, 2vw, 40px);
  --layout-gap: clamp(10px, 1.2vw, 20px);
  --topbar-h: 64px;
  --sidebar-width: 240px;
  --sidebar-width-min: 64px;
}
.main-content {
  box-sizing: border-box;
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  align-items: stretch;
  gap: var(--layout-gap);
  width: 100%;
  max-width: none;
  min-width: 0;
  min-height: calc(100dvh - var(--topbar-h));
  margin: 0;
  padding: calc(var(--topbar-h) + clamp(18px, 2.2vw, 34px)) var(--layout-gutter) clamp(24px, 3vw, 48px);
}
.main-content > * {
  box-sizing: border-box;
  width: 100%;
  max-width: none;
  min-width: 0;
  margin-inline: 0;
}
.main-content > .modal,
.main-content > .toast-container,
.main-content > [hidden] { width: auto; }
.page-header,
.workspace-toolbar,
.workspace-kanban-board,
.table-card,
.content-card,
.dashboard-grid,
.settings-page { align-self: stretch; }
.workspace-kanban-board {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: clamp(8px, 1vw, 14px);
  width: 100%;
  min-width: 0;
  min-height: max(420px, calc(100dvh - 270px));
  margin-inline: 0;
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: thin;
}
.workspace-kanban-column {
  min-width: 0;
  width: auto;
  max-width: none;
}
.workspace-kanban-card,
.workspace-kanban-header,
.workspace-kanban-cards { min-width: 0; }

/* Large desktop: consume the complete viewport with balanced gutters. */
@media (min-width: 1440px) {
  :root { --layout-gutter: clamp(28px, 2.5vw, 64px); }
  .workspace-kanban-board { gap: clamp(12px, 1vw, 18px); }
}
/* Desktop: 1024–1439px. */
@media (min-width: 1024px) and (max-width: 1439px) {
  :root { --layout-gutter: clamp(18px, 2vw, 32px); }
}
/* Tablet: preserve a deliberate horizontal Kanban scroller, no page overflow. */
@media (min-width: 768px) and (max-width: 1023px) {
  :root { --layout-gutter: clamp(14px, 2vw, 24px); }
  .workspace-kanban-board {
    grid-template-columns: repeat(5, minmax(clamp(170px, 23vw, 220px), 1fr));
    overflow-x: auto;
  }
}
/* Mobile: navigation becomes off-canvas and every lane becomes a full-width stack. */
@media (max-width: 767px) {
  :root { --layout-gutter: clamp(12px, 4vw, 20px); --topbar-h: 56px; }
  .main-content {
    width: 100%;
    min-height: calc(100dvh - var(--topbar-h));
    padding-top: calc(var(--topbar-h) + 14px);
  }
  .main-content > * { width: 100%; }
  .workspace-kanban-board {
    display: flex;
    flex-direction: column;
    width: 100%;
    min-height: 0;
    overflow: visible;
  }
  .workspace-kanban-column { width: 100%; min-height: 0; }
}
@media (prefers-reduced-motion: reduce) {
  .workspace-kanban-board { scroll-behavior: auto; }
}

/* ============================================================
   Tahoe visual layer — visual-only refinement
   Keeps the existing top navigation, grid, tables, routes, and hooks.
   Concept: graphite glass — calm surfaces, cool light, quiet hierarchy.
   ============================================================ */
:root,
[data-theme="dark"] {
  --font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Public Sans", "Segoe UI", sans-serif;
  --font-display: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Public Sans", "Segoe UI", sans-serif;
  --bg-base: #0b0d10;
  --bg-primary: #101318;
  --bg-secondary: #151a21;
  --bg-tertiary: #1b212a;
  --bg-hover: #242b36;
  --bg-sidebar: rgba(15, 18, 23, .88);
  --bg-card: rgba(22, 27, 34, .86);
  --bg-input: rgba(10, 13, 17, .72);
  --bg-modal: rgba(24, 29, 37, .96);
  --bg-toast: #202732;
  --border: rgba(184, 199, 220, .16);
  --border-light: rgba(184, 199, 220, .09);
  --border-card: rgba(184, 199, 220, .14);
  --text-primary: #f5f7fb;
  --text-secondary: #aab4c3;
  --text-muted: #778395;
  --accent: #a9bdf7;
  --accent-hover: #c5d3ff;
  --accent-light: rgba(140, 168, 246, .13);
  --accent-contrast: #111722;
  --accent-shadow: rgba(126, 155, 238, .18);
  --shadow: 0 1px 2px rgba(0, 0, 0, .28), 0 16px 36px rgba(0, 0, 0, .18);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, .22);
  --shadow-lg: 0 26px 72px rgba(0, 0, 0, .5);
  --radius: 9px;
  --radius-sm: 7px;
  --radius-lg: 12px;
}

[data-theme="light"] {
  --bg-base: #f2f4f8;
  --bg-primary: #f8f9fb;
  --bg-secondary: #eef1f6;
  --bg-tertiary: #e5eaf2;
  --bg-hover: #dfe6f0;
  --bg-sidebar: rgba(248, 250, 253, .9);
  --bg-card: rgba(255, 255, 255, .84);
  --bg-input: rgba(255, 255, 255, .88);
  --bg-modal: rgba(255, 255, 255, .97);
  --border: rgba(57, 73, 99, .16);
  --border-light: rgba(57, 73, 99, .09);
  --border-card: rgba(57, 73, 99, .14);
  --text-primary: #18202b;
  --text-secondary: #5f6d80;
  --text-muted: #8793a3;
  --accent: #405fa8;
  --accent-hover: #314d91;
  --accent-light: rgba(64, 95, 168, .1);
  --accent-contrast: #fff;
  --accent-shadow: rgba(64, 95, 168, .16);
}

body {
  background:
    radial-gradient(900px 520px at 12% -12%, rgba(122, 147, 220, .09), transparent 68%),
    radial-gradient(760px 500px at 100% 0%, rgba(106, 130, 192, .06), transparent 68%),
    var(--bg-base);
}

.sidebar {
  background: var(--bg-sidebar);
  border-color: var(--border);
  box-shadow: 0 1px 0 rgba(255,255,255,.035), 0 14px 34px rgba(0,0,0,.12);
  -webkit-backdrop-filter: blur(24px) saturate(135%);
  backdrop-filter: blur(24px) saturate(135%);
}
.sidebar-brand,
.sidebar-footer { border-color: var(--border-light); }
.brand-logo,
.login-logo-img { box-shadow: 0 4px 18px rgba(0,0,0,.22); }
.brand-text,
.page-title,
.login-form-heading span { letter-spacing: -.045em; }
.nav-item { color: var(--text-secondary); }
.nav-item:hover { color: var(--text-primary); background: rgba(255,255,255,.055); }
.nav-item.active { color: var(--accent); background: var(--accent-light); box-shadow: inset 0 0 0 1px rgba(169,189,247,.14); }

.page-header,
.workspace-toolbar,
.card,
.kpi-card,
.settings-card,
.table-container,
.workspace-table-card,
.kanban-column,
.est-summary-card,
.dashboard-panel,
.content-card {
  background: linear-gradient(145deg, rgba(29,35,45,.78), rgba(18,22,29,.88));
  border-color: var(--border-card);
  box-shadow: var(--shadow-sm);
}
.page-header { border-color: transparent; box-shadow: none; background: transparent; }
.workspace-toolbar { box-shadow: inset 0 1px 0 rgba(255,255,255,.018), var(--shadow-sm); }

.btn,
.login-btn,
.presence-button,
.account-chip,
.form-input,
.form-select,
.form-textarea,
.search-input,
.login-input,
.workspace-request-select {
  border-color: var(--border);
  background: rgba(12, 16, 21, .62);
  color: var(--text-primary);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.035);
}
.btn:hover,
.presence-button:hover,
.presence-button[aria-expanded="true"],
.account-chip:hover,
.form-input:hover,
.form-select:hover,
.form-textarea:hover,
.search-input:hover,
.login-input:hover,
.workspace-request-select:hover { border-color: rgba(169,189,247,.4); }
.btn-primary,
.login-btn { background: linear-gradient(180deg, #b7c8ff, #92a9ed); color: #101621; border-color: transparent; box-shadow: 0 5px 18px rgba(109,137,217,.22), inset 0 1px 0 rgba(255,255,255,.5); }
.btn-primary:hover,
.login-btn:hover { background: linear-gradient(180deg, #c9d6ff, #a4b9f5); color: #0d1420; }
.btn-secondary,
.btn-outline,
.btn-ghost { background: rgba(255,255,255,.035); border-color: var(--border); color: var(--text-secondary); }

input::placeholder,
textarea::placeholder { color: #6f7c8e; }
input:focus,
select:focus,
textarea:focus { border-color: rgba(169,189,247,.62); box-shadow: 0 0 0 3px rgba(130,157,232,.12), inset 0 1px 0 rgba(255,255,255,.04); }

.table-container,
.workspace-table-card { overflow: hidden; }
.table-container thead th { background: rgba(25,31,40,.94); color: #9aa8bc; border-color: var(--border-light); }
th { letter-spacing: .06em; }
td, th { border-color: var(--border-light); }
tr:hover td { background: rgba(139,165,235,.055); }

.presence-button { background: rgba(27,34,45,.72); }
.presence-indicator { box-shadow: 0 0 0 4px rgba(92,215,151,.12), 0 0 14px rgba(92,215,151,.32); }
.presence-popover,
.account-popover,
.modal-box,
.export-menu-list { background: rgba(25,31,40,.94); border-color: var(--border); -webkit-backdrop-filter: blur(26px) saturate(140%); backdrop-filter: blur(26px) saturate(140%); }
.presence-popover-title,
.account-popover-header { border-color: var(--border-light); }

.login-gate {
  background:
    radial-gradient(700px 520px at 18% 18%, rgba(126,151,225,.16), transparent 68%),
    radial-gradient(640px 520px at 85% 85%, rgba(96,120,184,.12), transparent 68%),
    #0b0d10;
}
.login-card {
  background: rgba(24, 29, 37, .82);
  border-color: rgba(190,204,231,.18);
  box-shadow: 0 28px 90px rgba(0,0,0,.46), inset 0 1px 0 rgba(255,255,255,.06);
  -webkit-backdrop-filter: blur(30px) saturate(135%);
  backdrop-filter: blur(30px) saturate(135%);
}
.login-subtitle,
.login-form-heading small,
.login-toggle { color: var(--text-secondary); }
.login-divider { opacity: .82; }

@media (prefers-reduced-motion: reduce) {
  .btn,
  .login-btn,
  .nav-item { transition: none; }
}

/* Light theme correction: opaque, readable surfaces instead of dark glass values. */
[data-theme="light"] body {
  background:
    radial-gradient(900px 520px at 12% -12%, rgba(122, 147, 220, .10), transparent 68%),
    radial-gradient(760px 500px at 100% 0%, rgba(106, 130, 192, .07), transparent 68%),
    #eef1f5;
}
[data-theme="light"] .sidebar {
  background: #f8fafc;
  border-color: #d8e0ea;
  box-shadow: 0 1px 0 rgba(25, 39, 61, .04), 0 10px 28px rgba(25, 39, 61, .08);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
[data-theme="light"] .page-header,
[data-theme="light"] .workspace-toolbar,
[data-theme="light"] .card,
[data-theme="light"] .kpi-card,
[data-theme="light"] .settings-card,
[data-theme="light"] .table-container,
[data-theme="light"] .workspace-table-card,
[data-theme="light"] .kanban-column,
[data-theme="light"] .est-summary-card,
[data-theme="light"] .dashboard-panel,
[data-theme="light"] .content-card {
  background: linear-gradient(145deg, #ffffff, #f7f9fc);
  border-color: #d8e0ea;
  box-shadow: 0 1px 2px rgba(25, 39, 61, .06), 0 8px 22px rgba(25, 39, 61, .045);
}
[data-theme="light"] .page-header { background: transparent; border-color: transparent; box-shadow: none; }
[data-theme="light"] .btn,
[data-theme="light"] .presence-button,
[data-theme="light"] .account-chip,
[data-theme="light"] .form-input,
[data-theme="light"] .form-select,
[data-theme="light"] .form-textarea,
[data-theme="light"] .search-input,
[data-theme="light"] .login-input,
[data-theme="light"] .workspace-request-select {
  background: #ffffff;
  border-color: #cbd5e1;
  color: #18202b;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.9), 0 1px 2px rgba(25,39,61,.04);
}
[data-theme="light"] .btn:hover,
[data-theme="light"] .presence-button:hover,
[data-theme="light"] .presence-button[aria-expanded="true"],
[data-theme="light"] .account-chip:hover,
[data-theme="light"] .form-input:hover,
[data-theme="light"] .form-select:hover,
[data-theme="light"] .form-textarea:hover,
[data-theme="light"] .search-input:hover,
[data-theme="light"] .login-input:hover,
[data-theme="light"] .workspace-request-select:hover { border-color: #8ea5d1; background: #fbfcfe; }
[data-theme="light"] .btn-primary,
[data-theme="light"] .login-btn { background: linear-gradient(180deg, #526fae, #405f9f); color: #ffffff; border-color: transparent; box-shadow: 0 5px 14px rgba(64,95,168,.18); }
[data-theme="light"] .btn-primary:hover,
[data-theme="light"] .login-btn:hover { background: linear-gradient(180deg, #607dbb, #4b69a8); color: #ffffff; }
[data-theme="light"] .btn-secondary,
[data-theme="light"] .btn-outline,
[data-theme="light"] .btn-ghost { background: #f4f6f9; border-color: #cbd5e1; color: #526176; }
[data-theme="light"] .table-container thead th { background: #eef2f7; color: #526176; border-color: #d8e0ea; }
[data-theme="light"] td,
[data-theme="light"] th { border-color: #e2e7ef; }
[data-theme="light"] tr:hover td { background: #f3f6fb; }
[data-theme="light"] .presence-popover,
[data-theme="light"] .account-popover,
[data-theme="light"] .modal-box,
[data-theme="light"] .export-menu-list {
  background: #ffffff;
  border-color: #d2dbe7;
  color: #18202b;
  box-shadow: 0 20px 52px rgba(25,39,61,.16);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
[data-theme="light"] .presence-popover-title,
[data-theme="light"] .account-popover-header { border-color: #e2e7ef; }
[data-theme="light"] .login-gate {
  background:
    radial-gradient(700px 520px at 18% 18%, rgba(126,151,225,.15), transparent 68%),
    radial-gradient(640px 520px at 85% 85%, rgba(96,120,184,.10), transparent 68%),
    #eef1f5;
}
[data-theme="light"] .login-card {
  background: rgba(255,255,255,.94);
  border-color: #d2dbe7;
  box-shadow: 0 24px 70px rgba(25,39,61,.16), inset 0 1px 0 rgba(255,255,255,.9);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
[data-theme="light"] .login-input::placeholder,
[data-theme="light"] input::placeholder,
[data-theme="light"] textarea::placeholder { color: #8b98aa; }
[data-theme="light"] .login-subtitle,
[data-theme="light"] .login-form-heading small,
[data-theme="light"] .login-toggle { color: #66758a; }

/* Requests / Tasks scroll repair: keep the page and table viewport independently scrollable. */
html { overflow-y: auto; }
body { overflow-x: hidden; overflow-y: auto; }
.main-content { overflow: visible; }
.workspace-table-card { min-height: 0; overflow: hidden; }
.workspace-table-container {
  display: block;
  width: 100%;
  min-height: 240px;
  max-height: min(72dvh, 760px);
  overflow-x: auto !important;
  overflow-y: auto !important;
  overscroll-behavior: contain;
  scrollbar-gutter: stable;
  -webkit-overflow-scrolling: touch;
}
.workspace-table-container table { min-height: 0; }
@media (max-width: 767px) {
  .workspace-table-container {
    min-height: 220px;
    max-height: calc(100dvh - 260px);
  }
}


/* EstimatorPro reference alignment: keep the wide top workspace, but use the source repo's calmer density and tokens. */
@media (min-width:769px){
  .sidebar{height:64px;width:100%;left:0;right:0;top:0;bottom:auto;flex-direction:row;align-items:center;border-right:0;border-bottom:1px solid var(--border);padding:0 18px;z-index:105;box-shadow:0 1px 0 rgba(255,255,255,.02)}
  .sidebar-brand{padding:0 15px 0 0;border-bottom:0;gap:8px}.sidebar-brand .brand-logo{width:32px;height:32px;border-radius:7px}.sidebar-brand .brand-text{font-family:var(--font-display);font-size:.9rem}.sidebar-brand .brand-sub{display:none}
  .sidebar-nav{flex:1;flex-direction:row;align-items:center;overflow-x:auto;overflow-y:hidden;padding:0 4px;gap:3px;scrollbar-width:none}.sidebar-nav::-webkit-scrollbar{height:0}.nav-section-label{display:none}
  .nav-item{flex-direction:row;justify-content:center;align-items:center;width:auto;padding:7px 10px;gap:7px;border-radius:5px;font-size:.78rem;font-weight:600}.nav-item .nav-icon{width:16px;height:16px}.nav-item.active{box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 25%,transparent)}
  .sidebar-user,.sidebar-footer .nav-section-label{display:none!important}.sidebar-footer{display:flex;flex-direction:row;border-top:0;border-left:1px solid var(--border);padding:0 0 0 12px;gap:8px;align-items:center}
  .main-content{margin:0;padding:84px clamp(18px,2.5vw,40px) 32px;min-height:100vh;max-width:none}
}
@media (max-width:768px){.main-content{margin:0;padding:68px 12px 20px}}

/* Consolidated state and semantic helpers used by generated views. */
.hidden { display: none !important; }
.login-brand-copy { display: flex; flex-direction: column; gap: 2px; margin-left: 10px; text-align: left; }
.login-brand-copy strong { font-size: 1.25rem; letter-spacing: -.03em; }
.login-brand-copy span { color: var(--text-muted); font-size: .7rem; font-weight: 500; letter-spacing: .04em; text-transform: uppercase; }
.login-form-heading { display: flex; flex-direction: column; gap: 3px; margin-bottom: 2px; }
.login-form-heading span { color: var(--text-primary); font-size: 1rem; font-weight: 700; }
.login-form-heading small { color: var(--text-muted); font-size: .75rem; }
.login-status { display: inline-flex; align-items: center; gap: 5px; margin-left: 8px; }
.login-status i { width: 6px; height: 6px; border-radius: 50%; background: var(--green); }
.mobile-header-label { color: var(--text-secondary); font-size: .78rem; font-weight: 700; }
.nav-settings-item { margin-top: auto; }
.tender-code-copy { color: var(--text-muted); }
.tender-code-copy:hover { color: var(--accent); }
.kanban-empty, .settings-empty { display: grid; place-items: center; min-height: 66px; border: 1px dashed var(--border); border-radius: var(--radius); color: var(--text-muted); font-size: .7rem; }
.account-settings-card { padding: 16px; border: 1px solid var(--border-card); border-radius: var(--radius-lg); background: var(--bg-card); }
.password-settings-form { display: flex; flex-direction: column; gap: 10px; }
.settings-temp-password { font-family: var(--font-mono); color: var(--accent); }
.admin-user-row { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--border-light); }
.admin-user-row:last-child { border-bottom: 0; }
.admin-user-avatar { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--accent-light); color: var(--accent); font-size: .7rem; font-weight: 700; }
.admin-user-copy { min-width: 0; }
.admin-user-copy strong, .admin-user-copy small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-user-copy small { color: var(--text-muted); font-size: .68rem; }
.timeline { display: flex; flex-direction: column; gap: 0; }
.timeline-item { display: grid; grid-template-columns: 12px 1fr; gap: 9px; position: relative; padding: 8px 0; }
.timeline-line { position: absolute; left: 5px; top: 20px; bottom: -8px; width: 1px; background: var(--border); }
.timeline-item:last-child .timeline-line { display: none; }
.timeline-status { width: 11px; height: 11px; margin-top: 3px; border: 2px solid var(--accent); border-radius: 50%; background: var(--bg-card); z-index: 1; }
.timeline-info { min-width: 0; }
.timeline-title { overflow: hidden; color: var(--text-primary); font-size: .76rem; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.timeline-meta { margin-top: 2px; color: var(--text-muted); font-size: .66rem; }
.dashboard-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 10px; }
.dashboard-kpis > * { min-width: 0; }
.dashboard-attention.success { border-left: 3px solid var(--green); }
.dashboard-attention.warning { border-left: 3px solid var(--orange); }
.dashboard-attention.danger { border-left: 3px solid var(--red); }
.dashboard-attention.high { border-left: 3px solid var(--orange); }
.dashboard-attention.revisi { border-left: 3px solid var(--pink); }

@media (max-width: 900px) { .dashboard-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .dashboard-kpis { grid-template-columns: 1fr; } .login-card { padding: 28px 20px; } }
.login-dot.netco { background: var(--netco); }
.login-dot.omg { background: var(--omg); }
.login-dot.itsol { background: var(--itsol); }
.timeline-section { margin-top: 12px; }
.dashboard-activity-panel, .dashboard-attention-panel { min-width: 0; }

/* Final compact workspace pass: readable density, no decorative excess. */
.main-content { padding: calc(var(--topbar-h) + 22px) var(--layout-gutter) 30px; }
.page-header { margin-bottom: 12px; gap: 10px; }
.page-title { font-size: var(--type-title); }
.page-subtitle { margin-top: 3px; font-size: .78rem; }
.page-actions { display: flex; align-items: center; gap: 7px; }
.page-actions svg, .btn > svg { width: 15px; height: 15px; }
.workspace-page-header { align-items: flex-end; margin-bottom: 12px; }
.workspace-toolbar { gap: 10px 14px; margin-bottom: 12px; padding: 10px 12px; border-radius: var(--radius-lg); box-shadow: none; }
.workspace-filter-block { gap: 4px; }
.workspace-toolbar .filter-pills { gap: 4px; }
.workspace-toolbar .filter-pill { padding: 5px 9px; font-size: .7rem; }
.workspace-search { width: min(280px, 100%); max-width: 280px; }
.workspace-search .search-input { height: 31px; padding: 6px 10px; }
.workspace-table-card { border-radius: var(--radius-lg); box-shadow: none; }
.workspace-table-meta { padding: 8px 12px; }
.workspace-table-container { max-height: min(70dvh, 720px); }
.workspace-table-container table th { height: 34px; padding: 7px 8px; font-size: .62rem; }
.workspace-table-container table td { height: 43px; padding: 8px; font-size: .76rem; }
.workspace-kanban-board { min-height: max(390px, calc(100dvh - 260px)); gap: 9px; }
.workspace-kanban-column { min-width: 214px; padding: 9px; border-radius: var(--radius-lg); box-shadow: none; }
.workspace-kanban-header { margin-bottom: 8px; padding: 2px 2px 8px; }
.workspace-kanban-cards { gap: 6px; min-height: 72px; }
.workspace-kanban-card { padding: 9px; border-radius: var(--radius); }
.workspace-kanban-card-title { margin-bottom: 5px; font-size: .75rem; }
.kanban-toolbar-hint { font-size: .66rem; }
.card { padding: 14px; }
.kpi-grid, .dashboard-kpi-grid { gap: 9px; margin-bottom: 12px; }
.kpi-card, .dashboard-kpi-card { padding: 13px 14px; min-height: 0; }
.kpi-value { font-size: 1.9rem; }
.dashboard-panel { padding: 14px; }
.dashboard-panel-header { margin-bottom: 9px; }
.dashboard-summary-grid { margin-bottom: 9px; gap: 9px; }
.dashboard-filters { gap: 8px 11px; padding: 9px 11px; margin-bottom: 10px; }
.dashboard-tabs { margin-bottom: 11px; }
.modal-box { padding: 20px; }
.modal-header { margin-bottom: 13px; }
.modal-footer { margin-top: 14px; padding-top: 11px; }
.empty-state { padding: 34px 18px; }

@media (max-width: 767px) {
  .main-content { padding: calc(var(--topbar-h) + 14px) 12px 22px; }
  .workspace-page-header { align-items: flex-start; }
  .workspace-toolbar { align-items: stretch; flex-direction: column; gap: 9px; }
  .workspace-search { width: 100%; max-width: none; margin: 0; }
  .workspace-kanban-board { min-height: 0; }
  .workspace-kanban-column { min-width: 100%; }
  .page-actions { width: 100%; }
  .page-actions .btn { flex: 1; }
}

