@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-cyrillic-400-normal-obahsSVq.woff2)format("woff2"),url(/assets/inter-cyrillic-400-normal-HOLc17fK.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2)format("woff2"),url(/assets/inter-greek-ext-400-normal-KugGGMne.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-greek-400-normal-B4URO6DV.woff2)format("woff2"),url(/assets/inter-greek-400-normal-q2sYcFCs.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-vietnamese-400-normal-DMkecbls.woff2)format("woff2"),url(/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-ext-400-normal-C1nco2VV.woff2)format("woff2"),url(/assets/inter-latin-ext-400-normal-77YHD8bZ.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2)format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-cyrillic-500-normal-BasfLYem.woff2)format("woff2"),url(/assets/inter-cyrillic-500-normal-CxZf_p3X.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-ext-500-normal-C4iEst2y.woff2)format("woff2"),url(/assets/inter-greek-ext-500-normal-2j5mBUwD.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-greek-500-normal-BIZE56-Y.woff2)format("woff2"),url(/assets/inter-greek-500-normal-Xzm54t5V.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-vietnamese-500-normal-DOriooB6.woff2)format("woff2"),url(/assets/inter-vietnamese-500-normal-mJboJaSs.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2)format("woff2"),url(/assets/inter-latin-ext-500-normal-BxGbmqWO.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2)format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-cyrillic-600-normal-CWCymEST.woff2)format("woff2"),url(/assets/inter-cyrillic-600-normal-4D_pXhcN.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2)format("woff2"),url(/assets/inter-greek-ext-600-normal-B8X0CLgF.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-greek-600-normal-plRanbMR.woff2)format("woff2"),url(/assets/inter-greek-600-normal-BZpKdvQh.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2)format("woff2"),url(/assets/inter-vietnamese-600-normal-BuLX-rYi.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2)format("woff2"),url(/assets/inter-latin-ext-600-normal-CIVaiw4L.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2)format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2)format("woff2"),url(/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-cyrillic-700-normal-CjBOestx.woff2)format("woff2"),url(/assets/inter-cyrillic-700-normal-DrXBdSj3.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2)format("woff2"),url(/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff)format("woff");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-greek-700-normal-C3JjAnD8.woff2)format("woff2"),url(/assets/inter-greek-700-normal-BUv2fZ6O.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2)format("woff2"),url(/assets/inter-vietnamese-700-normal-BZaoP0fm.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2)format("woff2"),url(/assets/inter-latin-ext-700-normal-TidjK2hL.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/inter-latin-700-normal-Yt3aPRUw.woff2)format("woff2"),url(/assets/inter-latin-700-normal-BLAVimhd.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*,:before,:after{box-sizing:border-box}:root{--color-sidebar-bg:#1a2235;--color-sidebar-text:#c8d0e0;--color-topbar-bg:#fff;--color-accent:#1b4f72;--color-text:#1a1a2e;--color-text-muted:#6b7280;--color-bg:#f0f2f5;--color-surface:#fff;--color-border:#dde1e7;--touch-target:48px;--sidebar-width:232px;--sidebar-width-collapsed:64px;--topbar-height:56px;--color-ink:#1c2430;--color-ink-soft:#5b6474;--color-paper:#f6f7f5;--color-line:#e4e6e9;--color-amber:#f0a202;--color-amber-dark:#c9840a;--color-wire:#3b6e8f;--color-status-active:#4c9a6a;--color-status-draft:#8891a0;--color-status-review:#3b6e8f;--color-status-overdue:#d64545;--color-archived-bg:#fbeaea;--color-archived-text:#a32d2d;--font-mono:monospace;-webkit-font-smoothing:antialiased;font-family:Inter,system-ui,sans-serif;font-size:16px;line-height:1.5}html,body,#root{height:100%;margin:0;padding:0}body{color:var(--color-ink);background:var(--color-paper)}h1,h2,h3{color:var(--color-ink);margin:0;font-weight:700;line-height:1.2}.sidebar{background:var(--color-ink);color:var(--color-sidebar-text);width:var(--sidebar-width);z-index:5;flex-direction:column;height:100vh;transition:width .15s;display:flex;position:fixed;top:0;left:0;overflow:hidden}.sidebar-logo{border-bottom:1px solid #ffffff1a;align-items:center;gap:.5rem;padding:1.25rem 1.25rem 1rem;transition:padding .15s;display:flex}.sidebar-logo-badge{background:var(--color-amber);width:24px;height:24px;color:var(--color-ink);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar-logo-text{color:var(--color-paper);letter-spacing:.01em;font-size:1.05rem;font-weight:700}.sidebar-nav{margin:0;padding:.5rem 0;list-style:none}.sidebar-nav li{margin:0}.sidebar-nav-item{min-height:var(--touch-target);color:var(--color-sidebar-text);align-items:center;gap:.75rem;padding:0 1.25rem;font-size:.95rem;font-weight:500;text-decoration:none;transition:background .12s;display:flex}.sidebar-nav-item:hover{background:#ffffff14}.sidebar-nav-item--active{background:var(--color-amber);color:var(--color-ink);font-weight:600}.sidebar-nav-item--active:hover{background:var(--color-amber)}.sidebar-nav-item svg{opacity:.8;flex-shrink:0}.sidebar-nav-item--active svg{opacity:1}.sidebar-nav-item--disabled{color:var(--color-ink-soft);cursor:default}.sidebar-nav-item--disabled:hover{background:0 0}.sidebar-nav-item--disabled svg{opacity:.5}.sidebar-collapse-btn{cursor:pointer;background:0 0;border:none;border-top:1px solid #ffffff14;justify-content:center;width:100%;margin-top:auto;padding-top:0;font-family:inherit}.sidebar-collapse-btn:hover{color:var(--color-amber)}.sidebar--collapsed{width:var(--sidebar-width-collapsed)}.sidebar--collapsed .sidebar-logo{justify-content:center;padding:1.25rem 0 1rem}.sidebar--collapsed .sidebar-nav-item{justify-content:center;padding:0}.sidebar--collapsed .sidebar-nav-item span{display:none}.topbar{height:var(--topbar-height);background:var(--color-surface);border-bottom:1px solid var(--color-line);top:0;left:var(--sidebar-width);z-index:5;flex-shrink:0;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 2rem;transition:left .15s;display:grid;position:fixed;right:0}.app-layout--sidebar-collapsed .topbar{left:var(--sidebar-width-collapsed)}.topbar-search-wrap{background:var(--color-paper);border-radius:6px;justify-self:start;align-items:center;gap:.5rem;width:100%;max-width:300px;padding:.375rem .75rem;display:flex}.topbar-search{width:100%;color:var(--color-ink);background:0 0;border:none;outline:none;font-family:inherit;font-size:.9rem}.topbar-company{color:var(--color-ink);white-space:nowrap;grid-column:2;font-size:.9rem;font-weight:600}.topbar-right{grid-column:3;justify-self:end;align-items:center;gap:1rem;display:flex}.topbar-bell{width:44px;height:44px;color:var(--color-ink-soft);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;display:flex}.topbar-bell:hover{background:var(--color-bg)}.topbar-avatar-wrap{position:relative}.topbar-avatar-group{cursor:pointer;background:0 0;border:none;align-items:center;gap:.5rem;padding:.25rem;font-family:inherit;display:flex}.topbar-avatar{background:var(--color-ink);width:28px;height:28px;color:var(--color-paper);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.75rem;font-weight:600;display:flex}.topbar-avatar--small{width:24px;height:24px;font-size:.6875rem}.topbar-avatar-menu{background:var(--color-surface);border:1.5px solid var(--color-line);z-index:1000;border-radius:6px;min-width:160px;position:absolute;top:calc(100% + 4px);right:0;overflow:hidden;box-shadow:0 4px 16px #0000001f}.topbar-menu-icon-slot{flex-shrink:0;justify-content:center;align-items:center;width:24px;display:flex}.topbar-avatar-menu-header{color:var(--color-ink);border-bottom:1px solid var(--color-line);align-items:center;gap:.5rem;padding:.65rem 1rem;font-size:.9rem;font-weight:500;display:flex}.topbar-avatar-menu button{width:100%;color:var(--color-ink);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:.5rem;padding:.65rem 1rem;font-family:inherit;font-size:.9rem;font-weight:500;display:flex}.topbar-avatar-menu button:hover{background:var(--color-bg);color:var(--color-amber-dark)}.not-provisioned-page{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;height:100vh;padding:2rem;display:flex}.not-provisioned-page h1{font-size:1.5rem}.not-provisioned-page button{cursor:pointer;background:var(--color-accent);color:#fff;border:none;border-radius:4px;min-height:44px;margin-top:1rem;padding:0 1.5rem;font-size:1rem}.app-layout{min-height:100vh}.app-main{margin-left:var(--sidebar-width);padding-top:var(--topbar-height);flex-direction:column;transition:margin-left .15s;display:flex}.app-layout--sidebar-collapsed .app-main{margin-left:var(--sidebar-width-collapsed)}.app-content{background:var(--color-paper);flex:1;padding:1.25rem 1.5rem 1.5rem}.app-layout-error{height:100vh;color:var(--color-ink);justify-content:center;align-items:center;font-size:1.1rem;display:flex}.breadcrumb{margin-bottom:.5rem}.breadcrumb-list{color:var(--color-ink-soft);flex-wrap:wrap;align-items:center;gap:.375rem;margin:0;padding:0;font-size:.875rem;list-style:none;display:flex}.breadcrumb-item{align-items:center;gap:.375rem;display:flex}.breadcrumb-sep{font-size:.875rem;line-height:1}.breadcrumb-link{color:inherit;text-decoration:none}.breadcrumb-link:hover{text-decoration:underline}.breadcrumb-current{color:var(--color-ink);font-weight:500}.add-project-dialog{max-width:480px}.add-project-form{flex-direction:column;flex:1;gap:.75rem;min-height:0;padding:1.5rem;display:flex;overflow-y:auto}.add-project-label{color:var(--color-ink);font-size:.9rem;font-weight:600}.add-project-input,.add-project-select{width:100%;height:var(--touch-target);border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-ink);box-sizing:border-box;border-radius:6px;outline:none;padding:0 1rem;font-family:inherit;font-size:1rem}.add-project-input:focus,.add-project-select:focus{border-color:var(--color-amber);box-shadow:0 0 0 3px #f0a20226}.add-project-actions{justify-content:flex-end;gap:.75rem;margin-top:.5rem;display:flex}.add-project-cancel{height:var(--touch-target);color:var(--color-text-muted);border:1.5px solid var(--color-border);cursor:pointer;background:0 0;border-radius:6px;padding:0 1.25rem;font-family:inherit;font-size:.95rem;font-weight:600}.add-project-cancel:hover{color:var(--color-ink);border-color:var(--color-text-muted)}.add-project-submit{height:var(--touch-target);color:var(--color-ink);background:var(--color-amber);cursor:pointer;border:none;border-radius:6px;padding:0 1.5rem;font-family:inherit;font-size:.95rem;font-weight:600}.add-project-submit:hover{background:var(--color-amber-dark)}.add-project-submit:disabled{opacity:.4;cursor:not-allowed}.projects-page .ag-root-wrapper,.projects-page .ag-root,.projects-page .ag-body-viewport,.projects-page .ag-center-cols-viewport,.projects-page .ag-center-cols-clipper{overflow:visible!important}.projects-page div:has(.ag-root-wrapper){overflow:visible!important}.projects-page .ag-body-horizontal-scroll{display:none!important}.projects-heading{color:var(--color-ink);margin:0 0 .25rem;font-size:1.25rem;font-weight:600}.projects-subtitle{color:var(--color-text-muted);margin:0;font-size:.9rem}.projects-header-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem;display:flex}.projects-toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.projects-btn-new{color:var(--color-ink);background:var(--color-amber);cursor:pointer;white-space:nowrap;border:none;border-radius:6px;align-items:center;gap:.375rem;padding:6px 12px;font-family:inherit;font-size:.875rem;font-weight:600;display:flex}.projects-btn-new:hover{background:var(--color-amber-dark)}.project-cell{box-sizing:border-box;flex-direction:column;justify-content:center;gap:2px;padding:15px 0 17px;line-height:1.3;display:flex;overflow:hidden}.project-cell-id{font-size:.7rem;font-family:var(--font-mono);color:var(--color-text-muted)}.project-cell-name{color:var(--color-ink);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.project-cell-meta{color:var(--color-ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:.6875rem;overflow:hidden}.project-client-name{color:var(--color-ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:400;overflow:hidden}.project-card-client-name{color:var(--color-ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;font-weight:400;overflow:hidden}.project-address{color:var(--color-ink-soft);opacity:.75;text-overflow:ellipsis;white-space:nowrap;font-size:.6875rem;overflow:hidden}.project-cell .project-address{max-width:180px}.project-cell-weather{color:var(--color-ink);box-sizing:border-box;align-items:center;gap:.375rem;height:100%;font-size:.875rem;display:flex}.project-status-cell{box-sizing:border-box;align-items:center;gap:6px;height:100%;display:flex}.project-status-badge{white-space:nowrap;border-radius:999px;padding:2px 8px;font-size:.6875rem;font-weight:500;line-height:1.3;display:inline-block}.projects-empty{color:var(--color-text-muted);margin:2rem 0 0;font-size:1rem}.projects-error{color:#b91c1c;margin:2rem 0 0;font-size:1rem}.projects-view-toggle{background:var(--color-paper);border:1px solid var(--color-line);border-radius:6px;flex-shrink:0;padding:2px;display:flex}.projects-view-btn{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;border-radius:4px;align-items:center;gap:.375rem;padding:6px 10px;font-family:inherit;font-size:.75rem;font-weight:500;display:flex}.projects-view-btn:hover{color:var(--color-ink)}.projects-view-btn.active{background:var(--color-surface);color:var(--color-ink);box-shadow:0 1px 2px #0000000f}.projects-view-btn.active:hover{background:var(--color-surface)}.projects-cards{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px;display:grid}.project-card{background:var(--color-surface);border:1px solid var(--color-line);border-top:4px solid var(--color-line);cursor:pointer;border-radius:8px;flex-direction:column;padding:16px;transition:box-shadow .15s;display:flex;overflow:hidden}.project-card:hover{box-shadow:0 2px 8px #0000001a}.project-card-body{flex-direction:column;gap:12px;display:flex}.project-card-header{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.project-card-id{font-size:.6875rem;font-family:var(--font-mono);letter-spacing:.025em;color:var(--color-ink-soft);font-weight:500}.project-card-name{color:var(--color-ink);margin-top:2px;font-size:.875rem;font-weight:600;line-height:1.3;display:block}.project-card-address-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.project-card-address{color:var(--color-ink-soft);text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}.project-card-weather{color:var(--color-ink);flex-shrink:0;align-items:center;gap:.25rem;font-size:.75rem;font-weight:500;display:flex}.project-card-footer{border-top:1px solid var(--color-line);flex-wrap:wrap;gap:6px;margin-top:4px;padding-top:8px;display:flex}.project-card-header .project-actions-btn{width:44px;height:44px;margin:-10px -8px 0 -10px}.project-card-header .project-actions-wrapper{width:auto;height:auto}.project-actions-wrapper{justify-content:center;align-items:center;width:100%;height:100%;display:flex}.project-actions-btn{width:var(--touch-target);height:var(--touch-target);cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;font-size:1.2rem;display:flex}.project-actions-btn:hover{background:var(--color-bg);color:var(--color-ink)}.project-actions-menu{background:var(--color-surface);border:1.5px solid var(--color-line);z-index:1000;border-radius:6px;min-width:160px;position:fixed;overflow:hidden;box-shadow:0 4px 16px #0000001f}.project-actions-menu button{width:100%;color:var(--color-ink);text-align:left;cursor:pointer;background:0 0;border:none;padding:.65rem 1rem;font-family:inherit;font-size:.9rem;font-weight:500;display:block}.project-actions-menu button:hover{background:var(--color-bg);color:var(--color-amber-dark)}.add-col-dialog{max-width:400px}.add-col-form{flex-direction:column;flex:1;gap:.75rem;min-height:0;padding:1.5rem;display:flex;overflow-y:auto}.add-col-label{color:var(--color-ink);font-size:.9rem;font-weight:600}.add-col-input{width:100%;height:var(--touch-target);border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-ink);box-sizing:border-box;border-radius:6px;outline:none;padding:0 1rem;font-family:inherit;font-size:1rem}.add-col-input:focus{border-color:var(--color-amber);box-shadow:0 0 0 3px #f0a20226}.add-col-actions{justify-content:flex-end;gap:.75rem;margin-top:.5rem;display:flex}.add-col-cancel{height:var(--touch-target);color:var(--color-text-muted);border:1.5px solid var(--color-border);cursor:pointer;background:0 0;border-radius:6px;padding:0 1.25rem;font-family:inherit;font-size:.95rem;font-weight:600}.add-col-cancel:hover{color:var(--color-ink);border-color:var(--color-text-muted)}.add-col-submit{height:var(--touch-target);color:var(--color-ink);background:var(--color-amber);cursor:pointer;border:none;border-radius:6px;padding:0 1.5rem;font-family:inherit;font-size:.95rem;font-weight:600}.add-col-submit:hover{background:var(--color-amber-dark)}.add-col-submit:disabled{opacity:.4;cursor:not-allowed}.add-col-type-group{border:1.5px solid var(--color-border);border-radius:6px;display:flex;overflow:hidden}.add-col-type-btn{height:var(--touch-target);background:var(--color-surface);color:var(--color-text-muted);border:none;border-left:1.5px solid var(--color-border);cursor:pointer;flex:1;font-family:inherit;font-size:.95rem;font-weight:600}.add-col-type-btn:first-child{border-left:none}.add-col-type-btn:hover{background:var(--color-bg);color:var(--color-ink)}.add-col-type-btn.active{background:var(--color-amber);color:var(--color-ink)}.add-col-error{color:#dc2626;margin:0;font-size:.85rem}.add-sheet-dialog{max-width:400px}.add-sheet-form{flex-direction:column;flex:1;gap:.75rem;min-height:0;padding:1.5rem;display:flex;overflow-y:auto}.add-sheet-label{color:var(--color-ink);font-size:.9rem;font-weight:600}.add-sheet-input{width:100%;height:var(--touch-target);border:1.5px solid var(--color-border);background:var(--color-surface);color:var(--color-ink);box-sizing:border-box;border-radius:6px;outline:none;padding:0 1rem;font-family:inherit;font-size:1rem}.add-sheet-input:focus{border-color:var(--color-amber);box-shadow:0 0 0 3px #f0a20226}.add-sheet-actions{justify-content:flex-end;gap:.75rem;margin-top:.5rem;display:flex}.sheets-page{padding-top:.5rem}.sheets-heading{color:var(--color-ink);margin:0 0 1rem;font-size:1.25rem;font-weight:600}.sheets-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.sheet-tile{background:var(--color-surface);border:1px solid var(--color-line);cursor:pointer;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:8px;height:140px;font-family:inherit;transition:border-color .15s,box-shadow .15s;display:flex}.sheet-tile:hover{border-color:var(--color-wire);box-shadow:0 2px 8px #3b6e8f26}.sheet-tile-icon{width:40px;height:40px;color:var(--color-wire);background:#3b6e8f1a;border-radius:6px;justify-content:center;align-items:center;display:flex}.sheet-tile-name{color:var(--color-ink);text-align:center;word-break:break-word;padding:0 .5rem;font-size:.875rem;font-weight:500}.sheet-tile-count{color:var(--color-ink-soft);font-size:.75rem}.sheet-tile--add{background:0 0;border-style:dashed;border-width:1.5px}.sheet-tile--add:hover{border-color:var(--color-amber);box-shadow:0 2px 8px #f0a20226}.sheet-tile--add .sheet-tile-name{color:var(--color-ink-soft)}.sheet-tile-icon--add{color:var(--color-amber-dark);background:#f0a2021a}.sheet-tile-plus{font-size:1.25rem;font-weight:400;line-height:1}.file-list{margin:0;padding:0;list-style:none}.file-list-row{min-height:var(--touch-target);border-bottom:1px solid var(--color-border);align-items:center;gap:.75rem;padding:0 .25rem;display:flex}.file-list-row:last-child{border-bottom:none}.file-list-icon{color:var(--color-text-muted);flex-shrink:0;align-items:center;display:flex}.file-list-name{color:var(--color-ink);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:.9rem;font-weight:500;overflow:hidden}.file-list-type{color:var(--color-text-muted);background:var(--color-bg);border:1px solid var(--color-border);border-radius:4px;flex-shrink:0;padding:2px 6px;font-size:.75rem;font-weight:600}.file-list-meta{color:var(--color-text-muted);white-space:nowrap;flex-shrink:0;font-size:.8rem}.file-list-delete{color:#b91c1c;cursor:pointer;background:0 0;border:1px solid #b91c1c;border-radius:4px;flex-shrink:0;height:32px;padding:0 .75rem;font-family:inherit;font-size:.85rem;font-weight:500}.file-list-delete:hover{background:#b91c1c14}.file-list-empty{color:var(--color-text-muted);margin:1.5rem 0 0;font-size:.95rem}.modal-backdrop{z-index:100;background:#00000073;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-card{background:var(--color-surface);border-radius:8px;flex-direction:column;width:100%;max-width:640px;max-height:80vh;display:flex;box-shadow:0 8px 32px #0003}.modal-header{border-bottom:1px solid var(--color-border);flex-shrink:0;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;display:flex}.modal-title{color:var(--color-ink);margin:0;font-size:1.1rem;font-weight:700}.modal-close{width:var(--touch-target);height:var(--touch-target);cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;border-radius:4px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.modal-close:hover{background:var(--color-bg);color:var(--color-ink)}.modal-toolbar{border-bottom:1px solid var(--color-border);flex-shrink:0;align-items:center;padding:.875rem 1.5rem;display:flex}.modal-upload{height:var(--touch-target);color:#fff;background:var(--color-accent);cursor:pointer;border:none;border-radius:6px;padding:0 1.5rem;font-family:inherit;font-size:.95rem;font-weight:600}.modal-upload:hover{background:#154460}.modal-body{flex:1;padding:0 1.5rem 1rem;overflow-y:auto}.print-col-dialog{max-width:360px}.print-col-list{flex-direction:column;gap:.5rem;max-height:340px;padding:1rem 1.5rem;display:flex;overflow-y:auto}.print-col-item{color:var(--color-ink);min-height:var(--touch-target);cursor:pointer;align-items:center;gap:.75rem;font-size:.95rem;display:flex}.print-col-item input[type=checkbox]{cursor:pointer;width:18px;height:18px;accent-color:var(--color-amber);flex-shrink:0}.print-col-actions{border-top:1px solid var(--color-border);justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;display:flex}.delete-col-dialog{max-width:420px}.delete-col-body{flex-direction:column;flex:1;gap:1.25rem;min-height:0;padding:1.5rem;display:flex;overflow-y:auto}.delete-col-warning{color:var(--color-ink);margin:0;font-size:.95rem;line-height:1.55}.delete-col-actions{justify-content:flex-end;gap:.75rem;display:flex}.delete-col-confirm{height:var(--touch-target);color:#fff;cursor:pointer;background:#dc2626;border:none;border-radius:6px;padding:0 1.5rem;font-family:inherit;font-size:.95rem;font-weight:600}.delete-col-confirm:hover{background:#b91c1c}.sheet-grid-page .ag-root-wrapper,.sheet-grid-page .ag-root,.sheet-grid-page .ag-body-viewport,.sheet-grid-page .ag-center-cols-viewport,.sheet-grid-page .ag-center-cols-clipper,.sheet-grid-page .ag-header-viewport,.sheet-grid-page .ag-header{overflow:visible!important}.sheet-grid-page .ag-body-horizontal-scroll{display:none!important}.sheet-grid-page .ag-header{border-top:1px solid var(--color-line);width:max-content!important}.sheet-header-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-bottom:16px;display:flex}.sheet-header-actions{align-items:center;gap:.5rem;display:flex}.sheet-grid-heading{color:var(--color-ink);margin:2px 0 0;font-size:1.5rem;font-weight:600}.sheet-grid-error{color:#b91c1c;background:#fef2f2;border-radius:6px;align-items:center;gap:.75rem;margin:0 0 .75rem;padding:.5rem .75rem;font-size:.9rem;display:flex}.sheet-filter-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:16px;margin-bottom:.75rem;padding:0;display:flex}.status-pills{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.status-pill{background:var(--color-paper);height:32px;color:var(--color-ink-soft);cursor:pointer;white-space:nowrap;border:1px solid #dee1e4;border-radius:6px;padding:0 16px;font-family:inherit;font-size:.75rem;font-weight:500}.status-pill--active{background:var(--color-surface);color:var(--color-ink);border:1px solid #1c243014;font-weight:600;box-shadow:2px 4px 8px #1c243033}.show-deleted-label{color:var(--color-ink-soft);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:.5rem;font-size:.75rem;display:flex}.show-deleted-label input[type=checkbox][role=switch]{appearance:none;background:var(--color-line);cursor:pointer;border-radius:10px;flex-shrink:0;width:36px;height:20px;transition:background .15s;position:relative}.show-deleted-label input[type=checkbox][role=switch]:before{content:"";background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:3px;left:3px}.show-deleted-label input[type=checkbox][role=switch]:checked{background:var(--color-amber)}.show-deleted-label input[type=checkbox][role=switch]:checked:before{transform:translate(16px)}.ag-cell.rownum-cell .ag-cell-wrapper{padding-left:2px;padding-right:2px}.ag-cell.rownum-cell .ag-row-drag{flex-shrink:0;margin-right:2px}.ag-cell.rownum-cell .ag-cell-value{flex:1;min-width:0}.sheet-btn-print,.sheet-btn-export,.sheet-btn-add-col,.sheet-btn-add-row{cursor:pointer;white-space:nowrap;color:var(--color-ink-soft);background:var(--color-surface);border:1px solid var(--color-line);border-radius:6px;align-items:center;gap:.375rem;padding:6px 12px;font-family:inherit;font-size:.875rem;font-weight:500;display:flex}.sheet-btn-print:hover,.sheet-btn-export:hover,.sheet-btn-add-col:hover,.sheet-btn-add-row:hover{background:var(--color-paper)}.export-dropdown{position:relative}.export-menu{background:var(--color-surface);border:1.5px solid var(--color-line);z-index:20;border-radius:6px;min-width:210px;position:absolute;top:calc(100% + 4px);right:0;overflow:hidden;box-shadow:0 4px 16px #0000001f}.export-menu-item{width:100%;color:var(--color-ink);text-align:left;cursor:pointer;background:0 0;border:none;padding:.75rem 1rem;font-family:inherit;font-size:.9rem;font-weight:500;display:block}.export-menu-item:hover{background:var(--color-bg);color:var(--color-amber-dark)}.row-deleted{opacity:.45}.date-cell-editor{width:100%;height:100%;font-family:inherit;font-size:inherit;box-sizing:border-box;background:0 0;border:none;outline:none;padding:0 4px}.status-cell-editor{width:100%;height:100%;font-family:inherit;font-size:inherit;box-sizing:border-box;cursor:pointer;background:0 0;border:none;outline:none;padding:0 4px}.sub-contractor-editor{width:100%;height:100%;font-family:inherit;font-size:inherit;box-sizing:border-box;background:0 0;border:none;outline:none;padding:0 4px}.grid-error-list{top:var(--topbar-height);z-index:10;flex-direction:column;gap:.25rem;min-height:2.25rem;margin:.5rem 0 0;padding:0;list-style:none;display:flex;position:sticky}.grid-error-item{color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:4px;padding:.35rem .75rem;font-size:.875rem}.grid-error-item strong{font-weight:600}.change-name-error{color:#dc2626!important}.row-delete-btn,.row-restore-btn{width:var(--touch-target);height:var(--touch-target);cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;font-family:inherit;display:flex}.row-delete-btn:hover{color:#dc2626;background:#dc26261a}.row-restore-btn:hover{color:#16a34a;background:#16a34a1a}.row-error-btn{width:var(--touch-target);height:var(--touch-target);color:#dc2626;cursor:default;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;display:flex}.row-pending-indicator{width:var(--touch-target);height:var(--touch-target);color:var(--color-text-muted);opacity:.5;justify-content:center;align-items:center;display:flex}.row-save-btn{width:var(--touch-target);height:var(--touch-target);cursor:pointer;color:#16a34a;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:0;font-family:inherit;display:flex}.row-save-btn:hover{background:#16a34a1a}.row-saved-indicator{width:var(--touch-target);height:var(--touch-target);color:#16a34a;justify-content:center;align-items:center;display:flex}.col-header-deleted,.col-deleted{opacity:.45}.custom-col-header{align-items:center;gap:4px;width:100%;min-width:0;display:flex}.custom-col-header-name{overflow-wrap:break-word;flex:1}.col-delete-btn,.col-restore-btn{width:var(--touch-target);height:var(--touch-target);cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;border-radius:3px;flex-shrink:0;justify-content:center;align-items:center;padding:0;display:flex}.col-delete-btn:hover{color:#dc2626;background:#dc26261a}.col-restore-btn:hover{color:#16a34a;background:#16a34a1a}.sheet-grid-empty{color:var(--color-text-muted);margin:2rem 0 0;font-size:1rem}
