/* ═══════════════════════════════════════════════════════════════
   TradeForge — Project Engine Workspace Styles
   Central project workspace CSS for the Construction OS
   ═══════════════════════════════════════════════════════════════ */

/* ── Workspace Layout ── */
.pe-workspace{max-width:1200px;margin:0 auto;padding:0 16px}
.pe-header{padding:22px 0 18px;border-bottom:1px solid rgba(140,106,62,.18)}
.pe-flow-shell{padding-top:12px;padding-bottom:0}
.pe-header-row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap}
.pe-header h1{font-size:28px;margin:0 0 4px;color:#fff;letter-spacing:-.02em}
.pe-header-meta{font-size:13px;color:var(--muted);display:flex;gap:16px;flex-wrap:wrap;align-items:center;line-height:1.5}
.pe-header-meta span{display:inline-flex;align-items:center;gap:5px}
.pe-header-meta svg{width:14px;height:14px;color:var(--bronze)}
.pe-header-actions{display:flex;gap:8px;flex-wrap:wrap}
.pe-source-strip{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;margin-top:10px}
.pe-source-indicator{display:inline-flex;align-items:center;padding:6px 10px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;background:rgba(140,106,62,.16);border:1px solid rgba(140,106,62,.35);color:var(--bronze)}
.pe-source-indicator--matidor{background:rgba(37,99,235,.14);border-color:rgba(96,165,250,.36);color:#93c5fd}
.pe-source-meta{display:flex;flex-wrap:wrap;gap:8px}
.pe-source-meta span{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:8px;border:1px solid rgba(181,183,185,.14);background:rgba(46,49,54,.45);font-size:12px;color:var(--ash)}
.pe-source-meta svg{width:13px;height:13px;color:var(--bronze)}
.pe-opportunity-bridge{margin-top:10px;padding:10px 12px;border:1px solid rgba(99,179,237,.26);background:rgba(99,179,237,.08);border-radius:10px;max-width:700px}
.pe-opportunity-bridge-label{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#93c5fd}
.pe-opportunity-bridge-value{font-size:13px;font-weight:650;color:#fff;margin-top:2px}
.pe-opportunity-bridge-id{font-size:11px;font-weight:500;color:#bfdbfe}
.pe-opportunity-bridge-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:6px}
.pe-opportunity-bridge-links a{font-size:12px;color:#93c5fd;text-decoration:none}
.pe-opportunity-bridge-links a:hover{text-decoration:underline;color:#dbeafe}

/* ── Stage Badge ── */
.pe-stage{display:inline-flex;align-items:center;gap:6px;padding:5px 12px;border-radius:8px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.pe-stage.lead{background:rgba(99,179,237,.12);color:#63b3ed}
.pe-stage.planning{background:rgba(159,122,234,.12);color:#9f7aea}
.pe-stage.active{background:rgba(140,106,62,.15);color:var(--bronze)}
.pe-stage.completed{background:rgba(106,191,105,.12);color:#6abf69}
.pe-stage.inspection{background:rgba(99,179,237,.12);color:#63b3ed}
.pe-stage.archived{background:rgba(181,183,185,.12);color:var(--muted)}
.pe-health-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.pe-health-pill::before{content:"";width:6px;height:6px;border-radius:50%}
.pe-health-pill--healthy{background:rgba(106,191,105,.14);color:#6abf69;border:1px solid rgba(106,191,105,.35)}
.pe-health-pill--healthy::before{background:#6abf69}
.pe-health-pill--needs-attention{background:rgba(228,200,155,.16);color:#e4c89b;border:1px solid rgba(228,200,155,.35)}
.pe-health-pill--needs-attention::before{background:#e4c89b}
.pe-health-pill--at-risk{background:rgba(213,102,102,.14);color:#d56666;border:1px solid rgba(213,102,102,.35)}
.pe-health-pill--at-risk::before{background:#d56666}

/* ── Project Status Pipeline ── */
.ps-pipeline{background:linear-gradient(135deg,rgba(46,49,54,.55) 0%,rgba(30,32,35,.65) 100%);border:1px solid rgba(140,106,62,.18);border-radius:var(--r);padding:20px;margin:0 0 16px}
.ps-pipeline-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 16px;gap:12px;flex-wrap:wrap}
.ps-pipeline-head h4{font-size:13px;font-weight:700;color:#fff;margin:0;display:flex;align-items:center;gap:7px;text-transform:uppercase;letter-spacing:.03em}
.ps-pipeline-head h4 svg{width:16px;height:16px;color:var(--bronze);flex-shrink:0}
.ps-current-stage{font-size:12px;color:var(--ash);display:inline-flex;align-items:center;gap:6px}
.ps-current-stage strong{color:#fff;font-weight:700}
.ps-pipeline-track{display:flex;align-items:center;gap:0;position:relative}
.ps-step{flex:1;display:flex;flex-direction:column;align-items:center;position:relative;z-index:1;cursor:default}
.ps-step-link{display:flex;flex-direction:column;align-items:center;gap:6px;text-decoration:none;width:100%}
.ps-step-num{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;background:rgba(181,183,185,.16);border:1px solid rgba(181,183,185,.28);color:var(--ash);font-size:10px;font-weight:700;transition:all .2s}
.ps-step-dot{width:36px;height:36px;border-radius:50%;border:2px solid rgba(181,183,185,.2);background:rgba(46,49,54,.6);display:flex;align-items:center;justify-content:center;transition:all .3s;position:relative;z-index:2}
.ps-step-dot svg{width:16px;height:16px;color:var(--muted);transition:color .3s}
.ps-step-label{font-size:11px;font-weight:650;color:var(--muted);margin:4px 0 0;letter-spacing:.01em;transition:color .3s;text-align:center;line-height:1.25;max-width:140px}
.ps-step-line{position:absolute;top:18px;left:calc(50% + 18px);right:calc(-50% + 18px);height:2px;background:rgba(181,183,185,.15);z-index:1}
.ps-step:last-child .ps-step-line{display:none}

/* Completed steps */
.ps-step.done .ps-step-dot{border-color:#6abf69;background:rgba(106,191,105,.15)}
.ps-step.done .ps-step-dot svg{color:#6abf69}
.ps-step.done .ps-step-label{color:#6abf69}
.ps-step.done .ps-step-num{border-color:#6abf69;background:rgba(106,191,105,.15);color:#6abf69}
.ps-step.done .ps-step-line{background:#6abf69}

/* Current step */
.ps-step.current .ps-step-dot{border-color:var(--bronze);background:rgba(140,106,62,.2);box-shadow:0 0 0 4px rgba(140,106,62,.15)}
.ps-step.current .ps-step-dot svg{color:var(--bronze)}
.ps-step.current .ps-step-label{color:#fff;font-weight:700}
.ps-step.current .ps-step-num{border-color:var(--bronze);background:rgba(140,106,62,.16);color:var(--bronze)}

/* Update button */
.ps-update-btn{display:inline-flex;align-items:center;gap:5px;padding:10px 16px;min-height:44px;border-radius:8px;font-size:12px;font-weight:650;color:var(--bronze);background:rgba(140,106,62,.1);border:1px solid rgba(140,106,62,.25);cursor:pointer;transition:all .2s;white-space:nowrap;touch-action:manipulation}
.ps-update-btn:hover{background:rgba(140,106,62,.2);border-color:rgba(140,106,62,.4);color:#fff}
.ps-update-btn svg{width:14px;height:14px}

/* Status update modal */
.ps-modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);z-index:1000;align-items:center;justify-content:center}
.ps-modal-overlay.open{display:flex}
.ps-modal{background:var(--graphite);border:1px solid rgba(140,106,62,.3);border-radius:16px;padding:28px;max-width:440px;width:90%;box-shadow:0 24px 48px rgba(0,0,0,.4)}
.ps-modal h3{font-size:18px;font-weight:700;color:#fff;margin:0 0 6px;display:flex;align-items:center;gap:8px}
.ps-modal h3 svg{width:20px;height:20px;color:var(--bronze)}
.ps-modal-desc{font-size:13px;color:var(--muted);margin:0 0 20px}
.ps-modal-options{display:grid;gap:8px;margin:0 0 20px}
.ps-modal-opt{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:10px;background:rgba(46,49,54,.5);border:2px solid rgba(181,183,185,.08);cursor:pointer;transition:all .2s}
.ps-modal-opt:hover{border-color:rgba(140,106,62,.3);background:rgba(140,106,62,.05)}
.ps-modal-opt.selected{border-color:var(--bronze);background:rgba(140,106,62,.1)}
.ps-modal-opt-dot{width:32px;height:32px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.ps-modal-opt-dot svg{width:16px;height:16px}
.ps-modal-opt-dot.planning{background:rgba(159,122,234,.12);color:#9f7aea}
.ps-modal-opt-dot.active{background:rgba(140,106,62,.15);color:var(--bronze)}
.ps-modal-opt-dot.inspection{background:rgba(99,179,237,.12);color:#63b3ed}
.ps-modal-opt-dot.completed{background:rgba(106,191,105,.12);color:#6abf69}
.ps-modal-opt-info{flex:1;min-width:0}
.ps-modal-opt-name{font-size:14px;font-weight:650;color:#fff}
.ps-modal-opt-desc{font-size:12px;color:var(--muted);margin:2px 0 0}
.ps-modal-opt .ps-current-tag{display:inline-flex;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:700;background:rgba(140,106,62,.15);color:var(--bronze);margin-left:8px;text-transform:uppercase;letter-spacing:.03em}
.ps-modal-actions{display:flex;gap:10px;justify-content:flex-end}
.ps-modal-actions .btn{padding:10px 20px;font-size:13px;border-radius:10px;font-weight:650;cursor:pointer;border:none}
.ps-modal-actions .btn.ghost{background:rgba(181,183,185,.08);color:var(--ash)}
.ps-modal-actions .btn.ghost:hover{background:rgba(181,183,185,.15)}
.ps-modal-actions .btn.primary{background:var(--bronze);color:#fff}
.ps-modal-actions .btn.primary:hover{background:#a07a48}
.ps-modal-actions .btn:disabled{opacity:.4;cursor:not-allowed}

/* Pipeline responsive */
@media(max-width:600px){
  .ps-pipeline{padding:16px}
  .ps-current-stage{width:100%}
  .ps-step-num{width:16px;height:16px;font-size:9px}
  .ps-step-dot{width:30px;height:30px}
  .ps-step-dot svg{width:14px;height:14px}
  .ps-step-label{font-size:9px;max-width:100px}
  .ps-step-line{top:15px;left:calc(50% + 15px);right:calc(-50% + 15px)}
  .ps-pipeline-head{flex-direction:column;align-items:flex-start}
}

/* ── Tab Navigation ── */
.pe-tabs{display:flex;gap:6px;padding:16px 0 0;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;scroll-padding-inline:12px;scroll-snap-type:x proximity;overscroll-behavior-x:contain}
.pe-tabs::-webkit-scrollbar{display:none}
.pe-tab{display:inline-flex;align-items:center;gap:6px;padding:12px 18px;min-height:46px;border-radius:10px 10px 0 0;font-size:13px;font-weight:650;color:var(--muted);background:rgba(46,49,54,.3);border:1px solid transparent;border-bottom:none;cursor:pointer;white-space:nowrap;transition:all .2s;text-decoration:none;scroll-snap-align:start;touch-action:manipulation}
.pe-tab svg{width:16px;height:16px}
.pe-tab:hover{color:#fff;background:rgba(46,49,54,.6)}
.pe-tab.active{color:#fff;background:rgba(140,106,62,.1);border-color:rgba(140,106,62,.3);border-bottom:2px solid var(--bronze)}

/* ── Tab Panel ── */
.pe-panel{display:none;padding:20px 0;animation:peFadeIn .2s}
.pe-panel.active{display:block}
@keyframes peFadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}

/* ── Summary Grid ── */
.pe-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin:0 0 20px}
.pe-stat{background:rgba(46,49,54,.4);border:1px solid rgba(140,106,62,.12);border-radius:10px;padding:16px;text-align:center}
.pe-stat-val{font-size:24px;font-weight:800;color:#fff;line-height:1}
.pe-stat-label{font-size:11px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:6px 0 0}

/* ── Cards ── */
.pe-card{background:linear-gradient(135deg,rgba(46,49,54,.55) 0%,rgba(30,32,35,.65) 100%);border:1px solid rgba(140,106,62,.18);border-radius:var(--r);padding:20px;position:relative;transition:border-color .2s;margin:0 0 16px}
.pe-card:hover{border-color:rgba(140,106,62,.35)}
.pe-card-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 14px;padding-bottom:10px;border-bottom:1px solid rgba(181,183,185,.08)}
.pe-card-head h3{font-size:15px;font-weight:700;color:#fff;margin:0;display:flex;align-items:center;gap:8px}
.pe-card-head h3 svg{width:18px;height:18px;color:var(--bronze);flex-shrink:0}
.pe-card-action{font-size:12px;font-weight:650;color:var(--bronze);text-decoration:none;display:inline-flex;align-items:center;gap:4px}
.pe-card-action:hover{color:#fff}

/* ── Grid layouts ── */
.pe-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.pe-grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}
@media(max-width:900px){.pe-grid-2,.pe-grid-3{grid-template-columns:1fr}}

/* ── Activity Feed ── */
.pe-feed{list-style:none;padding:0;margin:0}
.pe-feed-item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid rgba(181,183,185,.06)}
.pe-feed-item:last-child{border-bottom:none}
.pe-feed-icon{width:34px;height:34px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pe-feed-icon svg{width:16px;height:16px}
.pe-feed-icon.project-created{background:rgba(72,187,120,.12);color:#48bb78}
.pe-feed-icon.document-added{background:rgba(99,179,237,.12);color:#63b3ed}
.pe-feed-icon.photo-upload{background:rgba(237,137,54,.12);color:#ed8936}
.pe-feed-icon.field-report{background:rgba(245,101,101,.12);color:#f56565}
.pe-feed-icon.project-update{background:rgba(140,106,62,.12);color:var(--bronze)}
.pe-feed-icon.stage-change{background:rgba(159,122,234,.12);color:#9f7aea}
.pe-feed-icon.contractor-interest{background:rgba(99,179,237,.12);color:#63b3ed}
.pe-feed-icon.payment-event{background:rgba(72,187,120,.12);color:#48bb78}
.pe-feed-icon.material-order{background:rgba(237,137,54,.12);color:#ed8936}
.pe-feed-icon.issue-logged{background:rgba(245,101,101,.12);color:#f56565}
.pe-feed-icon.milestone{background:rgba(72,187,120,.12);color:#48bb78}
.pe-feed-body{flex:1;min-width:0}
.pe-feed-title{font-size:13px;font-weight:650;color:#fff;margin:0 0 2px}
.pe-feed-desc{font-size:12px;color:var(--ash);margin:0 0 2px}
.pe-feed-meta{font-size:11px;color:var(--muted)}

/* ── Document List ── */
.pe-doc-list{list-style:none;padding:0;margin:0}
.pe-doc-item{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid rgba(181,183,185,.08);border-radius:10px;margin:0 0 8px;transition:border-color .2s}
.pe-doc-item:hover{border-color:rgba(140,106,62,.3)}
.pe-doc-item--versioned{flex-wrap:wrap}
.pe-doc-icon{width:36px;height:36px;border-radius:8px;background:rgba(140,106,62,.1);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.pe-doc-icon svg{width:18px;height:18px;color:var(--bronze)}
.pe-doc-info{flex:1;min-width:0}
.pe-doc-name{font-size:13px;font-weight:650;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pe-doc-meta{font-size:11px;color:var(--muted)}
.pe-doc-version-badge{display:inline-flex;padding:2px 6px;border-radius:4px;font-size:10px;font-weight:700;letter-spacing:.03em;background:rgba(140,106,62,.15);color:var(--bronze);vertical-align:middle;margin-left:4px}
.pe-doc-uploader{font-style:italic}
.pe-doc-actions{display:flex;gap:6px;flex-shrink:0}
.pe-doc-history-btn,.pe-doc-update-btn{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border:1px solid rgba(181,183,185,.15);border-radius:6px;background:transparent;color:var(--ash);font-size:11px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap}
.pe-doc-history-btn:hover{border-color:rgba(140,106,62,.4);color:var(--bronze);background:rgba(140,106,62,.06)}
.pe-doc-update-btn:hover{border-color:rgba(99,179,237,.4);color:#63b3ed;background:rgba(99,179,237,.06)}
.pe-doc-history-btn svg,.pe-doc-update-btn svg{flex-shrink:0}

/* ── Document Upload Form ── */
.pe-doc-upload-form{padding:14px;background:rgba(46,49,54,.5);border-radius:10px;border:1px solid rgba(181,183,185,.08);margin-bottom:4px}
.pe-doc-upload-row{display:flex;gap:8px;margin-bottom:8px}
.pe-doc-upload-row:last-child{margin-bottom:0}
.pe-doc-upload-row .input{flex:1;font-size:12px;padding:8px 10px}
.pe-doc-upload-row input[type="file"]{font-size:12px;padding:6px 8px;background:rgba(28,30,33,.6);border:1px solid rgba(181,183,185,.12);border-radius:8px;color:var(--ash)}
.pe-doc-upload-row input[type="file"]::file-selector-button{background:rgba(140,106,62,.15);color:var(--bronze);border:none;border-radius:4px;padding:4px 10px;font-size:11px;font-weight:600;cursor:pointer;margin-right:8px}

/* ── Version History Modal ── */
.pe-version-modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.65);z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px;backdrop-filter:blur(4px)}
.pe-version-modal{background:var(--graphite,#2E3136);border-radius:14px;max-width:560px;width:100%;max-height:80vh;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.5);border:1px solid rgba(181,183,185,.1)}
.pe-version-modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid rgba(181,183,185,.08)}
.pe-version-modal-header h3{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;color:#fff;margin:0}
.pe-version-modal-close{background:none;border:none;color:var(--ash);font-size:22px;cursor:pointer;padding:0 4px;line-height:1}
.pe-version-modal-close:hover{color:#fff}
.pe-version-modal-body{padding:20px;overflow-y:auto;max-height:calc(80vh - 70px)}
.pe-version-current{font-size:13px;color:var(--ash);margin-bottom:16px;padding:8px 12px;background:rgba(140,106,62,.08);border-radius:8px;border:1px solid rgba(140,106,62,.15)}

/* ── Version Timeline ── */
.pe-version-timeline{position:relative;padding-left:24px}
.pe-version-timeline::before{content:'';position:absolute;left:8px;top:8px;bottom:8px;width:2px;background:rgba(181,183,185,.12);border-radius:1px}
.pe-version-entry{position:relative;margin-bottom:16px}
.pe-version-entry:last-child{margin-bottom:0}
.pe-version-marker{position:absolute;left:-20px;top:6px;width:12px;height:12px;border-radius:50%;background:rgba(181,183,185,.2);border:2px solid rgba(181,183,185,.15)}
.pe-version-entry--current .pe-version-marker{background:var(--bronze,#8C6A3E);border-color:rgba(140,106,62,.4);box-shadow:0 0 8px rgba(140,106,62,.3)}
.pe-version-content{padding:10px 14px;background:rgba(28,30,33,.4);border-radius:10px;border:1px solid rgba(181,183,185,.06)}
.pe-version-entry--current .pe-version-content{border-color:rgba(140,106,62,.2);background:rgba(140,106,62,.04)}
.pe-version-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.pe-version-number{font-size:13px;font-weight:700;color:#fff}
.pe-version-latest-tag{display:inline-flex;padding:2px 6px;border-radius:4px;font-size:10px;font-weight:700;background:rgba(72,187,120,.15);color:#48bb78;letter-spacing:.03em;text-transform:uppercase}
.pe-version-details{display:flex;flex-direction:column;gap:3px}
.pe-version-detail{font-size:12px;color:var(--ash)}
.pe-version-detail strong{color:var(--muted);font-weight:600;margin-right:4px}

/* ── Responsive — Document Upload ── */
@media(max-width:640px){
  .pe-doc-upload-row{flex-direction:column}
  .pe-doc-actions{width:100%;justify-content:flex-end;margin-top:4px}
  .pe-doc-item--versioned{gap:8px}
}

/* ── Collaborator List ── */
.pe-collab-list{list-style:none;padding:0;margin:0}
.pe-collab-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid rgba(181,183,185,.06)}
.pe-collab-item:last-child{border-bottom:none}
.pe-collab-avatar{width:36px;height:36px;border-radius:50%;background:rgba(140,106,62,.12);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;color:var(--bronze);flex-shrink:0}
.pe-collab-info{flex:1;min-width:0}
.pe-collab-name{font-size:13px;font-weight:650;color:#fff}
.pe-collab-role{font-size:11px;color:var(--muted)}
.pe-collab-badge{display:inline-flex;padding:3px 8px;border-radius:6px;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}
.pe-collab-badge.admin{background:rgba(140,106,62,.15);color:var(--bronze)}
.pe-collab-badge.contractor{background:rgba(99,179,237,.12);color:#63b3ed}
.pe-collab-badge.subcontractor{background:rgba(159,122,234,.12);color:#9f7aea}
.pe-collab-badge.supplier{background:rgba(237,137,54,.12);color:#ed8936}
.pe-collab-badge.client{background:rgba(72,187,120,.12);color:#48bb78}
.pe-collab-badge.viewer{background:rgba(181,183,185,.12);color:var(--muted)}

/* ── Task List ── */
.pe-task-list{list-style:none;padding:0;margin:0}
.pe-task{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid rgba(181,183,185,.06);cursor:pointer}
.pe-task:last-child{border-bottom:none}
.pe-task-check{width:20px;height:20px;border:2px solid rgba(140,106,62,.4);border-radius:6px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;transition:all .2s}
.pe-task-check svg{width:14px;height:14px;opacity:0;transition:opacity .2s}
.pe-task-check.done{background:rgba(106,191,105,.2);border-color:#6abf69}
.pe-task-check.done svg{opacity:1;color:#6abf69}
.pe-task-body{flex:1;min-width:0}
.pe-task-title{font-size:13px;font-weight:600;color:#fff}
.pe-task.done .pe-task-title{color:var(--muted);text-decoration:line-through}
.pe-task-due{font-size:11px;color:var(--muted);margin:2px 0 0}

/* ── Materials Table ── */
.pe-mat-table{width:100%;border-collapse:collapse}
.pe-mat-table th{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;padding:8px 10px;text-align:left;border-bottom:1px solid rgba(140,106,62,.18)}
.pe-mat-table td{font-size:13px;color:var(--ash);padding:10px;border-bottom:1px solid rgba(181,183,185,.06)}
.pe-mat-table tr:hover td{background:rgba(46,49,54,.3)}

/* ── Financial Summary ── */
.pe-finance-row{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid rgba(181,183,185,.06);font-size:13px}
.pe-finance-row:last-child{border-bottom:none}
.pe-finance-label{color:var(--muted)}
.pe-finance-val{color:#fff;font-weight:650}
.pe-finance-val.paid{color:#6abf69}
.pe-finance-val.pending{color:#ed8936}

/* ── Upload Zone ── */
.pe-upload{border:2px dashed rgba(140,106,62,.3);border-radius:12px;padding:28px 20px;text-align:center;cursor:pointer;transition:all .2s}
.pe-upload:hover{border-color:var(--bronze);background:rgba(140,106,62,.05)}
.pe-upload svg{width:32px;height:32px;color:var(--bronze);margin:0 0 8px}
.pe-upload-text{font-size:13px;color:var(--muted)}
.pe-upload-text strong{color:#fff}

/* ── Photo Grid ── */
.pe-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.pe-photo{aspect-ratio:1;border-radius:10px;background:rgba(46,49,54,.6);border:1px solid rgba(181,183,185,.1);display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:pointer;transition:border-color .2s}
.pe-photo:hover{border-color:rgba(140,106,62,.4)}
.pe-photo img{width:100%;height:100%;object-fit:cover}
.pe-photo-placeholder{color:var(--muted)}
.pe-photo-placeholder svg{width:24px;height:24px}

/* ── Empty States ── */
.pe-empty{text-align:center;padding:32px 20px;color:var(--muted)}
.pe-empty svg{width:36px;height:36px;margin:0 0 10px;opacity:.5}
.pe-empty p{font-size:13px;margin:0 0 12px}

/* ── Invite Form ── */
.pe-invite-form{display:grid;grid-template-columns:1fr 1fr auto;gap:10px;padding:12px 0}
.pe-invite-form input,.pe-invite-form select{padding:10px 12px;border-radius:10px;background:rgba(181,183,185,.06);border:1px solid rgba(181,183,185,.14);color:var(--text);font-size:13px;outline:none}
@media(max-width:520px){.pe-invite-form{grid-template-columns:1fr}}

/* ── Invite Contractor Modal ── */
.pe-invite-modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);z-index:1000;align-items:center;justify-content:center}
.pe-invite-modal-overlay.open{display:flex}
.pe-invite-modal{background:var(--graphite);border:1px solid rgba(140,106,62,.3);border-radius:16px;padding:0;max-width:480px;width:92%;box-shadow:0 24px 48px rgba(0,0,0,.4);overflow:hidden}
.pe-invite-modal-head{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid rgba(181,183,185,.08)}
.pe-invite-modal-head h3{font-size:16px;font-weight:700;color:#fff;margin:0;display:flex;align-items:center;gap:8px}
.pe-invite-modal-head h3 svg{width:20px;height:20px;color:var(--bronze);flex-shrink:0}
.pe-invite-modal-close{background:none;border:none;color:var(--muted);font-size:22px;cursor:pointer;padding:0;line-height:1}
.pe-invite-modal-close:hover{color:#fff}
.pe-invite-modal-body{padding:20px 24px}
.pe-invite-modal-body .input{width:100%;padding:10px 12px;border-radius:10px;background:rgba(181,183,185,.06);border:1px solid rgba(181,183,185,.14);color:var(--text);font-size:13px;outline:none;box-sizing:border-box}
.pe-invite-modal-body textarea.input{resize:vertical;min-height:60px}
.pe-invite-modal-body .input:focus{border-color:rgba(140,106,62,.5)}
.pe-invite-modal-actions{display:flex;gap:10px;justify-content:flex-end;padding:16px 24px;border-top:1px solid rgba(181,183,185,.08)}
.pe-invite-modal-actions .btn{padding:10px 20px;font-size:13px;border-radius:10px;font-weight:650;cursor:pointer;border:none}
.pe-invite-modal-actions .btn.ghost{background:rgba(181,183,185,.08);color:var(--ash)}
.pe-invite-modal-actions .btn.ghost:hover{background:rgba(181,183,185,.15)}
.pe-invite-modal-actions .btn.primary{background:var(--bronze);color:#fff}
.pe-invite-modal-actions .btn.primary:hover{background:#a07a48}
.pe-invite-modal-actions .btn:disabled{opacity:.4;cursor:not-allowed}
.pe-invite-method-tabs{display:flex;gap:0;border-radius:10px;overflow:hidden;border:1px solid rgba(181,183,185,.14)}
.pe-invite-method-tab{flex:1;padding:10px 14px;font-size:12px;font-weight:650;color:var(--muted);background:rgba(181,183,185,.04);border:none;cursor:pointer;transition:all .2s;text-align:center}
.pe-invite-method-tab:first-child{border-right:1px solid rgba(181,183,185,.14)}
.pe-invite-method-tab:hover{color:#fff;background:rgba(181,183,185,.08)}
.pe-invite-method-tab.active{color:#fff;background:rgba(140,106,62,.15)}
@media(max-width:520px){.pe-invite-modal{width:96%;border-radius:12px}.pe-invite-modal-head,.pe-invite-modal-body,.pe-invite-modal-actions{padding-left:16px;padding-right:16px}}

/* ── Crew Add Worker Form ── */
.pe-crew-add-form{border-top:1px solid rgba(181,183,185,.1);margin-top:4px;padding-top:4px}
.pe-crew-add-form .pe-invite-form{padding:8px 0 4px}
@media(max-width:640px){.pe-crew-add-form .pe-invite-form{grid-template-columns:1fr 1fr}}

/* ── Opportunity Card ── */
.pe-opp-card{background:linear-gradient(135deg,rgba(46,49,54,.55) 0%,rgba(30,32,35,.65) 100%);border:1px solid rgba(140,106,62,.18);border-radius:var(--r);padding:18px;margin:0 0 12px;transition:border-color .2s}
.pe-opp-card:hover{border-color:rgba(140,106,62,.4)}
.pe-opp-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:0 0 12px}
.pe-opp-title{font-size:16px;font-weight:700;color:#fff;margin:0}
.pe-opp-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin:6px 0 0}
.pe-opp-meta span{display:inline-flex;align-items:center;gap:4px}
.pe-opp-meta svg{width:13px;height:13px;color:var(--bronze)}
.pe-opp-trades{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 0}
.pe-opp-trade{display:inline-flex;padding:4px 10px;border-radius:6px;font-size:11px;font-weight:650;background:rgba(140,106,62,.1);border:1px solid rgba(140,106,62,.2);color:var(--bronze)}
.pe-opp-actions{display:flex;gap:8px;margin:12px 0 0}

/* ── Mobile Navigation (Bottom Bar) ── */
.pe-mobile-nav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:100;background:rgba(28,30,33,.96);backdrop-filter:blur(12px);border-top:1px solid rgba(140,106,62,.2);padding:8px 10px env(safe-area-inset-bottom)}
.pe-mobile-nav-inner{display:flex;justify-content:space-around;gap:8px}
.pe-mobile-nav a{display:flex;flex-direction:column;align-items:center;gap:5px;padding:8px 6px;border-radius:10px;font-size:11px;font-weight:650;color:var(--muted);text-decoration:none;flex:1;text-align:center;transition:color .2s;min-height:56px;touch-action:manipulation}
.pe-mobile-nav a svg{width:20px;height:20px}
.pe-mobile-nav a.active{color:var(--bronze)}
@media(max-width:768px){
  .pe-mobile-nav{display:block}
  body{padding-bottom:90px}
}

/* ── Mobile Photo Upload FAB ── */
.pe-photo-fab{display:none;position:fixed;z-index:90;width:56px;height:56px;border-radius:50%;background:var(--bronze);color:#fff;border:none;cursor:pointer;box-shadow:0 4px 16px rgba(0,0,0,.35);align-items:center;justify-content:center;transition:transform .15s,box-shadow .15s}
.pe-photo-fab svg{width:24px;height:24px}
.pe-photo-fab:active{transform:scale(.92)}
@media(max-width:768px){
  .pe-photo-fab{display:flex;bottom:calc(72px + env(safe-area-inset-bottom,0px) + 12px);right:16px}
}

/* ── Photo Upload Modal ── */
.pe-photo-modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(4px);z-index:1100;align-items:flex-end;justify-content:center}
.pe-photo-modal-overlay.open{display:flex}
@media(min-width:769px){.pe-photo-modal-overlay.open{align-items:center}}
.pe-photo-modal{background:var(--graphite);border:1px solid rgba(140,106,62,.3);border-radius:18px 18px 0 0;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:0 -8px 32px rgba(0,0,0,.4);animation:peSlideUp .25s ease-out}
@media(min-width:769px){.pe-photo-modal{border-radius:16px;margin:20px}}
@keyframes peSlideUp{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}}
.pe-photo-modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 0;gap:10px}
.pe-photo-modal-head h3{font-size:16px;font-weight:700;color:#fff;margin:0;display:flex;align-items:center;gap:8px}
.pe-photo-modal-head h3 svg{width:20px;height:20px;color:var(--bronze);flex-shrink:0}
.pe-photo-modal-close{background:none;border:none;color:var(--muted);font-size:24px;cursor:pointer;padding:4px 8px;line-height:1}
.pe-photo-modal-close:hover{color:#fff}
.pe-photo-modal-body{padding:16px 20px}
.pe-photo-drop{display:flex;flex-direction:column;align-items:center;padding:28px 16px;border:2px dashed rgba(140,106,62,.3);border-radius:12px;cursor:pointer;transition:all .2s;text-align:center}
.pe-photo-drop:hover,.pe-photo-drop.drag-over{border-color:var(--bronze);background:rgba(140,106,62,.05)}
.pe-photo-previews{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.pe-photo-previews:empty{display:none}
.pe-photo-thumb{position:relative;width:72px;height:72px;border-radius:8px;overflow:hidden;border:1px solid rgba(181,183,185,.12)}
.pe-photo-thumb img{width:100%;height:100%;object-fit:cover}
.pe-photo-thumb-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.7);color:#fff;border:none;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.pe-photo-modal-actions{display:flex;gap:10px;justify-content:flex-end;padding:12px 20px 20px}
.pe-photo-modal-actions .btn{padding:10px 20px;font-size:13px;border-radius:10px;font-weight:650;cursor:pointer;border:none}
.pe-photo-modal-actions .btn:disabled{opacity:.4;cursor:not-allowed}
.pe-photo-upload-status{text-align:center;padding:10px;font-size:12px;font-weight:600;border-radius:8px;margin-top:8px}
.pe-photo-upload-status.success{background:rgba(106,191,105,.1);color:#6abf69}
.pe-photo-upload-status.error{background:rgba(239,68,68,.1);color:#ef4444}

/* ── Photo category filters ── */
.pe-photo-filters{display:flex;gap:6px;flex-wrap:wrap;padding:0 0 14px}
.pe-photo-filter-btn{background:rgba(46,49,54,.6);border:1px solid rgba(181,183,185,.12);border-radius:8px;padding:10px 16px;min-height:44px;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer;transition:all .15s;white-space:nowrap;touch-action:manipulation}
.pe-photo-filter-btn:hover{color:#fff;border-color:rgba(140,106,62,.4)}
.pe-photo-filter-btn.active{background:rgba(140,106,62,.15);color:var(--bronze);border-color:rgba(140,106,62,.5)}

/* ── Photo timeline entries ── */
.pe-photo-entry{padding:14px 0;border-bottom:1px solid rgba(181,183,185,.08)}
.pe-photo-entry:last-child{border-bottom:none}
.pe-photo-entry-header{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.pe-photo-entry-meta{display:flex;align-items:center;gap:8px}
.pe-photo-entry-author{font-size:13px;font-weight:600;color:#fff}
.pe-photo-entry-time{font-size:11px;color:var(--muted)}
.pe-photo-entry-caption{font-size:13px;color:var(--ash);margin-top:6px}
.pe-photo-entry-thumbs{margin-top:8px}
.pe-photo-entry-count{font-size:11px;color:var(--muted);font-weight:600}
.pe-photo-category-tag{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:3px 8px;border-radius:4px;background:rgba(140,106,62,.12);color:var(--bronze)}
.pe-photo-cat--progress-photos{background:rgba(59,130,246,.12);color:#60a5fa}
.pe-photo-cat--safety-documentation{background:rgba(239,68,68,.12);color:#f87171}
.pe-photo-cat--inspections{background:rgba(168,85,247,.12);color:#c084fc}
.pe-photo-cat--deliveries{background:rgba(34,197,94,.12);color:#4ade80}
.pe-photo-cat--issues{background:rgba(245,158,11,.12);color:#fbbf24}
.pe-photo-cat--uncategorized{background:rgba(107,114,128,.12);color:#9ca3af}

/* ── Photo upload form ── */
.pe-photos-upload-form{background:rgba(46,49,54,.5);border:1px solid rgba(181,183,185,.1);border-radius:var(--r,14px);padding:16px;margin-bottom:16px}
.pe-photos-drop-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 16px;border:2px dashed rgba(140,106,62,.3);border-radius:10px;cursor:pointer;transition:all .2s;text-align:center}
.pe-photos-drop-zone:hover,.pe-photos-drop-zone.drag-over{border-color:var(--bronze);background:rgba(140,106,62,.06)}
.pe-photos-previews{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.pe-photos-preview-thumb{position:relative;width:72px;height:72px;border-radius:8px;overflow:hidden;border:1px solid rgba(181,183,185,.12)}
.pe-photos-preview-thumb img{width:100%;height:100%;object-fit:cover}
.pe-photos-preview-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;border-radius:50%;background:rgba(0,0,0,.7);border:none;color:#fff;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.pe-photos-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
.pe-photos-form-field label{font-size:11px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;display:block;margin:0 0 4px}
.pe-photos-form-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:14px;padding-top:14px;border-top:1px solid rgba(181,183,185,.08)}

/* ── Photo gallery grid ── */
.pe-photos-gallery{padding-top:4px}
.pe-photos-date-group{margin-bottom:20px}
.pe-photos-date-label{font-size:13px;font-weight:700;color:#fff;padding:0 0 10px;display:flex;align-items:center;gap:8px}
.pe-photos-date-count{font-size:11px;font-weight:500;color:var(--muted)}
.pe-photos-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.pe-photos-card{background:rgba(46,49,54,.5);border:1px solid rgba(181,183,185,.08);border-radius:10px;overflow:hidden;cursor:pointer;transition:all .2s}
.pe-photos-card:hover{border-color:rgba(140,106,62,.4);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.2)}
.pe-photos-card-img{width:100%;height:140px;overflow:hidden;background:rgba(28,30,33,.5)}
.pe-photos-card-img img{width:100%;height:100%;object-fit:cover;transition:transform .3s}
.pe-photos-card:hover .pe-photos-card-img img{transform:scale(1.03)}
.pe-photos-card-placeholder{display:flex;align-items:center;justify-content:center}
.pe-photos-card-placeholder svg{width:32px;height:32px;color:var(--muted)}
.pe-photos-card-info{padding:10px 12px}
.pe-photos-card-meta{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:4px}
.pe-photos-card-author{font-size:12px;font-weight:600;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pe-photos-card-time{font-size:10px;color:var(--muted);white-space:nowrap}
.pe-photos-card-caption{font-size:12px;color:var(--ash);margin-bottom:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pe-floor-note-card{background:rgba(46,49,54,.45);border:1px solid rgba(181,183,185,.1);border-radius:10px;padding:12px;margin-bottom:10px}
.pe-floor-note-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.pe-floor-note-photos{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.pe-floor-note-photos img{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid rgba(181,183,185,.12)}

/* ── Photo lightbox ── */
.pe-photo-lightbox{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .25s}
.pe-photo-lightbox.open{opacity:1;pointer-events:auto}
.pe-photo-lightbox-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.88);backdrop-filter:blur(8px)}
.pe-photo-lightbox-content{position:relative;max-width:90vw;max-height:90vh;display:flex;flex-direction:column;align-items:center;z-index:1}
.pe-photo-lightbox-close{position:absolute;top:-12px;right:-12px;width:36px;height:36px;border-radius:50%;background:rgba(46,49,54,.9);border:1px solid rgba(181,183,185,.2);color:#fff;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2;transition:background .15s}
.pe-photo-lightbox-close:hover{background:rgba(140,106,62,.6)}
#pe-photo-lightbox-img{max-width:90vw;max-height:70vh;border-radius:10px;object-fit:contain;box-shadow:0 8px 32px rgba(0,0,0,.4)}
.pe-photo-lightbox-info{margin-top:14px;text-align:center;max-width:600px}
.pe-photo-lightbox-meta{display:flex;align-items:center;gap:12px;justify-content:center;flex-wrap:wrap}
.pe-photo-lightbox-author{font-size:13px;font-weight:600;color:#fff;display:flex;align-items:center;gap:4px}
.pe-photo-lightbox-time{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:4px}
.pe-photo-lightbox-caption{font-size:13px;color:var(--ash);margin-top:8px}

/* ── Responsive photo gallery ── */
@media(max-width:520px){
  .pe-photos-grid{grid-template-columns:repeat(2,1fr);gap:8px}
  .pe-photos-card-img{height:110px}
  .pe-photos-form-row{grid-template-columns:1fr}
  .pe-photo-lightbox-content{max-width:96vw}
  #pe-photo-lightbox-img{max-width:96vw;max-height:60vh;border-radius:6px}
}

/* ── Tab overflow indicator ── */
.pe-tabs{position:relative}
.pe-tabs::after{content:'';position:absolute;right:0;top:0;bottom:0;width:32px;background:linear-gradient(to right,transparent,rgba(28,30,33,.95));pointer-events:none;opacity:0;transition:opacity .3s}
.pe-tabs.has-overflow::after{opacity:1}

/* ── Alert severity indicators ── */
.pe-alert-critical{border-left:3px solid #ef4444}
.pe-alert-high{border-left:3px solid #f59e0b}
.pe-alert-medium{border-left:3px solid #3b82f6}
.pe-alert-low{border-left:3px solid #6b7280}

/* ── Responsive adjustments ── */
@media(max-width:768px){
  .pe-header h1{font-size:22px}
  .pe-source-strip{margin-top:8px}
  .pe-source-meta span{font-size:11px}
  .pe-opportunity-bridge{padding:8px 10px}
  .pe-opportunity-bridge-links{gap:8px}
  .pe-tabs{padding:14px 0 0;gap:8px}
  .pe-tab{padding:10px 14px;font-size:12px;min-height:48px}
  .pe-summary{grid-template-columns:repeat(2,1fr)}
  .pe-stat-val{font-size:20px}
  .pe-photos{grid-template-columns:repeat(auto-fill,minmax(90px,1fr))}
  .pe-invite-form{grid-template-columns:1fr}
  .pe-opp-header{flex-direction:column}
}

@media(max-width:480px){
  .pe-summary{grid-template-columns:1fr 1fr}
  .pe-stat{padding:12px}
  .pe-card{padding:14px}
}

/* ═══════════════════════════════════════════════════════
   Schedule Tab — Construction Scheduling & Timeline
   ═══════════════════════════════════════════════════════ */

/* ── View Switcher ── */
.pe-sched-views{display:flex;gap:6px;margin:0 0 16px;flex-wrap:wrap}
.pe-sched-view-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:8px;font-size:12px;font-weight:650;color:var(--muted);background:rgba(46,49,54,.4);border:1px solid rgba(181,183,185,.1);cursor:pointer;transition:all .2s}
.pe-sched-view-btn:hover{color:#fff;border-color:rgba(140,106,62,.3)}
.pe-sched-view-btn.active{color:#fff;background:rgba(140,106,62,.12);border-color:rgba(140,106,62,.35)}

/* ── Labels ── */
.pe-sched-label{display:block;font-size:11px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 4px}

/* ── Phase Card ── */
.pe-sched-phase{transition:border-color .2s}

/* ── Schedule Task Item ── */
.pe-sched-task{padding:10px 12px;margin:0 0 6px;border-radius:8px;background:rgba(46,49,54,.3);border:1px solid rgba(181,183,185,.06);transition:all .2s}
.pe-sched-task:hover{border-color:rgba(140,106,62,.2)}
.pe-sched-task.today{border-color:rgba(140,106,62,.35);background:rgba(140,106,62,.06)}
.pe-sched-task.overdue{border-color:rgba(239,68,68,.25);background:rgba(239,68,68,.04)}
.pe-sched-task.done{opacity:.6}

.pe-sched-task-header{display:flex;align-items:center;gap:10px}
.pe-sched-task-status{display:inline-flex;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;flex-shrink:0}
.pe-sched-task-title{flex:1;font-size:13px;font-weight:600;color:#fff;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pe-sched-task-actions{flex-shrink:0}

.pe-sched-task-meta{display:flex;gap:12px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:6px 0 0;padding-left:2px}
.pe-sched-task-meta span{display:inline-flex;align-items:center;gap:3px}

.pe-sched-task-links{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 0}
.pe-sched-link{display:inline-flex;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:650;background:rgba(99,179,237,.1);border:1px solid rgba(99,179,237,.2);color:#63b3ed}

/* ── Add Task Form (inline) ── */
@media(max-width:900px){
  .pe-sched-add-task{grid-template-columns:1fr !important}
}

/* ── Timeline Visualization ── */
.pe-tl-container{overflow-x:auto;-webkit-overflow-scrolling:touch;position:relative}
.pe-tl-header{position:relative;height:28px;margin:0 0 4px;min-width:800px}
.pe-tl-week{position:absolute;top:0;font-size:10px;font-weight:600;color:var(--muted);white-space:nowrap;border-left:1px solid rgba(181,183,185,.08);padding:0 6px;height:100%;display:flex;align-items:center}
.pe-tl-today{position:absolute;top:0;bottom:0;width:2px;background:var(--bronze);z-index:2}
.pe-tl-today span{position:absolute;top:-2px;left:4px;font-size:9px;font-weight:700;color:var(--bronze);white-space:nowrap;text-transform:uppercase;letter-spacing:.05em}
.pe-tl-body{min-width:800px}

.pe-tl-row{display:flex;align-items:center;min-height:30px;border-bottom:1px solid rgba(181,183,185,.04)}
.pe-tl-phase-row{min-height:34px;background:rgba(46,49,54,.2);border-radius:4px;margin:4px 0 2px}
.pe-tl-task-row{min-height:26px}
.pe-tl-label{width:200px;flex-shrink:0;font-size:12px;color:#fff;padding:4px 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pe-tl-task-label{padding-left:24px;font-size:11px;color:var(--ash);display:flex;align-items:center;gap:6px}
.pe-tl-assignee{font-size:10px;color:var(--muted);margin-left:4px}
.pe-tl-dep{font-size:14px;color:var(--muted)}
.pe-tl-bar-area{flex:1;position:relative;height:100%;min-height:20px}
.pe-tl-bar{position:absolute;top:50%;transform:translateY(-50%);border-radius:4px;min-width:4px;height:14px;opacity:.85;transition:opacity .2s}
.pe-tl-bar:hover{opacity:1}
.pe-tl-phase-bar{height:8px;opacity:.4;border-radius:3px}
.pe-tl-task-bar.done{opacity:.35}
.pe-tl-task-bar.overdue{animation:pe-overdue-pulse 2s infinite}
.pe-tl-milestone{position:absolute;right:-8px;top:50%;transform:translateY(-50%);font-size:14px;color:var(--bronze)}

@keyframes pe-overdue-pulse{0%,100%{opacity:.85}50%{opacity:.5}}

/* ── Today & Upcoming Items ── */
.pe-sched-today-item{padding:12px 14px;margin:0 0 8px;border-radius:8px;background:rgba(46,49,54,.3);border:1px solid rgba(181,183,185,.06);transition:border-color .2s}
.pe-sched-today-item:hover{border-color:rgba(140,106,62,.25)}
.pe-sched-today-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 4px}
.pe-sched-today-title{font-size:14px;font-weight:650;color:#fff}

/* ── Schedule responsive ── */
@media(max-width:768px){
  .pe-tl-label{width:140px;font-size:10px}
  .pe-tl-task-label{padding-left:16px}
  .pe-sched-task-header{flex-wrap:wrap}
}
@media(max-width:480px){
  .pe-tl-label{width:100px}
}

/* ═══════════════════════════════════════════════════════
   Payments Tab — Payment & Milestone Tracking
   ═══════════════════════════════════════════════════════ */

/* ── Payment KPI Strip ── */
.pmt-kpi-strip{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin:0 0 20px}
.pmt-kpi{background:linear-gradient(180deg,rgba(46,49,54,.96),rgba(46,49,54,.72));border:1px solid rgba(181,183,185,.10);border-radius:12px;padding:16px;text-align:center}
.pmt-kpi-value{font-size:22px;font-weight:800;color:#fff;margin:4px 0;font-variant-numeric:tabular-nums}
.pmt-kpi-label{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:650}
.pmt-kpi.green .pmt-kpi-value{color:#6abf69}
.pmt-kpi.yellow .pmt-kpi-value{color:#f59e0b}
.pmt-kpi.red .pmt-kpi-value{color:#ef4444}
.pmt-kpi.accent .pmt-kpi-value{color:var(--bronze)}

/* ── Budget Progress Bar ── */
.pmt-budget-bar-wrap{background:rgba(46,49,54,.4);border:1px solid rgba(140,106,62,.12);border-radius:12px;padding:16px 20px;margin:0 0 20px}
.pmt-budget-bar-labels{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin:0 0 8px;font-weight:600}
.pmt-budget-bar{height:14px;background:rgba(181,183,185,.08);border-radius:7px;overflow:hidden;display:flex}
.pmt-budget-bar-fill{height:100%;transition:width .4s ease}
.pmt-budget-bar-fill.pmt-paid{background:#6abf69}
.pmt-budget-bar-fill.pmt-pending{background:#f59e0b}
.pmt-budget-bar-fill.pmt-overdue{background:#ef4444}
.pmt-budget-bar-legend{display:flex;gap:16px;margin:10px 0 0;font-size:11px;color:var(--muted)}
.pmt-legend-item{display:inline-flex;align-items:center;gap:5px}
.pmt-legend-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.pmt-legend-dot.pmt-paid{background:#6abf69}
.pmt-legend-dot.pmt-pending{background:#f59e0b}
.pmt-legend-dot.pmt-overdue{background:#ef4444}

/* ── Milestone Cards ── */
.pmt-milestone-list{display:grid;gap:8px}
.pmt-milestone-card{display:grid;grid-template-columns:40px 1fr auto auto;gap:14px;align-items:center;padding:14px 16px;border-radius:10px;background:rgba(46,49,54,.3);border:1px solid rgba(181,183,185,.08);transition:border-color .2s}
.pmt-milestone-card:hover{border-color:rgba(140,106,62,.25)}
.pmt-milestone-card.paid{border-left:3px solid #6abf69}
.pmt-milestone-card.overdue{border-left:3px solid #ef4444}
.pmt-milestone-card.pending{border-left:3px solid #f59e0b}

.pmt-ms-seq{width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;flex-shrink:0}
.pmt-milestone-card.paid .pmt-ms-seq{background:rgba(106,191,105,.15);color:#6abf69}
.pmt-milestone-card.overdue .pmt-ms-seq{background:rgba(239,68,68,.15);color:#ef4444}
.pmt-milestone-card.pending .pmt-ms-seq{background:rgba(245,158,11,.15);color:#f59e0b}

.pmt-ms-body{min-width:0}
.pmt-ms-name{font-size:14px;font-weight:650;color:#fff}
.pmt-ms-desc{font-size:12px;color:var(--muted);margin:2px 0 0;line-height:1.4}
.pmt-ms-phase{font-size:11px;color:var(--bronze);margin:3px 0 0;font-weight:600}
.pmt-ms-due{font-size:11px;color:var(--muted);margin:2px 0 0}

.pmt-ms-finance{text-align:right;flex-shrink:0}
.pmt-ms-amount{font-size:18px;font-weight:800;color:#fff;font-variant-numeric:tabular-nums}
.pmt-ms-pct{font-size:11px;color:var(--muted);margin:2px 0 0}

.pmt-ms-status-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:650;letter-spacing:.02em;margin-top:4px}
.pmt-ms-status-badge.paid{background:rgba(106,191,105,.12);color:#6abf69}
.pmt-ms-status-badge.pending{background:rgba(245,158,11,.12);color:#f59e0b}
.pmt-ms-status-badge.overdue{background:rgba(239,68,68,.12);color:#ef4444}

.pmt-ms-actions{display:flex;flex-direction:column;gap:6px;flex-shrink:0}

/* ── Default Milestones Notice ── */
.pmt-default-notice{padding:14px 16px;margin:0 0 12px;border-radius:10px;background:rgba(140,106,62,.06);border:1px solid rgba(140,106,62,.18);font-size:13px;color:var(--ash)}
.pmt-default-notice p{margin:0}
.pmt-milestone-list.pmt-default .pmt-milestone-card{opacity:.7}

/* ── Upcoming Payments Timeline ── */
.pmt-timeline{padding:4px 0}
.pmt-tl-item{display:flex;gap:14px;padding:12px 0;border-bottom:1px solid rgba(181,183,185,.06);position:relative}
.pmt-tl-item:last-child{border-bottom:none}
.pmt-tl-item::before{content:'';position:absolute;left:7px;top:28px;bottom:-4px;width:2px;background:rgba(181,183,185,.1)}
.pmt-tl-item:last-child::before{display:none}
.pmt-tl-dot{width:16px;height:16px;border-radius:50%;background:rgba(245,158,11,.2);border:2px solid #f59e0b;flex-shrink:0;margin-top:2px}
.pmt-tl-dot.overdue{background:rgba(239,68,68,.2);border-color:#ef4444}
.pmt-tl-content{flex:1;min-width:0}
.pmt-tl-name{font-size:13px;font-weight:650;color:#fff}
.pmt-tl-amount{font-size:15px;font-weight:800;color:#fff;margin:2px 0}
.pmt-tl-date{font-size:11px;color:var(--muted)}
.pmt-tl-phase{font-size:11px;color:var(--bronze);margin:2px 0 0}
.pmt-tl-item.overdue .pmt-tl-date{color:#ef4444;font-weight:600}

/* ── Invoice List ── */
.pmt-invoice-list{display:grid;gap:6px}
.pmt-invoice-row{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid rgba(181,183,185,.06)}
.pmt-invoice-row:last-child{border-bottom:none}
.pmt-inv-info{flex:1;min-width:0}
.pmt-inv-name{font-size:13px;font-weight:650;color:#fff}
.pmt-inv-meta{font-size:11px;color:var(--muted)}
.pmt-inv-amount{font-size:14px;font-weight:700;color:#fff;font-variant-numeric:tabular-nums;flex-shrink:0}

/* ── Payments Responsive ── */
@media(max-width:1024px){
  .pmt-kpi-strip{grid-template-columns:repeat(3,1fr)}
}
@media(max-width:768px){
  .pmt-kpi-strip{grid-template-columns:repeat(2,1fr)}
  .pmt-milestone-card{grid-template-columns:36px 1fr;gap:10px}
  .pmt-ms-finance{grid-column:1/-1;text-align:left;display:flex;align-items:center;gap:12px}
  .pmt-ms-actions{grid-column:1/-1;flex-direction:row;flex-wrap:wrap}
  .pmt-ms-amount{font-size:16px}
}
@media(max-width:480px){
  .pmt-kpi-strip{grid-template-columns:1fr 1fr}
  .pmt-kpi{padding:12px}
  .pmt-kpi-value{font-size:18px}
  .pmt-budget-bar-wrap{padding:12px 14px}
  .pmt-milestone-card{padding:12px}
}

/* ═══════════════════════════════════════════════════════
   Project Control Room — Operational Hub Styles
   ═══════════════════════════════════════════════════════ */

/* ── Control Room Grid ── */
.cc-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:0 0 16px}
.cc-grid-full{grid-column:1/-1}
@media(max-width:768px){.cc-grid{grid-template-columns:1fr}}

/* ── Command Panel ── */
.cc-panel{background:linear-gradient(135deg,rgba(46,49,54,.55) 0%,rgba(30,32,35,.65) 100%);border:1px solid rgba(140,106,62,.18);border-radius:var(--r);padding:16px;position:relative;transition:border-color .2s}
.cc-panel:hover{border-color:rgba(140,106,62,.35)}
.cc-panel-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 12px;gap:8px}
.cc-panel-head h4{font-size:13px;font-weight:700;color:#fff;margin:0;display:flex;align-items:center;gap:7px;text-transform:uppercase;letter-spacing:.03em}
.cc-panel-head h4 svg{width:16px;height:16px;color:var(--bronze);flex-shrink:0}
.cc-panel-link{font-size:11px;font-weight:650;color:var(--bronze);text-decoration:none;display:inline-flex;align-items:center;gap:3px;white-space:nowrap}
.cc-panel-link:hover{color:#fff}

/* ── Project Info Block ── */
.cc-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px 16px}
.cc-info-item{padding:6px 0;border-bottom:1px solid rgba(181,183,185,.05)}
.cc-info-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.cc-info-val{font-size:13px;color:#fff;font-weight:600}
@media(max-width:480px){.cc-info-grid{grid-template-columns:1fr}}

/* ── Status Dot ── */
.cc-dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}
.cc-dot.green{background:#6abf69}
.cc-dot.yellow{background:#f59e0b}
.cc-dot.red{background:#ef4444}
.cc-dot.blue{background:#63b3ed}
.cc-dot.gray{background:#6b7280}

/* ── Mini List ── */
.cc-list{list-style:none;padding:0;margin:0}
.cc-list li{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid rgba(181,183,185,.05);font-size:12px;color:var(--ash)}
.cc-list li:last-child{border-bottom:none}
.cc-list-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;color:#fff;font-size:13px}
.cc-list-meta{font-size:11px;color:var(--muted);white-space:nowrap}
.cc-list-badge{display:inline-flex;padding:2px 8px;border-radius:5px;font-size:10px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;white-space:nowrap}
.cc-list-badge.active{background:rgba(106,191,105,.12);color:#6abf69}
.cc-list-badge.pending{background:rgba(245,158,11,.12);color:#f59e0b}
.cc-list-badge.overdue{background:rgba(239,68,68,.12);color:#ef4444}
.cc-list-badge.scheduled{background:rgba(99,179,237,.12);color:#63b3ed}
.cc-list-badge.completed{background:rgba(106,191,105,.12);color:#6abf69}
.cc-list-badge.open{background:rgba(239,68,68,.12);color:#ef4444}
.cc-list-badge.delivered{background:rgba(159,122,234,.12);color:#9f7aea}
.cc-list-badge.on-site{background:rgba(106,191,105,.12);color:#6abf69}

/* ── Mini KPI Row ── */
.cc-kpi-row{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.cc-kpi{flex:1;min-width:60px;text-align:center;padding:8px 6px;background:rgba(46,49,54,.5);border-radius:8px;border:1px solid rgba(181,183,185,.06)}
.cc-kpi-val{font-size:18px;font-weight:800;color:#fff;line-height:1}
.cc-kpi-label{font-size:9px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:4px 0 0}
.cc-materials-snapshot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.cc-materials-snapshot-col{border:1px solid rgba(181,183,185,.08);background:rgba(46,49,54,.4);border-radius:10px;padding:10px}
.cc-materials-snapshot-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px}
.cc-materials-snapshot-list{list-style:none;padding:0;margin:0}
.cc-materials-snapshot-list li{font-size:12px;color:#fff;line-height:1.35;padding:0 0 6px;margin:0 0 6px;border-bottom:1px solid rgba(181,183,185,.08)}
.cc-materials-snapshot-list li:last-child{margin-bottom:0;padding-bottom:0;border-bottom:none}
.cc-materials-snapshot-empty{font-size:12px;color:var(--muted);line-height:1.4}
.cc-materials-snapshot-more{margin-top:8px;font-size:11px;color:var(--bronze);font-weight:600}
@media(max-width:1024px){.cc-materials-snapshot-grid{grid-template-columns:1fr}}

/* Materials readiness panel in Materials tab */
.pe-mat-readiness-stats{margin-bottom:14px}
.pe-mat-readiness-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media(max-width:1024px){.pe-mat-readiness-grid{grid-template-columns:1fr}}

/* ── Crew Panel Specifics ── */
.cc-crew-avatar{width:30px;height:30px;border-radius:50%;background:rgba(140,106,62,.12);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--bronze);flex-shrink:0}
.cc-cert-tag{display:inline-flex;padding:2px 7px;border-radius:4px;font-size:9px;font-weight:700;background:rgba(140,106,62,.1);border:1px solid rgba(140,106,62,.2);color:var(--bronze);margin:2px 2px 0 0}

/* ── Waste Panel ── */
.cc-waste-bar{height:8px;background:rgba(181,183,185,.1);border-radius:4px;overflow:hidden;margin:4px 0}
.cc-waste-bar-fill{height:100%;border-radius:4px;transition:width .3s}
.cc-waste-bar-fill.diverted{background:#6abf69}
.cc-waste-bar-fill.landfill{background:#ef4444}
#pe-waste-diversion-tracker table{border-radius:8px;overflow:hidden}
#pe-waste-diversion-tracker table th{white-space:nowrap}
@media(max-width:600px){#pe-waste-diversion-tracker table{font-size:12px}#pe-waste-diversion-tracker table th,#pe-waste-diversion-tracker table td{padding:6px 4px}#pe-waste-diversion-tracker .pe-grid-3{grid-template-columns:1fr 1fr 1fr}}

/* ── Subcontractor Assignments Table ── */
#pe-sub-list table{border-radius:8px;overflow:hidden}
#pe-sub-list table th{white-space:nowrap}
.pe-sub-status-select{font-family:inherit;outline:none;transition:border-color .2s}
.pe-sub-status-select:focus{border-color:var(--bronze)}
.pe-sub-remove-btn:hover{color:#ef4444;background:rgba(239,68,68,.1)}
#pe-sub-add-form .input{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:var(--charcoal);color:#fff;font-size:13px;font-family:inherit}
#pe-sub-add-form .input:focus{outline:none;border-color:var(--bronze)}
#pe-sub-add-form select.input{cursor:pointer}
@media(max-width:900px){#pe-sub-add-form > div{grid-template-columns:1fr !important}}
@media(max-width:600px){#pe-sub-list table{font-size:12px}#pe-sub-list table th,#pe-sub-list table td{padding:6px 4px}#pe-sub-list table th:nth-child(3),#pe-sub-list table td:nth-child(3){display:none}#pe-sub-list table th:nth-child(4),#pe-sub-list table td:nth-child(4){display:none}}

/* ── Subcontractor Performance Notes ── */
.spn-note{background:rgba(46,49,54,.4);border:1px solid rgba(140,106,62,.12);border-radius:10px;padding:14px 16px;margin:0 0 10px;transition:border-color .2s}
.spn-note:hover{border-color:rgba(140,106,62,.25)}
.spn-note-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 8px;gap:8px}
.spn-note-sub{font-size:14px;font-weight:700;color:#fff;display:flex;align-items:center;gap:6px}
.spn-note-sub svg{width:14px;height:14px;color:var(--bronze)}
.spn-note-meta{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:10px}
.spn-note-badge{display:inline-flex;padding:2px 8px;border-radius:4px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;background:rgba(140,106,62,.12);color:var(--bronze)}
.spn-note-badge.management-only{background:rgba(159,122,234,.12);color:#9f7aea}
.spn-ratings{display:flex;gap:14px;margin:0 0 8px;flex-wrap:wrap}
.spn-rating{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--ash)}
.spn-rating-label{font-weight:650;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.03em}
.spn-rating-dots{display:flex;gap:3px}
.spn-rating-dot{width:8px;height:8px;border-radius:50%;background:rgba(181,183,185,.15)}
.spn-rating-dot.filled{background:var(--bronze)}
.spn-note-text{font-size:13px;color:var(--ash);line-height:1.5}
.spn-note-actions{display:flex;gap:8px;margin:8px 0 0}
.spn-note-actions button{background:none;border:none;cursor:pointer;font-size:11px;color:var(--muted);padding:4px 8px;border-radius:4px;font-family:inherit;display:inline-flex;align-items:center;gap:4px;transition:all .2s}
.spn-note-actions button:hover{color:#fff;background:rgba(181,183,185,.1)}
.spn-note-actions button.delete:hover{color:#ef4444;background:rgba(239,68,68,.1)}
.spn-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}
.spn-form-row{margin-bottom:10px}
.spn-form-label{display:block;font-size:12px;color:var(--muted);margin-bottom:4px;font-weight:650}
.spn-rating-input{display:flex;align-items:center;gap:4px}
.spn-rating-input button{width:24px;height:24px;border-radius:50%;border:1px solid rgba(181,183,185,.2);background:rgba(46,49,54,.4);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;padding:0}
.spn-rating-input button:hover{border-color:var(--bronze);background:rgba(140,106,62,.15)}
.spn-rating-input button.active{border-color:var(--bronze);background:var(--bronze)}
.spn-rating-input button .dot{width:8px;height:8px;border-radius:50%;background:rgba(181,183,185,.3);transition:background .2s}
.spn-rating-input button.active .dot{background:#fff}
.spn-category-select{padding:6px 10px;border:1px solid rgba(181,183,185,.15);border-radius:6px;background:var(--charcoal);color:#fff;font-size:12px;font-family:inherit;cursor:pointer}
.spn-category-select:focus{outline:none;border-color:var(--bronze)}
.spn-filter-bar{display:flex;gap:10px;align-items:center;margin:0 0 14px;flex-wrap:wrap}
@media(max-width:600px){.spn-form-grid{grid-template-columns:1fr}.spn-ratings{flex-direction:column;gap:6px}}

/* ── Activity Feed Mini ── */
.cc-feed{list-style:none;padding:0;margin:0}
.cc-feed li{display:flex;gap:8px;padding:6px 0;border-bottom:1px solid rgba(181,183,185,.04);font-size:12px}
.cc-feed li:last-child{border-bottom:none}
.cc-feed-dot{width:6px;height:6px;border-radius:50%;margin-top:5px;flex-shrink:0}
.cc-feed-dot.safety{background:#ef4444}
.cc-feed-dot.equipment{background:#63b3ed}
.cc-feed-dot.crew{background:#6abf69}
.cc-feed-dot.financial{background:#f59e0b}
.cc-feed-dot.comms{background:#9f7aea}
.cc-feed-dot.general{background:var(--bronze)}
.cc-feed-body{flex:1;min-width:0}
.cc-feed-text{color:#fff;font-weight:600}
.cc-feed-time{font-size:10px;color:var(--muted)}

/* ── Location Map Panel ── */
.cc-location-map{width:100%;height:200px;border-radius:8px;overflow:hidden;background:rgba(28,30,33,.6);border:1px solid rgba(181,183,185,.06)}
.cc-location-map .leaflet-control-zoom a{background:var(--graphite);color:#fff;border-color:rgba(181,183,185,.12)}
.cc-location-map .leaflet-control-zoom a:hover{background:rgba(140,106,62,.3)}
.cc-location-map .leaflet-control-attribution{background:rgba(28,30,33,.7);color:var(--muted);font-size:9px}
.cc-location-map .leaflet-control-attribution a{color:var(--bronze)}

/* ── Project Map View ── */
.tf-map-card{overflow:hidden}
.tf-map-toolbar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:6px 0 10px}
.tf-map-toolbar .input{font-size:12px;padding:8px 10px;min-height:40px}
.tf-map-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:11px;color:var(--muted);margin:0 0 10px}
.tf-map-legend span{display:inline-flex;align-items:center;gap:6px}
.tf-map-dot{display:inline-block;width:10px;height:10px;border-radius:50%}
.tf-map-dot.completed{background:#27ae60}
.tf-map-dot.in-progress{background:#f39c12}
.tf-map-dot.issue{background:#e74c3c}
.tf-project-activity-map{height:340px;border-radius:10px;border:1px solid rgba(181,183,185,.14);overflow:hidden;background:rgba(46,49,54,.45)}
.tf-map-loading{display:flex;align-items:center;justify-content:center;height:100%;font-size:13px;color:var(--muted);text-align:center;padding:12px}
.tf-map-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:12px}
.tf-map-stat{background:rgba(46,49,54,.55);border:1px solid rgba(181,183,185,.12);border-radius:10px;padding:10px 8px;text-align:center}
.tf-map-stat strong{display:block;font-size:17px;color:#fff;line-height:1.2}
.tf-map-stat span{display:block;font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-top:3px}
.tf-zone-builder{display:grid;grid-template-columns:1fr 110px auto;gap:8px;align-items:center}
.tf-map-zone-list{display:grid;gap:8px;margin-top:10px}
.tf-zone-row{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:8px 10px;border-radius:9px;background:rgba(46,49,54,.45);border:1px solid rgba(181,183,185,.1)}
.tf-zone-row strong{display:block;font-size:13px;color:#fff}
.tf-zone-row span{display:block;font-size:11px;color:var(--muted);margin-top:2px}
.tf-map-pin-detail{min-height:130px}
.tf-map-empty{font-size:13px;color:var(--muted);padding:6px 0}
.tf-map-detail-card h4{font-size:15px;margin:0 0 6px;color:#fff}
.tf-map-detail-card p{font-size:13px;color:var(--ash);margin:0 0 8px;line-height:1.45}
.tf-map-detail-head{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.tf-map-badge{display:inline-flex;align-items:center;border-radius:999px;padding:3px 9px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.tf-map-badge.completed{background:rgba(39,174,96,.2);color:#6ee7a8}
.tf-map-badge.in-progress{background:rgba(243,156,18,.2);color:#fbbf24}
.tf-map-badge.issue{background:rgba(231,76,60,.2);color:#f87171}
.tf-map-badge-source{background:rgba(140,106,62,.18);color:var(--bronze)}
.tf-map-detail-meta{display:grid;gap:4px;font-size:12px;color:var(--muted)}
.tf-map-detail-photo{border-radius:10px;overflow:hidden;border:1px solid rgba(181,183,185,.14);margin:0 0 10px}
.tf-map-detail-photo img{display:block;width:100%;max-height:190px;object-fit:cover}
.tf-map-pin{background:transparent!important;border:none!important}
.tf-map-pin span{display:block;width:18px;height:18px;border-radius:50%;border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.35)}
.tf-map-pin--completed span{background:#27ae60}
.tf-map-pin--in-progress span{background:#f39c12}
.tf-map-pin--issue span{background:#e74c3c}
@media(max-width:900px){
  .tf-map-toolbar{grid-template-columns:1fr}
  .tf-project-activity-map{height:300px}
  .tf-map-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .tf-zone-builder{grid-template-columns:1fr}
}
.cc-map-marker{background:none!important;border:none!important}

/* ── Weather Panel ── */
.cc-weather{display:flex;align-items:flex-start;gap:16px}
.cc-weather-main{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.cc-weather-icon{width:48px;height:48px;flex-shrink:0;display:flex;align-items:center;justify-content:center;border-radius:10px;background:rgba(140,106,62,.08)}
.cc-weather-icon svg{width:28px;height:28px}
.cc-weather-temp{font-size:32px;font-weight:800;color:#fff;line-height:1;letter-spacing:-.02em}
.cc-weather-details{flex:1;min-width:0}
.cc-weather-condition{font-size:14px;font-weight:700;color:#fff;margin:0 0 2px}
.cc-weather-meta{font-size:11px;color:var(--muted)}
.cc-weather-stats{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 0}
.cc-weather-stat{padding:6px 10px;background:rgba(46,49,54,.5);border-radius:6px;border:1px solid rgba(181,183,185,.06);font-size:11px;color:var(--ash);white-space:nowrap}
.cc-weather-stat strong{color:#fff;font-weight:700}
.cc-weather-alert{display:flex;align-items:flex-start;gap:6px;padding:6px 10px;margin:4px 0 0;border-radius:6px;font-size:11px;font-weight:600;background:rgba(245,158,11,.08);border:1px solid rgba(245,158,11,.18);color:#f59e0b}
.cc-weather-alert.severe{background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.18);color:#ef4444}
.cc-weather-alert svg{width:14px;height:14px;flex-shrink:0;margin-top:1px}
@media(max-width:480px){.cc-weather{flex-direction:column;gap:10px}.cc-weather-temp{font-size:26px}}

/* ── 3-Day Forecast ── */
.cc-forecast{margin:12px 0 0;padding:10px 0 0;border-top:1px solid rgba(181,183,185,.08)}
.cc-forecast-title{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px}
.cc-forecast-days{display:flex;gap:6px}
.cc-forecast-day{flex:1;padding:10px 8px;background:rgba(46,49,54,.5);border-radius:8px;border:1px solid rgba(181,183,185,.06);text-align:center;transition:border-color .2s}
.cc-forecast-day:hover{border-color:rgba(140,106,62,.25)}
.cc-forecast-day-name{font-size:11px;font-weight:700;color:var(--ash);text-transform:uppercase;letter-spacing:.04em;margin:0 0 6px}
.cc-forecast-day-icon{display:flex;align-items:center;justify-content:center;margin:0 0 4px}
.cc-forecast-day-icon svg{width:22px;height:22px}
.cc-forecast-day-temps{display:flex;align-items:center;justify-content:center;gap:6px;margin:0 0 6px}
.cc-forecast-high{font-size:15px;font-weight:800;color:#fff}
.cc-forecast-low{font-size:12px;font-weight:600;color:var(--muted)}
.cc-forecast-day-details{display:flex;align-items:center;justify-content:center;gap:6px}
.cc-forecast-detail{display:inline-flex;align-items:center;gap:2px;font-size:10px;color:var(--ash)}
.cc-forecast-detail svg{opacity:.6}

/* ── Control Room Responsive ── */
@media(max-width:768px){
  .cc-panel{padding:14px}
  .cc-kpi-val{font-size:16px}
  .cc-kpi-row{gap:6px}
}
@media(max-width:480px){
  .cc-panel{padding:12px}
  .cc-kpi{min-width:50px;padding:6px 4px}
  .cc-kpi-val{font-size:14px}
}

/* ── Field Operations Experience ── */
.fo-mini-snapshot{display:grid;gap:6px}
.fo-mini-row{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--ash);padding:5px 0;border-bottom:1px solid rgba(181,183,185,.06)}
.fo-mini-row strong{color:#fff;font-size:13px}
.fo-mini-row:last-child{border-bottom:none}
.fo-mini-note{margin-top:8px;padding:8px 10px;border:1px solid rgba(140,106,62,.2);border-radius:8px;background:rgba(140,106,62,.08);font-size:11px;color:var(--muted)}

.fo-banner{background:linear-gradient(135deg,rgba(46,49,54,.75) 0%,rgba(30,32,35,.88) 100%);border:1px solid rgba(140,106,62,.22);border-radius:var(--r);padding:16px;margin:0 0 16px}
.fo-banner-head{font-size:13px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.04em;margin:0 0 6px}
.fo-banner p{font-size:13px;color:var(--ash);margin:0;line-height:1.5}
.fo-banner-meta{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.fo-banner-meta span{display:inline-flex;align-items:center;padding:4px 9px;border-radius:7px;background:rgba(46,49,54,.5);border:1px solid rgba(181,183,185,.12);font-size:11px;color:var(--muted)}

.fo-cadence{display:grid;gap:8px}
.fo-cadence-item{display:grid;grid-template-columns:60px 1fr auto;gap:10px;align-items:center;padding:10px;border:1px solid rgba(181,183,185,.08);border-radius:9px;background:rgba(46,49,54,.35)}
.fo-cadence-time{font-size:12px;font-weight:700;color:var(--bronze)}
.fo-cadence-title{font-size:13px;font-weight:650;color:#fff}
.fo-cadence-meta{font-size:11px;color:var(--muted);margin-top:2px}
.fo-cadence-link{font-size:11px;font-weight:650;color:var(--bronze);text-decoration:none}
.fo-cadence-link:hover{color:#fff}

.fo-coverage{margin:0;padding-left:18px;display:grid;gap:8px}
.fo-coverage li{font-size:12px;color:var(--ash);line-height:1.4}
.fo-coverage-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}

.fo-ops-board{display:grid;gap:8px}
.fo-ops-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid rgba(181,183,185,.09);border-radius:9px;background:rgba(46,49,54,.32)}
.fo-ops-label{font-size:12px;font-weight:700;color:#fff;text-transform:uppercase;letter-spacing:.04em}
.fo-ops-value{font-size:12px;color:var(--ash);margin-top:2px}
.fo-ops-status{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:3px 8px;border-radius:99px}
.fo-ops-status--clear{background:rgba(106,191,105,.15);color:#6abf69}
.fo-ops-status--in-progress{background:rgba(99,179,237,.14);color:#63b3ed}
.fo-ops-status--attention{background:rgba(239,68,68,.14);color:#ef4444}
.fo-ops-link{font-size:11px;font-weight:700;color:var(--bronze);text-decoration:none}
.fo-ops-link:hover{color:#fff}

.fo-copy{font-size:13px;color:var(--ash);line-height:1.55;margin:0 0 10px}
.fo-link-row{display:flex;gap:8px;flex-wrap:wrap}
.fo-link-row a{display:inline-flex;align-items:center;padding:6px 10px;border-radius:7px;background:rgba(46,49,54,.5);border:1px solid rgba(181,183,185,.1);font-size:11px;font-weight:650;color:var(--ash);text-decoration:none}
.fo-link-row a:hover{color:#fff;border-color:rgba(140,106,62,.35)}

@media(max-width:700px){
  .fo-cadence-item{grid-template-columns:1fr;gap:6px}
  .fo-ops-row{grid-template-columns:1fr}
}

/* ── Project Timeline Panel ── */
.cc-timeline-strip{padding:4px 0 0}
.cc-tl-dates{display:flex;gap:24px;flex-wrap:wrap;margin:0 0 16px}
.cc-tl-date-item{min-width:100px}
.cc-tl-bar-wrap{margin:0 0 4px}
.cc-tl-progress-bar{position:relative;height:10px;background:rgba(181,183,185,.1);border-radius:5px;overflow:visible}
.cc-tl-progress-fill{height:100%;border-radius:5px;background:linear-gradient(90deg,var(--bronze),rgba(140,106,62,.6));transition:width .4s ease}
.cc-tl-today-marker{position:absolute;top:-4px;width:2px;height:18px;background:var(--bronze);border-radius:1px;transform:translateX(-1px)}
.cc-tl-today-marker span{position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-size:9px;font-weight:700;color:var(--bronze);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.cc-tl-bar-labels{display:flex;justify-content:space-between;margin:6px 0 0;font-size:10px;color:var(--muted);font-weight:600}
@media(max-width:768px){
  .cc-tl-dates{gap:16px}
  .cc-tl-date-item{min-width:80px}
}
@media(max-width:480px){
  .cc-tl-dates{gap:12px}
}

/* ── Construction Phase Timeline Bar ── */
.cc-phase-timeline{margin:18px 0 0;padding:16px 0 0;border-top:1px solid rgba(181,183,185,.08)}
.cc-phase-label-row{margin:0 0 10px}
.cc-phase-bar{display:flex;height:14px;border-radius:7px;overflow:hidden;gap:2px;background:rgba(181,183,185,.06)}
.cc-phase-segment{position:relative;overflow:hidden;border-radius:7px}
.cc-phase-segment .cc-phase-fill{height:100%;border-radius:7px;transition:width .5s ease}
.cc-phase-segment.done .cc-phase-fill{width:100%;background:var(--phase-color);opacity:.85}
.cc-phase-segment.active .cc-phase-fill{width:60%;background:var(--phase-color);opacity:.7;animation:cc-phase-pulse 2s ease-in-out infinite}
.cc-phase-segment.upcoming .cc-phase-fill{width:100%;background:var(--phase-bg);opacity:.4}
@keyframes cc-phase-pulse{0%,100%{opacity:.55}50%{opacity:.85}}

.cc-phase-legend{display:flex;gap:16px;flex-wrap:wrap;margin:12px 0 0}
.cc-phase-item{display:flex;align-items:center;gap:8px;min-width:110px}
.cc-phase-dot{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:1.5px solid rgba(181,183,185,.15);background:rgba(46,49,54,.5);transition:all .3s}
.cc-phase-dot svg{width:13px;height:13px;color:var(--muted);transition:color .3s}
.cc-phase-item.done .cc-phase-dot{border-color:var(--phase-color);background:var(--phase-bg)}
.cc-phase-item.done .cc-phase-dot svg{color:var(--phase-color)}
.cc-phase-item.active .cc-phase-dot{border-color:var(--phase-color);background:var(--phase-bg);box-shadow:0 0 0 3px rgba(140,106,62,.1)}
.cc-phase-item.active .cc-phase-dot svg{color:var(--phase-color)}
.cc-phase-name{font-size:12px;font-weight:700;color:#fff;line-height:1.2}
.cc-phase-item.upcoming .cc-phase-name{color:var(--muted)}
.cc-phase-status{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);line-height:1.2;margin:1px 0 0}
.cc-phase-item.done .cc-phase-status{color:var(--phase-color)}
.cc-phase-item.active .cc-phase-status{color:var(--phase-color)}

@media(max-width:768px){
  .cc-phase-legend{gap:12px}
  .cc-phase-item{min-width:90px}
}
@media(max-width:480px){
  .cc-phase-legend{gap:8px}
  .cc-phase-item{min-width:70px;gap:6px}
  .cc-phase-dot{width:24px;height:24px}
  .cc-phase-dot svg{width:11px;height:11px}
  .cc-phase-name{font-size:11px}
  .cc-phase-status{font-size:9px}
}

/* ═══════════════════════════════════════════════════════
   JOBSITE COMMUNICATION FEED
   ═══════════════════════════════════════════════════════ */

/* ── Composer ── */
.jcf-composer{position:relative}
.jcf-compose-form{display:grid;gap:10px}
.jcf-compose-row{display:flex;gap:10px;flex-wrap:wrap}
.jcf-compose-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.jcf-photo-previews{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.jcf-photo-thumb{display:inline-flex;align-items:center;padding:4px 10px;border-radius:6px;font-size:11px;font-weight:600;color:var(--ash);background:rgba(140,106,62,.1);border:1px solid rgba(140,106,62,.2);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── Trade tags ── */
.jcf-tag-section{margin:4px 0 0}
.jcf-tag-label{font-size:12px;font-weight:650;color:var(--ash);margin:0 0 6px}
.jcf-tag-list{display:flex;flex-wrap:wrap;gap:6px}
.jcf-tag-chip{display:inline-flex;align-items:center;cursor:pointer}
.jcf-tag-chip input{display:none}
.jcf-tag-chip span{display:inline-flex;padding:4px 10px;border-radius:16px;font-size:11px;font-weight:600;color:var(--muted);background:rgba(181,183,185,.08);border:1px solid rgba(181,183,185,.1);transition:all .2s;user-select:none}
.jcf-tag-chip input:checked+span{background:rgba(140,106,62,.15);color:var(--bronze);border-color:rgba(140,106,62,.35)}
.jcf-tag-chip:hover span{border-color:rgba(140,106,62,.3);color:var(--ash)}

/* ── Filter bar ── */
.jcf-filter-bar{display:flex;gap:6px;padding:0 0 16px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.jcf-filter-bar::-webkit-scrollbar{display:none}
.jcf-filter-pill{display:inline-flex;align-items:center;padding:6px 14px;border-radius:20px;font-size:12px;font-weight:650;color:var(--muted);background:rgba(46,49,54,.4);border:1px solid rgba(181,183,185,.1);cursor:pointer;white-space:nowrap;transition:all .2s}
.jcf-filter-pill:hover{color:var(--ash);border-color:rgba(181,183,185,.2)}
.jcf-filter-pill.active{color:#fff;background:rgba(140,106,62,.15);border-color:rgba(140,106,62,.35)}

/* ── Timeline entries ── */
.jcf-timeline{position:relative;padding:0 0 0 20px;border-left:2px solid rgba(140,106,62,.15);margin:0 0 20px}
.jcf-date-divider{position:relative;margin:20px 0 14px -20px;padding:0 0 0 20px}
.jcf-date-divider span{display:inline-block;padding:4px 12px;border-radius:10px;font-size:11px;font-weight:700;color:var(--bronze);background:rgba(140,106,62,.1);border:1px solid rgba(140,106,62,.2);text-transform:uppercase;letter-spacing:.04em}
.jcf-date-divider:first-child{margin-top:0}

.jcf-entry{position:relative;margin:0 0 16px;padding:0 0 0 24px}
.jcf-entry-dot{position:absolute;left:-29px;top:4px;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--charcoal,#1C1E21);z-index:2}
.jcf-entry-dot svg{width:15px;height:15px;color:#fff}

.jcf-entry-content{background:linear-gradient(135deg,rgba(46,49,54,.55) 0%,rgba(30,32,35,.65) 100%);border:1px solid rgba(140,106,62,.12);border-radius:var(--r,14px);padding:16px;transition:border-color .2s}
.jcf-entry-content:hover{border-color:rgba(140,106,62,.3)}

.jcf-entry--urgent .jcf-entry-content{border-color:rgba(239,68,68,.35);background:linear-gradient(135deg,rgba(239,68,68,.04) 0%,rgba(30,32,35,.65) 100%)}
.jcf-entry--high .jcf-entry-content{border-color:rgba(237,137,54,.25)}

.jcf-entry-header{display:flex;align-items:center;gap:8px;margin:0 0 6px;flex-wrap:wrap}
.jcf-entry-cat{display:inline-flex;padding:3px 8px;border-radius:6px;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}
.jcf-entry-priority{display:inline-flex;padding:2px 7px;border-radius:5px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.jcf-priority--urgent{background:rgba(239,68,68,.12);color:#ef4444}
.jcf-priority--high{background:rgba(237,137,54,.12);color:#ed8936}
.jcf-entry-time{font-size:11px;color:var(--muted);margin-left:auto;white-space:nowrap}

.jcf-entry-title{font-size:14px;font-weight:700;color:#fff;margin:0 0 4px;line-height:1.3}
.jcf-entry-desc{font-size:13px;color:var(--ash);line-height:1.5;margin:0 0 8px;word-break:break-word}
.jcf-entry-author{font-size:12px;color:var(--muted);margin:0 0 6px}
.jcf-entry-author strong{color:var(--ash)}
.jcf-role{display:inline-flex;padding:1px 6px;border-radius:4px;font-size:10px;font-weight:600;background:rgba(181,183,185,.08);color:var(--muted);text-transform:uppercase;letter-spacing:.03em}

/* ── Tags ── */
.jcf-entry-tags{display:flex;flex-wrap:wrap;gap:5px;margin:0 0 8px}
.jcf-tag{display:inline-flex;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;color:var(--bronze);background:rgba(140,106,62,.1);border:1px solid rgba(140,106,62,.15)}

/* ── Photos ── */
.jcf-entry-photos{display:flex;gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding:4px 0 8px;scrollbar-width:thin}
.jcf-entry-photo{width:80px;height:60px;border-radius:8px;overflow:hidden;flex-shrink:0;border:1px solid rgba(181,183,185,.1)}
.jcf-entry-photo img{width:100%;height:100%;object-fit:cover}

/* ── Footer ── */
.jcf-entry-footer{display:flex;align-items:center;justify-content:space-between;padding:8px 0 0;border-top:1px solid rgba(181,183,185,.06);margin:8px 0 0}
.jcf-comment-toggle{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;color:var(--muted);background:none;border:none;cursor:pointer;padding:4px 0;transition:color .2s}
.jcf-comment-toggle:hover{color:var(--bronze)}
.jcf-entry-vis{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}

/* ── Comments panel ── */
.jcf-comments-panel{padding:12px 0 0;border-top:1px solid rgba(181,183,185,.06);margin:8px 0 0}
.jcf-comment{padding:8px 0;border-bottom:1px solid rgba(181,183,185,.04)}
.jcf-comment:last-of-type{border-bottom:none}
.jcf-comment-author{font-size:12px;font-weight:650;color:var(--ash);margin:0 0 2px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.jcf-comment-time{font-size:10px;color:var(--muted);font-weight:400}
.jcf-comment-text{font-size:13px;color:var(--ash);line-height:1.4}
.jcf-comment-form{display:flex;gap:8px;margin:10px 0 0;flex-wrap:wrap}
.jcf-comment-form .input{font-size:12px;padding:7px 10px}
.jcf-comment-author-input{max-width:140px;flex-shrink:0}
.jcf-comment-text-input{flex:1;min-width:140px}

/* ── Empty state ── */
.jcf-empty{text-align:center;padding:40px 20px;color:var(--muted)}
.jcf-empty p{font-size:14px;margin:10px 0 0}

/* ── Mobile responsive ── */
@media(max-width:900px){
  .jcf-compose-row{flex-direction:column}
  .jcf-compose-row .input{max-width:100% !important}
  .jcf-compose-actions{flex-direction:column;align-items:stretch}
  .jcf-compose-actions .btn{width:100%;text-align:center}
}
@media(max-width:600px){
  .jcf-timeline{padding:0 0 0 14px}
  .jcf-entry{padding:0 0 0 18px}
  .jcf-entry-dot{left:-23px;width:28px;height:28px}
  .jcf-entry-dot svg{width:12px;height:12px}
  .jcf-entry-content{padding:12px}
  .jcf-entry-title{font-size:13px}
  .jcf-entry-desc{font-size:12px}
  .jcf-entry-header{gap:5px}
  .jcf-filter-pill{padding:5px 10px;font-size:11px}
  .jcf-comment-form{flex-direction:column}
  .jcf-comment-author-input{max-width:100%}
  .jcf-tag-list{gap:4px}
  .jcf-tag-chip span{font-size:10px;padding:3px 8px}
  .jcf-entry-photos{gap:6px}
  .jcf-entry-photo{width:64px;height:48px}
}

/* ═══════════════════════════════════════════════════════
   Contact Directory Styles
   ═══════════════════════════════════════════════════════ */
.pe-contact-group{padding:0 16px 12px;border-bottom:1px solid rgba(140,106,62,.1)}
.pe-contact-group:last-child{border-bottom:none}
.pe-contact-group-header{display:flex;align-items:center;gap:8px;padding:14px 0 8px;font-size:12px;font-weight:700;color:var(--bronze);text-transform:uppercase;letter-spacing:.04em}
.pe-contact-card{background:linear-gradient(135deg,rgba(46,49,54,.4) 0%,rgba(30,32,35,.5) 100%);border:1px solid rgba(140,106,62,.12);border-radius:8px;margin-bottom:8px;overflow:hidden;transition:border-color .2s}
.pe-contact-card:hover{border-color:rgba(140,106,62,.3)}
.pe-contact-card-main{display:flex;align-items:center;gap:12px;padding:12px 14px}
.pe-contact-avatar{width:38px;height:38px;border-radius:8px;background:rgba(140,106,62,.12);color:var(--bronze);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;letter-spacing:.02em;flex-shrink:0}
.pe-contact-info{flex:1;min-width:0}
.pe-contact-name{font-size:14px;font-weight:650;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pe-contact-company{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}
.pe-contact-actions-quick{display:flex;align-items:center;gap:4px;flex-shrink:0}
.pe-contact-action-btn{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;border:none;background:rgba(140,106,62,.08);color:var(--ash);cursor:pointer;text-decoration:none;transition:background .2s,color .2s}
.pe-contact-action-btn:hover{background:rgba(140,106,62,.2);color:var(--bronze)}
.pe-contact-action-btn.expanded{background:rgba(140,106,62,.18);color:var(--bronze)}
.pe-contact-details{padding:0 14px 14px;border-top:1px solid rgba(140,106,62,.1)}
.pe-contact-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding-top:12px}
.pe-contact-detail{display:flex;flex-direction:column;gap:2px}
.pe-contact-detail-label{font-size:11px;color:var(--muted);font-weight:650;text-transform:uppercase;letter-spacing:.04em}
.pe-contact-detail-value{font-size:13px;color:var(--ash)}
.pe-contact-link{color:var(--bronze);text-decoration:none}
.pe-contact-link:hover{text-decoration:underline}

@media(max-width:600px){
  .pe-contact-card-main{gap:8px;padding:10px 12px}
  .pe-contact-avatar{width:32px;height:32px;font-size:11px}
  .pe-contact-detail-grid{grid-template-columns:1fr}
  .pe-contact-actions-quick .pe-contact-action-btn{width:28px;height:28px}
}

/* ── Supplier Contact Cards (Control Room) ── */
.cc-supplier-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px;padding:4px 0}
.cc-supplier-card{background:linear-gradient(135deg,rgba(46,49,54,.5) 0%,rgba(30,32,35,.6) 100%);border:1px solid rgba(140,106,62,.12);border-radius:10px;padding:14px;transition:border-color .2s,transform .15s}
.cc-supplier-card:hover{border-color:rgba(140,106,62,.35);transform:translateY(-1px)}
.cc-supplier-card-top{display:flex;align-items:center;gap:10px;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid rgba(181,183,185,.06)}
.cc-supplier-avatar{width:36px;height:36px;border-radius:8px;background:rgba(140,106,62,.12);color:var(--bronze);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;letter-spacing:.02em;flex-shrink:0}
.cc-supplier-identity{flex:1;min-width:0}
.cc-supplier-company{font-size:13px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-supplier-person{font-size:11px;color:var(--muted);margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-supplier-details{display:flex;flex-direction:column;gap:6px}
.cc-supplier-row{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ash)}
.cc-supplier-link{color:var(--bronze);text-decoration:none;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-supplier-link:hover{text-decoration:underline;color:#fff}
@media(max-width:600px){
  .cc-supplier-grid{grid-template-columns:1fr}
  .cc-supplier-card{padding:12px}
  .cc-supplier-avatar{width:32px;height:32px;font-size:11px}
}

/* ═══════════════════════════════════════════════════════
   Project Readiness Score — Control Room
   ═══════════════════════════════════════════════════════ */

/* ── Readiness Panel ── */
.cc-readiness-panel{background:linear-gradient(135deg,rgba(46,49,54,.55) 0%,rgba(30,32,35,.65) 100%);border:1px solid rgba(140,106,62,.18);border-radius:var(--r);padding:16px;margin:0 0 16px;transition:border-color .3s}
.cc-readiness-panel.level-ready{border-color:rgba(106,191,105,.35)}
.cc-readiness-panel.level-warning{border-color:rgba(245,158,11,.35)}
.cc-readiness-panel.level-critical{border-color:rgba(239,68,68,.35)}
.cc-readiness-panel:hover{border-color:rgba(140,106,62,.4)}
.cc-readiness-panel.level-ready:hover{border-color:rgba(106,191,105,.5)}
.cc-readiness-panel.level-warning:hover{border-color:rgba(245,158,11,.5)}
.cc-readiness-panel.level-critical:hover{border-color:rgba(239,68,68,.5)}

/* ── Readiness Body Layout ── */
.cc-readiness-body{display:flex;gap:24px;align-items:center}

/* ── Readiness Gauge (Ring) ── */
.cc-readiness-gauge{position:relative;flex-shrink:0;width:120px;height:120px}
.cc-readiness-ring{width:100%;height:100%}
#cc-readiness-arc{transition:stroke-dashoffset .8s ease,stroke .4s}
.cc-readiness-score-text{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.cc-readiness-pct{font-size:28px;font-weight:800;color:#fff;line-height:1;font-variant-numeric:tabular-nums}
.cc-readiness-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-top:4px}

/* ── Readiness Category Rows ── */
.cc-readiness-categories{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:10px 20px}
.cc-readiness-row{min-width:0}
.cc-readiness-row-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 4px}
.cc-readiness-row-label{font-size:12px;font-weight:650;color:var(--ash);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-readiness-row-val{font-size:12px;font-weight:700;color:#fff;font-variant-numeric:tabular-nums;flex-shrink:0;margin-left:6px}
.cc-readiness-bar{height:6px;background:rgba(181,183,185,.1);border-radius:3px;overflow:hidden}
.cc-readiness-bar-fill{height:100%;border-radius:3px;transition:width .6s ease,background .4s;background:var(--muted)}
.cc-readiness-bar-fill.high{background:#6abf69}
.cc-readiness-bar-fill.mid{background:#f59e0b}
.cc-readiness-bar-fill.low{background:#ef4444}

/* ── Readiness Responsive ── */
@media(max-width:768px){
  .cc-readiness-body{flex-direction:column;align-items:stretch}
  .cc-readiness-gauge{margin:0 auto 8px;width:100px;height:100px}
  .cc-readiness-pct{font-size:24px}
  .cc-readiness-categories{grid-template-columns:1fr}
}
@media(max-width:480px){
  .cc-readiness-panel{padding:12px}
  .cc-readiness-gauge{width:90px;height:90px}
  .cc-readiness-pct{font-size:22px}
}

/* ═══════════════════════════════════════════════════════
   Document Vault Tab — embedded container styling
   ═══════════════════════════════════════════════════════ */
.pe-panel #dv-root{margin:0 -4px}
.pe-panel .dv-grid{gap:12px}

/* ═══════════════════════════════════════════════════════
   Jobsite Tools Tab — embedded workspace container
   ═══════════════════════════════════════════════════════ */
.pe-panel #jw-content{margin:0}
.pe-panel .jw-workspace{max-width:none;padding:0}
.pe-panel .jw-header{padding:14px 0 12px}
.pe-panel .jw-header h1{font-size:22px}
.pe-panel .jw-integrations{border-top:1px solid rgba(181,183,185,.08)}

/* ═══════════════════════════════════════════════════════
   Activity Log Tab — inline timeline container
   ═══════════════════════════════════════════════════════ */
#pe-activity-timeline-root .at-timeline{margin-top:8px}
#pe-activity-timeline-root .at-empty{padding:32px 16px;text-align:center;color:var(--muted);font-size:14px}

/* ═══════════════════════════════════════════════════════
   Unified Mobile Responsive — Consistent spacing & layout
   ═══════════════════════════════════════════════════════ */

/* Header actions stack on mobile */
@media(max-width:640px){
  .pe-header-row{flex-direction:column;gap:12px}
  .pe-header-actions{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;gap:6px;padding-bottom:4px}
  .pe-header-actions .btn{flex-shrink:0;font-size:11px;padding:6px 10px}
  .pe-header h1{font-size:20px}
  .pe-header-meta{gap:10px;font-size:12px}
}

/* Tab bar mobile touch scroll */
@media(max-width:520px){
  .pe-tab{padding:7px 10px;font-size:11px;gap:4px}
  .pe-tab svg{width:14px;height:14px}
  .pe-card{padding:12px}
  .pe-card-head{flex-direction:column;align-items:flex-start;gap:6px}
  .pe-card-head h3{font-size:14px}
}

/* Activity timeline mobile sizing */
@media(max-width:640px){
  .at-event{padding:10px 0}
  .at-event-icon{width:28px;height:28px}
  .at-event-icon svg{width:14px;height:14px}
  .at-event-title{font-size:13px}
  .at-event-desc{font-size:12px}
  .at-event-header{flex-wrap:wrap;gap:4px}
  .at-event-tags{flex-wrap:wrap;gap:4px}
  .at-tag{font-size:10px;padding:2px 6px}
}

/* Workspace integration panels mobile */
@media(max-width:640px){
  .ws-audit-summary{grid-template-columns:repeat(2,1fr)}
  .ws-company-cards{grid-template-columns:1fr}
  .ws-interaction-timeline .ws-audit-entry{padding:10px 12px}
}

/* Inline activity timeline date groups */
@media(max-width:480px){
  #pe-activity-timeline-root .at-date-label{font-size:12px;padding:6px 10px}
  #pe-activity-timeline-root .at-event{gap:8px}
}

/* ── Project Overview Section ── */
.pe-start-work{background:linear-gradient(135deg,rgba(57,44,29,.72) 0%,rgba(35,32,27,.88) 100%);border:1px solid rgba(140,106,62,.45);border-radius:var(--r);padding:18px 20px;margin:16px 0 0}
.pe-start-work-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 12px}
.pe-start-work-head h3{display:flex;align-items:center;gap:7px;font-size:18px;font-weight:800;color:#fff;margin:0 0 4px}
.pe-start-work-head h3 svg{width:18px;height:18px;color:var(--bronze)}
.pe-start-work-head p{font-size:12px;color:var(--ash);margin:0}
.pe-start-work-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pe-start-work-actions .btn{font-size:12px;padding:8px 14px}
.pe-start-work-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.pe-start-work-section{background:rgba(28,30,33,.42);border:1px solid rgba(181,183,185,.12);border-radius:10px;padding:12px}
.pe-start-work-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 8px}
.pe-start-work-section-head h4{font-size:12px;font-weight:750;color:#fff;letter-spacing:.03em;text-transform:uppercase;margin:0}
.pe-start-work-link{font-size:11px;font-weight:650;color:var(--bronze);text-decoration:none}
.pe-start-work-link:hover{color:#fff}
.pe-start-work-empty{font-size:12px;color:var(--muted);padding:8px 0}
.pe-start-work-items{list-style:none;padding:0;margin:0}
.pe-start-work-items li{padding:8px 0;border-bottom:1px solid rgba(181,183,185,.08)}
.pe-start-work-items li:last-child{border-bottom:none;padding-bottom:0}
.pe-start-work-item-title{font-size:13px;font-weight:650;color:#fff;line-height:1.35}
.pe-start-work-item-meta{display:flex;gap:8px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin-top:3px}
.pe-start-work-status{color:#fca5a5}
.pe-project-overview{background:linear-gradient(135deg,rgba(46,49,54,.55) 0%,rgba(30,32,35,.65) 100%);border:1px solid rgba(140,106,62,.18);border-radius:var(--r);padding:20px 24px;margin:16px 0 0}
.pe-project-overview:hover{border-color:rgba(140,106,62,.35)}
.pe-overview-head{display:flex;align-items:center;gap:8px;margin:0 0 16px}
.pe-overview-head h3{font-size:15px;font-weight:700;color:#fff;margin:0;display:flex;align-items:center;gap:8px}
.pe-overview-head h3 svg{width:18px;height:18px;color:var(--bronze);flex-shrink:0}
.pe-overview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:0 0 16px}
.pe-overview-field{display:flex;flex-direction:column;gap:4px}
.pe-overview-label{font-size:11px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.pe-overview-value{font-size:14px;font-weight:600;color:#fff;line-height:1.3}
.pe-overview-scope{padding:14px 16px;background:rgba(28,30,33,.45);border:1px solid rgba(181,183,185,.06);border-radius:10px}
.pe-overview-scope-label{font-size:11px;font-weight:650;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 6px}
.pe-overview-scope-text{font-size:13px;color:var(--ash);line-height:1.55;margin:0}
.pe-overview-status-badge{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:6px;font-size:12px;font-weight:700;letter-spacing:.03em;text-transform:uppercase}
.pe-opportunity-link{color:#93c5fd;text-decoration:none}
.pe-opportunity-link:hover{text-decoration:underline;color:#dbeafe}
.pe-opportunity-entrypoint{margin-bottom:14px}
.pe-opportunity-entrypoint-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.pe-opportunity-entrypoint-title{font-size:14px;font-weight:700;color:#fff}
.pe-opportunity-entrypoint-meta{font-size:12px;color:var(--muted);margin-top:3px}
.pe-overview-status-badge.planning{background:rgba(159,122,234,.12);color:#9f7aea}
.pe-overview-status-badge.active{background:rgba(140,106,62,.15);color:var(--bronze)}
.pe-overview-status-badge.nearing-completion{background:rgba(99,179,237,.12);color:#63b3ed}
.pe-overview-status-badge.completed{background:rgba(106,191,105,.12);color:#6abf69}
@media(max-width:768px){
  .pe-start-work{padding:16px}
  .pe-start-work-head h3{font-size:16px}
  .pe-start-work-grid{grid-template-columns:1fr}
  .pe-overview-grid{grid-template-columns:repeat(2,1fr);gap:12px}
  .pe-project-overview{padding:16px}
}
@media(max-width:480px){
  .pe-start-work{padding:12px}
  .pe-overview-grid{grid-template-columns:1fr}
  .pe-project-overview{padding:14px}
}

/* ── Mobile Field Optimization ── */
@media(max-width:900px){
  /* Touch targets — buttons & interactive elements */
  .pe-header-actions .btn,.ps-update-btn,.ps-modal-actions .btn,.pe-card-action{min-height:44px;padding:12px 16px;font-size:14px}
  /* Form inputs — prevent iOS zoom */
  .pe-panel input,.pe-panel select,.pe-panel textarea{font-size:16px;min-height:48px}
  /* Cards — readable spacing for outdoor use */
  .pe-card{padding:16px}
  .pe-stat{padding:14px}
  /* Tab touch targets */
  .pe-tab{min-height:44px;padding:12px 16px;font-size:13px}
  /* Pipeline step touch targets */
  .ps-step-dot{width:40px;height:40px}
  .ps-modal-opt{padding:14px 16px;min-height:48px}
  /* Grid single column */
  .pe-grid-2,.pe-grid-3{grid-template-columns:1fr}
  /* Summary readable text */
  .pe-stat-val{font-size:22px}
  .pe-stat-label{font-size:12px}
}
@media(max-width:520px){
  /* Full-width buttons */
  .pe-header-actions .btn,.ps-update-btn{width:100%;justify-content:center}
  .ps-modal-actions{flex-direction:column}
  .ps-modal-actions .btn{width:100%;text-align:center}
  /* Outdoor-readable text */
  .pe-card-head h3{font-size:16px}
  .pe-header h1{font-size:22px}
}

/* ── Workspace Spacing + Alignment Polish ── */
.pe-panel {
  padding: 24px 0;
}

.pe-summary {
  gap: 16px;
  margin-bottom: 24px;
}

.pe-grid-2,
.pe-grid-3 {
  gap: 16px;
}

.pe-card {
  padding: 20px;
  margin-bottom: 18px;
}

.pe-card-head {
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 16px;
  padding-bottom: 12px;
}

.pe-card-head h3 {
  line-height: 1.35;
}

@media (max-width: 900px) {
  .pe-panel {
    padding: 20px 0;
  }

  .pe-card {
    padding: 18px;
  }
}

@media (max-width: 520px) {
  .pe-panel {
    padding: 18px 0;
  }

  .pe-card {
    padding: 16px;
  }

  .pe-card-head {
    margin-bottom: 12px;
    padding-bottom: 10px;
    gap: 8px;
  }
}

/* ── Execution Workspace ── */
.pe-exec-shell{background:linear-gradient(135deg,rgba(46,49,54,.62) 0%,rgba(30,32,35,.78) 100%);border:1px solid rgba(140,106,62,.22);border-radius:14px;padding:18px;margin:0 0 14px}
.pe-exec-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;flex-wrap:wrap}
.pe-exec-kicker{font-size:11px;font-weight:700;letter-spacing:.07em;color:var(--bronze);text-transform:uppercase;margin:0 0 6px}
.pe-exec-head h2{font-size:22px;color:#fff;margin:0 0 6px;letter-spacing:-.01em}
.pe-exec-head p{font-size:13px;color:var(--ash);margin:0;max-width:70ch;line-height:1.5}
.pe-exec-role{display:inline-flex;align-items:center;border:1px solid rgba(106,191,105,.35);background:rgba(106,191,105,.12);border-radius:999px;padding:6px 12px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#6abf69}
.pe-exec-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:14px}
.pe-exec-action-btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;border-radius:10px;border:1px solid rgba(140,106,62,.28);background:rgba(140,106,62,.12);color:#fff;font-size:13px;font-weight:650;text-decoration:none;padding:0 12px;cursor:pointer}
.pe-exec-action-btn:hover{background:rgba(140,106,62,.2);border-color:rgba(140,106,62,.45);color:#fff}
.pe-exec-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.pe-exec-module{background:rgba(28,30,33,.58);border:1px solid rgba(181,183,185,.14);border-radius:12px;padding:14px}
.pe-exec-module-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:0 0 10px}
.pe-exec-module-head h3{margin:0;color:#fff;font-size:14px;line-height:1.35}
.pe-exec-count{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;padding:0 8px;border-radius:999px;background:rgba(140,106,62,.15);color:var(--bronze);font-size:12px;font-weight:700}
.pe-exec-list{display:grid;gap:8px}
.pe-exec-item{padding:9px 10px;border-radius:8px;border:1px solid rgba(181,183,185,.1);background:rgba(46,49,54,.45)}
.pe-exec-item-title{font-size:13px;color:#fff;font-weight:600;line-height:1.35}
.pe-exec-item-meta{font-size:11px;color:var(--muted);margin-top:4px}
.pe-exec-empty{padding:12px;border-radius:10px;background:rgba(99,179,237,.08);border:1px solid rgba(99,179,237,.24);font-size:12px;color:#bfdbfe;line-height:1.45}
.pe-exec-module-link{display:inline-flex;margin-top:10px;font-size:12px;color:var(--bronze);text-decoration:none}
.pe-exec-module-link:hover{color:#fff;text-decoration:underline}
.pe-exec-module--identity{grid-column:span 2}
.pe-exec-identity-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px}
.pe-exec-identity-row{padding:8px 10px;border-radius:8px;border:1px solid rgba(181,183,185,.08);background:rgba(46,49,54,.4)}
.pe-exec-identity-label{font-size:10px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 4px}
.pe-exec-identity-value{font-size:13px;color:#fff;font-weight:600;line-height:1.35;word-break:break-word}
@media(max-width:900px){
  .pe-exec-grid{grid-template-columns:1fr}
  .pe-exec-module--identity{grid-column:auto}
}
