
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600&family=IBM+Plex+Mono:wght@400&display=swap');

*{box-sizing:border-box;margin:0;padding:0;}
:root{
  --navy:#0F2D4A;--navy-dark:#091E33;--navy-light:#1A3F5C;
  --teal:#1D9E75;--teal-light:#E1F5EE;--teal-mid:#9FE1CB;
  --orange:#E8703A;--orange-light:#FAECE7;
  --bg:#F2F4F7;--surface:#FFFFFF;--border:#E2E6EC;--border-light:#EEF1F5;
  --text:#0F2D4A;--muted:#6B7A8D;--muted-light:#9DAAB8;
  --font:'IBM Plex Sans',sans-serif;--mono:'IBM Plex Mono',monospace;
  --radius:8px;--radius-lg:12px;
  --shadow:0 1px 3px rgba(15,45,74,0.08),0 1px 2px rgba(15,45,74,0.04);
  --shadow-md:0 4px 12px rgba(15,45,74,0.10);
}
html,body{height:100%;font-family:var(--font);background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;}

/* ── Layout ── */
.shell{display:flex;min-height:100vh;}
.sidebar{width:220px;background:var(--navy);display:flex;flex-direction:column;position:fixed;top:0;left:0;height:100vh;z-index:100;}
.main{margin-left:220px;flex:1;display:flex;flex-direction:column;min-height:100vh;}
.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:0 28px;height:56px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:50;}
.page{padding:28px;flex:1;}

