:root{--color-bg:#f7f8fa;--color-surface:#fff;--color-surface-alt:#f1f3f6;--color-border:#dfe3e8;--color-text:#1a1d21;--color-text-muted:#5f6b7a;--color-primary:#1a56db;--color-primary-hover:#1543ad;--color-primary-soft:#e8effc;--color-success:#067647;--color-success-soft:#e6f4ec;--color-warning:#b45309;--color-warning-soft:#fdf3e7;--color-danger:#b42318;--color-danger-soft:#fdeceb;--color-info:#175cd3;--color-control-border:#858e99;--color-border:#c9d0d8;--color-border-subtle:#e4e8ec;--radius-sm:4px;--radius-md:6px;--radius-lg:10px;--shadow-sm:0 1px 2px rgb(16 24 40/8%),0 1px 3px rgb(16 24 40/5%);--shadow-md:0 8px 24px -4px rgba(16,24,40,.12),0 3px 8px -2px rgb(16 24 40/7%);--space-1:2px;--space-2:6px;--space-3:8px;--space-4:12px;--space-5:16px;--space-6:24px;--space-7:32px;--text-xs:11px;--text-sm:12px;--text-base:13px;--text-md:14px;--text-lg:16px;--text-xl:17px;--control-h-sm:28px;--control-h:34px;--control-h-lg:40px;--row-h:34px;--motion-fast:120ms;--motion-base:160ms;--font-sans:system-ui,-apple-system,"Segoe UI",roboto,sans-serif;--font-mono:ui-monospace,"Cascadia Code","Source Code Pro",menlo,monospace}@media (prefers-color-scheme:dark){:root{--color-bg:#14161a;--color-surface:#1c1f24;--color-surface-alt:#24282e;--color-control-border:#626a76;--color-border:#454c56;--color-border-subtle:#2a2f36;--color-text:#e8eaed;--color-text-muted:#9aa4b2;--color-primary:#6b9cff;--color-primary-hover:#8ab0ff;--color-primary-soft:#1e2a45;--color-primary-solid:#2f6ae0;--color-success:#4ade80;--color-success-soft:#16281f;--color-warning:#fbbf24;--color-warning-soft:#2b2313;--color-danger:#f87171;--color-danger-soft:#2d1a1a;--color-info:#6b9cff}.btn-primary{background:var(--color-primary-solid);border-color:var(--color-primary-solid)}}*,:after,:before{box-sizing:border-box}*{margin:0}body,html{height:100%}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);line-height:1.35;-webkit-font-smoothing:antialiased}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer}button,input,select,textarea{font:inherit}.app-shell{display:grid;grid-template-columns:196px 1fr;min-height:100vh}.sidebar{background:var(--color-surface);border-right:1px solid var(--color-border);padding:var(--space-5) var(--space-4);display:flex;flex-direction:column;gap:var(--space-5)}.sidebar-brand{font-size:var(--text-lg);font-weight:700;letter-spacing:-.02em;color:var(--color-text)}.sidebar-brand span{color:var(--color-primary)}.sidebar-nav{display:flex;flex-direction:column;gap:2px}.sidebar-link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);color:var(--color-text-muted);font-weight:500;transition:background .12s,color .12s}.sidebar-link:hover{background:var(--color-surface-alt);color:var(--color-text);text-decoration:none}.sidebar-link[aria-current=page]{background:var(--color-primary-soft);color:var(--color-primary)}.sidebar-footer{margin-top:auto;padding-top:var(--space-4);border-top:1px solid var(--color-border);font-size:var(--text-base)}.main-area{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-4) var(--space-5);background:var(--color-surface);border-bottom:1px solid var(--color-border)}.page{padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-5);min-width:0}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap}.page-title{font-size:var(--text-xl);font-weight:650;letter-spacing:-.02em}.page-subtitle{color:var(--color-text-muted);font-size:var(--text-base);margin-top:2px}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-body{padding:var(--space-5)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:var(--space-4);gap:var(--space-4)}.stat-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-3) var(--space-4);box-shadow:var(--shadow-sm)}.stat-label{font-size:var(--text-sm);font-weight:600;text-transform:uppercase;letter-spacing:.04em;line-height:1.2;color:var(--color-text-muted)}.stat-value{font-size:var(--text-lg);font-weight:680;letter-spacing:-.03em;margin-top:var(--space-1);line-height:1.2;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat-hint{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.3}.table-wrap{overflow-x:auto;border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-surface)}table{width:100%;border-collapse:collapse;font-size:var(--text-base)}thead th{text-align:left;background:var(--color-surface-alt);border-bottom:1px solid var(--color-border);font-weight:600;font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.03em;color:var(--color-text-muted);white-space:nowrap}tbody td,thead th{padding:var(--space-2) var(--space-3)}tbody td{height:var(--row-h);border-bottom:1px solid var(--color-border-subtle);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:var(--color-surface-alt)}.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:3px var(--space-2);border-radius:999px;font-size:var(--text-xs);font-weight:600;letter-spacing:.02em;white-space:nowrap}.badge-neutral{background:var(--color-surface-alt);color:var(--color-text-muted)}.badge-primary{background:var(--color-primary-soft);color:var(--color-primary)}.badge-success{background:var(--color-success-soft);color:var(--color-success)}.badge-warning{background:var(--color-warning-soft);color:var(--color-warning)}.badge-danger{background:var(--color-danger-soft);color:var(--color-danger)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:var(--control-h);padding-block:0;padding-inline:var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;font-size:var(--text-base);font-weight:600;transition:background var(--motion-fast),border-color var(--motion-fast)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:#fff}.btn-primary:not(:disabled):hover{background:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);border-color:var(--color-control-border);color:var(--color-text)}.btn-secondary:not(:disabled):hover{background:var(--color-surface-alt)}.btn-danger{background:var(--color-danger);color:#fff}.btn-sm{min-height:var(--control-h-sm);padding-inline:var(--space-3);font-size:var(--text-sm)}.field{display:flex;flex-direction:column;gap:var(--space-2)}.label{font-size:var(--text-base);font-weight:600}.input,.select,.textarea{width:100%;min-height:var(--control-h);padding-block:0;padding-inline:var(--space-3);border:1px solid var(--color-control-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);font-size:var(--text-base)}.input:focus,.select:focus,.textarea:focus{outline:2px solid var(--color-primary);outline-offset:-1px;border-color:var(--color-primary)}.input[aria-invalid=true]{border-color:var(--color-danger)}.field-error{color:var(--color-danger);font-size:var(--text-sm)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:var(--space-4);gap:var(--space-4)}.toolbar{display:flex;gap:var(--space-3);flex-wrap:wrap;align-items:center}.alert{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid;font-size:var(--text-base)}.alert-error{background:var(--color-danger-soft);border-color:var(--color-danger);color:var(--color-danger)}.alert-info{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}.empty-state{padding:var(--space-7) var(--space-5)}.empty-state,.loading{text-align:center;color:var(--color-text-muted)}.loading{padding:var(--space-6)}.pagination{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-4);font-size:var(--text-base);color:var(--color-text-muted)}.login-screen{min-height:100vh;display:grid;place-items:center;padding:var(--space-5);background:var(--color-bg)}.login-card{width:100%;max-width:360px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-4)}.login-brand{font-size:20px;font-weight:700;letter-spacing:-.03em;text-align:center}.login-brand span{color:var(--color-primary)}.login-hint{font-size:var(--text-sm);color:var(--color-text-muted);background:var(--color-surface-alt);border-radius:var(--radius-md);padding:var(--space-3);line-height:1.6}.login-hint code{font-family:var(--font-mono);font-size:var(--text-xs)}.demo-accounts{display:flex;flex-direction:column;gap:2px}.demo-account{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);width:100%;padding:var(--space-1) var(--space-2);border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-text-muted);text-align:left;transition:background .12s,color .12s}.demo-account:not(:disabled):hover{background:var(--color-surface);color:var(--color-text)}.demo-account.is-active{background:var(--color-primary-soft);border-color:var(--color-primary);color:var(--color-primary)}.demo-account:disabled{opacity:.55;cursor:not-allowed}.demo-account-role{font-weight:600;white-space:nowrap}.demo-account-email{font-family:var(--font-mono);font-size:var(--text-xs);opacity:.85;overflow:hidden;text-overflow:ellipsis}.pipeline{display:grid;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));grid-gap:var(--space-3);gap:var(--space-3)}.pipeline-stage{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.pipeline-stage-name{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.pipeline-stage-count{font-size:17px;font-weight:680;margin-top:var(--space-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pipeline-stage-amount{font-size:var(--text-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.muted,.pipeline-stage-amount{color:var(--color-text-muted)}.mono{font-family:var(--font-mono);font-size:var(--text-sm)}.stack{flex-direction:column;gap:var(--space-4)}.row,.stack{display:flex}.row{align-items:center;gap:var(--space-3)}.spread{justify-content:space-between}.card{padding:var(--space-5)}.card>.card-body{padding:0}.card-header{margin-bottom:var(--space-4)}.card-title{margin:0;font-size:var(--text-md);font-weight:600;letter-spacing:-.01em}.card-subtitle{margin:2px 0 0;font-size:var(--text-sm);color:var(--color-text-muted)}.split-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-gap:var(--space-4);gap:var(--space-4);margin-top:var(--space-5)}.detail-grid{display:grid;grid-template-columns:minmax(140px,auto) 1fr;grid-gap:var(--space-2) var(--space-4);gap:var(--space-2) var(--space-4);margin:0;font-size:var(--text-base)}.detail-grid dd{margin:0}.sidebar-section+.sidebar-section{margin-top:var(--space-4)}.sidebar-section-title{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted);padding:0 var(--space-3);margin-bottom:var(--space-2);opacity:.65}.sidebar-link svg{flex-shrink:0}.sidebar-link[aria-current=page]{box-shadow:inset 2px 0 0 var(--color-primary);font-weight:600}.icon-button{position:relative;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent;color:var(--color-text-muted);cursor:pointer;transition:background .12s,color .12s,border-color .12s}.icon-button:hover{background:var(--color-surface-alt);border-color:var(--color-border);color:var(--color-text)}.notification-dot{position:absolute;top:-3px;right:-3px;min-width:15px;height:15px;padding:0 3px;border-radius:999px;background:var(--color-danger);color:#fff;font-size:9px;font-weight:700;line-height:15px;text-align:center}.notification-panel{position:absolute;top:calc(100% + var(--space-2));right:0;z-index:40;width:320px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);overflow:hidden}.notification-header{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:var(--color-text-muted)}.notification-empty{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-5) var(--space-4);color:var(--color-text-muted);font-size:var(--text-base)}.notification-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);color:var(--color-text);border-bottom:1px solid var(--color-border)}.notification-item:last-child{border-bottom:none}.notification-item:hover{background:var(--color-surface-alt);text-decoration:none}.notification-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;flex-shrink:0;border-radius:var(--radius-md)}.notification-icon-danger{background:var(--color-danger-soft);color:var(--color-danger)}.notification-icon-warning{background:var(--color-warning-soft);color:var(--color-warning)}.notification-icon-info{background:var(--color-primary-soft);color:var(--color-primary)}.notification-title{display:block;font-size:var(--text-base);font-weight:600}.notification-detail{display:block;font-size:var(--text-sm);color:var(--color-text-muted);margin-top:1px}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px;border-radius:inherit}:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.btn-link{background:none;border:none;padding:0;color:var(--color-primary);font:inherit;font-weight:600;cursor:pointer;text-align:left;text-decoration:underline;text-underline-offset:2px}.btn-link:hover{color:var(--color-primary-hover)}.btn-ghost{background:none;border:1px solid transparent;color:var(--color-text-muted)}.btn-ghost:hover{border-color:var(--color-control-border);color:var(--color-text);background:var(--color-surface-alt)}.section-title{margin:0;font-size:var(--text-md);font-weight:650;letter-spacing:-.01em}.hint{display:block;margin-top:2px;font-size:var(--text-xs);color:var(--color-text-muted)}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.skeleton{background:linear-gradient(90deg,var(--color-surface-alt) 25%,var(--color-border-subtle) 37%,var(--color-surface-alt) 63%);background-size:400% 100%;border-radius:var(--radius-sm);animation:skeleton-shimmer 1.4s ease-in-out infinite}@keyframes skeleton-shimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.skeleton-row{height:var(--row-h);margin-bottom:var(--space-1)}.table-wrap>table{width:100%;max-width:100%}.table-wrap td.num,.table-wrap th.num{width:1%;white-space:nowrap}.table-wrap{scrollbar-width:thin}.menu-toggle{display:none;align-items:center;justify-content:center;width:var(--control-h);height:var(--control-h);border:1px solid var(--color-control-border);border-radius:var(--radius-md);background:var(--color-surface);color:var(--color-text);cursor:pointer}@media (max-width:1399px){.col-secondary{display:none}}@media (max-width:1023px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;inset:0 auto 0 0;z-index:60;width:240px;transform:translateX(-100%);transition:transform var(--motion-base) ease;box-shadow:var(--shadow-md)}.sidebar[data-open=true]{transform:translateX(0)}.sidebar-backdrop{position:fixed;inset:0;z-index:50;background:rgba(16,24,40,.45);border:none}.menu-toggle{display:inline-flex}.page{padding:var(--space-4)}}@media (max-width:819px){.table-wrap>table,.table-wrap>table>tbody,.table-wrap>table>tbody>tr,.table-wrap>table>tbody>tr>td{display:block;width:auto}.table-wrap>table>thead{position:absolute;width:1px;height:1px;overflow:hidden;-webkit-clip-path:inset(50%);clip-path:inset(50%)}.table-wrap>table>tbody>tr{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-3);margin-bottom:var(--space-3);box-shadow:var(--shadow-sm)}.table-wrap>table>tbody>tr>td{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4);height:auto;min-height:0;padding:var(--space-2) 0;border-bottom:1px solid var(--color-border-subtle);text-align:left}.table-wrap>table>tbody>tr>td:last-child{border-bottom:none;padding-bottom:0}.table-wrap>table>tbody>tr>td[data-label]:before{content:attr(data-label);flex:0 0 auto;font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.table-wrap>table>tbody>tr>td.num{justify-content:space-between;width:auto}.table-wrap>table>tbody>tr>td:not([data-label]){justify-content:flex-start}.col-secondary{display:flex}.page-header,.toolbar{flex-direction:column;align-items:stretch}.toolbar>*{max-width:none!important}.detail-grid,.form-grid,.split-grid,.stat-grid{grid-template-columns:1fr}.detail-grid{gap:var(--space-1) 0}.detail-grid dt{margin-top:var(--space-3)}.modal-dialog{max-width:100%!important;margin-top:0!important;border-radius:0!important}}.toast-stack{position:fixed;right:var(--space-4);bottom:var(--space-4);z-index:100;display:flex;flex-direction:column;gap:var(--space-2);pointer-events:none}.toast{pointer-events:auto;display:flex;align-items:center;gap:var(--space-3);min-width:260px;max-width:min(380px,calc(100vw - var(--space-4) * 2));padding:var(--space-3) var(--space-4);border:1px solid;border-radius:var(--radius-md);box-shadow:var(--shadow-md);background:var(--color-surface);font-size:var(--text-sm);line-height:1.4;animation:toast-in .14s ease-out}.toast-success{border-color:var(--color-success);background:var(--color-success-soft);color:var(--color-success)}.toast-error{border-color:var(--color-danger);background:var(--color-danger-soft);color:var(--color-danger)}.toast-close{margin-left:auto;padding:0 var(--space-1);border:none;background:none;color:inherit;font-size:var(--text-lg);line-height:1;cursor:pointer;opacity:.7}.toast-close:hover{opacity:1}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.toast{animation:none}}@media (max-width:479px){.toast-stack{left:var(--space-4)}.toast{min-width:0;max-width:none}}