/* Sign-in */
.auth-shell{min-height:100svh;display:grid;grid-template-rows:auto 1fr auto;background:var(--surface)}
.auth-header{height:64px;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:0 32px;background:var(--white);border-bottom:1px solid var(--line)}
.auth-header>a:last-child{font-size:15px;color:var(--muted)}
.auth-header>a:last-child:hover{color:var(--ink);text-decoration:underline;text-underline-offset:4px}
.auth-main{display:grid;justify-items:center;align-content:start;padding:64px 16px}
.auth-panel{width:min(440px,100%);background:var(--white);border:1px solid var(--line);border-radius:8px;padding:36px}
.auth-panel h1{font-size:26px;line-height:1.25;letter-spacing:-.015em}
.auth-intro{font-size:16px;color:var(--muted);margin-top:8px}
.auth-intro strong{color:var(--ink);font-weight:600}
.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-top:28px;padding:4px;background:var(--surface);border-radius:6px}
.auth-tabs button{border:0;background:none;border-radius:4px;padding:8px 12px;font-size:15px;font-weight:500;color:var(--muted)}
.auth-tabs button.is-active{background:var(--white);color:var(--ink);font-weight:600;box-shadow:0 0 0 1px var(--line)}
.auth-panel form{display:grid;gap:18px;margin-top:24px}
.auth-panel form>.button{width:100%;margin-top:4px}
.auth-help{font-size:14px;color:var(--muted);margin-top:20px}
.auth-help a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}
.auth-panel .portal-notice{margin:0 0 20px}
.auth-panel>.portal-notice:last-child{margin:20px 0 0}
.auth-footer{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 24px;padding:24px 16px;font-size:14px;color:var(--muted)}
.auth-footer a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:4px}