/* ── Sidebar ── */
.logo{padding:20px 16px 16px;border-bottom:1px solid rgba(255,255,255,0.07);}
.logo-wrap{display:flex;align-items:center;gap:10px;}
.logo-text{color:#fff;font-size:15px;font-weight:600;letter-spacing:0.01em;}
.logo-sub{color:rgba(255,255,255,0.35);font-size:10px;letter-spacing:0.1em;text-transform:uppercase;margin-top:1px;}
.nav{padding:14px 10px;flex:1;overflow-y:auto;}
.nav-group{margin-bottom:20px;}
.nav-group-label{color:rgba(255,255,255,0.28);font-size:9px;font-weight:600;letter-spacing:0.12em;text-transform:uppercase;padding:0 8px;margin-bottom:4px;}
.nav-item{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:6px;color:rgba(255,255,255,0.5);cursor:pointer;font-size:12.5px;text-decoration:none;transition:all 0.15s;position:relative;}
.nav-item:hover{background:rgba(255,255,255,0.06);color:rgba(255,255,255,0.85);}
.nav-item.active{background:rgba(29,158,117,0.2);color:#4ECFA0;}
.nav-item .icon{font-size:14px;width:18px;text-align:center;flex-shrink:0;}
.nav-badge{margin-left:auto;background:var(--orange);color:#fff;font-size:9px;padding:1px 6px;border-radius:10px;font-weight:600;}
.sidebar-footer{padding:14px 16px;border-top:1px solid rgba(255,255,255,0.07);}
.user-chip{display:flex;align-items:center;gap:9px;}
.user-chip .av{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:#fff;flex-shrink:0;}
.user-chip .name{color:rgba(255,255,255,0.75);font-size:12px;font-weight:500;}
.user-chip .role{color:rgba(255,255,255,0.3);font-size:10px;}
.logout-link{margin-left:auto;color:rgba(255,255,255,0.25);font-size:11px;text-decoration:none;padding:3px 6px;border-radius:4px;}
.logout-link:hover{color:rgba(255,255,255,0.6);background:rgba(255,255,255,0.07);}

/* ── Topbar ── */
.page-title{font-size:16px;font-weight:600;color:var(--text);}
.page-sub{font-size:12px;color:var(--muted);margin-top:1px;}
.topbar-right{display:flex;align-items:center;gap:10px;}
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--radius);font-size:13px;font-weight:500;border:none;cursor:pointer;font-family:var(--font);transition:all 0.15s;text-decoration:none;}
.btn-primary{background:var(--teal);color:#fff;}
.btn-primary:hover{background:#198a65;}
.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border);}
.btn-ghost:hover{background:var(--bg);color:var(--text);}
.btn-sm{padding:5px 10px;font-size:12px;}
.btn-danger{background:#fee2e2;color:#b91c1c;border:none;}
.btn-danger:hover{background:#fecaca;}

/* ── Cards ── */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 22px;}
.card-sm{padding:14px 16px;}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px;}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 18px;}
.stat-label{font-size:11px;color:var(--muted);font-weight:500;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:6px;}
.stat-val{font-size:26px;font-weight:600;color:var(--text);line-height:1;}
.stat-sub{font-size:11.5px;color:var(--teal);margin-top:5px;}
.stat-warn{color:var(--orange);}

/* ── Section ── */
.section{margin-bottom:26px;}
.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.section-title{font-size:13px;font-weight:600;color:var(--text);}
.section-link{font-size:12px;color:var(--teal);text-decoration:none;cursor:pointer;}
.section-link:hover{text-decoration:underline;}

/* ── Executive Summary ── */
.exec-summary{background:var(--navy);border-radius:var(--radius-lg);padding:22px 26px;margin-bottom:24px;color:#fff;}
.exec-label{font-size:9px;font-weight:600;letter-spacing:0.15em;text-transform:uppercase;color:rgba(255,255,255,0.4);margin-bottom:6px;}
.exec-situation{font-size:14px;font-weight:500;line-height:1.6;color:rgba(255,255,255,0.9);margin-bottom:14px;}
.exec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.exec-block{background:rgba(255,255,255,0.06);border-radius:8px;padding:12px 14px;border-left:3px solid;}
.exec-block.situation{border-color:#4ECFA0;}
.exec-block.complication{border-color:var(--orange);}
.exec-block.recommendation{border-color:#7DD3FC;}
.exec-block-label{font-size:9px;font-weight:600;letter-spacing:0.1em;text-transform:uppercase;margin-bottom:5px;}
.exec-block.situation .exec-block-label{color:#4ECFA0;}
.exec-block.complication .exec-block-label{color:var(--orange);}
.exec-block.recommendation .exec-block-label{color:#7DD3FC;}
.exec-block-text{font-size:12px;line-height:1.55;color:rgba(255,255,255,0.75);}

/* ── Workstreams ── */
.ws-list{display:flex;flex-direction:column;gap:10px;}
.ws-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:14px 18px;display:flex;align-items:center;gap:14px;cursor:pointer;text-decoration:none;color:inherit;transition:all 0.15s;}
.ws-card:hover{border-color:var(--teal);box-shadow:var(--shadow-md);}
.ws-icon-wrap{width:38px;height:38px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0;}
.ws-info{flex:1;min-width:0;}
.ws-name{font-size:13.5px;font-weight:600;color:var(--text);margin-bottom:2px;}
.ws-desc{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ws-meta{display:flex;align-items:center;gap:12px;flex-shrink:0;}
.ws-tasks{font-size:12px;color:var(--muted);}
.progress-wrap{width:100px;}
.progress-bar{height:4px;background:var(--border);border-radius:2px;overflow:hidden;}
.progress-fill{height:100%;border-radius:2px;transition:width 0.3s;}
.progress-label{font-size:10px;color:var(--muted);text-align:right;margin-top:3px;}

/* ── Kanban ── */
.kanban{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
.kanban-col{background:var(--bg);border-radius:var(--radius-lg);padding:12px;}
.col-header{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding:0 2px;}
.col-dot{width:8px;height:8px;border-radius:50%;}
.col-title{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:0.06em;}
.col-count{margin-left:auto;background:rgba(0,0,0,0.06);color:var(--muted);border-radius:10px;padding:1px 7px;font-size:11px;}
.task-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:11px 13px;margin-bottom:9px;cursor:pointer;transition:all 0.15s;}
.task-card:hover{border-color:var(--teal);box-shadow:var(--shadow);}
.task-card.done{opacity:0.55;}
.task-title{font-size:12.5px;font-weight:500;color:var(--text);margin-bottom:8px;line-height:1.4;}
.task-footer{display:flex;align-items:center;justify-content:space-between;gap:6px;}
.tag{font-size:10px;padding:2px 7px;border-radius:4px;font-weight:500;white-space:nowrap;}
.tag-teal{background:var(--teal-light);color:#0F6E56;}
.tag-orange{background:var(--orange-light);color:#993C1D;}
.tag-blue{background:#E6F1FB;color:#0C447C;}
.tag-purple{background:#EDE9FE;color:#5B21B6;}
.tag-gray{background:#F1F3F5;color:var(--muted);}
.tag-red{background:#FEE2E2;color:#B91C1C;}
.av-sm{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:600;color:#fff;flex-shrink:0;}
.av-wrap{display:flex;gap:-4px;}
.priority-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.priority-high{background:#E24B4A;}
.priority-medium{background:var(--orange);}
.priority-low{background:var(--teal);}
.due-date{font-size:10.5px;color:var(--muted);}
.due-date.overdue{color:#E24B4A;}
.due-date.soon{color:var(--orange);}

/* ── Task Detail Modal ── */
.modal-overlay{position:fixed;inset:0;background:rgba(15,45,74,0.5);z-index:200;display:flex;align-items:flex-start;justify-content:flex-end;}
.modal-overlay.hidden{display:none;}
.modal{background:var(--surface);width:520px;height:100vh;overflow-y:auto;padding:28px;box-shadow:-4px 0 24px rgba(15,45,74,0.15);}
.modal-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px;gap:12px;}
.modal-title{font-size:16px;font-weight:600;line-height:1.4;}
.modal-close{background:none;border:none;cursor:pointer;color:var(--muted);font-size:20px;padding:0;line-height:1;flex-shrink:0;}
.modal-close:hover{color:var(--text);}
.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px;}
.detail-field label{font-size:11px;color:var(--muted);font-weight:500;text-transform:uppercase;letter-spacing:0.06em;display:block;margin-bottom:4px;}
.detail-field select,.detail-field input{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius);font-size:13px;font-family:var(--font);color:var(--text);background:var(--surface);}
.detail-field select:focus,.detail-field input:focus{outline:none;border-color:var(--teal);}
.divider{border:none;border-top:1px solid var(--border-light);margin:18px 0;}
.comment-list{display:flex;flex-direction:column;gap:12px;margin-bottom:16px;}
.comment{display:flex;gap:10px;}
.comment-body{flex:1;background:var(--bg);border-radius:var(--radius);padding:10px 12px;}
.comment-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px;}
.comment-author{font-size:12px;font-weight:600;color:var(--text);}
.comment-time{font-size:11px;color:var(--muted);}
.comment-text{font-size:13px;color:var(--text);line-height:1.5;}
.comment-input{display:flex;gap:10px;margin-top:8px;}
.comment-input textarea{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:13px;font-family:var(--font);resize:none;min-height:70px;color:var(--text);}
.comment-input textarea:focus{outline:none;border-color:var(--teal);}
.desc-textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:13px;font-family:var(--font);resize:vertical;min-height:80px;color:var(--text);}
.desc-textarea:focus{outline:none;border-color:var(--teal);}

/* ── Activity Feed ── */
.activity-list{display:flex;flex-direction:column;gap:8px;}
.activity-item{display:flex;align-items:flex-start;gap:10px;font-size:12.5px;padding:6px 0;border-bottom:1px solid var(--border-light);}
.activity-item:last-child{border-bottom:none;}
.activity-text{flex:1;color:var(--text);line-height:1.45;}
.activity-text strong{font-weight:600;}
.activity-time{font-size:11px;color:var(--muted-light);flex-shrink:0;margin-top:1px;}

/* ── Files ── */
.file-list{display:flex;flex-direction:column;gap:8px;}
.file-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:11px 14px;display:flex;align-items:center;gap:12px;}
.file-icon{font-size:20px;flex-shrink:0;}
.file-info{flex:1;}
.file-name{font-size:13px;font-weight:500;color:var(--text);}
.file-meta{font-size:11px;color:var(--muted);}
.file-actions a{font-size:12px;color:var(--teal);text-decoration:none;}
.file-actions a:hover{text-decoration:underline;}
.upload-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);padding:32px;text-align:center;cursor:pointer;transition:all 0.15s;}
.upload-zone:hover{border-color:var(--teal);background:var(--teal-light);}
.upload-zone p{color:var(--muted);font-size:13px;}

/* ── Forms ── */
.form-group{margin-bottom:16px;}
.form-group label{display:block;font-size:12px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:0.06em;margin-bottom:5px;}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius);font-size:13px;font-family:var(--font);color:var(--text);background:var(--surface);}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(29,158,117,0.08);}

/* ── Login ── */
.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--navy);}
.login-card{background:var(--surface);border-radius:16px;padding:40px 44px;width:400px;box-shadow:var(--shadow-md);}
.login-logo{text-align:center;margin-bottom:28px;}
.login-logo svg{margin-bottom:10px;}
.login-logo h1{font-size:20px;font-weight:600;color:var(--text);}
.login-logo p{font-size:13px;color:var(--muted);margin-top:3px;}
.login-error{background:#FEE2E2;color:#B91C1C;padding:10px 14px;border-radius:var(--radius);font-size:13px;margin-bottom:16px;}

/* ── Flash ── */
.flash{padding:10px 16px;border-radius:var(--radius);font-size:13px;margin-bottom:18px;}
.flash-success{background:var(--teal-light);color:#0F6E56;}
.flash-error{background:#FEE2E2;color:#B91C1C;}

/* ── Timeline ── */
.timeline-header{display:flex;gap:0;margin-bottom:4px;padding-left:200px;}
.timeline-week{flex:1;text-align:center;font-size:10px;color:var(--muted);border-left:1px solid var(--border-light);padding:3px;}
.timeline-row{display:flex;align-items:center;gap:0;margin-bottom:6px;min-height:34px;}
.timeline-label{width:200px;flex-shrink:0;font-size:12px;color:var(--text);padding-right:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.timeline-grid{flex:1;display:flex;position:relative;background:repeating-linear-gradient(90deg,transparent,transparent calc(100%/8 - 1px),var(--border-light) calc(100%/8 - 1px),var(--border-light) calc(100%/8));}
.timeline-bar{height:22px;border-radius:11px;position:absolute;top:6px;display:flex;align-items:center;padding:0 8px;font-size:10px;color:#fff;font-weight:500;white-space:nowrap;overflow:hidden;}

/* ── Users ── */
.user-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;}
.user-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px;display:flex;align-items:center;gap:14px;}
.av-lg{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;color:#fff;flex-shrink:0;}
.user-name{font-size:14px;font-weight:600;color:var(--text);}
.user-email{font-size:12px;color:var(--muted);}
.user-role{font-size:10px;padding:2px 7px;border-radius:10px;margin-top:4px;display:inline-block;}

/* ── Utilities ── */
.flex{display:flex;}.items-center{align-items:center;}.justify-between{justify-content:space-between;}
.gap-2{gap:8px;}.gap-3{gap:12px;}.mt-2{margin-top:8px;}.mb-3{margin-bottom:12px;}.mb-4{margin-bottom:16px;}
.text-muted{color:var(--muted);}.text-sm{font-size:12px;}.font-medium{font-weight:500;}
.w-full{width:100%;}.hidden{display:none!important;}
.two-col{display:grid;grid-template-columns:1fr 320px;gap:20px;}
.empty-state{text-align:center;padding:48px 20px;color:var(--muted);}
.empty-state .icon{font-size:36px;margin-bottom:10px;}
.empty-state p{font-size:13px;}
