:root{--p-bg: #fafafb;--p-surface: #ffffff;--p-border: #ececf0;--p-border-strong: #e0e2e8;--p-text: #1a1c22;--p-text-2: #5b6370;--p-text-3: #9aa0ac;--p-accent: #06bf7b;--p-accent-hover: #05a86b;--p-accent-soft: #ecfbf4;--p-accent-border: #c7efdd;--p-radius: 12px;--p-radius-sm: 8px;--p-shadow: 0 1px 2px rgba(20, 24, 33, .04);color:var(--p-text);background:var(--p-bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:13px;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;background:var(--p-bg)}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}svg{width:16px;height:16px;flex-shrink:0}.portal-login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--p-bg)}.portal-login-card{width:min(100%,400px);display:flex;flex-direction:column;gap:22px;padding:32px;background:var(--p-surface);border:1px solid var(--p-border);border-radius:16px;box-shadow:var(--p-shadow)}.portal-login-brand{display:flex;align-items:center;gap:12px}.portal-login-brand strong{display:block;font-size:15px;font-weight:650}.portal-login-brand span{display:block;margin-top:2px;color:var(--p-text-3);font-size:11px;font-weight:600;letter-spacing:.1em;text-transform:uppercase}.portal-login-card h1{margin:0;font-size:24px;font-weight:680;line-height:1.2;letter-spacing:-.01em}.portal-login-card p{margin:6px 0 0;color:var(--p-text-2);font-size:13px;line-height:1.55}.portal-login-form{display:flex;flex-direction:column;gap:14px}.portal-login-form label{display:flex;flex-direction:column;gap:6px}.portal-login-form label span{color:var(--p-text-2);font-size:12px;font-weight:600}.portal-login-form input{min-height:42px;padding:0 12px;color:var(--p-text);background:var(--p-surface);border:1px solid var(--p-border-strong);border-radius:var(--p-radius-sm);transition:border-color .15s ease,box-shadow .15s ease}.portal-login-form input:focus{outline:none;border-color:var(--p-accent);box-shadow:0 0 0 3px #06bf7b1f}.portal-login-form button{min-height:44px;color:#fff;background:var(--p-accent);border:1px solid var(--p-accent);border-radius:var(--p-radius-sm);font-weight:620;transition:background .15s ease}.portal-login-form button:hover{background:var(--p-accent-hover);border-color:var(--p-accent-hover)}.portal-login-error{padding:10px 12px;color:#b42318;background:#fef3f2;border:1px solid #fecdca;border-radius:var(--p-radius-sm);font-size:12px;font-weight:550}.portal-login-demo{margin:0;padding-top:2px;color:var(--p-text-3);font-size:11px;line-height:1.5}.portal-login-demo code{color:var(--p-text-2);background:#f3f4f6;border-radius:4px;padding:1px 5px;font-size:11px}.portal-shell{min-height:100vh;color:var(--p-text);background:var(--p-bg)}.portal-topbar{height:60px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:var(--p-surface);border-bottom:1px solid var(--p-border)}.portal-brand,.supplier-identity,.supplier-actions,.portal-signout,.portal-tab,.secondary-action,.primary-action,.document-row,.payment-summary-row,.activity-item,.team-card{display:flex;align-items:center}.portal-brand{gap:12px}.portal-mark{width:30px;height:30px;display:grid;place-items:center;border-radius:8px;background:var(--p-accent-soft);color:var(--p-accent);font-size:18px;font-weight:700;line-height:1}.portal-brand-name{font-size:14px;font-weight:640}.portal-brand-subtitle{margin-top:1px;color:var(--p-text-3);font-size:10px;font-weight:600;letter-spacing:.12em}.portal-signout{gap:8px;color:var(--p-text-2);background:transparent;border:0;font-size:13px;font-weight:550;padding:8px 10px;border-radius:var(--p-radius-sm);transition:background .15s ease,color .15s ease}.portal-signout:hover{color:var(--p-text);background:#f3f4f6}.portal-content{width:min(100%,1180px);margin:0 auto;padding:28px 24px 72px}.supplier-hero,.portal-panel,.metric-card,.onboarding-alert{background:var(--p-surface);border:1px solid var(--p-border);border-radius:var(--p-radius)}.supplier-hero{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 24px}.supplier-identity{min-width:0;gap:16px}.supplier-icon{width:52px;height:52px;display:grid;place-items:center;color:var(--p-accent);background:var(--p-accent-soft);border:1px solid var(--p-accent-border);border-radius:14px}.supplier-icon svg{width:26px;height:26px}.supplier-identity h1{margin:0;color:var(--p-text);font-size:20px;font-weight:660;line-height:1.2;letter-spacing:-.01em}.supplier-identity p{margin:4px 0 0;color:var(--p-text-2);font-size:13px;line-height:1.3}.supplier-identity span{display:inline-block;margin-top:3px;color:var(--p-text-3);font-size:12px}.supplier-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px}.secondary-action,.primary-action,.small-action,.invoice-form button,.document-row button{min-height:36px;border-radius:var(--p-radius-sm);border:1px solid var(--p-border-strong);font-weight:580;font-size:13px;transition:background .15s ease,border-color .15s ease,color .15s ease}.secondary-action{gap:7px;padding:0 14px;color:var(--p-text-2);background:var(--p-surface)}.secondary-action:hover,.document-row button:hover,.small-action:hover{color:var(--p-text);background:#f6f7f9;border-color:var(--p-border-strong)}.primary-action{gap:7px;padding:0 16px;color:#fff;background:var(--p-accent);border-color:var(--p-accent)}.primary-action:hover,.invoice-form button:hover{background:var(--p-accent-hover);border-color:var(--p-accent-hover)}.status-pill{display:inline-flex;align-items:center;min-height:28px;padding:0 12px;border-radius:999px;font-size:12px;font-weight:600}.status-pill.success{color:#067a48;background:var(--p-accent-soft);border:1px solid var(--p-accent-border)}.status-pill.warn{color:#9a6700;background:#fffaeb;border:1px solid #fde8b5}.status-pill.danger{color:#b42318;background:#fef3f2;border:1px solid #fecdca}.portal-tabs{display:flex;flex-wrap:wrap;gap:2px;margin-top:24px;padding:4px;background:#f3f4f6;border:1px solid var(--p-border);border-radius:10px}.portal-tab{flex:1 1 auto;min-height:36px;justify-content:center;gap:7px;padding:0 12px;color:var(--p-text-2);background:transparent;border:0;border-radius:7px;font-size:13px;font-weight:550;white-space:nowrap;transition:background .15s ease,color .15s ease}.portal-tab svg{width:15px;height:15px;opacity:.85}.portal-tab.active{color:var(--p-text);background:var(--p-surface);box-shadow:var(--p-shadow)}.portal-tab.active svg{color:var(--p-accent);opacity:1}.portal-tab:not(.active):hover{color:var(--p-text);background:#fff9}.portal-stack{display:flex;flex-direction:column;gap:20px;margin-top:24px}.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.metric-card{min-height:0;padding:16px 18px;display:block}.metric-card span{display:block;color:var(--p-text-3);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.metric-card strong{display:block;margin-top:8px;color:var(--p-text);font-size:22px;font-weight:680;line-height:1.1;letter-spacing:-.01em}.metric-card.blue strong,.metric-card.amber strong,.metric-card.green strong{color:var(--p-text)}.onboarding-alert{display:grid;grid-template-columns:26px 1fr;gap:14px;padding:22px;border-color:#fde8b5;background:#fffdf6}.onboarding-alert>svg{margin-top:2px;color:#d99500;width:20px;height:20px}.onboarding-alert h2{margin:0;font-size:16px;font-weight:640;line-height:1.3}.onboarding-alert p{margin:6px 0 14px;color:var(--p-text-2);font-size:13px;line-height:1.5}.alert-actions{display:flex;flex-wrap:wrap;gap:8px}.two-column,.three-column,.portal-grid-detail{display:grid;gap:20px}.two-column{grid-template-columns:repeat(2,minmax(0,1fr))}.three-column{grid-template-columns:1fr 1fr 1fr}.portal-grid-detail{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:24px}.portal-panel{min-height:0;padding:20px;background:var(--p-surface);border:1px solid var(--p-border);border-radius:var(--p-radius)}.portal-panel h2{display:flex;align-items:center;gap:8px;margin:0 0 16px;color:var(--p-text);font-size:14px;font-weight:620;letter-spacing:-.005em}.portal-panel h2 svg{width:15px;height:15px;color:var(--p-text-3)}.portal-empty{min-height:64px;display:grid;place-items:center;color:var(--p-text-3);font-size:13px;text-align:center}.plain-list{display:flex;flex-direction:column;gap:0;margin:0;padding:0;list-style:none}.plain-list li{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--p-border)}.plain-list li:last-child{border-bottom:0}.plain-list span{color:var(--p-text);font-weight:550}.plain-list strong{color:var(--p-text-2);font-size:13px;font-weight:600}.payment-summary-row{gap:12px;min-height:52px;padding:0 14px;border-radius:var(--p-radius-sm);font-size:13px}.payment-summary-row+.payment-summary-row{margin-top:10px}.payment-summary-row.paid{color:#067a48;background:var(--p-accent-soft);border:1px solid var(--p-accent-border)}.payment-summary-row.pending{color:#9a6700;background:#fffaeb;border:1px solid #fde8b5}.payment-summary-row span{color:var(--p-text);font-weight:600}.payment-summary-row strong{margin-left:auto;color:var(--p-accent-hover);font-size:15px;font-weight:650}.payment-summary-row.pending strong{color:#d99500}.payment-summary-row em{color:var(--p-text-3);font-style:normal;font-size:12px}.document-list{display:flex;flex-direction:column;gap:2px}.document-row{gap:12px;min-height:48px;padding:6px 0;border-bottom:1px solid var(--p-border)}.document-row:last-child{border-bottom:0}.document-copy{flex:1;min-width:0}.document-copy span{display:block;color:var(--p-text);font-weight:550}.document-copy em{display:block;margin-top:2px;color:var(--p-text-3);font-size:12px;font-style:normal;line-height:1.4}.document-row svg{color:var(--p-text-3)}.document-row button,.small-action{padding:0 12px;color:var(--p-accent-hover);background:var(--p-surface);border-color:transparent}.document-upload-action{min-height:30px}.document-uploaded{display:inline-flex;align-items:center;gap:8px;min-width:0}.document-file-link{max-width:220px;overflow:hidden;font-size:12px;text-decoration:underline;text-overflow:ellipsis;white-space:nowrap}.document-status{display:inline-flex;align-items:center;min-height:24px;padding:0 10px;border-radius:999px;font-size:11px;font-weight:600}.document-status.success{color:#067a48;background:var(--p-accent-soft);border:1px solid var(--p-accent-border)}.document-status.warn{color:#9a6700;background:#fffaeb;border:1px solid #fde8b5}.document-status.danger{color:#b42318;background:#fef3f2;border:1px solid #fecdca}.panel-copy{margin:0 0 16px;color:var(--p-text-2);font-size:13px;line-height:1.55}.requirement-block{margin-bottom:14px}.requirement-block:last-child{margin-bottom:0}.requirement-heading{display:block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--p-text-3);margin-bottom:6px}.requirement-ul{margin:0;padding-left:18px;display:flex;flex-direction:column;gap:4px}.requirement-ul li{font-size:13px;color:var(--p-text-2);line-height:1.5}.requirement-ul li strong{color:var(--p-text);font-weight:620}.requirement-ul li em{font-style:normal;color:var(--p-text-3)}.requirement-done{color:var(--p-success, #15803d);font-weight:600;font-size:12px}.requirement-hint{margin:8px 0 0;font-size:12px;color:var(--p-text-3)}.activity-item{gap:14px;padding:10px 0;border-bottom:1px solid var(--p-border)}.activity-item:last-child{border-bottom:0}.activity-icon,.team-avatar{display:grid;place-items:center;flex-shrink:0}.activity-icon{width:32px;height:32px;color:var(--p-accent);background:var(--p-accent-soft);border-radius:var(--p-radius-sm)}.activity-icon svg{width:15px;height:15px}.activity-item strong{font-size:13px;font-weight:600}.activity-item span{margin-left:8px;color:var(--p-text-3);font-size:12px}.activity-item p{margin:3px 0 0;color:var(--p-text-2);font-size:13px}.detail-rows{display:grid;gap:0;margin:0}.detail-rows div{display:grid;grid-template-columns:minmax(140px,.42fr) 1fr;gap:16px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--p-border)}.detail-rows div:last-child{border-bottom:0}.detail-rows dt{color:var(--p-text-3);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.detail-rows dd{margin:0;color:var(--p-text);font-size:14px;font-weight:580}.table-wrap{width:100%;overflow-x:auto}.table-wrap table{width:100%;border-collapse:collapse;min-width:760px}.table-wrap th,.table-wrap td{padding:11px 12px;text-align:left;border-bottom:1px solid var(--p-border);white-space:nowrap}.table-wrap th{color:var(--p-text-3);font-size:11px;font-weight:650;letter-spacing:.06em;text-transform:uppercase}.table-wrap tbody tr:last-child td{border-bottom:0}.table-wrap td{color:var(--p-text);font-size:13px;font-weight:540}.invoice-form{display:grid;grid-template-columns:1.1fr 1.6fr .45fr .75fr auto;gap:10px}.invoice-form input,.invoice-form select{min-width:0;min-height:40px;padding:0 12px;color:var(--p-text);background:var(--p-surface);border:1px solid var(--p-border-strong);border-radius:var(--p-radius-sm);transition:border-color .15s ease,box-shadow .15s ease}.invoice-form input:focus,.invoice-form select:focus{outline:none;border-color:var(--p-accent);box-shadow:0 0 0 3px #06bf7b1f}.form-error,.form-success{grid-column:1 / -1;align-self:center;font-size:12px}.form-error{color:#b42318}.form-success{color:#067a48}.invoice-form button{padding:0 16px;color:#fff;background:var(--p-accent);border-color:var(--p-accent)}.team-card{gap:12px}.team-avatar{width:40px;height:40px;color:var(--p-accent-hover);background:var(--p-accent-soft);border:1px solid var(--p-accent-border);border-radius:999px;font-weight:650;font-size:14px}.team-card strong{color:var(--p-text);font-size:14px;font-weight:600}.team-card p{margin:3px 0 0;color:var(--p-text-2);font-size:13px}@media (max-width: 1180px){.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.three-column{grid-template-columns:1fr}.invoice-form{grid-template-columns:repeat(2,minmax(0,1fr))}.invoice-form button{grid-column:span 2}}@media (max-width: 760px){.portal-topbar{height:auto;align-items:flex-start;gap:14px;padding:16px}.portal-content{padding:18px 14px 48px}.supplier-hero{align-items:flex-start;flex-direction:column;padding:20px}.supplier-actions{justify-content:flex-start}.portal-tabs{flex-direction:column}.portal-tab{justify-content:flex-start;padding:0 12px}.metric-grid,.two-column,.portal-grid-detail,.invoice-form{grid-template-columns:1fr}.onboarding-alert{grid-template-columns:1fr;padding:20px}.portal-panel{padding:18px}.detail-rows div{grid-template-columns:1fr;gap:5px}.invoice-form button{grid-column:auto}}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}.panel-title{margin:0;font-size:14px;font-weight:620;color:var(--p-text);letter-spacing:-.005em}.panel-subtitle{margin:4px 0 0;font-size:12px;color:var(--p-text-2);line-height:1.5}.panel-empty{margin:12px 0 0;font-size:13px;color:var(--p-text-3);line-height:1.55}.questionnaire-progress{min-width:160px}.progress-label{font-size:11px;color:var(--p-text-2);font-weight:600}.progress-bar{margin-top:5px;height:5px;border-radius:999px;background:#eef0f3;overflow:hidden}.progress-fill{height:100%;background:var(--p-accent);transition:width .25s ease}.questionnaire-banner{margin:12px 0;padding:10px 12px;border-radius:var(--p-radius-sm);font-size:12px}.questionnaire-banner.submitted{background:var(--p-accent-soft);color:#067a48;border:1px solid var(--p-accent-border)}.questionnaire-section{border:1px solid var(--p-border);border-radius:10px;padding:16px 18px;margin:14px 0}.section-legend{font-size:13px;font-weight:640;color:var(--p-text);padding:0 6px}.section-desc{font-size:11px;color:var(--p-text-3);margin:3px 0 8px}.question-field{margin:12px 0}.question-field.is-missing input,.question-field.is-missing textarea,.question-field.is-missing select{border-color:#e3b341}.question-field.is-invalid input,.question-field.is-invalid textarea,.question-field.is-invalid select{border-color:#b42318}.question-error{font-size:10px;color:#b42318;margin:5px 0 0}.question-label{display:block;font-size:12px;font-weight:580;color:var(--p-text-2);margin-bottom:5px}.question-label .req{color:#b42318;margin-left:2px}.question-help{font-size:10px;color:var(--p-text-3);margin:0 0 5px}.question-field input[type=text],.question-field input[type=number],.question-field input[type=date],.question-field textarea,.question-field select{width:100%;border:1px solid var(--p-border-strong);border-radius:var(--p-radius-sm);padding:8px 10px;font-size:12px;color:var(--p-text);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.question-field input:focus,.question-field textarea:focus,.question-field select:focus{border-color:var(--p-accent);box-shadow:0 0 0 3px #06bf7b1f}.question-bool,.question-multi{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--p-text-2)}.question-bool label,.question-multi label{display:flex;align-items:center;gap:5px}.questionnaire-actions{display:flex;gap:10px;margin-top:16px}.questionnaire-hint{margin-top:8px;font-size:11px;color:#9a6700}.questionnaire-hint-error{color:#b42318}.questionnaire-error{margin-top:8px;font-size:11px;color:#b42318}.questionnaire-review{margin:12px 0;padding:14px 16px;border-radius:10px;background:#f7f8fa;border:1px solid var(--p-border)}.review-head{display:flex;justify-content:space-between;align-items:center}.review-title{font-size:12px;font-weight:640;color:var(--p-text)}.review-pct{font-size:11px;color:var(--p-accent);font-weight:600}.review-summary{font-size:12px;color:var(--p-text-2);margin:6px 0}.review-flags{margin:6px 0 0;padding-left:16px}.review-flag{font-size:11px;margin:2px 0}.review-flag.warning{color:#9a6700}.review-flag.risk{color:#b42318}.review-flag.info{color:var(--p-text-2)}.onboarding-timeline{border:1px solid var(--p-border);border-radius:var(--p-radius);background:var(--p-surface);padding:18px 20px}.timeline-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.timeline-title{font-size:14px;font-weight:620;color:var(--p-text);margin:0}.timeline-count{font-size:11px;color:var(--p-text-3);font-weight:600}.timeline-list{list-style:none;margin:0;padding:0}.timeline-step{display:flex;gap:12px;padding-bottom:16px;position:relative}.timeline-step:not(:last-child):before{content:"";position:absolute;left:10px;top:22px;bottom:0;width:2px;background:var(--p-border)}.timeline-step.done:not(:last-child):before{background:var(--p-accent)}.timeline-marker{flex:0 0 auto;width:22px;height:22px;border-radius:999px;display:flex;align-items:center;justify-content:center;border:2px solid var(--p-border-strong);background:var(--p-surface);color:#fff;z-index:1}.timeline-step.done .timeline-marker{background:var(--p-accent);border-color:var(--p-accent)}.timeline-step.current .timeline-marker{border-color:var(--p-accent);box-shadow:0 0 0 3px #06bf7b26}.timeline-marker svg{width:12px;height:12px}.timeline-body{flex:1;padding-top:1px}.timeline-step-label{font-size:13px;font-weight:580;color:var(--p-text);display:flex;align-items:center;gap:8px}.timeline-step.pending .timeline-step-label{color:var(--p-text-3)}.timeline-badge{font-size:9px;font-weight:650;text-transform:uppercase;letter-spacing:.04em;color:var(--p-accent);background:var(--p-accent-soft);border-radius:999px;padding:2px 7px}.timeline-step-desc{font-size:11px;color:var(--p-text-3);margin:2px 0 0}.timeline-action{margin-top:6px;font-size:11px;font-weight:600;color:var(--p-accent);background:none;border:none;padding:0;cursor:pointer;display:inline-flex;align-items:center;gap:3px}.timeline-action svg{width:12px;height:12px}.onboarding-banner{display:flex;gap:12px;align-items:flex-start;border:1px solid var(--p-warning-border, #f0c36d);background:var(--p-warning-bg, #fff8ec);border-radius:var(--p-radius);padding:14px 16px;margin-bottom:16px}.onboarding-banner-icon{color:var(--p-warning-fg, #b8860b);display:inline-flex;flex-shrink:0;margin-top:1px}.onboarding-banner-icon svg{width:18px;height:18px}.onboarding-banner-body{flex:1;min-width:0}.onboarding-banner-title{font-size:13px;font-weight:640;color:var(--p-text)}.onboarding-banner-sub{font-size:12px;color:var(--p-text-3);margin:2px 0 8px}.onboarding-banner-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.onboarding-banner-link{font-size:12px;font-weight:600;color:var(--p-accent);background:none;border:none;padding:0;cursor:pointer;display:inline-flex;align-items:center;gap:4px}.onboarding-banner-link svg{width:12px;height:12px}
