@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/438aa629764e75f3-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/875ae681bfde4580-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/51251f8b9793cdb3-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/e857b654a2caa584-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/cc978ac5ee68c2b6-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/4c9affa5bc8f420e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/438aa629764e75f3-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/875ae681bfde4580-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/51251f8b9793cdb3-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/e857b654a2caa584-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/cc978ac5ee68c2b6-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(/_next/static/media/4c9affa5bc8f420e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/438aa629764e75f3-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/875ae681bfde4580-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/51251f8b9793cdb3-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/e857b654a2caa584-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/cc978ac5ee68c2b6-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/_next/static/media/4c9affa5bc8f420e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/438aa629764e75f3-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/875ae681bfde4580-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/51251f8b9793cdb3-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/e857b654a2caa584-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/cc978ac5ee68c2b6-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c4,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/4c9affa5bc8f420e-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Manrope Fallback;src:local("Arial");ascent-override:103.31%;descent-override:29.07%;line-gap-override:0.00%;size-adjust:103.19%}.__className_e83d1f{font-family:Manrope,Manrope Fallback;font-style:normal}.portal,.portal-login{--brand:#1b6ca8;--brand-deep:#0e2433;--ink:#122433;--muted:#5c7084;--line:#e3ebf2;--bg:#f3f6f9;--card:#fff;--text:var(--ink);--danger:#b42318;--ok:#1a7f4b;--warn:#a15c00;--radius:16px;--sidebar-w:272px;--shadow:0 1px 2px rgba(16,36,51,0.04),0 12px 32px rgba(16,36,51,0.04);color-scheme:light;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.portal{min-height:100dvh;display:flex}.portal ::selection,.portal-login ::selection{background:#d7ebf8;color:var(--ink)}.portal a:focus-visible,.portal button:focus-visible,.portal input:focus-visible,.portal select:focus-visible,.portal summary:focus-visible,.portal textarea:focus-visible,.portal-login a:focus-visible,.portal-login button:focus-visible,.portal-login input:focus-visible{outline:2px solid var(--brand);outline-offset:3px}.portal-skip{position:fixed;top:-80px;left:20px;background:#fff;color:var(--ink);padding:12px 16px;border-radius:10px;z-index:100;box-shadow:var(--shadow)}.portal-skip:focus{top:16px}.portal-sidebar{width:var(--sidebar-w);position:fixed;left:0;top:0;bottom:0;background:radial-gradient(420px 220px at 0 0,rgba(90,168,214,.16),transparent 70%),var(--brand-deep);color:#fff;display:flex;flex-direction:column;padding:18px 16px 14px;z-index:30;overflow:hidden}.portal-brand{display:block;background:#fff;border-radius:14px;padding:14px 14px 12px;margin:0 2px 22px;text-align:center}.portal-brand img,.portal-brand>span:first-child{display:block}.portal-brand>span:last-child{display:block;letter-spacing:.22em;font-size:10px;font-weight:700;color:#6d8296;margin:10px 0 0}.portal-nav-label{font-size:11px;color:rgba(255,255,255,.46);letter-spacing:.16em;font-weight:700;padding:0 12px 12px}.portal-sidebar nav{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.28) transparent}.portal-sidebar nav a{display:flex;align-items:center;gap:12px;padding:9px 12px;font-size:14px;font-weight:500;color:rgba(255,255,255,.78);border-radius:10px;line-height:1.3;transition:background .15s,color .15s}.portal-sidebar nav a svg{flex:none;width:18px;height:18px;opacity:.9}.portal-sidebar nav a:hover{background:rgba(255,255,255,.07);color:#fff}.portal-sidebar nav a.active{background:rgba(255,255,255,.12);color:#fff;font-weight:600;box-shadow:inset 3px 0 0 #8ecaf2}.portal-sidebar-bottom{margin-top:8px;padding-top:8px;flex:none}.portal-brand-note{font-size:12px;color:rgba(255,255,255,.55);padding:8px 12px 16px;display:flex;align-items:center;gap:10px}.portal-brand-note>span{height:1px;width:18px;background:#6eb6e4}.portal-account{display:flex;gap:12px;align-items:center;border-top:1px solid rgba(255,255,255,.1);padding:16px 8px 8px;color:#fff;border-radius:12px}.portal-account:hover{background:rgba(255,255,255,.06)}.portal-avatar{height:36px;width:36px;display:grid;place-items:center;border-radius:50%;background:rgba(142,202,242,.18);font-size:14px;font-weight:700;color:#d7eefc;flex:none}.portal-account strong{display:block;font-size:13px;font-weight:600}.portal-account small{display:block;font-size:12px;color:rgba(255,255,255,.55);margin-top:2px}.portal-account>span:last-child{margin-left:auto;font-size:14px;color:rgba(255,255,255,.45)}.portal .portal-signout{display:flex;justify-content:space-between;align-items:center;background:transparent;color:rgba(255,255,255,.62);width:100%;font-size:13px;font-weight:500;min-height:40px;padding:8px 12px;box-shadow:none;border-radius:10px}.portal .portal-signout:hover{background:rgba(255,255,255,.06);color:#fff;filter:none}.portal-workspace{margin-left:var(--sidebar-w);width:calc(100% - var(--sidebar-w));min-width:0;display:flex;flex-direction:column;background:radial-gradient(900px 280px at 100% -10%,rgba(27,108,168,.06),transparent 60%),var(--bg)}.portal-topbar{height:68px;display:flex;align-items:center;justify-content:space-between;padding:0 36px;border-bottom:1px solid rgba(18,36,51,.06);background:rgba(255,255,255,.86);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);gap:20px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.portal-breadcrumb{display:flex;align-items:center;gap:10px;font-size:13px;color:#8b9bab}.portal-breadcrumb strong{font-weight:600;color:var(--ink)}.portal-top-actions{display:flex;align-items:center;gap:18px}.portal-website{font-size:13px;font-weight:600;color:#4d657a}.portal-website:hover{color:var(--brand)}.portal-website>span{color:var(--brand);margin-left:6px}.portal-role{font-size:12px;font-weight:600;background:#eef4f8;color:#3e5c74;padding:7px 10px;border-radius:999px;letter-spacing:.01em}.portal .portal-menu-toggle,.portal-bottom-nav,.portal-mobile-brand,.portal-mobile-menu{display:none}.portal-main{padding:32px 36px 56px;max-width:1480px;margin:0 auto;width:100%;min-width:0;flex:1 1}.portal-workspace-footer{padding:18px 36px 22px;border-top:1px solid var(--line);color:#8b9bab;font-size:12px;display:flex;justify-content:space-between;gap:16px}.portal h1{font-size:32px;line-height:1.15;letter-spacing:-.035em;margin:0 0 8px}.portal h1,.portal h2{font-weight:600;color:var(--ink)}.portal h2{font-size:22px;letter-spacing:-.03em;margin:28px 0 12px}.portal h3{font-size:16px;font-weight:600;letter-spacing:-.02em;margin:0 0 8px;color:var(--ink)}.portal .row.between h1,.portal .row.between h2,.portal .row.between h3{margin:0}.portal .card{padding:22px 24px;border:1px solid var(--line);border-radius:16px;background:var(--card);box-shadow:0 1px 2px rgba(16,36,51,.04)}.portal a.card{transition:border-color .15s,transform .15s,box-shadow .15s}.portal a.card:hover{border-color:#b7d3e8;transform:translateY(-2px);box-shadow:0 10px 28px rgba(16,36,51,.07)}.portal .stack>*+*{margin-top:16px}.portal .grid2{gap:16px}.portal .btn,.portal button{border-radius:10px;font-size:14px;font-weight:600;padding:11px 16px;min-height:44px;gap:8px;box-shadow:none;background:var(--brand);letter-spacing:-.01em}.portal .btn:hover,.portal button:hover{filter:none;background:#165d90}.portal .btn.secondary,.portal button.secondary{background:#fff;color:#1d5f90;border:1px solid #d5e2ec;box-shadow:none}.portal .btn.secondary:hover,.portal button.secondary:hover{background:#f4f8fb;border-color:#b7d0e4}.portal .btn.danger,.portal button.danger{background:var(--danger)}.portal .btn.danger:hover,.portal button.danger:hover{background:#9a1e14}.portal .btn.small,.portal button.small{font-size:13px;min-height:38px;padding:8px 12px}.portal label{font-size:13px;font-weight:600;color:#3d5368;margin-bottom:6px;letter-spacing:-.01em}.portal input,.portal select,.portal textarea{font-size:15px;background:#fff;color:var(--ink);border:1px solid #d5e0ea;border-radius:10px;padding:12px 14px;min-height:46px;box-shadow:inset 0 1px 0 rgba(16,36,51,.02)}.portal input:focus,.portal select:focus,.portal textarea:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(27,108,168,.14)}.portal input:-webkit-autofill,.portal-login input:-webkit-autofill{-webkit-box-shadow:inset 0 0 0 40px #fff;-webkit-text-fill-color:var(--ink)}.portal input[type=checkbox]{min-height:18px;width:18px;height:18px;accent-color:var(--brand)}.portal input[type=hidden]{display:none}.portal textarea{min-height:120px;resize:vertical;line-height:1.5}.portal .small{font-size:14px;line-height:1.65}.portal .muted{color:var(--muted)}.portal .stack>div:first-child>a.small{font-size:13px;font-weight:600;color:var(--brand)}.portal .badge{font-size:12px;padding:4px 10px;letter-spacing:0;font-weight:600;border-radius:999px;background:#eef2f5;color:#4d6072;white-space:nowrap;text-transform:capitalize;line-height:1.4}.portal .badge.new,.portal .badge.sent{background:#e7f2fb;color:#165f96}.portal .badge.scheduled{background:#ece9fb;color:#5b45a0}.portal .badge.in_progress{background:#e5f6f2;color:#1d6e5c}.portal .badge.overdue,.portal .badge.snagging{background:#fff1e4;color:#9a5b12}.portal .badge.overdue{background:#fdecea;color:#b42318}.portal .badge.accepted,.portal .badge.complete,.portal .badge.paid{background:#e7f6ec;color:#1d6b3d}.portal .badge.cancelled,.portal .badge.declined,.portal .badge.expired,.portal .badge.void{background:#eef1f4;color:#5e6e80}.portal .flash{padding:14px 16px;font-size:14px;border-radius:12px;line-height:1.55;background:#fff7ea;color:#7a4e08;border:1px solid #f3e0bc}.portal .flash.ok{background:#eef8f2;color:#146239;border-color:#cfe8d8}.portal table{font-size:14px;border-collapse:separate;border-spacing:0}.portal th{font-size:12px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:#6a7f93;padding:12px;background:#f7fafc;border-bottom:1px solid var(--line)}.portal td{padding:14px 12px;border-bottom:1px solid #eef3f7;vertical-align:middle}.portal tbody tr:hover td{background:#f8fbfd}.portal .card:has(>table){overflow-x:auto;padding:8px}.portal .photos{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}.portal .photos figure{background:#f8fafc;padding:8px;border:1px solid var(--line);border-radius:14px;margin:0}.portal .photos figcaption{padding:8px 4px;font-size:12px}.portal .photos img{border-radius:10px}.portal .pill-group{gap:8px}.portal details.card>summary{cursor:pointer;font-weight:600;list-style:none}.portal details.card>summary::-webkit-details-marker{display:none}.portal details.card[open]>summary{padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:16px}.portal .checks label{font-size:14px;line-height:1.6;font-weight:500}.portal .invoice-doc,.portal .quote-doc{padding:32px;overflow-x:auto;border-radius:16px;background:#fff;border:1px solid var(--line);box-shadow:0 1px 2px rgba(16,36,51,.04)}.portal .quote-doc h1{font-size:28px}.portal .quote-doc table{min-width:520px}.portal .quote-doc tfoot td{background:#f8fafc;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.portal-welcome{position:relative;overflow:hidden;background:radial-gradient(520px 220px at 100% 0,rgba(126,196,236,.28),transparent 62%),linear-gradient(135deg,#0e2a40,#15486c 58%,#1b6ca8 140%);border-radius:20px;padding:32px 36px;display:flex;align-items:center;justify-content:space-between;gap:28px;color:#fff;isolation:isolate;min-height:176px}.portal-welcome:after{content:none}.portal-eyebrow{font-size:12px;letter-spacing:.16em;font-weight:700;color:var(--brand);margin:0 0 8px}.portal-welcome .portal-eyebrow{color:#b7d9ef}.portal-welcome h1{font-size:36px;font-weight:600;letter-spacing:-.04em;margin:0 0 8px;color:#fff}.portal-welcome p:not(.portal-eyebrow){font-size:15px;line-height:1.6;color:#d5e6f2;max-width:520px;margin:0}.portal-today{display:inline-block;font-size:13px;color:#c5d9e8;margin-top:16px;letter-spacing:.01em}.portal-welcome-actions{flex:none;display:flex;flex-direction:column;align-items:flex-start;gap:12px}.portal-welcome .btn{background:#fff;color:#143e5c;font-size:14px;padding:12px 18px}.portal-welcome .btn:hover{background:#f3f8fc}.portal-welcome-link{color:#d5e6f2;font-size:14px;font-weight:600}.portal-welcome-link:hover{color:#fff}.portal-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px;margin:18px 0 32px}.portal-metric,a.portal-metric{display:flex;flex-direction:column;align-items:flex-start;position:relative;background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px 20px 16px;min-height:132px;color:inherit;text-decoration:none;box-shadow:0 1px 2px rgba(16,36,51,.03);transition:border-color .15s,transform .15s,box-shadow .15s}a.portal-metric:hover{transform:translateY(-2px);border-color:#b7d3e8;box-shadow:0 10px 24px rgba(16,36,51,.06)}a.portal-metric.selected{border-color:#8ebfe0;box-shadow:0 0 0 3px rgba(27,108,168,.12);background:#fbfdff}.portal-metric>div{display:flex;align-items:center;font-size:13px;font-weight:600;color:#4d6276;gap:8px;padding-right:40px}.portal-metric>.portal-content-icon{position:absolute;top:16px;right:16px;width:18px;height:18px;padding:7px;box-sizing:content-box;border-radius:10px;background:#e8f3fb;color:var(--brand)}.portal-metric.sky>.portal-content-icon{color:#3d92c4;background:#e7f3fb}.portal-metric.green>.portal-content-icon{color:#1f8a5b;background:#e7f6ec}.portal-metric.amber>.portal-content-icon{color:#c4842a;background:#fff4e5}.portal-metric strong{font-size:34px;line-height:1.15;display:block;font-weight:600;letter-spacing:-.04em;margin:14px 0 4px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.portal-metric small{font-size:12px;color:#7b8c9d;line-height:1.45}.portal-section-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:16px;gap:16px}.portal-section-heading .portal-eyebrow{margin-bottom:4px}.portal-section-heading h2{margin:0;font-size:26px}.portal-section-subtitle{font-size:15px;color:var(--muted);margin:4px 0 0;line-height:1.5}.portal-board-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:0 0 20px;border-bottom:1px solid var(--line)}.portal-board-toolbar>span{color:var(--muted);font-size:13px;white-space:nowrap}.portal-tabs{display:flex;gap:8px;align-items:flex-end}.portal-main>.portal-tabs,.portal-main>nav.portal-tabs{border-bottom:1px solid var(--line);margin:0 0 20px}.portal-tabs a{font-size:14px;color:#6a7d90;padding:10px 12px 12px;border-bottom:2px solid transparent;font-weight:600;margin-bottom:-1px}.portal-tabs a:hover{color:var(--ink)}.portal-tabs a.active{color:var(--brand);border-color:var(--brand);font-weight:700}.portal-job-search{display:flex;gap:8px;align-items:center;max-width:360px;min-width:0;margin:0 0 10px}.portal-main>.portal-job-search{max-width:640px;margin:0 0 16px}.portal .portal-job-search input{min-height:42px;padding:8px 12px;min-width:0;flex:1 1}.portal .portal-job-search button{min-height:42px}.portal-job-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px;gap:16px}.portal-job-card{display:flex;flex-direction:column;min-width:0;padding:20px 20px 16px;border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:16px;box-shadow:0 1px 2px rgba(16,36,51,.04);transition:border-color .15s,transform .15s,box-shadow .15s;min-height:196px}.portal-job-card:hover{border-color:#b7d3e8;transform:translateY(-2px);box-shadow:0 12px 28px rgba(16,36,51,.07)}.portal-job-card-top{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}.portal-job-type{font-size:13px;color:#4d6276}.portal-job-card h3,.portal-job-type{font-weight:600;overflow-wrap:anywhere}.portal-job-card h3{font-size:18px;line-height:1.35;margin:0 0 8px;letter-spacing:-.02em}.portal-job-address{display:flex;gap:8px;align-items:flex-start;font-size:14px;line-height:1.5;color:#5f7386;margin:0 0 18px;overflow-wrap:anywhere}.portal-job-address svg,.portal-job-date svg{width:16px;height:16px;flex:none;margin-top:2px;color:#7d90a2}.portal-job-card-bottom{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;border-top:1px solid #eef3f7;padding-top:12px;margin-top:auto;font-size:13px;color:#627588}.portal-open-job{color:var(--brand);font-weight:700;font-size:13px;white-space:nowrap}.portal-open-job>span{margin-left:4px}.portal-job-date{display:flex;align-items:center;gap:6px}.portal-empty{grid-column:1/-1;background:#fff;border:1px dashed #c5d5e4;border-radius:16px;padding:48px 24px;text-align:center}.portal-empty-symbol{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#e8f3fb;color:var(--brand);margin:0 auto 14px;font-size:18px;font-weight:600}.portal-empty h3{font-size:20px;font-weight:600}.portal-empty p{color:var(--muted);font-size:14px;line-height:1.6;margin:8px auto 18px;max-width:420px}.portal-collection{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:16px;gap:16px}.portal-collection .card{margin:0;min-width:0;overflow-wrap:anywhere}.portal-collection h3{font-size:17px;line-height:1.4}.portal-page-intro{color:var(--muted);font-size:15px;line-height:1.6;margin:0 0 24px;max-width:68ch}.portal-main>.row.between:has(h1){align-items:flex-end;gap:16px;margin-bottom:4px}.portal-finance-card{display:flex;flex-direction:column;min-height:220px}.portal-record-ref{font-size:13px;font-weight:700;letter-spacing:.02em;color:#5c7388}.portal-finance-card h3{margin:8px 0 4px}.portal-record-customer{font-size:14px;color:var(--muted);margin:0 0 16px}.portal-record-amount{display:block;font-size:28px;font-weight:600;letter-spacing:-.03em;line-height:1.2;margin:auto 0 16px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.portal-record-footer{border-top:1px solid #eef3f7;padding-top:12px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:13px;color:#627588}.portal-record-footer>span:last-child{color:var(--brand);font-weight:700}.portal-filter-panel{gap:14px;margin-bottom:16px;align-items:flex-end}.portal-filter-panel>div{flex:1 1;min-width:160px}.portal-invoice-summary{margin-bottom:18px;background:#f4f8fb;border-color:#e3eef6;font-size:14px}.portal-day-plan>.row.between{align-items:flex-end}.portal-day-plan>section{padding:20px;border:1px solid var(--line);background:#fff;border-radius:16px}.portal-day-plan>section h2{font-size:20px;margin-top:0}.portal-day-plan a.card{border-left:3px solid #8ebfe0}.portal-day-plan a.card h3{font-size:16px}.portal-job-detail{max-width:1100px}.portal-job-detail>.row.between{padding:22px 24px;background:linear-gradient(135deg,#0e2a40,#1b628f);color:#fff;border-radius:16px;align-items:center}.portal-job-detail>.row.between h1{font-size:28px;color:#fff}.portal-job-detail>h2{padding-top:8px}.portal-job-detail>.card:first-of-type{border-top:1px solid var(--line)}.portal-job-detail h3{font-size:16px}.portal .calendar-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.portal .calendar-toolbar input{width:170px}.calendar-weeks{display:grid;grid-gap:28px;gap:28px}.calendar-week{min-width:0}.calendar-week-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.portal .calendar-week-heading h2{font-size:18px;margin:0}.calendar-week-heading>span{font-size:13px;color:var(--muted)}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 1px 2px rgba(16,36,51,.04)}.calendar-day{min-width:0;border-right:1px solid #eef3f7;display:flex;flex-direction:column;min-height:0}.calendar-day:last-child{border-right:0}.calendar-day.is-today{background:#f5f9fc}.calendar-day.is-selected .calendar-day-heading{box-shadow:inset 0 -3px var(--brand);background:#eef6fb}.calendar-day-heading{display:flex;align-items:center;gap:6px;padding:12px 10px;border-bottom:1px solid #eef3f7;color:#5d7286;flex-wrap:wrap;flex:none;min-height:72px;text-decoration:none}.calendar-day-heading>span{font-size:12px;font-weight:700}.calendar-day-heading strong{font-size:20px;color:#1c3448;letter-spacing:-.03em}.calendar-day-heading small{font-size:12px}.calendar-day.is-today .calendar-day-heading strong{color:var(--brand)}.calendar-day-count{flex-basis:100%;font-size:12px;font-weight:600;color:var(--brand)}.calendar-day-jobs{display:grid;grid-gap:8px;gap:8px;padding:8px;height:360px;min-height:0;overflow-y:auto;overflow-x:hidden;align-content:start;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#b7c8d6 transparent}.calendar-day-jobs:focus-visible{outline:2px solid var(--brand);outline-offset:-2px}.calendar-job{display:flex;flex-direction:column;gap:4px;padding:10px;background:#f7fafc;border:1px solid #e4edf4;border-left:3px solid #5aa0cf;border-radius:10px;overflow-wrap:anywhere;color:#1c3448;flex:none;text-decoration:none}.calendar-job:hover{background:#eef6fb;border-color:#b7d3e8}.calendar-job strong{font-size:13px;line-height:1.4}.calendar-job>small,.calendar-job>span:not(.badge){font-size:12px;line-height:1.4;color:#5f7386}.calendar-job>small{border-top:1px solid #e6eef4;padding-top:6px}.portal .calendar-job .badge{font-size:11px;padding:2px 7px;align-self:flex-start;white-space:normal}.calendar-job.status-complete,.calendar-job.status-in_progress{border-left-color:#2f9a68}.calendar-job.status-snagging{border-left-color:#d39a3e}.calendar-no-jobs{font-size:12px;color:#8b9bab;text-align:center;margin:18px 0}.calendar-daily-heading{padding-top:8px;scroll-margin-top:88px}.portal .calendar-daily-heading h2{margin:0 0 6px}.calendar-daily-heading p{font-size:14px;color:var(--muted);margin:0}.calendar-scroll-help{font-size:13px;color:var(--muted);margin:0}@media (min-width:1800px){.portal-main{padding-top:40px}}@media (max-width:1250px){.portal{--sidebar-w:236px}.portal-sidebar{padding-left:12px;padding-right:12px}.portal-sidebar nav a{font-size:13px;padding:10px}.portal-main{padding:28px 24px 48px}.portal-topbar{padding:0 24px}.portal-collection,.portal-job-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-welcome{padding:28px}.portal-welcome h1{font-size:30px}.portal-metrics{gap:12px}.portal-workspace-footer{padding:18px 24px}}@media (max-width:1000px){.portal{--sidebar-w:220px}.portal-welcome{align-items:flex-start;flex-direction:column;gap:18px}.portal-welcome-actions{flex-direction:row;align-items:center;gap:18px}.portal-welcome h1{font-size:28px}.portal-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.portal-website{display:none}}@media (min-width:761px) and (max-width:1200px){.calendar-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.calendar-day{border-bottom:1px solid #eef3f7}.calendar-day:nth-child(4){border-right:0}}@media (max-width:760px){.portal-sidebar{display:none}.portal-workspace{margin-left:0;width:100%;padding-bottom:84px}.portal-topbar{height:64px;padding:0 16px;position:-webkit-sticky;position:sticky;top:0;z-index:40}.portal-breadcrumb,.portal-role{display:none}.portal-mobile-brand{display:block;line-height:0}.portal-mobile-brand img{height:40px;width:auto;object-fit:contain}.portal .portal-menu-toggle{display:inline-flex;background:#eef4f8;color:#1d5278;box-shadow:none;min-height:40px;font-size:13px;padding:8px 12px;border-radius:10px}.portal .portal-menu-toggle:hover{background:#e4eef5}.portal-mobile-menu{display:grid;grid-template-columns:1fr 1fr;grid-gap:4px;gap:4px;padding:12px 14px 16px;position:fixed;top:64px;left:0;right:0;background:#0e2433;border-bottom:0;z-index:35;box-shadow:0 18px 40px rgba(14,36,51,.28);max-height:calc(100dvh - 148px);overflow-y:auto}.portal-mobile-menu a{display:flex;align-items:center;gap:8px;font-size:14px;padding:12px 10px;color:rgba(255,255,255,.82);border-radius:10px}.portal-mobile-menu a[aria-current=page]{background:rgba(255,255,255,.1);color:#fff}.portal-mobile-menu .portal-signout{color:rgba(255,255,255,.7);grid-column:1/-1}.portal-main{padding:20px 16px 32px}.portal-bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;background:rgba(255,255,255,.96);border-top:1px solid var(--line);padding:6px 8px calc(8px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);justify-content:space-around}.portal-bottom-nav a{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#7d8e9e;font-size:11px;font-weight:600;min-width:56px;min-height:48px}.portal-bottom-nav a.active{color:var(--brand)}.portal-bottom-nav a.active:after{content:"";width:16px;height:2px;background:var(--brand);position:absolute;top:0;border-radius:2px}.portal .card{padding:18px}.portal h1{font-size:28px}.portal input,.portal select,.portal textarea{font-size:16px}.portal-day-plan>section,.portal-workspace-footer{padding:16px}.portal-login{grid-template-columns:1fr}.portal-login-visual{min-height:0;padding:28px 22px 8px}.portal-login-story{padding:28px 0 8px}.portal-login-story h1{font-size:36px}.portal-login-main{padding:12px 16px 40px;align-items:flex-start}.calendar-grid{grid-template-columns:1fr}.calendar-day{display:grid;grid-template-columns:76px minmax(0,1fr);min-height:80px;border-right:0;border-bottom:1px solid #eef3f7}.calendar-day:last-child{border-bottom:0}.calendar-day-heading{flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:2px;padding:14px 10px;border-bottom:0;border-right:1px solid #eef3f7;min-height:0}.calendar-day-jobs{height:auto;max-height:320px;min-height:88px;grid-template-columns:1fr}.calendar-day-count{flex-basis:auto;font-size:11px}.calendar-no-jobs{text-align:left;margin:12px 8px}.portal-board-toolbar{flex-wrap:wrap}.portal-job-search{max-width:none;width:100%}}@media (max-width:480px){.portal-welcome{padding:22px 18px;border-radius:16px}.portal-welcome h1{font-size:28px}.portal-welcome-actions{flex-direction:column;align-items:stretch}.portal-metrics{gap:10px}.portal-metric,a.portal-metric{padding:16px;min-height:118px}.portal-metric strong{font-size:30px}.portal-collection,.portal-job-grid{grid-template-columns:1fr}.portal-filter-panel>div{min-width:100%}.portal-workspace-footer>span:last-child{display:none}.portal .invoice-doc,.portal .quote-doc{padding:16px}.portal-job-detail>.row.between{padding:18px}.portal-job-detail>.row.between h1{font-size:22px}.portal-mobile-menu{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.portal *,.portal-login *{transition:none!important}}@media print{.portal-bottom-nav,.portal-job-search,.portal-mobile-menu,.portal-sidebar,.portal-topbar,.portal-workspace-footer{display:none!important}.portal-workspace{margin:0;width:100%;padding:0;background:#fff}.portal-main{padding:0;max-width:none}.portal{display:block;background:#fff}.portal .card,.portal .portal-job-card,.portal .quote-doc{box-shadow:none}.calendar-day-jobs{height:auto;max-height:none;overflow:visible}.calendar-scroll-help{display:none}}.portal-login{min-height:100dvh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(320px,.95fr)}.portal-login-visual{background:radial-gradient(700px 420px at 20% 80%,rgba(27,108,168,.45),transparent 60%),linear-gradient(165deg,#0c1e2c,#12344c 48%,#1b6ca8 160%);color:#fff;padding:48px clamp(32px,6vw,88px);display:flex;flex-direction:column;position:relative;overflow:hidden;min-height:100dvh}.portal-login-visual:before{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(255,255,255,.16) 1px,transparent 0);background-size:22px 22px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.15),rgba(0,0,0,.55) 40%,transparent 85%);mask-image:linear-gradient(180deg,rgba(0,0,0,.15),rgba(0,0,0,.55) 40%,transparent 85%);pointer-events:none}.portal-login-visual:after{content:none}.portal-login-brand{background:#fff;padding:14px 16px 10px;border-radius:14px;align-self:flex-start;position:relative;z-index:1;box-shadow:0 10px 30px rgba(0,0,0,.12)}.portal-login-brand img{width:210px;height:auto;display:block}.portal-login-story{margin:auto 0;padding:64px 0;position:relative;z-index:1;max-width:520px}.portal-login-story small{font-size:12px;letter-spacing:.18em;font-weight:700;color:#b7d7ee}.portal-login-story h1{font-size:clamp(40px,4.4vw,64px);font-weight:600;line-height:1.05;letter-spacing:-.045em;margin:16px 0 18px;color:#fff}.portal-login-story p{font-size:17px;line-height:1.6;max-width:420px;color:#d5e4ef;margin:0}.portal-login-visual>span{position:relative;z-index:1;font-size:12px;letter-spacing:.16em;font-weight:700;color:rgba(255,255,255,.55)}.portal-login-main{padding:40px 28px;display:flex;align-items:center;justify-content:center;background:#f3f6f9}.portal-login-form{width:100%;max-width:420px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:36px 32px 28px;box-shadow:0 18px 50px rgba(16,36,51,.08)}.portal-login-form>small{font-size:12px;letter-spacing:.16em;font-weight:700;color:var(--brand)}.portal-login-form h2{font-size:32px;font-weight:600;letter-spacing:-.04em;margin:10px 0 6px;color:var(--ink)}.portal-login-form>p{font-size:15px;color:var(--muted);margin:0 0 24px;line-height:1.5}.portal-login-form form{display:flex;flex-direction:column;gap:16px}.portal-login-form label{font-size:13px;font-weight:600;color:#3d5368;margin-bottom:6px;display:block}.portal-login-form input{font-size:16px;min-height:48px;width:100%;background:#fff;border:1px solid #d5e0ea;border-radius:10px;color:var(--ink);padding:12px 14px}.portal-login-form input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(27,108,168,.14)}.portal-login-form button{background:var(--brand);color:#fff;font-size:15px;font-weight:600;justify-content:space-between;border-radius:12px;min-height:50px;margin-top:4px;border:0;width:100%}.portal-login-form button:hover{background:#165d90}.portal-login-back{display:inline-block;margin-top:22px;color:#5c7084;font-size:14px;font-weight:600}.portal-login-back:hover{color:var(--brand)}.portal-login-form .flash{font-size:14px;line-height:1.5;margin-bottom:8px}.portal-customer{max-width:1040px}.portal-customer-head{display:flex;justify-content:space-between;align-items:flex-end;gap:28px 40px;margin:12px 0 40px;padding-bottom:28px;border-bottom:1px solid var(--line)}.portal-customer-head h1{font-size:40px;line-height:1.1;margin:0 0 12px}.portal-customer-contact{display:flex;flex-wrap:wrap;align-items:center;gap:10px 18px;margin:0;font-size:16px;color:var(--ink)}.portal-customer-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.portal-customer-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(240px,.85fr);grid-gap:56px;gap:56px;align-items:start}.portal-customer-primary{display:flex;flex-direction:column;gap:40px;min-width:0}.portal-customer-admin h2,.portal-customer-aside h2,.portal-customer-primary h2{margin:0 0 14px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:#6a7f93;font-weight:700}.portal-customer-list{background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden}.portal-customer-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;color:inherit;border-top:1px solid #eef3f7;font-size:15px;font-weight:600}.portal-customer-row:first-child{border-top:0}.portal-customer-row:hover{background:#f7fafc}.portal-customer-row>span:first-child{min-width:0;overflow-wrap:anywhere}.portal-customer-aside{gap:32px;min-width:0;padding-top:2px}.portal-customer-aside,.portal-customer-sites{display:flex;flex-direction:column}.portal-site{padding:14px 0;border-top:1px solid var(--line)}.portal-site:first-child{border-top:0;padding-top:0}.portal-site strong{display:block;font-size:14px;font-weight:600;line-height:1.45}.portal-site .muted{display:block;margin-top:4px}.portal-customer-notes{margin:0;font-size:14px;line-height:1.65;color:#3d5368;white-space:pre-line}.portal-customer-disclose{margin-top:16px}.portal-customer-admin summary,.portal-customer-disclose>summary{cursor:pointer;font-weight:600;font-size:14px;color:var(--brand);list-style:none}.portal-customer-admin summary::-webkit-details-marker,.portal-customer-disclose>summary::-webkit-details-marker{display:none}.portal-customer-admin details form,.portal-customer-disclose>form{margin-top:14px}.portal-customer-edit{margin-top:48px;box-shadow:none}.portal-customer-edit>summary{font-size:15px}.portal-customer-edit>form{margin-top:8px}.portal-customer-admin{margin-top:36px;max-width:640px}.customers-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px 28px;margin-bottom:18px}.customers-head .portal-page-intro{margin:0}.customers-add{position:relative;flex:none;margin-top:4px}.customers-add>summary{list-style:none;cursor:pointer;display:inline-flex;align-items:center;min-height:42px;padding:10px 16px;border-radius:10px;background:var(--brand);color:#fff;font-size:14px;font-weight:600}.customers-add>summary::-webkit-details-marker{display:none}.customers-add>summary:hover{background:#165d90}.customers-add[open]>form{position:absolute;z-index:8;right:0;top:calc(100% + 8px);width:min(560px,calc(100vw - 64px));margin:0;box-shadow:0 16px 40px rgba(16,36,51,.14)}.customers-search{max-width:420px;margin:0 0 8px}.customers-search input{width:100%}.customers-count{margin-left:auto;padding-bottom:12px}.customers-rows{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.customers-row{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(120px,.8fr) auto;align-items:center;grid-gap:12px 20px;gap:12px 20px;padding:13px 18px;border-top:1px solid #eef3f7;color:inherit;min-height:52px}.customers-row:first-child{border-top:0}.customers-row:hover{background:#f7fafc}.customers-name{min-width:0;font-weight:600;font-size:15px;display:flex;align-items:center;gap:10px}.customers-name-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.customers-name .badge{flex:none}.customers-phone{color:var(--muted);font-size:14px;white-space:nowrap}.customers-sites{color:#4d6276;font-size:14px;white-space:nowrap;text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media (max-width:700px){.customers-head{align-items:center}.customers-add[open]{position:static}.customers-add[open]>form{position:static;width:min(560px,100%);margin-top:12px}.customers-row{display:flex;gap:10px 12px;padding:12px 14px}.customers-name{flex:1 1 auto}.customers-phone:empty{display:none}.customers-sites{margin-left:auto}}.portal-customer-admin .card{box-shadow:none;background:transparent}@media (max-width:900px){.portal-customer-head{flex-direction:column;align-items:flex-start;margin-bottom:28px}.portal-customer-head h1{font-size:32px}.portal-customer-actions{justify-content:flex-start}.portal-customer-grid{grid-template-columns:1fr;gap:36px}}.company-search{position:relative}.company-options{position:absolute;z-index:20;left:0;right:0;top:100%;margin:5px 0 0;padding:6px;background:#fff;border:1px solid #c9dce9;border-radius:9px;box-shadow:0 12px 30px #183e5c18;max-height:260px;overflow:auto;list-style:none}.company-options li{padding:11px 12px;cursor:pointer;border-radius:5px;font-size:14px}.company-options li.highlighted,.company-options li:hover{background:#eaf3fb;color:#1765a9}.job-entry{max-width:1050px}.portal-main .job-entry h3{padding-top:12px;margin-bottom:15px}.job-new-company summary{cursor:pointer;color:#2479bd;font-size:13px}.job-new-company[open] .grid2{margin-top:15px}.portal-main .job-entry textarea{min-height:115px}.portal-main .job-entry label:not(:first-child){margin-top:14px}