/* Shared form controls */
.auth-panel label,.portal-main label{display:grid;gap:6px;font-size:15px;font-weight:600;line-height:1.4}
.auth-panel input,.portal-main input,.portal-main select,.portal-main textarea{width:100%;min-width:0;background:var(--white);border:1px solid #b9c2cf;border-radius:4px;padding:10px 12px;font-size:16px;font-weight:400;line-height:1.4;color:var(--ink)}
.auth-panel input:focus,.portal-main input:focus,.portal-main select:focus,.portal-main textarea:focus{border-color:var(--ink)}
.portal-main textarea{resize:vertical;line-height:1.55}
.auth-panel input::placeholder,.portal-main input::placeholder,.portal-main textarea::placeholder{color:#7d8899}
.auth-panel label>small,.portal-main label>small,.field-note{font-size:14px;font-weight:400;color:var(--muted);line-height:1.5}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

/* Workspace shell */
.portal-shell{display:flex;min-height:100svh;background:var(--surface)}
.portal-sidebar{width:240px;flex-shrink:0;padding:20px 16px 24px;background:var(--white);border-right:1px solid var(--line);position:fixed;top:0;bottom:0;display:flex;flex-direction:column}
.portal-sidebar .brand{padding:2px 8px}
.portal-sidebar nav{display:flex;flex-direction:column;gap:2px;margin-top:32px}
.portal-sidebar nav>a,.portal-sidebar nav>button{display:block;border:0;background:none;border-radius:4px;padding:9px 10px;text-align:left;font-size:15px;font-weight:500;color:var(--muted);line-height:1.4}
.portal-sidebar nav>a:hover,.portal-sidebar nav>button:hover{background:var(--surface);color:var(--ink)}
.portal-sidebar nav>button.is-active{background:#e6eaf0;color:var(--ink);font-weight:600}
.sidebar-support{margin-top:auto;padding:20px 10px 0;border-top:1px solid var(--line);font-size:14px}
.sidebar-support strong{font-weight:600}
.sidebar-support a{display:block;color:var(--blue);margin-top:4px}
.sidebar-support p{color:var(--muted);margin-top:8px;line-height:1.5}
.portal-content{margin-left:240px;flex:1;min-width:0;display:flex;flex-direction:column}
.portal-header{height:64px;padding:0 40px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:20px;background:var(--white)}
.portal-header>span{font-size:15px;font-weight:600}
.portal-header>div{display:flex;align-items:center;gap:16px;min-width:0}
.user-email{font-size:14px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.portal-header button{flex-shrink:0;border:1px solid #b9c2cf;border-radius:4px;background:var(--white);padding:6px 12px;font-size:14px;font-weight:600;color:var(--ink)}
.portal-header button:hover{border-color:var(--ink)}
.portal-main{flex:1;width:100%;max-width:1160px;margin:0 auto;padding:40px 40px 64px}
.portal-main h1{font-size:30px;line-height:1.2;letter-spacing:-.02em}
.portal-main h2{font-size:18px;line-height:1.35}
.page-intro{font-size:16px;color:var(--muted);margin-top:8px;max-width:40em}
.portal-notice,.payment-availability{border-left:3px solid var(--blue);background:#eaf0f9;border-radius:4px;padding:12px 16px;font-size:15px;color:#1d3557;margin-bottom:24px}
.payment-availability{border-left-color:#b7791f;background:#fbf3e2;color:#5c4300}
.portal-notice.is-error{border-left-color:var(--accent);background:#fbeceb;color:#7a1a14}
.payment-availability strong{font-weight:650;margin-right:4px}
.portal-footer{display:flex;flex-wrap:wrap;gap:8px 24px;padding:20px 40px;border-top:1px solid var(--line);background:var(--white);font-size:14px;color:var(--muted)}
.portal-footer>span{margin-right:auto}
.portal-footer a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:4px}
.loading-panel{font-size:16px;color:var(--muted);padding:48px 0;text-align:center}

/* Overview */
.workspace-title{display:flex;align-items:flex-end;justify-content:space-between;gap:24px}
.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:28px 0 24px}
.metrics-grid article{background:var(--white);border:1px solid var(--line);border-radius:6px;padding:18px 20px}
.metrics-grid span{display:block;font-size:14px;color:var(--muted)}
.metrics-grid strong{display:block;font-size:28px;font-weight:650;letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:4px}
.workspace-card{background:var(--white);border:1px solid var(--line);border-radius:6px;padding:24px;margin-bottom:20px;min-width:0}
.workspace-card>p{font-size:15px;color:var(--muted);margin-top:10px;overflow-wrap:anywhere}
.requests-card{padding:0;overflow:hidden}
.requests-header{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:16px 24px;border-bottom:1px solid var(--line)}
.portal-main .search-field{width:260px}
.portal-main .search-field input{font-size:15px;padding:8px 12px}
.request-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 24px;background:var(--white);border:0;border-bottom:1px solid var(--line);text-align:left;color:var(--ink)}
.request-row:last-child{border-bottom:0}
.request-row:hover{background:#f7f8fa}
.request-row>div:first-child{flex:1;min-width:0}
.request-row>div:nth-child(2){text-align:right;flex-shrink:0}
.request-row h3{font-size:17px;line-height:1.35;margin-top:2px}
.request-row p{font-size:14px;color:var(--muted);margin-top:2px;overflow-wrap:anywhere}
.request-row>div>small{display:block;font-size:14px;color:var(--muted);margin-top:6px;font-variant-numeric:tabular-nums}
.request-ref{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.status-label{display:inline-block;white-space:nowrap;border-radius:3px;padding:3px 10px;font-size:13px;font-weight:600;line-height:1.5;background:#eceff3;color:#364457}
.status-awaiting_payment,.status-quote_ready{background:#fbf1dc;color:#6b4500}
.status-assessing,.status-patching,.status-verifying{background:#e4edfa;color:#1b4f9c}
.status-complete{background:#e2f1e8;color:var(--green)}
.status-needs_attention{background:#fbeceb;color:var(--accent)}
.dashboard-boundary{font-size:14px;color:var(--muted);margin-top:4px}
.empty-state{padding:48px 24px;text-align:center}
.empty-state h2{font-size:18px}
.empty-state>p{font-size:15px;color:var(--muted);max-width:30em;margin:8px auto 0}
.empty-state .button{margin-top:20px}
.empty-panel{max-width:520px}
.empty-panel p{font-size:16px;color:var(--muted);margin-top:8px}
.empty-panel .button{margin-top:20px}

/* New assessment */
.new-request{max-width:820px}
.portal-main form{display:grid;gap:20px;margin-top:20px}
.portal-main form>.button{justify-self:start}
.request-form{background:var(--white);border:1px solid var(--line);border-radius:6px;padding:28px;margin-top:24px!important}
.plan-options{border:0;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.plan-options legend{font-size:15px;font-weight:600;margin-bottom:8px;padding:0}
.portal-main .plan-option{display:flex;align-items:flex-start;gap:10px;padding:14px;border:1px solid #c5ccd6;border-radius:6px;cursor:pointer;font-weight:400}
.portal-main .plan-option:hover{border-color:var(--ink)}
.portal-main .plan-option.selected{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);background:#f6f8fb}
.portal-main .plan-option>input{width:18px;height:18px;margin:2px 0 0;padding:0;flex-shrink:0;accent-color:var(--ink)}
.plan-option strong{display:block;font-size:15px;font-weight:600;line-height:1.35}
.plan-option small{display:block;font-size:14px;color:var(--muted);margin-top:4px;font-variant-numeric:tabular-nums}
.scope-summary{background:var(--surface);border-radius:4px;padding:14px 16px}
.scope-summary strong{font-size:15px}
.scope-summary p{font-size:15px;color:var(--muted);margin-top:4px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px 24px}
.portal-main .checkbox-label{display:flex;align-items:flex-start;gap:10px;font-size:15px;font-weight:400;color:var(--muted);line-height:1.5}
.portal-main .checkbox-label>input{width:18px;height:18px;flex-shrink:0;margin:2px 0 0;padding:0;accent-color:var(--ink)}
.checkbox-label a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}
.form-total{display:flex;align-items:center;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:20px}
.form-total>span{font-size:15px;color:var(--muted)}
.form-total strong{display:block;font-size:26px;font-weight:650;letter-spacing:-.02em;color:var(--ink);font-variant-numeric:tabular-nums}

/* Request detail */
.back-button{border:0;background:none;padding:0;font-size:15px;font-weight:600;color:var(--blue)}
.back-button:before{content:"\2190\00a0"}
.back-button:hover{text-decoration:underline;text-underline-offset:4px}
.detail-title{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:20px 0 28px}
.detail-title h1{margin-top:2px}
.detail-title p:not(.request-ref){font-size:15px;color:var(--muted);margin-top:6px;overflow-wrap:anywhere}
.detail-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:20px;align-items:start}
.payment-breakdown{margin:16px 0 20px}
.payment-breakdown>div{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--line);font-size:15px}
.payment-breakdown dt{color:var(--muted)}
.payment-breakdown dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;text-transform:capitalize}
.workspace-card form>p{font-size:14px;color:var(--muted)}
.text-button{border:0;background:none;padding:0;margin-top:16px;font-size:15px;font-weight:600;color:var(--blue);text-decoration:underline;text-underline-offset:3px}
.event-list{list-style:none;margin:16px 0 0;padding:0}
.event-list li{padding:0 0 16px 16px;border-left:2px solid var(--line)}
.event-list li>span{font-size:13px;color:var(--muted)}
.event-list li>p{font-size:15px;margin-top:2px;white-space:pre-wrap;overflow-wrap:anywhere}
.environment-facts{margin:12px 0 0}
.environment-facts>div{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:16px;padding:10px 0;border-bottom:1px solid var(--line)}
.environment-facts dt{font-size:14px;color:var(--muted)}
.environment-facts dd{margin:0;font-size:15px;overflow-wrap:anywhere}
.customer-notes{font-size:15px;color:var(--ink)!important;background:var(--surface);border-radius:4px;padding:12px 14px;margin-top:16px!important;white-space:pre-wrap;overflow-wrap:anywhere}
.report-preview{font-family:var(--mono);font-size:13px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere;color:var(--ink);background:#f7f8fa;border:1px solid var(--line);border-radius:4px;padding:14px 16px;margin:16px 0;max-height:360px;overflow:auto}
.artifact-list{margin:12px 0 0;padding-left:20px;font-size:15px}
.artifact-list a{color:var(--blue);text-decoration:underline;text-underline-offset:3px}

/* Payments */
.payments-table{overflow-x:auto}
.payments-table table{width:100%;border-collapse:collapse;text-align:left;font-size:15px}
.payments-table th{font-size:13px;font-weight:600;color:var(--muted);padding:12px 16px;border-bottom:1px solid var(--line);white-space:nowrap}
.payments-table td{padding:14px 16px;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;text-transform:capitalize}
.payments-table tr:last-child td{border-bottom:0}
.payments-table td>small{display:block;font-size:13px;color:var(--muted)}
.table-link{border:0;background:none;padding:0;text-align:left;font-size:15px;font-weight:600;color:var(--blue);text-transform:none}
.table-link:hover{text-decoration:underline;text-underline-offset:3px}
.table-link small{display:block;font-size:13px;font-weight:400;color:var(--muted)}
.portal-main section>.workspace-card{margin-top:24px}
.portal-main section>.workspace-card:has(.payments-table){padding:8px 8px 0}

@media(max-width:1100px){.portal-sidebar{width:208px}
.portal-content{margin-left:208px}
.portal-main{padding-left:28px;padding-right:28px}
.portal-header,.portal-footer{padding-left:28px;padding-right:28px}
.plan-options,.detail-grid{grid-template-columns:1fr}
}

@media(max-width:780px){.auth-header{padding:0 16px}
.auth-main{padding:32px 16px}
.auth-panel{padding:24px 20px}
.portal-shell{display:block}
.portal-sidebar{position:static;width:auto;padding:12px 16px 0;border-right:0;border-bottom:1px solid var(--line);display:block}
.portal-sidebar .brand{padding:6px 0}
.portal-sidebar nav{flex-direction:row;flex-wrap:wrap;gap:2px 4px;margin:8px -6px 0;padding:0 0 8px}
.portal-sidebar nav>a,.portal-sidebar nav>button{white-space:nowrap;padding:8px 10px}
.sidebar-support{display:none}
.portal-content{margin-left:0}
.portal-header{height:52px;padding:0 16px}
.portal-header>span{display:none}
.portal-header>div{width:100%;justify-content:space-between}
.portal-main{padding:24px 16px 48px}
.portal-main h1{font-size:26px}
.workspace-title{display:block}
.workspace-title>.button{margin-top:16px;width:100%}
.metrics-grid{grid-template-columns:1fr;gap:8px;margin:20px 0}
.metrics-grid article{display:flex;align-items:baseline;justify-content:space-between;padding:12px 16px}
.metrics-grid strong{font-size:22px;margin:0}
.requests-header{flex-direction:column;align-items:stretch;gap:12px;padding:16px}
.portal-main .search-field{width:auto}
.request-row{flex-wrap:wrap;align-items:flex-start;gap:10px;padding:16px}
.request-row>div:first-child{flex-basis:100%}
.request-row>div:nth-child(2){text-align:left}
.workspace-card{padding:20px}
.requests-card{padding:0}
.request-form{padding:20px}
.form-grid{grid-template-columns:1fr}
.form-total{flex-direction:column;align-items:stretch}
.form-total .button{width:100%}
.detail-title{display:block}
.detail-title>.status-label{margin-top:12px}
.environment-facts>div{grid-template-columns:1fr;gap:2px}
.portal-main form>.button{justify-self:stretch}
.portal-footer{padding:20px 16px}
.portal-footer>span{width:100%}
}
.auth-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;margin-top:24px}
.auth-actions .text-button{margin-top:0}
.auth-dev-note{margin-top:16px}
.auth-intro+.portal-notice{margin:20px 0 0}
