.portal-page{min-height:100vh;display:flex;flex-direction:column}.portal-topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 32px;border-bottom:1px solid var(--df-border);background:var(--df-surface);position:-webkit-sticky;position:sticky;top:0;z-index:5}.portal-topbar-brand{font-family:var(--df-font-display);font-weight:800;font-size:1.1rem;color:var(--df-navy);letter-spacing:-.02em}.portal-topbar-nav{display:flex;gap:8px;align-items:center}.portal-container{width:100%;max-width:1040px;margin:0 auto;padding:40px 32px 80px;flex:1 1}.landing-hero{text-align:center;padding:60px 0 40px;animation:df-fade-up var(--df-dur-base) var(--df-ease)}.landing-hero .eyebrow{display:block;margin-bottom:14px}.landing-hero h1{font-size:clamp(2.2rem,5vw,3.25rem);line-height:1.05;margin-bottom:18px}.landing-hero p{max-width:56ch;margin:0 auto 28px;font-size:1.1rem;color:var(--df-fg-subtle)}.landing-cta-row{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.landing-steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));grid-gap:18px;gap:18px;margin-top:56px}.landing-step{padding:22px;border:1px solid var(--df-border);border-radius:var(--df-radius-lg);background:var(--df-surface);box-shadow:var(--df-shadow-sm)}.landing-step-num{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--df-sky-50);color:var(--df-blue);font-family:var(--df-font-display);font-weight:700;font-size:.85rem;margin-bottom:12px}.landing-step h3{font-size:1.05rem;margin-bottom:6px}.landing-step p{font-size:.9rem;color:var(--df-fg-subtle);line-height:1.5}.portal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:28px}.portal-header h1{font-size:1.9rem;margin-bottom:6px}.portal-header .sub{color:var(--df-fg-subtle);font-size:.95rem}.welcome-banner{display:flex;gap:14px;align-items:flex-start;padding:16px 18px;border-radius:var(--df-radius-md);background:var(--df-success-soft);border:1px solid #a7f3d0;margin-bottom:26px;animation:df-fade-up var(--df-dur-base) var(--df-ease)}.welcome-banner-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--df-success);color:#fff;flex-shrink:0}.welcome-banner strong{font-family:var(--df-font-display);color:#065f46;display:block;margin-bottom:2px}.welcome-banner p{font-size:.88rem;color:#047857}.portal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));grid-gap:18px;gap:18px}.portal-card{border:1px solid var(--df-border);border-radius:var(--df-radius-lg);background:var(--df-surface);box-shadow:var(--df-shadow-sm);padding:22px}.portal-card-head{display:flex;align-items:center;gap:10px;margin-bottom:16px}.portal-card-head h2{font-size:1.05rem}.portal-card-icon{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:var(--df-radius-sm);background:var(--df-sky-50);color:var(--df-blue)}.status-list{display:flex;flex-direction:column;gap:2px}.status-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 0;border-bottom:1px solid var(--df-border)}.status-row:last-child{border-bottom:0}.status-row-label{font-size:.9rem;color:var(--df-fg)}.status-row-detail{font-size:.78rem;color:var(--df-slate-400);margin-top:2px}.qa-meter{height:8px;background:var(--df-border);overflow:hidden;margin-bottom:16px}.qa-meter,.qa-meter-bar{border-radius:var(--df-radius-pill)}.qa-meter-bar{height:100%;background:linear-gradient(90deg,var(--df-blue),var(--df-green))}.qa-check{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:.88rem}.qa-check .tick{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;flex-shrink:0}.qa-check .tick.done{background:var(--df-success);color:#fff}.qa-check .tick.todo{border:2px solid var(--df-border-strong)}.qa-check.done .label{color:var(--df-fg-subtle)}.summary-dl{margin:0;display:grid;grid-gap:0;gap:0}.summary-dl>div{display:grid;grid-template-columns:180px 1fr;grid-gap:14px;gap:14px;padding:9px 0;border-bottom:1px solid var(--df-border);font-size:.88rem}.summary-dl>div:last-child{border-bottom:0}.summary-dl dt{color:var(--df-fg-subtle);font-weight:500}.summary-dl dd{margin:0;color:var(--df-fg)}.card-span-2{grid-column:1/-1}.client-table{width:100%;border-collapse:collapse;background:var(--df-surface);border:1px solid var(--df-border);border-radius:var(--df-radius-lg);overflow:hidden}.client-table th{text-align:left;font-family:var(--df-font-display);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;color:var(--df-slate);background:var(--df-off-white)}.client-table td,.client-table th{padding:14px 16px;border-bottom:1px solid var(--df-border)}.client-table td{font-size:.9rem;color:var(--df-fg)}.client-table tr:last-child td{border-bottom:0}.client-table tbody tr{transition:background var(--df-dur-fast) var(--df-ease)}.client-table tbody tr:hover{background:var(--df-sky-50)}.client-table a{color:var(--df-blue-700);font-weight:600}.client-name{font-weight:600;color:var(--df-fg)}.client-sub{font-size:.78rem;color:var(--df-slate-400)}.mini-meter{display:inline-flex;align-items:center;gap:8px}.mini-meter-track{width:70px;height:6px;border-radius:var(--df-radius-pill);background:var(--df-border);overflow:hidden}.mini-meter-fill{height:100%;background:var(--df-blue)}.empty-state{text-align:center;padding:70px 20px;border:1px dashed var(--df-border-strong);border-radius:var(--df-radius-lg);background:var(--df-surface)}.empty-state h2{font-size:1.2rem;margin-bottom:8px}.empty-state p{color:var(--df-fg-subtle);margin-bottom:20px}.metric-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:14px;gap:14px;margin-bottom:26px}.metric{padding:18px 20px;border:1px solid var(--df-border);border-radius:var(--df-radius-md);background:var(--df-surface)}.metric-value{font-family:var(--df-font-display);font-size:1.8rem;font-weight:700;color:var(--df-navy);line-height:1}.metric-label{font-size:.8rem;color:var(--df-fg-subtle);margin-top:6px}@media (max-width:640px){.portal-container{padding:28px 18px 60px}.portal-topbar{padding:14px 18px}.client-table thead,.summary-dl>div{grid-template-columns:1fr}.client-table,.client-table tbody,.client-table td,.client-table th,.client-table thead,.client-table tr{display:block}.client-table thead{display:none}.client-table td{border-bottom:0}.client-table tr{border-bottom:1px solid var(--df-border);padding:8px 0}}.thread{display:flex;flex-direction:column}.thread-item{max-width:78%;padding:12px 14px;border-radius:14px;margin:6px 0;font-size:.92rem}.thread-in{background:var(--df-sky-50,#eff6ff);border:1px solid var(--df-sky,#dbeafe);align-self:flex-start}.thread-out{border:1px solid var(--df-border);align-self:flex-end}.thread-out,.thread-sys{background:var(--df-surface)}.thread-sys{border:1px dashed var(--df-border-strong,#cbd5e1);max-width:100%;align-self:stretch}.thread-meta{display:flex;justify-content:space-between;gap:10px;font-size:.74rem;color:var(--df-slate,#64748b);margin-bottom:4px;text-transform:capitalize}.thread-when{white-space:nowrap;color:var(--df-slate-400,#94a3b8)}.thread-body{color:var(--df-charcoal,#1e293b);word-break:break-word;white-space:pre-wrap}.thread-direction{display:inline-block;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--df-blue,#2563eb);background:var(--df-sky-50,#eff6ff);border:1px solid var(--df-sky,#dbeafe);border-radius:999px;padding:1px 8px}.call-chips{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:8px}.call-chip{font-size:.72rem;font-weight:600;color:var(--df-slate,#64748b);background:var(--df-off-white,#f8fafc);border:1px solid var(--df-border,#e2e8f0);border-radius:999px;padding:2px 9px}.call-recording{font-size:.78rem;font-weight:600;color:var(--df-blue,#2563eb);text-decoration:none}.call-recording:hover{text-decoration:underline}.call-transcript{margin-top:8px}.call-transcript>summary{display:inline-flex;align-items:center;font-size:.78rem;font-weight:600;color:var(--df-slate,#64748b);cursor:pointer;list-style:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.call-transcript>summary::-webkit-details-marker{display:none}.call-transcript>summary:before{content:"▸";display:inline-block;margin-right:6px;transition:transform var(--df-dur-fast,.12s) var(--df-ease,ease)}.call-transcript[open]>summary:before{transform:rotate(90deg)}.call-transcript>summary:hover{color:var(--df-blue,#2563eb)}.call-transcript-body{margin:8px 0 0;padding:12px 14px;max-height:320px;overflow-y:auto;background:var(--df-off-white,#f8fafc);border:1px solid var(--df-border,#e2e8f0);border-radius:12px;font:inherit;font-size:.85rem;line-height:1.5;color:var(--df-charcoal,#1e293b);white-space:pre-wrap;word-break:break-word}.composer-card{margin-top:18px;background:var(--df-surface);border:1px solid var(--df-border);border-radius:16px;padding:18px 20px}.composer-controls{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px}.composer-controls label{font-size:.82rem;font-weight:600;color:var(--df-slate,#64748b)}.composer-controls select{border:1px solid var(--df-border-strong,#cbd5e1);border-radius:8px;padding:7px 10px;font:inherit;font-size:.85rem;background:#fff;margin-left:4px}.composer-call{padding:8px 16px;font-size:.85rem}.composer{display:flex;gap:10px;align-items:flex-end}.composer textarea{flex:1 1;border:1px solid var(--df-border-strong,#cbd5e1);border-radius:12px;padding:12px 14px;font:inherit;font-size:.92rem;min-height:68px;resize:vertical;outline:none}.composer textarea:focus{border-color:var(--df-blue,#2563eb);box-shadow:0 0 0 3px rgba(37,99,235,.14)}.composer-error{color:#b91c1c;font-size:.85rem;margin:8px 0 0}.composer-hint{color:var(--df-slate-400,#94a3b8);font-size:.8rem;margin:8px 0 0}.cancel-call{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;border-radius:999px;padding:4px 12px;font-size:.78rem;font-weight:600;cursor:pointer;margin-top:8px}.cancel-call:disabled{opacity:.6;cursor:default}.approval-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.approval-actions .approval-btn{padding:8px 16px;font-size:.85rem}.approval-actions .cancel-call{margin-top:0}.draft-card{margin-top:18px;background:var(--df-sky-50,#eff6ff);border:1px solid var(--df-sky,#dbeafe);border-left:3px solid var(--df-blue,#2563eb);border-radius:16px;padding:16px 20px}.draft-head{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-bottom:12px}.draft-badge{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--df-blue-700,#1d4ed8)}.draft-model{font-size:.72rem;color:var(--df-slate-400,#94a3b8)}.draft-flag{font-size:.72rem;font-weight:700;padding:1px 8px;border-radius:999px}.draft-flag-esc{background:#fef3c7;color:#92400e}.draft-flag-safe{background:#dcfce7;color:#166534}.draft-label{display:block;font-size:.82rem;font-weight:600;color:var(--df-slate,#64748b);margin-bottom:6px}.draft-textarea{width:100%;border:1px solid var(--df-border-strong,#cbd5e1);border-radius:12px;padding:12px 14px;font:inherit;font-size:.92rem;min-height:68px;resize:vertical;outline:none;background:#fff}.draft-textarea:focus{border-color:var(--df-blue,#2563eb);box-shadow:0 0 0 3px rgba(37,99,235,.14)}.draft-textarea:disabled{opacity:.7}.draft-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:12px}.draft-actions .button{padding:8px 16px;font-size:.85rem}.draft-reject{background:#fef2f2;border:1px solid #fecaca;color:#b91c1c;border-radius:999px;padding:7px 16px;font-size:.85rem;font-weight:600;cursor:pointer}.draft-reject:disabled{opacity:.6;cursor:default}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:14px;gap:14px;margin-bottom:32px}.stat{background:var(--df-surface);border:1px solid var(--df-border);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:4px}.stat-value{font-family:var(--df-font-display);font-weight:800;font-size:1.7rem;color:var(--df-navy);line-height:1}.stat-label{font-size:.8rem;color:var(--df-slate,#64748b)}.dash-section{margin-bottom:32px}.dash-section h2{font-size:1.05rem;margin:0 0 12px}.activity-list{list-style:none;margin:0;padding:0;background:var(--df-surface);border:1px solid var(--df-border);border-radius:14px}.activity-list li{display:flex;justify-content:space-between;gap:12px;padding:11px 16px;border-bottom:1px solid var(--df-border);font-size:.92rem}.activity-list li:last-child{border-bottom:0}