.portal-page { background:var(--surface); }
.portal-page h1,.portal-page h2,.portal-page h3 { font-family:var(--body); letter-spacing:-.02em; line-height:1.3; }
.portal-page h1 { font-size:2.25rem; }
.portal-page h2 { font-size:1.25rem; }
.portal-page h3 { font-size:1rem; }
.portal-page .site-footer h2 { font-size:.875rem; letter-spacing:0; }
.portal-page .field label { font-size:.875rem; }
.portal-page .field-hint { font-size:.8125rem; }
.portal-page .button { min-height:46px; padding:12px 18px; font-size:.875rem; }
.portal-page button:hover,.portal-page .button:hover { transform:none; }
.portal-page button:disabled,.portal-page input:disabled,.portal-page select:disabled,.portal-page textarea:disabled { cursor:wait; opacity:.62; }
.portal-page .field input,.portal-page .field textarea,.portal-page .field select { background:var(--bg); }
.auth-main { padding-block:80px 100px; }
.auth-grid { display:grid; grid-template-columns:1fr 440px; gap:100px; align-items:start; max-width:1050px; }
.auth-intro { padding-top:32px; }
.auth-intro h1 { max-width:16ch; font-size:2.5rem; }
.auth-intro>p:not(.location-label) { max-width:40ch; color:var(--muted); margin-block:24px 30px; }
.auth-panel { background:var(--bg); border:1px solid var(--line); border-radius:8px; padding:32px; }
.auth-panel h2 { margin-bottom:22px; }
.auth-switch { display:flex; gap:5px; border-bottom:1px solid var(--line); margin-bottom:24px; }
.auth-switch button { background:none; border:0; border-bottom:3px solid transparent; min-height:44px; padding:9px 12px; color:var(--muted); font-size:.875rem; font-weight:700; }
.auth-switch button[aria-pressed="true"] { color:var(--ink); border-color:var(--accent); }
.auth-panel form>.button { width:100%; margin-top:6px; }
.auth-panel .field { margin-bottom:20px; }
.auth-help { border-top:1px solid var(--line); margin-top:24px; padding-top:20px; color:var(--muted); font-size:.8125rem; }
.auth-help a { display:block; color:var(--ink); font-weight:700; }
#local-setup-link { margin-top:20px; font-size:.875rem; }
.form-message { font-size:.875rem; color:var(--ink); overflow-wrap:anywhere; }
.form-message:not(:empty) { margin-block:16px; padding:14px 16px; background:oklch(.94 .04 70); border:1px solid oklch(.76 .1 65); border-radius:5px; }
.portal-main { padding-block:48px 80px; min-height:65vh; }
.portal-heading { display:flex; align-items:center; justify-content:space-between; gap:24px; }
.portal-heading h1 { margin-top:5px; }
.portal-heading p { font-size:.875rem; color:var(--muted); }
.portal-actions { display:flex; align-items:center; flex-wrap:wrap; gap:12px; }
.quiet-button { min-height:44px; padding:10px 14px; background:var(--bg); border:1px solid var(--line); border-radius:5px; color:var(--ink); font-size:.875rem; font-weight:650; }
.quiet-button:hover { background:var(--surface); border-color:var(--muted); }
.portal-introduction { color:var(--muted); max-width:75ch; font-size:.875rem; margin-block:18px 32px; }
.portal-workspace { display:grid; grid-template-columns:minmax(290px,.85fr) minmax(0,1.35fr); border:1px solid var(--line); border-radius:8px; background:var(--bg); }
.request-list-panel { min-width:0; border-right:1px solid var(--line); }
.list-heading { display:flex; justify-content:space-between; align-items:center; padding:24px; gap:12px; }
#request-count { font-size:.8125rem; color:var(--muted); }
.list-filters { padding:0 24px 20px; display:flex; gap:12px; flex-wrap:wrap; }
.list-filters .field { flex:1 1 130px; margin:0; min-width:0; }
.list-filters input,.list-filters select { font-size:.8125rem; min-height:44px; padding:10px; }
.request-list { border-top:1px solid var(--line); }
.request-item { display:flex; flex-direction:column; gap:8px; text-align:left; width:100%; border:0; border-bottom:1px solid var(--line); background:var(--bg); padding:22px 24px; color:var(--ink); font-size:.8125rem; }
.request-item:last-child { border-bottom:0; }
.request-item:hover { background:var(--surface); }
.request-item[aria-pressed="true"] { background:oklch(.95 .026 263.388); box-shadow:inset 0 0 0 2px var(--primary); }
.request-item:focus-visible { outline-offset:-5px; }
.request-item strong { font-size:1rem; }
.request-item-top { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; width:100%; }
.request-reference,.request-date { color:var(--muted); font-size:.75rem; }
.request-excerpt { color:var(--muted); overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow-wrap:anywhere; }
.status-badge { display:inline-block; width:fit-content; padding:4px 9px; border-radius:4px; font-size:.75rem; line-height:1.4; font-weight:700; color:var(--ink); background:var(--surface); }
.status-new,.status-reviewing { background:oklch(.94 .04 70); }
.status-quoted,.status-scheduled,.status-in_progress { background:oklch(.94 .03 263); }
.status-completed { color:oklch(.33 .065 150); background:oklch(.94 .027 150); }
.status-cancelled { background:oklch(.94 .005 263); color:var(--muted); }
.request-detail { min-width:0; padding:28px 32px 32px; scroll-margin-top:24px; }
.empty-state { padding:28px 24px; color:var(--muted); font-size:.875rem; max-width:55ch; }
.request-detail .empty-state { padding:24px 0; }
.empty-state h2 { color:var(--ink); margin-bottom:12px; }
.detail-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:16px; padding-bottom:20px; border-bottom:1px solid var(--line); }
#detail-reference { color:var(--muted); font-size:.75rem; margin-bottom:5px; }
.portal-page .request-summary { margin-block:6px 28px; }
.portal-page .request-summary>div { grid-template-columns:130px minmax(0,1fr); padding-block:13px; gap:16px; }
.portal-page .request-summary dt,.portal-page .request-summary dd { font-size:.8125rem; }
.portal-page .request-summary dd { white-space:pre-wrap; overflow-wrap:anywhere; }
.admin-update { border-top:1px solid var(--line); padding-block:24px; }
.admin-update h3 { margin-bottom:20px; }
.admin-update .field { margin-bottom:16px; }
.updates-section { border-top:1px solid var(--line); padding-top:24px; }
.request-updates { list-style:none; padding:0; margin:8px 0 24px; }
.request-updates li { padding-block:16px; border-bottom:1px solid var(--line); }
.request-updates strong { font-size:.875rem; }
.request-updates time { display:block; font-size:.75rem; color:var(--muted); margin-top:3px; }
.request-updates p { font-size:.875rem; margin-top:12px; white-space:pre-wrap; overflow-wrap:anywhere; }
.portal-composer { background:var(--bg); padding:32px; border:1px solid var(--line); border-radius:8px; max-width:800px; margin-bottom:32px; }
.composer-heading { display:flex; justify-content:space-between; align-items:center; gap:24px; margin-bottom:24px; }
.portal-composer .field { margin-bottom:20px; }
.composer-note { margin-bottom:20px; }
@media(max-width:1050px) { .auth-grid { gap:48px; grid-template-columns:1fr 400px; } .portal-workspace { grid-template-columns:minmax(270px,.9fr) minmax(0,1.1fr); } .portal-heading { align-items:flex-start; } .portal-actions { justify-content:flex-end; } }
@media(max-width:850px) { .portal-workspace { grid-template-columns:1fr; } .request-list-panel { border-right:0; border-bottom:1px solid var(--line); } .request-list { max-height:500px; overflow-y:auto; } .auth-grid { grid-template-columns:1fr; max-width:560px; gap:32px; } .auth-intro { padding-top:0; } .auth-intro h1 { max-width:24ch; } .auth-main { padding-block:44px 64px; } }
@media(max-width:600px) { .portal-page h1,.auth-intro h1 { font-size:1.875rem; } .portal-heading { flex-direction:column; gap:20px; } .portal-actions { justify-content:flex-start; gap:8px; } .portal-main { padding-top:30px; } .auth-panel,.portal-composer { padding:24px 20px; } .request-detail { padding:24px 20px; } .request-item,.list-heading { padding:20px; } .portal-page .request-summary>div { grid-template-columns:1fr; gap:4px; } .detail-heading { flex-direction:column; } .list-filters { padding-inline:20px; } }

.client-jobs { margin: 28px 0 40px; padding: 24px; background: var(--bg); border: 1px solid var(--line); border-radius: 8px; }
.client-job-list { display: grid; grid-template-columns: repeat(auto-fit,minmax(min(100%,380px),1fr)); gap: 24px; margin-top: 20px; }
.client-job-card { min-width: 0; padding: 22px; border: 1px solid var(--line); border-radius: 6px; }
.client-job-card .detail-heading { flex-wrap: wrap; gap: 12px; }
.client-job-card p,.client-job-card dd,.client-job-card li { overflow-wrap: anywhere; }
.client-job-card details { margin-block: 18px; }
.client-job-card details ul { padding-left: 20px; }
.client-job-card .portal-actions { justify-content: flex-start; margin-top: 18px; }
@media(max-width:600px) { .client-jobs { padding: 18px 14px; } .client-job-card { padding: 18px 14px; } .client-jobs .list-heading { flex-wrap: wrap; gap: 12px; } }

.auth-recovery > a { display: inline-flex; margin-top: 18px; }
#auth-form + .quiet-button { margin-top: 18px; }
.client-access > .quiet-button { margin: 8px 8px 8px 0; }
.client-access details { margin-block: 16px; overflow-wrap: anywhere; }
