/* Feature composition adapters for the frozen V2 Portal. Functional hooks remain production-owned. */
.asfit-v2 .pv2 { width:100%; max-width:1440px; padding:24px; display:flex; flex-direction:column; gap:20px; font-size:14px; }
.pv2 *, .pv2-auth *, .pv2-dialog * { box-sizing:border-box; min-width:0; }
.pv2 h1,.pv2 h2,.pv2 h3,.pv2 h4,.pv2 p { margin:0; }
.pv2 h1 { font-size:32px; line-height:1.25; font-weight:800; color:var(--text-heading); overflow-wrap:anywhere; }
.pv2.pv2-dashboard h1,.pv2.client-documents h1 { font-size:24px; }
.pv2 h2 { font-size:16px; line-height:1.4; font-weight:700; }
.pv2 h3,.pv2 h4 { font-size:14px; line-height:1.5; }
.pv2 p { line-height:1.6; color:var(--text-secondary); }
.pv2 .page-header,.pv2-page-heading { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:flex-start; gap:16px; margin:0; }
.pv2 .page-header>div,.pv2-page-heading>div { display:flex; flex-direction:column; gap:8px; }
.pv2 .page-kicker,.pv2-kicker { color:var(--asfit-primary); font-size:11px; font-weight:700; text-transform:uppercase; }
.pv2-actions { display:flex; align-items:center; flex-wrap:wrap; gap:8px; }
.pv2 .pv2-page-heading>.pv2-actions { flex-direction:row; }
.pv2-focus>.badge { align-self:flex-start; }
.pv2 .btn { min-height:40px; padding:8px 14px; font-size:13px; font-weight:600; line-height:1.4; gap:8px; }
.pv2 .btn-sm { min-height:32px; padding:4px 10px; font-size:12px; border-radius:6px; }
.pv2 .btn-primary { box-shadow:0 2px 4px rgba(37,99,235,.18); }
.pv2 .badge { font-size:11px; font-weight:600; padding:2px 8px; min-height:0; line-height:1.4; border-radius:999px; }
.pv2 :is(.card,.pv2-card) { background:var(--bg-surface); border:1px solid var(--border-subtle); border-radius:8px; box-shadow:var(--shadow-sm); }
.pv2-card { padding:20px; display:flex; flex-direction:column; gap:14px; }
.pv2-card-heading { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.pv2-muted { color:var(--text-muted); font-size:12px; }
.pv2-grid-3 { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; }
.pv2-columns { display:grid; grid-template-columns:minmax(0,2fr) minmax(260px,1fr); gap:20px; align-items:start; }
.pv2-stack { display:flex; flex-direction:column; gap:16px; }
.pv2-kpi { min-height:130px; justify-content:space-between; }
.pv2-kpi strong { font-size:26px; font-weight:800; color:var(--text-heading); }
.pv2-kpi .pv2-lead-name { font-size:21px; }
.pv2-kpi-label { display:flex; justify-content:space-between; align-items:center; color:var(--text-muted); font-size:12px; font-weight:600; text-transform:uppercase; }
.pv2-icon-box { width:32px; height:32px; flex:0 0 32px; display:grid; place-items:center; background:var(--asfit-primary-light); color:var(--asfit-primary); border-radius:8px; }
.pv2-icon-box svg { width:18px; height:18px; }
.pv2-focus { border-left:4px solid var(--asfit-primary); }
.pv2-focus .pv2-card-heading h2 { max-width:70ch; }
.pv2 progress { display:block; width:100%; height:8px; border:0; border-radius:99px; overflow:hidden; appearance:none; }
.pv2 progress::-webkit-progress-bar { background:var(--bg-subtle); border-radius:99px; }
.pv2 progress::-webkit-progress-value { background:linear-gradient(90deg,var(--asfit-primary),var(--asfit-cyan)); border-radius:99px; }
.pv2 progress::-moz-progress-bar { background:var(--asfit-primary); }
.pv2-meta-row { display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; color:var(--text-muted); font-size:12px; }
.pv2 :is(.documents-table,.pv2-table-wrap) { width:100%; overflow-x:auto; border:1px solid var(--border-subtle); border-radius:8px; }
.pv2 table { border-collapse:collapse; width:100%; font-size:13px; }
.pv2-dashboard .pv2-table-wrap table { min-width:540px; }
.pv2-dashboard .pv2-table-wrap td:first-child { min-width:220px; }
.pv2-dashboard .pv2-table-wrap .btn { white-space:nowrap; }
.pv2 th { padding:12px 16px; text-align:left; background:var(--bg-subtle); color:var(--text-secondary); font-size:11px; font-weight:600; text-transform:uppercase; }
.pv2 td { padding:14px 16px; border-top:1px solid var(--border-light); vertical-align:middle; overflow-wrap:anywhere; }
.pv2 td strong,.pv2 td small { display:block; }
.pv2 td small { font-size:12px; color:var(--text-muted); margin-top:4px; }
.pv2 .form-control { min-height:40px; padding:9px 12px; border:1px solid var(--border-medium); border-radius:6px; font-size:13px; }
.pv2 .form-label { font-size:12px; font-weight:600; }
.pv2-toolbar { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:16px; padding:16px 20px; background:#fff; border:1px solid var(--border-subtle); border-radius:8px; }
.pv2-toolbar form { display:flex; gap:8px; flex:1; max-width:600px; }
.pv2-toolbar input { flex:1; width:100%; }
.pv2-toolbar select { max-width:200px; }
.pv2 .project-status-filters { display:flex; flex-wrap:wrap; gap:6px; border:0; }
.pv2 .project-filter { font-size:12px; padding:6px 10px; border-radius:6px; }
.pv2 .project-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; margin:0; }
.pv2 .project-card { display:flex; flex-direction:column; margin:0; overflow:visible; }
.pv2 .project-card-body { padding:20px; display:flex; flex-direction:column; gap:14px; }
.pv2 .project-card h2 { font-size:17px; }
.pv2 .project-card .project-meta-list { display:grid; grid-template-columns:1fr 1fr; gap:12px; padding:12px; margin:0; background:var(--bg-app); border:1px solid var(--border-subtle); border-radius:6px; }
.pv2 .project-meta-list dt { font-size:11px; color:var(--text-muted); }
.pv2 .project-meta-list dd { margin:4px 0 0; font-size:12px; }
.pv2 .project-card-actions { display:flex; gap:8px; padding-top:16px; border-top:1px solid var(--border-subtle); margin:0; }
.pv2 .project-card-actions .project-workspace-cta { flex:1; }
.pv2 .project-card .project-card-actions a { width:auto; flex:0 0 auto; }
.pv2 .project-card .project-card-actions .project-workspace-cta { flex:1 1 0; white-space:normal; }
.pv2 .pv2-toolbar .project-search button { display:inline-flex; position:static; width:auto; height:auto; clip:auto; clip-path:none; overflow:visible; padding:8px 14px; }
.pv2-workspace-heading { display:flex; flex-direction:column; gap:12px; }
.pv2-workspace-meta { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.pv2-request-change { margin-left:auto; }
.pv2 .project-workspace-nav { display:flex; flex-wrap:nowrap; overflow:auto; border:0; border-bottom:1px solid var(--border-subtle); border-radius:0; background:transparent; padding:0; gap:12px; margin-top:12px; width:100%; }
.pv2 .workspace-tab { flex:0 0 auto; display:flex; align-items:center; gap:6px; padding:14px 10px; font-size:13px; border:0; border-bottom:2px solid transparent; border-radius:0; white-space:nowrap; color:var(--text-secondary); background:none; }
.pv2 .workspace-tab.active { color:var(--asfit-primary); border-bottom-color:var(--asfit-primary); background:none; }
.pv2 .project-workspace-nav .nav-unread-count { font-size:10px; height:auto; min-width:0; padding:1px 5px; }
.pv2 .project-overview-grid { display:grid; grid-template-columns:minmax(0,2fr) minmax(240px,1fr); gap:16px; }
.pv2 .project-progress-card { padding:20px; display:flex; flex-direction:column; gap:16px; }
.pv2 .project-overview-card-header { display:flex; justify-content:space-between; align-items:center; gap:12px; margin:0; padding:0; }
.pv2 .project-overview-card-header strong { font-size:20px; color:var(--asfit-primary); }
.pv2 .project-overview-facts { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:0; font-size:12px; }
.pv2 .project-overview-facts dt { color:var(--text-muted); }
.pv2 .project-overview-facts dd { margin:4px 0 0; }
.pv2 .project-manager-card { padding:20px; display:flex; flex-direction:column; gap:14px; }
.pv2 .project-manager-avatar { width:36px; height:36px; border-radius:50%; color:#fff; background:var(--asfit-navy-800); }
.pv2 :is(.milestones-section-header,.project-files-header,.project-meetings-header,.project-approvals-header,.project-change-requests-header,.project-messages-header) { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; padding:0; margin:0 0 16px; background:none; border:0; }
.pv2 :is(.project-files-panel,.project-meetings-panel,.project-approvals-panel,.project-change-requests-panel) { padding:0; border:0; box-shadow:none; background:none; overflow:visible; }
.pv2 .milestones-list { display:flex; flex-direction:column; gap:12px; }
.pv2 .milestone-card { padding:20px; margin:0; display:grid; grid-template-columns:minmax(0,1fr) minmax(160px,240px); align-items:center; gap:16px; }
.pv2 .milestone-card-current { border-left:4px solid var(--asfit-primary); }
.pv2 .milestone-card-header { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:8px; }
.pv2 .milestone-dates { margin:0; font-size:12px; color:var(--text-muted); }
.pv2 .project-messages-panel { border:1px solid var(--border-subtle); border-radius:8px; overflow:hidden; box-shadow:var(--shadow-sm); background:#fff; }
.pv2 .project-messages-header { padding:14px 18px; margin:0; border-bottom:1px solid var(--border-subtle); }
.pv2 .project-messages-header h2 { font-size:14px; }
.pv2 .project-messages-header p { font-size:12px; }
.pv2 .project-channel-status { font-size:11px; }
.pv2 .project-message-thread { height:430px; max-height:55vh; min-height:200px; padding:20px; background:var(--bg-app); overflow:auto; }
.pv2 .project-message-list { display:flex; flex-direction:column; gap:16px; padding:0; margin:0; list-style:none; }
.pv2 .project-message-row { display:flex; align-items:flex-end; gap:8px; margin:0; }
.pv2 .project-message-row-client { justify-content:flex-end; }
.pv2 .project-message-bubble { max-width:78%; border:1px solid var(--border-subtle); border-radius:8px; padding:12px 14px; background:#fff; }
.pv2 .project-message-row-client .project-message-bubble { background:var(--asfit-primary-light); border-color:var(--asfit-primary-border); }
.pv2 .project-message-meta { display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; font-size:11px; margin-bottom:6px; }
.pv2 .project-message-body { white-space:pre-wrap; overflow-wrap:anywhere; font-size:13px; }
.pv2 .project-message-composer { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px 12px; padding:16px 18px; background:#fff; border-top:1px solid var(--border-subtle); }
.pv2 .project-message-composer-field { grid-column:1; }
.pv2 .project-message-composer textarea { min-height:76px; }
.pv2 .project-message-guidance { grid-row:2; font-size:11px; }
.pv2 .project-message-send { grid-column:2; grid-row:1; align-self:end; }
.pv2 .project-message-empty { padding:30px; }
.pv2 :is(.project-file-list,.project-meeting-list,.project-approval-list,.project-change-request-list) { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; padding:0; overflow:visible; scroll-snap-type:none; }
.pv2 :is(.project-file-card,.project-meeting-card,.project-approval-card,.project-change-request-card) { width:auto; min-width:0; max-width:none; margin:0; padding:18px; border:1px solid var(--border-subtle); border-radius:8px; background:#fff; box-shadow:var(--shadow-xs); overflow-wrap:anywhere; }
.pv2 :is(.project-file-card,.project-meeting-card,.project-approval-card,.project-change-request-card)>header { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; margin-bottom:12px; }
.pv2 :is(.project-approval-group,.project-meeting-group,.project-change-request-group) { margin:20px 0 0; }
.pv2 :is(.project-approval-group,.project-meeting-group,.project-change-request-group)>h3 { margin-bottom:12px; }
.pv2 :is(.project-approval-description,.project-change-request-description,.project-meeting-description) { white-space:pre-wrap; line-height:1.6; font-size:13px; }
.pv2 .portal-rail-controls { display:none; }
.pv2 :is(.project-meeting-list,.project-approval-list,.project-change-request-list) { grid-template-columns:1fr; }
.pv2 .milestone-card { display:flex; flex-direction:column; align-items:stretch; }
.pv2 .pv2-file-card { display:flex; flex-direction:column; gap:14px; min-width:0; max-width:none; width:auto; padding:18px; border:1px solid var(--border-subtle); border-radius:8px; background:#fff; scroll-snap-align:none; }
.pv2 .project-file-type { border-radius:6px; font-family:var(--font-mono); font-size:11px; background:var(--asfit-primary-light); color:var(--asfit-primary); }
.pv2 .project-file-actions { margin-top:auto; display:flex; flex-wrap:wrap; gap:8px; }
.pv2 .pv2-upload-action { margin-top:16px; }
.pv2 :is(.project-file-upload,.project-change-request-form) { padding:20px; background:#fff; border:1px solid var(--border-subtle); border-radius:8px; }
.pv2 :is(.project-approval-decision,.project-meeting-cancel form) { display:flex; flex-direction:column; gap:10px; }
.pv2-notice { padding:14px 18px; border:1px solid var(--asfit-primary-border); border-left:4px solid var(--asfit-primary); background:var(--asfit-primary-light); color:var(--text-secondary); border-radius:8px; font-size:13px; }
.pv2-notice strong { display:block; color:var(--text-heading); margin-bottom:4px; }
.pv2 .pv2-tab-filters { display:flex; gap:10px; border-bottom:1px solid var(--border-subtle); overflow:auto; }
.pv2-tab-filters button { flex:0 0 auto; border:0; border-bottom:2px solid transparent; color:var(--text-muted); background:none; padding:14px 10px; font-size:13px; cursor:pointer; }
.pv2-tab-filters button[aria-pressed=true] { color:var(--asfit-primary); border-bottom-color:var(--asfit-primary); }
.pv2-doc-cards { display:none; }
.pv2-doc-card { padding:18px; display:flex; flex-direction:column; gap:12px; }
.pv2-doc-card dl { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:0; padding:12px; background:var(--bg-subtle); border-radius:6px; }
.pv2-doc-card dt { font-size:11px; color:var(--text-muted); }
.pv2-doc-card dd { margin:4px 0 0; font-size:12px; }
.pv2 [hidden],.pv2-dialog [hidden] { display:none !important; }
.pv2 .shared-document { max-width:100%; padding:32px; border:1px solid var(--border-subtle); border-radius:8px; box-shadow:var(--shadow-sm); background:#fff; }
.pv2 .document-brand { display:flex; align-items:center; gap:12px; padding-bottom:20px; border-bottom:1px solid var(--border-subtle); }
.pv2 .document-parties { display:grid; grid-template-columns:1fr 1fr; gap:16px; padding:18px; background:var(--bg-subtle); border-radius:6px; }
.pv2 .document-parties dd { margin:4px 0 0; overflow-wrap:anywhere; }
.pv2 .document-section { margin-top:24px; }
.pv2 .document-prose { white-space:pre-wrap; overflow-wrap:anywhere; margin-top:10px; }
.pv2 .notification-list { display:flex; flex-direction:column; padding:0; overflow:hidden; }
.pv2 .notification-row { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:20px 24px; border-bottom:1px solid var(--border-subtle); }
.pv2 .notification-row.is-actionable { border-left:4px solid var(--asfit-primary); background:var(--asfit-primary-light); }
.pv2 .notification-row:last-child { border-bottom:0; }
.pv2 .notification-row h2 { font-size:14px; }
.pv2 .notification-row p,.pv2 .notification-row time { font-size:12px; }
.pv2 .account-grid { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.pv2 .account-panel { padding:20px; }
.pv2 .account-panel>header { padding:0; border:0; margin-bottom:16px; }
.pv2 .account-body { padding:0; }
.pv2 .account-body dl { display:grid; grid-template-columns:1fr minmax(0,1fr); gap:14px; margin:20px 0; padding-top:18px; border-top:1px solid var(--border-subtle); }
.pv2 .account-body dt { color:var(--text-muted); font-size:12px; }
.pv2 .account-body dd { margin:0; text-align:right; overflow-wrap:anywhere; font-size:13px; }
.pv2-profile { display:flex; gap:12px; align-items:center; }
.pv2-profile-avatar { display:grid; place-items:center; flex:0 0 48px; width:48px; height:48px; border-radius:50%; background:var(--asfit-primary); color:#fff; font-size:18px; font-weight:700; }
.pv2 .project-message-inbox-list,.pv2 .resource-project-list { display:flex; flex-direction:column; gap:12px; border:0; background:none; }
.pv2 .project-message-inbox-row,.pv2 .resource-project-row { padding:20px; border:1px solid var(--border-subtle); border-radius:8px; }
.asfit-v2 .pv2-auth { background:var(--bg-app); }
.pv2-auth .auth-shell { padding:48px 20px; min-height:100dvh; align-items:center; justify-content:center; background:var(--bg-app); }
.pv2-auth .auth-card { width:100%; max-width:460px; min-height:0; padding:32px; border:1px solid var(--border-subtle); border-radius:8px; background:#fff; box-shadow:var(--shadow-sm); }
.pv2-auth .auth-logo { border-radius:8px; }
.pv2-auth .auth-header { margin-bottom:24px; }
.pv2-auth .auth-header h1 { font-size:22px; }
.pv2-auth .auth-brand-header { display:flex; flex-direction:column; gap:10px; align-items:center; margin:0 0 24px; text-align:center; }
.pv2-auth .auth-title { font-size:22px; margin:4px 0 0; }
.pv2-auth .auth-subtitle { font-size:13px; color:var(--text-muted); margin:0; }
.pv2-auth-identity { display:flex; align-items:center; gap:8px; font-size:12px; font-weight:700; color:var(--asfit-primary); }
.pv2-auth-mark { display:grid; place-items:center; width:32px; height:32px; border-radius:8px; background:var(--asfit-primary); color:#fff; font-size:12px; }
.pv2-auth .form-label { font-size:12px; font-weight:600; }
.pv2-auth .form-control { min-height:44px; border-radius:6px; font-size:14px; }
.pv2-auth .auth-notice-banner { padding:12px; background:var(--bg-subtle); border:1px solid var(--border-subtle); border-radius:6px; font-size:12px; margin:18px 0; }
.pv2-dialog { width:min(520px,calc(100% - 32px)); max-height:calc(100dvh - 40px); overflow:auto; padding:24px; color:var(--text-body); background:#fff; border:1px solid var(--border-subtle); border-radius:8px; box-shadow:var(--shadow-modal); }
.pv2-dialog::backdrop { background:rgba(15,23,42,.55); }
.pv2-dialog h2 { font-size:18px; margin:0 32px 20px 0; }
.pv2-dialog form { display:flex; flex-direction:column; gap:12px; padding:0; margin:0; border:0; background:none; }
.pv2-dialog textarea,.pv2-dialog input:not([type=hidden]) { max-width:100%; width:100%; padding:10px 12px; border:1px solid var(--border-medium); border-radius:6px; font:inherit; }
.pv2-dialog .form-label { font-size:12px; }
.pv2-dialog-close { position:absolute; right:12px; top:12px; display:grid; place-items:center; width:36px; height:36px; border:0; border-radius:6px; background:var(--bg-subtle); color:var(--text-secondary); font-size:24px; cursor:pointer; }
@media(max-width:1024px) { .pv2-columns,.pv2 .project-overview-grid { grid-template-columns:1fr; } .pv2-grid-3 { gap:12px; } }
@media(max-width:768px) { .asfit-v2 .pv2 { padding:16px 12px 88px; gap:16px; } .pv2 h1 { font-size:23px; } .pv2-grid-3,.pv2 .project-grid,.pv2 .account-grid { grid-template-columns:1fr; } .pv2-kpi { min-height:126px; } .pv2-actions { width:100%; } .pv2-actions .btn { flex:1; } .pv2-toolbar { padding:14px; } .pv2-toolbar form { flex-wrap:wrap; } .pv2-toolbar input { flex-basis:100%; } .pv2 .project-overview-facts { grid-template-columns:1fr; } .pv2 .milestone-card { grid-template-columns:1fr; } .pv2 :is(.project-file-list,.project-meeting-list,.project-approval-list,.project-change-request-list) { grid-template-columns:1fr; } .pv2-doc-desktop { display:none; } .pv2-doc-cards { display:flex; flex-direction:column; gap:12px; } .pv2 .shared-document { padding:18px; } .pv2 .notification-row { padding:16px; } .pv2 .project-message-composer { grid-template-columns:1fr; padding:14px; } .pv2 .project-message-send { grid-row:auto; grid-column:auto; } .pv2 .project-message-thread { height:400px; max-height:52vh; padding:12px; } .pv2 .project-message-bubble { max-width:85%; } .pv2 .btn { min-height:44px; } .pv2 .document-parties { grid-template-columns:1fr; } .pv2-auth .auth-card { padding:24px; } .pv2-auth .auth-shell { padding:24px 12px; } }
