body{line-height:1.5}#portal-auth-screen{background:radial-gradient(1000px 500px at 85% -10%,#16294d1a,#0000 60%),radial-gradient(800px 400px at -10% 110%,#7a12161a,#0000 60%);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.portal-auth-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:400px;box-shadow:var(--shadow);padding:36px}.portal-logo{align-items:center;gap:10px;margin-bottom:24px;display:flex}.portal-logo img{width:34px;height:34px}.portal-logo span{font-family:var(--font-heading);font-size:1.2rem;font-weight:700}.portal-field{margin-bottom:16px}.portal-field label{color:var(--ink);margin-bottom:6px;font-size:.85rem;font-weight:600;display:block}.portal-field input{border:1px solid var(--border);width:100%;color:var(--ink);background:#fff;border-radius:8px;padding:11px 13px;font-family:inherit;font-size:.95rem}.portal-field input:focus{outline:2px solid var(--terracotta);outline-offset:1px}.portal-btn{cursor:pointer;background:var(--terracotta);color:#fff;border:none;border-radius:999px;justify-content:center;align-items:center;gap:6px;width:100%;padding:11px 20px;font-size:.92rem;font-weight:600;transition:transform .15s,background .15s;display:inline-flex}.portal-btn:hover{background:var(--terracotta-dark);transform:translateY(-1px)}.portal-btn:disabled{opacity:.6;cursor:default;transform:none}.portal-error{color:var(--teal);min-height:1em;margin-top:10px;font-size:.85rem}.portal-note{color:var(--ink-soft);text-align:center;margin-top:18px;font-size:.8rem}.portal-link-btn{width:100%;color:var(--terracotta);text-align:center;cursor:pointer;background:0 0;border:none;padding:12px 0 0;font-family:inherit;font-size:.85rem;font-weight:600;display:block}.portal-link-btn:hover{text-decoration:underline}.portal-link-btn:disabled{opacity:.6;cursor:default;text-decoration:none}.portal-check-email{text-align:center}.portal-check-email .icon{width:46px;height:46px;color:var(--terracotta);background:#16294d1a;border-radius:50%;justify-content:center;align-items:center;margin:0 auto 16px;display:flex}#portal-screen{flex-direction:column;min-height:100vh;display:flex}header.portal-header{background:var(--card);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:14px 24px;display:flex}.portal-brand{align-items:center;gap:10px;display:flex}.portal-brand img{width:30px;height:30px}.portal-brand span{font-family:var(--font-heading);font-weight:700}.portal-signout{border:1.5px solid var(--border);color:var(--ink);cursor:pointer;background:0 0;border-radius:999px;padding:7px 14px;font-size:.82rem;font-weight:600}.portal-signout:hover{border-color:var(--ink)}main.portal-main{flex:1;width:100%;max-width:1600px;margin:0 auto;padding:32px 24px}.portal-layout{grid-template-columns:2fr 1fr;align-items:start;gap:32px;display:grid}.portal-layout>*{min-width:0}.portal-section{margin-bottom:32px}.portal-side-col .portal-section{margin-bottom:0}.portal-welcome{margin-bottom:4px;font-size:1.5rem}.portal-sub{color:var(--ink-soft);margin-bottom:32px}.portal-section h2{margin-bottom:14px;font-size:1.1rem}.doc-progress-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px;display:flex}.doc-progress-head h2{margin-bottom:0}.doc-progress-count{color:var(--ink-soft);white-space:nowrap;font-size:.85rem;font-weight:600}.doc-progress-bar-track{background:var(--border);border-radius:999px;height:6px;margin-bottom:18px;overflow:hidden}.doc-progress-bar-fill{background:var(--terracotta);border-radius:999px;height:100%;transition:width .25s}.cost-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:6px 16px}.cost-row{border-top:1px solid var(--border);color:var(--ink-soft);justify-content:space-between;gap:12px;padding:12px 0;font-size:.9rem;display:flex}.cost-row:first-child{border-top:none}.cost-row span:first-child{padding-right:8px}.cost-row span:last-child{color:var(--ink);flex:none;font-weight:600}.cost-total{border-top:1px solid var(--ink);color:var(--ink);font-weight:700}.cost-total span:last-child{color:var(--terracotta);font-size:1.05rem}.cost-optional{font-size:.8rem;font-style:italic}.cost-optional span:last-child{color:var(--ink-soft);font-size:.78rem;font-style:italic;font-weight:500}.cost-note{color:var(--ink-soft);margin-top:10px;font-size:.78rem}.update-item{background:var(--card);border:1px solid var(--border);border-radius:10px;margin-bottom:10px;padding:14px 16px}.update-item .date{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.03em;align-items:center;gap:8px;margin-bottom:4px;font-size:.75rem;display:flex}.update-item p{color:var(--ink);margin:0}.update-due-date{color:var(--ink-soft);margin-top:6px;font-size:.8rem;font-weight:600}.update-status-badge{text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft);background:#101c3314;border-radius:999px;flex:none;padding:2px 8px;font-size:.65rem;font-weight:600}.update-status-badge.in_progress{color:#8a6a1f;background:#c7a14a2e}.update-status-badge.done{color:#2e7d5c;background:#2e7d5c26}.portal-empty{color:var(--ink-soft);text-align:center;background:var(--card);border:1px dashed var(--border);border-radius:10px;padding:20px;font-size:.9rem}.doc-table-scroll{border:1px solid var(--border);border-radius:10px;overflow-x:auto}.doc-table{border-collapse:collapse;width:100%;min-width:680px;font-size:.87rem}.doc-table thead th{background:var(--cream);color:var(--ink-soft);font-family:var(--font-heading);letter-spacing:.05em;text-transform:uppercase;text-align:left;border-bottom:2px solid var(--border);white-space:nowrap;padding:12px 14px;font-size:.7rem;font-weight:700}.doc-table th.col-center,.doc-table td.col-center{text-align:center}.doc-table tbody td{border-bottom:1px solid var(--border);vertical-align:top;color:var(--ink);padding:12px 14px}.doc-table tbody tr:last-child td{border-bottom:none}.doc-table tbody tr:hover td{background:#16294d06}.doc-group-row td{font-family:var(--font-heading);letter-spacing:.03em;text-transform:uppercase;color:#8a6a1f;background:#c99a3d14;border-bottom:1px solid #c99a3d59;padding:8px 14px;font-size:.72rem;font-weight:700}.doc-group-row:hover td{background:#c99a3d14!important}.doc-request-name{font-size:.92rem;font-weight:700}.doc-request-desc{color:var(--ink-soft);max-width:30ch;margin-top:3px;font-size:.78rem}.doc-dash{color:#c7cad4}.doc-mandatory-tag{text-transform:uppercase;letter-spacing:.03em;border:1px solid var(--border);color:var(--ink-soft);white-space:nowrap;border-radius:999px;flex:none;padding:2px 8px;font-size:.65rem;font-weight:600;display:inline-block}.doc-mandatory-tag.mandatory{border-color:var(--terracotta);color:var(--terracotta)}.doc-status-tag{text-transform:uppercase;letter-spacing:.03em;color:var(--ink-soft);white-space:nowrap;background:#101c3314;border-radius:999px;padding:3px 9px;font-size:.66rem;font-weight:600;display:inline-block}.doc-status-tag.uploaded{color:#8a6a1f;background:#c7a14a2e}.doc-status-tag.approved{color:#2e7d5c;background:#2e7d5c26}.doc-status-tag.rejected{color:var(--teal);background:#7a12161a}.doc-link-cell{min-width:150px}.doc-upload-list{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.doc-upload-link{border:1px solid var(--border);cursor:pointer;color:var(--ink);white-space:nowrap;background:0 0;border-radius:999px;padding:3px 10px;font-family:inherit;font-size:.78rem;text-decoration:none;display:inline-block}.doc-upload-link:hover{border-color:var(--ink)}.doc-upload-row{align-items:center;gap:6px;margin-top:6px;display:flex}.doc-upload-row input[type=url]{border:1px solid var(--border);min-width:110px;color:var(--ink);border-radius:8px;flex:1;padding:7px 10px;font-family:inherit;font-size:.82rem}.doc-upload-row input[type=url]:focus{outline:2px solid var(--terracotta);outline-offset:1px}.doc-upload-btn{width:auto;padding:7px 14px;font-size:.8rem}.first-steps-intro{color:var(--ink-soft);margin:-6px 0 14px;font-size:.9rem}.first-steps-list{flex-direction:column;gap:12px;display:flex}.first-steps-item{background:var(--card);border:1px solid var(--border);border-radius:10px;align-items:flex-start;gap:14px;padding:14px 16px;display:flex}.first-steps-item .num{background:var(--terracotta);color:#fff;border-radius:50%;flex:none;justify-content:center;align-items:center;width:28px;height:28px;font-size:.85rem;font-weight:700;display:flex}.first-steps-item .body h3{margin:0 0 4px;font-size:.95rem}.first-steps-item .body p{color:var(--ink-soft);margin:0;font-size:.85rem}.app-card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:32px;padding:28px}.app-card-head{align-items:center;gap:14px;margin-bottom:26px;display:flex}.app-avatar{background:var(--terracotta);width:48px;height:48px;color:var(--gold);font-family:var(--font-heading);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:1.15rem;font-weight:700;display:flex}.app-card-title{flex:1;min-width:0}.app-card-title h2{margin:0 0 2px;font-size:1.2rem}.app-card-title span{color:var(--ink-soft);font-size:.88rem}.app-pill{letter-spacing:.04em;text-transform:uppercase;color:#2e7d5c;background:#2e7d5c1f;border-radius:999px;flex:none;padding:5px 12px;font-size:.72rem;font-weight:700}.app-progress-head{color:var(--ink-soft);justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:.88rem;font-weight:600;display:flex}.app-progress-head strong{font-family:var(--font-heading);color:var(--ink);font-size:1rem}.app-progress-track{background:var(--border);border-radius:999px;height:8px;margin-bottom:28px;overflow:hidden}.app-progress-fill{border-radius:inherit;background:linear-gradient(90deg, var(--terracotta), var(--gold));height:100%;transition:width .6s}.app-subhead{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);margin:0 0 16px;font-size:.76rem;font-weight:700}.app-journey{grid-template-columns:repeat(5,1fr);margin:0 0 24px;padding:0;list-style:none;display:grid}.app-journey li{text-align:center;flex-direction:column;align-items:center;gap:8px;display:flex;position:relative}.app-journey li:not(:last-child):after{content:"";background:var(--border);border-radius:2px;width:calc(100% - 36px);height:2px;position:absolute;top:14px;left:calc(50% + 18px)}.app-journey li.done:not(:last-child):after{background:var(--terracotta)}.app-journey .dot{border:2px solid var(--border);background:var(--card);width:30px;height:30px;color:var(--ink-soft);border-radius:50%;justify-content:center;align-items:center;font-size:.78rem;font-weight:700;display:flex}.app-journey .label{color:var(--ink-soft);font-size:.8rem}.app-journey li.done .dot{background:var(--terracotta);border-color:var(--terracotta);color:#fff}.app-journey li.current .dot{background:var(--gold);border-color:var(--gold);color:var(--ink);box-shadow:0 0 0 4px #c99a3d38}.app-journey li.done .label,.app-journey li.current .label{color:var(--ink);font-weight:600}.app-task{background:var(--cream);border:1px solid var(--border);border-left:4px solid var(--gold);border-radius:12px;align-items:center;gap:14px;margin-bottom:24px;padding:16px;display:flex}.app-task.done{border-left-color:#2e7d5c}.app-task-icon{background:var(--terracotta);color:#fff;border-radius:10px;flex:none;justify-content:center;align-items:center;width:38px;height:38px;display:flex}.app-task-body{flex-direction:column;flex:1;min-width:0;display:flex}.app-task-body span{letter-spacing:.06em;text-transform:uppercase;color:var(--teal);font-size:.7rem;font-weight:700}.app-task-body strong{font-family:var(--font-heading);font-size:1.02rem}.app-task-status{letter-spacing:.04em;text-transform:uppercase;color:#8a6a1f;background:#c7a14a2e;border-radius:999px;flex:none;padding:4px 10px;font-size:.7rem;font-weight:700}.app-task.done .app-task-status{color:#2e7d5c;background:#2e7d5c1f}.app-payments-block{margin-bottom:24px}.app-payments-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px;display:flex}.app-payments-head span{letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft);font-size:.76rem;font-weight:700}.app-payments-head small{color:var(--ink-soft);font-size:.85rem;font-weight:600}.app-payments{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;display:grid}.app-payment{border:1px solid var(--border);background:var(--card);border-radius:10px;flex-direction:column;gap:4px;padding:12px 14px;display:flex}.app-payment strong{font-family:var(--font-heading);font-size:1.05rem}.app-payment span{color:var(--ink-soft);font-size:.78rem;font-weight:600}.app-payment.paid{background:#2e7d5c12;border-color:#2e7d5c40}.app-payment.paid span{color:#2e7d5c}.app-payment.due{background:#c99a3d1a;border-color:#c99a3d66}.app-payment.due span{color:#8a6a1f}.app-ask{border:1px solid var(--border);background:var(--cream);border-radius:999px;align-items:center;gap:8px;padding:6px 6px 6px 16px;transition:border-color .15s;display:flex}.app-ask:focus-within{border-color:var(--terracotta)}.app-ask input{min-width:0;font:inherit;color:var(--ink);background:0 0;border:none;outline:none;flex:1;padding:6px 0;font-size:.9rem}.app-ask input::placeholder{color:var(--ink-soft);opacity:.8}.app-ask button{background:var(--terracotta);color:#fff;cursor:pointer;border:none;border-radius:50%;flex:none;justify-content:center;align-items:center;width:34px;height:34px;transition:background .15s;display:flex}.app-ask button:hover{background:var(--terracotta-dark)}.app-stats{border-top:1px solid var(--border);flex-wrap:wrap;gap:8px 28px;margin-top:22px;padding-top:18px;display:flex}.app-stats div{align-items:baseline;gap:6px;display:flex}.app-stats strong{font-family:var(--font-heading);color:var(--ink);font-size:1rem}.app-stats span{color:var(--ink-soft);font-size:.82rem}@media (max-width:560px){.app-card{padding:20px 16px}.app-journey .dot{width:26px;height:26px}.app-journey li:not(:last-child):after{width:calc(100% - 30px);top:12px;left:calc(50% + 15px)}.app-journey .label{font-size:.68rem}.app-task{flex-wrap:wrap}}@media (max-width:800px){.portal-layout{grid-template-columns:1fr}}@media (max-width:560px){main.portal-main{padding:24px 16px}}
