.portal-home,.portal-login{background:#f4f0e8;min-height:70vh;padding:90px 0}.portal-login-grid{display:grid;grid-template-columns:1.1fr .9fr;grid-gap:90px;gap:90px;align-items:center}.portal-head h1,.portal-login h1{font-size:clamp(40px,5vw,68px);line-height:1.15;margin:18px 0}.portal-login-grid>div>p{font-size:18px;line-height:1.9;color:var(--muted);max-width:650px}.portal-points{display:grid;grid-gap:13px;gap:13px;margin-top:28px}.portal-points span{display:flex;align-items:center;gap:10px}.portal-points svg{color:var(--copper);width:19px}.portal-auth{background:white;border:1px solid var(--line);padding:36px;display:grid;grid-gap:17px;gap:17px;box-shadow:16px 16px 0 var(--petrol)}.portal-auth h2{font-size:30px;margin:0}.portal-auth label{font-weight:600}.portal-auth input{display:block;width:100%;padding:13px;border:1px solid var(--line);margin-top:7px}.portal-auth .button-primary{justify-content:center}.portal-link{border:0;background:none;color:var(--petrol);font-weight:600;cursor:pointer}.portal-auth small{color:var(--muted);text-align:center}.portal-follow-link{display:block;margin-top:14px;color:var(--petrol);font-weight:700}.portal-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:42px}.portal-head h1{font-size:46px;margin:8px 0}.portal-head p{color:var(--muted)}.portal-layout{display:grid;grid-template-columns:1.45fr .65fr;grid-gap:24px;gap:24px}.portal-side section,.request-map{background:#fff;border:1px solid var(--line);padding:28px}.request-map-title,.request-map-title>div{display:flex;align-items:center;justify-content:space-between;gap:10px}.request-map-title h2{margin:0}.request-map-title>span{color:var(--copper);font-weight:700}.timeline{margin-top:30px}.timeline article{display:grid;grid-template-columns:42px 1fr;grid-gap:14px;gap:14px;position:relative;padding-bottom:28px}.timeline article:not(:last-child):before{content:"";position:absolute;right:20px;top:39px;height:calc(100% - 28px);width:2px;background:var(--line)}.stage-icon{width:42px;height:42px;border:2px solid var(--line);border-radius:50%;display:grid;place-items:center;color:#a5aaa6}.done .stage-icon{background:var(--petrol);border-color:var(--petrol);color:#fff}.current .stage-icon{border-color:var(--copper);color:var(--copper)}.timeline small{color:var(--copper)}.timeline h3{margin:2px 0 4px}.timeline p{margin:0;color:var(--muted)}.portal-side{display:grid;grid-gap:18px;gap:18px;align-content:start}.portal-side h2{margin:10px 0}.portal-side p{color:var(--muted);line-height:1.7}.portal-side .button-primary{justify-content:center}.progress-number{display:block;font-size:42px;margin:10px 0}.progress{height:7px;background:#e1e4df}.progress i{display:block;width:40%;height:100%;background:var(--copper)}@media(max-width:800px){.portal-layout,.portal-login-grid{grid-template-columns:1fr;gap:35px}.portal-head{align-items:flex-start;flex-direction:column;gap:18px}}.portal-invalid,.portal-landing{max-width:760px;text-align:center;display:grid;justify-items:center;grid-gap:14px;gap:14px}.portal-invalid h1,.portal-landing h1{font-size:clamp(38px,6vw,68px);margin:4px 0}.portal-invalid p,.portal-landing>p{font-size:18px;line-height:1.9;color:var(--muted)}.portal-security,.secure-badge{display:flex;align-items:center;gap:8px;background:#e5efeb;padding:12px 16px;border:1px solid #c8dcd5}.portal-loading{min-height:300px;display:grid;place-items:center;font-size:18px}.estimate-note{background:#f8f3eb;border-right:3px solid var(--copper);padding:14px 16px;line-height:1.8;color:var(--muted)}.portal-file{display:inline-flex;margin-top:10px;color:var(--petrol);font-weight:700}.portal-chat{display:grid;grid-gap:10px;gap:10px;max-height:310px;overflow:auto;margin:14px 0}.chat-message{background:#f4f6f3;padding:11px;border-radius:10px}.chat-message.client{background:#e7f1ed}.chat-message p{margin:4px 0!important}.chat-message small{color:var(--muted)}.portal-reply{display:grid;grid-gap:9px;gap:9px}.portal-reply label{display:flex;gap:7px;align-items:center;font-weight:700}.portal-reply textarea{min-height:100px;resize:vertical;border:1px solid var(--line);padding:11px;font:inherit}.portal-reply button{justify-content:center}.secure-badge{white-space:nowrap}.progress i{transition:width .3s ease}.portal-home,.portal-login{background:var(--paper);color:var(--ink)}.portal-auth,.portal-side section,.request-map{background:var(--surface);border-color:#44564d;box-shadow:none}.portal-auth input,.portal-reply textarea{background:var(--paper);color:var(--ink);border-color:#52655c}.portal-security,.secure-badge{background:var(--surface-raised);color:var(--petrol);border-color:#52655c}.estimate-note{background:var(--surface-raised);color:#c5ceca;border-color:var(--copper)}.chat-message{background:#17211b;border:1px solid #3b4a43}.chat-message.client{background:#213019;border-color:#526a36}.chat-message p{color:var(--ink)!important}.progress{background:#34443c}.done .stage-icon{color:var(--on-accent)}.portal-updates{margin-top:26px;padding-top:22px;border-top:1px solid #3b4a43;display:grid;grid-gap:12px;gap:12px}.portal-updates .eyebrow{display:flex;align-items:center;gap:6px}.update-row{display:grid;grid-template-columns:20px 1fr;grid-gap:11px;gap:11px;align-items:start}.update-row svg{color:var(--petrol);margin-top:2px}.update-row strong{display:block}.update-row p{margin:3px 0 0!important;color:var(--muted)!important;font-size:14px}.update-row small{color:#7d918d;font-size:12px}.gallery-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.upload-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid #52655c;background:var(--surface-raised);color:var(--petrol);border-radius:8px 3px 8px 3px;padding:7px 12px;font:inherit;font-size:13px;font-weight:600;cursor:pointer}.upload-btn:hover:not(:disabled){border-color:var(--petrol);background:#213019}.upload-btn:disabled{opacity:.6;cursor:default}.muted-note{color:var(--muted);font-size:13px;margin:12px 0 0}.gallery{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px;margin-top:14px}.shot{margin:0;border:1px solid #3b4a43;border-radius:10px 3px 10px 3px;overflow:hidden;background:#17211b}.shot.client{border-color:#526a36}.shot img{display:block;width:100%;height:120px;object-fit:cover}.shot figcaption{padding:7px 9px;font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.portal-err{background:#2a1512;border:1px solid #6a2f26;color:#ff9e8c;padding:11px 13px;border-radius:9px 3px 9px 3px;font-size:13px;margin-top:16px}.portal-summary{display:grid;grid-template-columns:1.4fr 1fr;grid-gap:16px;gap:16px;margin-bottom:22px}.portal-summary>div{background:var(--surface);border:1px solid #3b4a43;border-radius:14px 3px 14px 3px;padding:20px 22px;display:flex;align-items:center;gap:18px}.ps-finish small,.ps-progress small{display:block;color:var(--muted);font-size:12px;margin-bottom:5px}.ps-finish strong,.ps-progress strong{font-size:20px;letter-spacing:-.01em;color:var(--ink)}.ps-ring{--p:0%;position:relative;width:74px;height:74px;flex:none;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--petrol) var(--p),#2b3a32 var(--p) 100%)}.ps-ring:before{content:"";position:absolute;width:56px;height:56px;border-radius:50%;background:var(--surface)}.ps-ring span{position:relative;font:700 17px IBM Plex Sans Arabic,sans-serif;color:var(--petrol)}.ps-remain{display:inline-flex;align-items:center;gap:5px;margin-top:6px;color:var(--moss);font-size:13px}.ps-finish{justify-content:flex-start}.timeline article:before{display:none!important}.timeline .stage-row{display:grid;grid-template-columns:44px 1fr;grid-gap:16px;gap:16px;padding-bottom:2px;align-items:stretch}.stage-col{display:flex;flex-direction:column;align-items:center}.stage-row .stage-icon{width:44px;height:44px;flex:none;border:2px solid #3b4a43;border-radius:50%;display:grid;place-items:center;color:#8b978f;background:var(--night)}.stage-row.st-completed .stage-icon{background:var(--petrol);border-color:var(--petrol);color:var(--on-accent)}.stage-row.st-active .stage-icon{border-color:var(--petrol);color:var(--petrol);box-shadow:0 0 0 4px rgba(198,255,0,.12)}.stage-connector{flex:1 1;width:3px;min-height:16px;background:#2b3a32;border-radius:3px;margin:5px 0;position:relative;overflow:hidden}.stage-connector i{position:absolute;top:0;inset-inline-start:0;width:100%;background:linear-gradient(180deg,var(--moss),var(--petrol));border-radius:3px;transition:height 1.2s linear}.stage-content{padding-bottom:14px;min-width:0}.stage-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.stage-meta small{color:var(--copper);font:12px IBM Plex Mono,monospace}.stage-content h3{margin:6px 0 4px;font-size:20px}.stage-content p{margin:0;color:var(--muted);line-height:1.7}.chip-done{display:inline-flex;align-items:center;gap:4px;background:rgba(64,220,140,.12);color:#5fe0a0;border:1px solid rgba(64,220,140,.28);padding:3px 9px;font-weight:600}.chip-done,.chip-live{border-radius:20px;font-size:11px}.chip-live{background:var(--petrol);color:var(--on-accent);padding:3px 10px;font-weight:700}.chip-soon{display:inline-flex;align-items:center;gap:4px;background:#1e2a23;color:var(--muted);border:1px solid #3b4a43;border-radius:20px;padding:3px 9px;font-size:11px}.stage-row.st-upcoming .stage-content h3,.stage-row.st-upcoming .stage-content p{filter:blur(4px);opacity:.55;-webkit-user-select:none;-moz-user-select:none;user-select:none}.stage-row.st-upcoming{opacity:.9}.stage-timer{margin-top:12px}.st-bar{height:7px;background:#2b3a32;overflow:hidden}.st-bar,.st-bar i{border-radius:20px}.st-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--moss),var(--petrol));transition:width 1.2s linear}.stage-timer span{display:inline-flex;align-items:center;gap:6px;margin-top:7px;color:var(--moss);font-size:12.5px}.portal-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px;margin-top:18px}.portal-card{background:var(--surface);border:1px solid #3b4a43;border-radius:14px 3px 14px 3px;padding:24px}.portal-card .eyebrow{display:inline-flex;align-items:center;gap:6px}@media(max-width:820px){.portal-grid,.portal-summary{grid-template-columns:1fr}.gallery{grid-template-columns:1fr 1fr}}