*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button{cursor:pointer;font-family:inherit;font-size:inherit;background:0 0;border:none}input,select,textarea{font-family:inherit;font-size:inherit;outline:none}a{color:inherit;text-decoration:none}ul,ol{list-style:none}img{max-width:100%;display:block}:root{--color-page:#eae8e3;--neu-base:#eae8e3;--icon-accent:#1f7a5c;--icon-accent-soft:#1f7a5c1a;--color-accent:#1f7a5c;--color-accent-hover:#186049;--color-accent-tint:#1f7a5c14;--color-accent-text:#fff;--color-bg:#fff;--color-bg-white:#fff;--color-bg-muted:#f1efea;--tint-green:#eaf4ef;--tint-blue:#edf1f7;--tint-amber:#faf3e8;--color-border:#cfd3d9;--color-border-light:#e1e4e9;--color-text:#15181c;--color-text-secondary:#3e4652;--color-text-muted:#5f6874;--color-text-light:#7a838f;--color-success:#1f7a5c;--color-success-light:#1f7a5c1a;--color-success-text:#186049;--color-danger:#c0524a;--color-danger-light:#c0524a1a;--color-danger-text:#a3423b;--color-warning:#b8823c;--color-warning-light:#b8823c1f;--color-warning-text:#96692e;--space-xs:4px;--space-sm:8px;--space-md:16px;--space-lg:24px;--space-xl:32px;--space-2xl:48px;--text-xs:11px;--text-sm:12px;--text-md:14px;--text-lg:16px;--text-xl:20px;--text-2xl:24px;--font-normal:400;--font-semibold:500;--font-bold:600;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:18px;--radius-full:9999px;--shadow-sm:0 1px 2px #10182814;--shadow-md:0 4px 16px #10182824;--neu-shadow-raised:0 1px 3px #1018281a, 0 4px 12px #10182814;--neu-shadow-raised-sm:0 1px 2px #10182817, 0 2px 6px #1018280f;--neu-shadow-inset:inset 0 0 0 1px var(--color-border);--neu-shadow-inset-sm:inset 0 0 0 1px var(--color-border);--neu-shadow-hover:0 2px 6px #1018281f, 0 8px 20px #1018281f;--rail-bg:#1e2d28;--rail-text:#f2efe8;--rail-text-dim:#f2efe89e;--rail-line:#f2efe81f;--tab-sand:#f1e2bf;--tab-sky:#c6daea;--tab-rose:#f0c3bc;--tab-sage:#cce2d2;--tab-lavender:#d8d2ea;--transition:all .15s ease;--max-width:1200px;--header-height:56px}body{background-color:var(--color-page);color:var(--color-text);font-family:DM Sans,system-ui,-apple-system,sans-serif;font-size:var(--text-md);min-height:100vh;line-height:1.6}#root{flex-direction:column;min-height:100vh;display:flex}.page-wrapper{max-width:var(--max-width);flex-direction:column;flex:1;gap:12px;width:100%;margin:0 auto;padding:24px 16px;display:flex}.page-wrapper--full{max-width:none;padding:0}.login-page{background:var(--color-bg);min-height:100vh;padding:var(--space-md);justify-content:center;align-items:center;display:flex}.login-page__card{background:var(--color-bg-white);border-radius:var(--radius-xl);border:1px solid var(--color-border);width:100%;max-width:400px;box-shadow:var(--shadow-md);padding:40px 36px}.login-page__brand{text-align:center;margin-bottom:var(--space-xl)}.login-page__icon{margin:0 auto var(--space-sm);color:var(--icon-accent);display:block}.login-page__title{font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--color-text);letter-spacing:-.5px;margin-bottom:4px}.login-page__subtitle{font-size:var(--text-md);color:var(--color-text-muted)}.login-page__form{gap:var(--space-md);flex-direction:column;display:flex}.login-page__field{gap:var(--space-xs);flex-direction:column;display:flex}.login-page__label{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--color-text-secondary)}.login-page__input{border-radius:var(--radius-md);border:1px solid var(--color-border);font-size:var(--text-md);color:var(--color-text);background:var(--color-bg-white);transition:var(--transition);width:100%;padding:10px 14px}.login-page__input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-tint);outline:none}.login-page__input:hover:not(:focus){border-color:var(--color-text-light)}.login-page__error{background:var(--color-danger-light);color:var(--color-danger-text);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-semibold);border:1px solid #fecaca;padding:10px 14px}.login-page__btn{background:var(--color-accent);color:#fff;border-radius:var(--radius-md);font-size:var(--text-md);font-weight:var(--font-bold);cursor:pointer;transition:var(--transition);width:100%;margin-top:var(--space-sm);border:none;padding:12px}.login-page__btn:hover:not(:disabled){background:var(--color-accent-hover)}.login-page__btn:disabled{opacity:.6;cursor:not-allowed}.login-page__back{text-align:center;margin-top:var(--space-md);font-size:var(--text-sm);color:var(--color-text-muted);display:block}.login-page__back:hover{color:var(--color-text)}.react-grid-layout{transition:height .2s;position:relative}.react-grid-item{transition:left .2s,top .2s,width .2s,height .2s}.react-grid-item img{pointer-events:none;-webkit-user-select:none;user-select:none}.react-grid-item.cssTransforms{transition-property:transform,width,height}.react-grid-item.resizing{z-index:1;will-change:width, height;transition:none}.react-grid-item.react-draggable-dragging{z-index:3;will-change:transform;transition:none}.react-grid-item.dropping{visibility:hidden}.react-grid-item.react-grid-placeholder{opacity:.2;z-index:2;-webkit-user-select:none;user-select:none;background:red;transition-duration:.1s}.react-grid-item.react-grid-placeholder.placeholder-resizing{transition:none}.react-grid-item>.react-resizable-handle{opacity:0;width:20px;height:20px;position:absolute}.react-grid-item:hover>.react-resizable-handle{opacity:1}.react-grid-item>.react-resizable-handle:after{content:"";border-bottom:2px solid #0006;border-right:2px solid #0006;width:5px;height:5px;position:absolute;bottom:3px;right:3px}.react-resizable-hide>.react-resizable-handle{display:none}.react-grid-item>.react-resizable-handle.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-grid-item>.react-resizable-handle.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-w,.react-grid-item>.react-resizable-handle.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-n,.react-grid-item>.react-resizable-handle.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-grid-item>.react-resizable-handle.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-grid-item>.react-resizable-handle.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.react-resizable{position:relative}.react-resizable-handle{box-sizing:border-box;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2IDYiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmYwMCIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSI2cHgiIGhlaWdodD0iNnB4Ij48ZyBvcGFjaXR5PSIwLjMwMiI+PHBhdGggZD0iTSA2IDYgTCAwIDYgTCAwIDQuMiBMIDQgNC4yIEwgNC4yIDQuMiBMIDQuMiAwIEwgNiAwIEwgNiA2IEwgNiA2IFoiIGZpbGw9IiMwMDAwMDAiLz48L2c+PC9zdmc+);background-position:100% 100%;background-repeat:no-repeat;background-origin:content-box;width:20px;height:20px;padding:0 3px 3px 0;position:absolute}.react-resizable-handle-sw{cursor:sw-resize;bottom:0;left:0;transform:rotate(90deg)}.react-resizable-handle-se{cursor:se-resize;bottom:0;right:0}.react-resizable-handle-nw{cursor:nw-resize;top:0;left:0;transform:rotate(180deg)}.react-resizable-handle-ne{cursor:ne-resize;top:0;right:0;transform:rotate(270deg)}.react-resizable-handle-w,.react-resizable-handle-e{cursor:ew-resize;margin-top:-10px;top:50%}.react-resizable-handle-w{left:0;transform:rotate(135deg)}.react-resizable-handle-e{right:0;transform:rotate(315deg)}.react-resizable-handle-n,.react-resizable-handle-s{cursor:ns-resize;margin-left:-10px;left:50%}.react-resizable-handle-n{top:0;transform:rotate(225deg)}.react-resizable-handle-s{bottom:0;transform:rotate(45deg)}.calendar-widget{background:var(--color-bg);border-radius:var(--radius-md);flex-direction:column;gap:16px;min-height:220px;padding:22px 24px;display:flex}.calendar-widget__header{justify-content:space-between;align-items:center;display:flex}.calendar-widget__title{letter-spacing:.04em;text-transform:uppercase;color:var(--color-text);font-size:13px;font-weight:700}.calendar-widget__frame{border-radius:var(--radius-md);width:100%;min-height:220px;box-shadow:var(--neu-shadow-inset-sm);background:var(--color-bg);border:none;flex:1}.calendar-widget__empty{text-align:center;border-radius:var(--radius-md);box-shadow:var(--neu-shadow-inset-sm);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:4px;padding:12px;display:flex}.calendar-widget__empty-icon{color:var(--color-text-light);opacity:.7;margin:0 auto 6px;display:block}.calendar-widget__empty-title{color:var(--color-text-secondary);font-size:13px;font-weight:700}.calendar-widget__empty-sub{color:var(--color-text-light);max-width:220px;font-size:12px;line-height:1.5}.todo-widget{background:var(--color-bg);border-radius:var(--radius-md);flex-direction:column;gap:14px;min-width:0;padding:20px 22px 22px;display:flex}.todo-widget__header{align-items:center;gap:12px;display:flex}.todo-widget__icon{border-radius:var(--radius-md);width:36px;height:36px;box-shadow:var(--neu-shadow-inset-sm);color:var(--icon-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.todo-widget__title{color:var(--color-text);margin:0;font-size:.95rem;font-weight:700}.todo-widget__subtitle{color:var(--color-text-muted);margin:2px 0 0;font-size:.75rem}.todo-widget__add{gap:8px;display:flex}.todo-widget__input{border-radius:var(--radius-md);background:var(--color-bg);min-width:0;box-shadow:var(--neu-shadow-inset-sm);color:var(--color-text);border:none;flex:1;padding:8px 12px;font-size:.82rem}.todo-widget__input::placeholder{color:var(--color-text-light)}.todo-widget__input:focus{box-shadow:var(--neu-shadow-inset);outline:none}.todo-widget__add-btn{border-radius:var(--radius-md);background:var(--color-bg);width:34px;height:34px;box-shadow:var(--neu-shadow-raised-sm);color:var(--icon-accent);cursor:pointer;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.todo-widget__add-btn:hover:not(:disabled){box-shadow:var(--neu-shadow-hover)}.todo-widget__add-btn:active:not(:disabled){box-shadow:var(--neu-shadow-inset-sm)}.todo-widget__add-btn:disabled{color:var(--color-text-light);cursor:not-allowed;opacity:.7}.todo-widget__empty{color:var(--color-text-muted);margin:0;font-size:.85rem}.todo-widget__list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.todo-widget__item{border-radius:var(--radius-md);box-shadow:var(--neu-shadow-inset-sm);align-items:center;gap:6px;padding:8px 10px;display:flex}.todo-widget__checkbox-label{cursor:pointer;flex:1;align-items:center;gap:10px;min-width:0;display:flex}.todo-widget__checkbox-wrap{flex-shrink:0;width:18px;height:18px;position:relative}.todo-widget__checkbox-input{opacity:0;cursor:pointer;width:18px;height:18px;margin:0;position:absolute;inset:0}.todo-widget__checkbox-box{border-radius:var(--radius-sm);background:var(--color-bg);box-shadow:var(--neu-shadow-inset-sm);pointer-events:none;justify-content:center;align-items:center;transition:background .15s,box-shadow .15s;display:flex;position:absolute;inset:0}.todo-widget__checkbox-check{color:#fff;opacity:0;transition:opacity .15s}.todo-widget__checkbox-input:checked+.todo-widget__checkbox-box{background:var(--icon-accent);box-shadow:none}.todo-widget__checkbox-input:checked+.todo-widget__checkbox-box .todo-widget__checkbox-check{opacity:1}.todo-widget__checkbox-input:hover+.todo-widget__checkbox-box{box-shadow:var(--neu-shadow-inset)}.todo-widget__checkbox-input:focus-visible+.todo-widget__checkbox-box{outline:2px solid var(--icon-accent);outline-offset:2px}.todo-widget__text{letter-spacing:.01em;color:var(--color-text);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;font-weight:600;overflow:hidden}.todo-widget__text--done{color:var(--color-text-light);font-weight:500;text-decoration:line-through}.todo-widget__edit,.todo-widget__remove{width:20px;height:20px;color:var(--color-text-light);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.todo-widget__edit:hover{color:var(--icon-accent);box-shadow:var(--neu-shadow-inset-sm)}.todo-widget__remove:hover{color:var(--color-danger-text);box-shadow:var(--neu-shadow-inset-sm)}.todo-widget__edit-form{flex:1;align-items:center;gap:6px;min-width:0;display:flex}.todo-widget__edit-input{min-width:0;color:var(--color-text);background:0 0;border:none;flex:1;padding:2px 0;font-size:.82rem}.todo-widget__edit-input:focus{outline:none}.todo-widget__edit-save,.todo-widget__edit-cancel{cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;padding:2px 6px;font-size:.72rem;font-weight:700}.todo-widget__edit-save{color:var(--icon-accent)}.todo-widget__edit-cancel{color:var(--color-text-light)}.todo-widget__edit-save:hover,.todo-widget__edit-cancel:hover{box-shadow:var(--neu-shadow-inset-sm)}.todo-widget__clear{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:2px 0;font-size:.75rem}.todo-widget__clear:hover{color:var(--color-danger-text);text-decoration:underline}.ranked-bar-list{background:var(--color-bg);border-radius:var(--radius-md);flex-direction:column;gap:16px;min-width:0;padding:20px 22px 22px;display:flex}.ranked-bar-list__header{align-items:center;gap:12px;display:flex}.ranked-bar-list__icon{border-radius:var(--radius-md);width:36px;height:36px;box-shadow:var(--neu-shadow-inset-sm);color:var(--icon-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.ranked-bar-list__title{color:var(--color-text);margin:0;font-size:.95rem;font-weight:700}.ranked-bar-list__subtitle{color:var(--color-text-muted);margin:2px 0 0;font-size:.75rem}.ranked-bar-list__empty{color:var(--color-text-muted);margin:0;font-size:.85rem}.ranked-bar-list__rows{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.ranked-bar-list__row{grid-template-columns:minmax(0,1fr) minmax(60px,1.3fr) 28px;align-items:center;gap:10px;display:grid}.ranked-bar-list__label{color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.ranked-bar-list__track{border-radius:var(--radius-full);height:8px;box-shadow:var(--neu-shadow-inset-sm);overflow:hidden}.ranked-bar-list__fill{border-radius:var(--radius-full);background:var(--icon-accent);height:100%;transition:width .25s;display:block}.ranked-bar-list__value{color:var(--color-text);text-align:right;font-size:.78rem;font-weight:700}.contractor-accordion{background:var(--color-bg);border-radius:var(--radius-md);flex-direction:column;gap:16px;min-width:0;padding:20px 22px 22px;display:flex}.contractor-accordion__header{align-items:center;gap:12px;display:flex}.contractor-accordion__icon{border-radius:var(--radius-md);width:36px;height:36px;box-shadow:var(--neu-shadow-inset-sm);color:var(--icon-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.contractor-accordion__title{color:var(--color-text);margin:0;font-size:.95rem;font-weight:700}.contractor-accordion__subtitle{color:var(--color-text-muted);margin:2px 0 0;font-size:.75rem}.contractor-accordion__empty{color:var(--color-text-muted);margin:0;font-size:.85rem}.contractor-accordion__list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.contractor-accordion__row{background:var(--color-bg);border-radius:var(--radius-md);cursor:pointer;text-align:left;width:100%;box-shadow:var(--neu-shadow-raised-sm);border:none;align-items:center;gap:10px;padding:10px 12px;transition:box-shadow .18s;display:flex}.contractor-accordion__row:hover{box-shadow:var(--neu-shadow-hover)}.contractor-accordion__name{min-width:0;color:var(--color-text);white-space:normal;overflow-wrap:anywhere;flex:1;font-size:.85rem;font-weight:600}.contractor-accordion__count{color:var(--color-text-secondary);background:var(--color-bg);box-shadow:var(--neu-shadow-inset-sm);border-radius:var(--radius-full);flex-shrink:0;padding:3px 10px;font-size:.75rem;font-weight:700}.contractor-accordion__chevron{color:var(--color-text-light);flex-shrink:0;transition:transform .18s}.contractor-accordion__chevron--open{transform:rotate(180deg)}.contractor-accordion__jobs{box-shadow:var(--neu-shadow-inset-sm);border-radius:var(--radius-md);flex-direction:column;gap:8px;margin:6px 0 0;padding:4px 12px 4px 16px;list-style:none;display:flex}.contractor-accordion__job{border-bottom:1px solid var(--color-border-light);padding:8px 4px}.contractor-accordion__job:last-child{border-bottom:none}.contractor-accordion__job-title{color:var(--color-text);font-size:.82rem;font-weight:600;display:block}.contractor-accordion__job-meta{color:var(--color-text-muted);margin-top:2px;font-size:.74rem;display:block}.completed-work{background:var(--color-bg);border-radius:var(--radius-md);flex-direction:column;gap:16px;min-width:0;padding:20px 22px 22px;display:flex;overflow-y:auto}.completed-work__header{align-items:center;gap:12px;display:flex}.completed-work__icon{border-radius:var(--radius-md);background:var(--tint-green);width:36px;height:36px;color:var(--icon-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.completed-work__header-text{flex:1;min-width:0}.completed-work__title{color:var(--color-text);margin:0;font-size:.95rem;font-weight:700}.completed-work__subtitle{color:var(--color-text-muted);margin:2px 0 0;font-size:.75rem}.completed-work__refresh{border-radius:var(--radius-md);background:var(--color-bg);color:var(--color-text-secondary);cursor:pointer;box-shadow:var(--neu-shadow-raised-sm);border:none;flex-shrink:0;align-items:center;gap:6px;padding:6px 10px;font-size:.75rem;font-weight:600;display:flex}.completed-work__refresh:hover:not(:disabled){color:var(--color-text);box-shadow:var(--neu-shadow-hover)}.completed-work__refresh:disabled{cursor:not-allowed;opacity:.7}.completed-work__refresh-icon--spinning{animation:.8s linear infinite completed-work-spin}@keyframes completed-work-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.completed-work__sources{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.completed-work__source{border-radius:var(--radius-md);background:var(--tint-blue);flex-direction:column;align-items:center;gap:2px;padding:12px 6px;display:flex}.completed-work__source:nth-child(2){background:var(--tint-amber)}.completed-work__source--total{background:var(--tint-green)}.completed-work__source--total .completed-work__source-value{color:var(--icon-accent)}.completed-work__source-value{color:var(--color-text);font-size:1.35rem;font-weight:700;line-height:1.1}.completed-work__source-label{color:var(--color-text-muted);text-align:center;font-size:.7rem}.completed-work .contractor-accordion__job--completed .contractor-accordion__job-meta{color:var(--color-success-text)}.completed-work .contractor-accordion__job--construction .contractor-accordion__job-meta{color:var(--color-warning-text)}.completed-work__updated{color:var(--color-text-light);margin:-10px 0 0;font-size:.7rem}.completed-work__empty{color:var(--color-text-muted);margin:0;font-size:.85rem}.completed-work__error{color:var(--color-danger-text);margin:0;font-size:.85rem}.completed-work__unparsed summary{color:var(--color-warning-text);cursor:pointer;align-items:center;gap:6px;font-size:.72rem;display:flex}.completed-work__unparsed ul{flex-direction:column;gap:6px;margin:8px 0 0;padding:0;list-style:none;display:flex}.completed-work__unparsed li{justify-content:space-between;gap:10px;font-size:.72rem;display:flex}.completed-work__unparsed-name{color:var(--color-text-secondary);overflow-wrap:anywhere;min-width:0}.completed-work__unparsed-list{color:var(--color-text-light);flex-shrink:0}.traffic-chart{flex-direction:column;gap:6px;min-width:0;display:flex}.traffic-chart__legend{flex-wrap:wrap;gap:14px;display:flex}.traffic-chart__legend-item{color:var(--color-text-muted);align-items:center;gap:6px;font-size:.72rem;display:inline-flex}.traffic-chart__key{border-radius:2px;flex-shrink:0;width:12px;height:2px}.traffic-chart__plot{min-width:0;position:relative}.traffic-chart__plot svg{touch-action:none;outline:none;display:block}.traffic-chart__grid{stroke:var(--color-border-light);stroke-width:1px}.traffic-chart__crosshair{stroke:var(--color-border);stroke-width:1px}.traffic-chart__axis-label{fill:var(--color-text-muted);font-size:.65rem}.traffic-chart__end-label{fill:var(--color-text-muted);font-size:.68rem;font-weight:600}.traffic-chart__end-label--strong{fill:var(--color-text);font-weight:700}.traffic-chart__tooltip{pointer-events:none;background:var(--color-bg);border-radius:var(--radius-md);box-shadow:var(--neu-shadow-raised);min-width:118px;padding:8px 10px;position:absolute}.traffic-chart__tooltip-day{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin:0 0 4px;font-size:.68rem}.traffic-chart__tooltip-row{color:var(--color-text-muted);white-space:nowrap;align-items:center;gap:6px;margin:0;font-size:.72rem;display:flex}.traffic-chart__tooltip-row strong{color:var(--color-text);font-size:.85rem}.traffic-chart__table{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.site-traffic{background:var(--color-bg);border-radius:var(--radius-md);flex-direction:column;gap:16px;min-width:0;padding:20px 22px 22px;display:flex}.site-traffic__header{align-items:center;gap:12px;display:flex}.site-traffic__icon{border-radius:var(--radius-md);width:36px;height:36px;box-shadow:var(--neu-shadow-inset-sm);color:var(--icon-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.site-traffic__title{color:var(--color-text);margin:0;font-size:.95rem;font-weight:700}.site-traffic__subtitle{color:var(--color-text-muted);margin:2px 0 0;font-size:.75rem}.site-traffic__empty{color:var(--color-text-muted);margin:0;font-size:.85rem}.site-traffic__stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.site-traffic__stat{border-radius:var(--radius-md);box-shadow:var(--neu-shadow-inset-sm);min-width:0;padding:10px 12px}.site-traffic__stat-label{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);margin:0;font-size:.7rem}.site-traffic__stat-value{color:var(--color-text);margin:4px 0 0;font-size:1.5rem;font-weight:700;line-height:1.1}.site-traffic__stat-sub{color:var(--color-text-muted);margin:2px 0 0;font-size:.7rem}.site-traffic__trend{align-items:flex-end;gap:4px;height:56px;display:flex}.site-traffic__bar{border-radius:var(--radius-sm,4px);background:var(--icon-accent);flex:1;min-width:0;transition:height .25s}.site-traffic__trend-caption{color:var(--color-text-muted);margin:-8px 0 0;font-size:.7rem}.site-traffic__paths{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.site-traffic__paths-title{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-size:.7rem}.site-traffic__path{grid-template-columns:minmax(0,1fr) minmax(50px,1.1fr) auto;align-items:center;gap:10px;display:grid}.site-traffic__path-track{border-radius:var(--radius-full);height:8px;box-shadow:var(--neu-shadow-inset-sm);overflow:hidden}.site-traffic__path-fill{border-radius:var(--radius-full);background:var(--icon-accent);height:100%;transition:width .25s;display:block}.site-traffic__path-name{color:var(--color-text-secondary);text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.site-traffic__path-value{color:var(--color-text);flex-shrink:0;font-size:.78rem;font-weight:700}.storage-usage{background:var(--color-bg);border-radius:var(--radius-md);flex-direction:column;gap:18px;min-width:0;padding:20px 22px 22px;display:flex}.storage-usage__header{align-items:center;gap:12px;display:flex}.storage-usage__icon{border-radius:var(--radius-md);width:36px;height:36px;box-shadow:var(--neu-shadow-inset-sm);color:var(--icon-accent);flex-shrink:0;justify-content:center;align-items:center;display:flex}.storage-usage__title{color:var(--color-text);margin:0;font-size:.95rem;font-weight:700}.storage-usage__subtitle{color:var(--color-text-muted);margin:2px 0 0;font-size:.75rem}.storage-usage__empty{color:var(--color-text-muted);margin:0;font-size:.85rem}.storage-usage__meters{flex-direction:column;gap:20px;display:flex}.storage-usage__meter{border-radius:var(--radius-md);box-shadow:var(--neu-shadow-inset-sm);padding:14px 16px 16px}.storage-usage__meter-top{justify-content:space-between;align-items:baseline;margin-bottom:10px;display:flex}.storage-usage__meter-label{text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);font-size:.75rem;font-weight:600}.storage-usage__meter-value{font-size:1.5rem;font-weight:700;line-height:1.1}.storage-usage__meter--success .storage-usage__meter-value{color:var(--color-success-text)}.storage-usage__meter--warning .storage-usage__meter-value{color:var(--color-warning-text)}.storage-usage__meter--danger .storage-usage__meter-value{color:var(--color-danger-text)}.storage-usage__track{border-radius:var(--radius-full);height:14px;display:block;overflow:hidden}.storage-usage__meter--success .storage-usage__track{background:var(--color-success-light)}.storage-usage__meter--warning .storage-usage__track{background:var(--color-warning-light)}.storage-usage__meter--danger .storage-usage__track{background:var(--color-danger-light)}.storage-usage__fill{border-radius:var(--radius-full);height:100%;transition:width .25s;display:block}.storage-usage__meter--success .storage-usage__fill{background:var(--color-success)}.storage-usage__meter--warning .storage-usage__fill{background:var(--color-warning)}.storage-usage__meter--danger .storage-usage__fill{background:var(--color-danger)}.storage-usage__meter-sub{color:var(--color-text-muted);margin:8px 0 0;font-size:.75rem}.sortable-widget__toolbar{align-items:center;gap:4px;margin-bottom:4px;display:flex}.sortable-widget__handle{height:18px;color:var(--color-text-light);cursor:grab;border-radius:var(--radius-sm);touch-action:none;background:0 0;border:none;flex:1;justify-content:center;align-items:center;display:flex}.sortable-widget__handle:hover{color:var(--color-text-secondary);background:var(--color-bg);box-shadow:var(--neu-shadow-inset-sm)}.sortable-widget__handle:active{cursor:grabbing}.sortable-widget__hide{width:18px;height:18px;color:var(--color-text-light);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.sortable-widget__hide:hover{color:var(--color-danger-text);background:var(--color-bg);box-shadow:var(--neu-shadow-inset-sm)}.sortable-widget__body{flex:1;min-height:0;overflow-y:auto}.sortable-widget__body>*{box-sizing:border-box;height:100%}.widget-visibility-menu{flex-shrink:0;position:relative}.widget-visibility-menu__trigger{background:var(--color-bg);border-radius:var(--radius-md);box-shadow:var(--neu-shadow-raised-sm);color:var(--color-text-secondary);cursor:pointer;border:none;align-items:center;gap:8px;padding:8px 14px;font-size:.82rem;font-weight:600;display:inline-flex}.widget-visibility-menu__trigger:hover{color:var(--color-text);box-shadow:var(--neu-shadow-hover)}.widget-visibility-menu__badge{color:var(--icon-accent);background:var(--icon-accent-soft);border-radius:var(--radius-full);padding:2px 8px;font-size:.7rem;font-weight:700}.widget-visibility-menu__panel{z-index:20;background:var(--color-bg);border-radius:var(--radius-md);flex-direction:column;gap:2px;min-width:220px;padding:8px;display:flex;position:absolute;top:calc(100% + 8px);right:0;box-shadow:0 6px 16px #0000002e}.widget-visibility-menu__item{border-radius:var(--radius-md);color:var(--color-text);text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:10px;padding:8px 10px;font-size:.82rem;display:flex}.widget-visibility-menu__item:hover{box-shadow:var(--neu-shadow-inset-sm)}.widget-visibility-menu__item-label--hidden{color:var(--color-text-muted);font-style:italic}.dashboard{background:var(--color-bg);box-sizing:border-box;flex-direction:column;gap:32px;width:100%;padding:40px max(16px,50% - 700px) 60px;display:flex}.dashboard__header{justify-content:space-between;align-items:flex-start;gap:20px;width:100%;display:flex}.dashboard__greeting{min-width:0}.dashboard__welcome{color:var(--color-text);margin:0 0 4px;font-size:1.6rem;font-weight:700}.dashboard__subtitle{color:var(--color-text-muted);margin:0;font-size:.9rem}.dashboard__grid-wrap{width:100%}.sortable-widget{box-sizing:border-box;background:var(--color-bg);border-radius:var(--radius-lg);height:100%;box-shadow:var(--neu-shadow-raised-sm);flex-direction:column;padding:10px;display:flex}.widget-resize-handle{cursor:se-resize;clip-path:polygon(100% 0,0 100%,100% 100%);background:linear-gradient(135deg, transparent 44%, var(--color-bg-muted) 44%);border-bottom-right-radius:var(--radius-lg);width:22px;height:22px;transition:background .15s;position:absolute;bottom:0;right:0}.widget-resize-handle:hover{background:linear-gradient(135deg, transparent 38%, var(--icon-accent-soft) 38%)}@media (width<=480px){.dashboard{padding:28px 16px 40px}.dashboard__welcome{font-size:1.3rem}.dashboard__header{flex-direction:column}}.landing-page{background:var(--color-bg);min-height:100vh;padding:var(--space-md);justify-content:center;align-items:center;display:flex}.landing-page__inner{width:100%;max-width:720px}.landing-page__brand{text-align:center;margin-bottom:var(--space-xl)}.landing-page__icon{margin:0 auto var(--space-sm);color:var(--icon-accent);display:block}.landing-page__title{font-size:var(--text-2xl);font-weight:var(--font-bold);color:var(--color-text);letter-spacing:-.5px;margin-bottom:4px}.landing-page__subtitle{font-size:var(--text-md);color:var(--color-text-muted)}.landing-page__choices{gap:var(--space-lg);grid-template-columns:repeat(auto-fit,minmax(260px,1fr));display:grid}.landing-page__choice{text-align:center;align-items:center;gap:var(--space-sm);background:var(--color-bg);border-radius:var(--radius-xl);min-height:220px;box-shadow:var(--neu-shadow-raised);transition:var(--transition);flex-direction:column;justify-content:center;padding:36px 28px;display:flex}.landing-page__choice:hover{box-shadow:var(--neu-shadow-hover)}.landing-page__choice:active{box-shadow:var(--neu-shadow-inset)}.landing-page__choice-icon{color:var(--icon-accent)}.landing-page__choice-title{font-size:var(--text-xl);font-weight:var(--font-bold);color:var(--color-text)}.landing-page__choice-desc{font-size:var(--text-sm);color:var(--color-text-muted);line-height:1.5}.toast{border-radius:var(--radius-full);font-weight:var(--font-semibold);font-size:var(--text-md);box-shadow:var(--shadow-md);z-index:9999;white-space:nowrap;border:1px solid #0000;padding:10px 20px;animation:.2s toast-in;position:fixed;bottom:28px;left:50%;transform:translate(-50%)}.toast--success{background:var(--color-success);color:#fff}.toast--danger{background:var(--color-danger);color:#fff}.toast--warning{background:var(--color-warning);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.sidebar{background:var(--rail-bg);box-sizing:border-box;flex-direction:column;flex-shrink:0;align-self:flex-start;gap:24px;width:232px;min-height:100vh;padding:24px 0 20px;display:flex;position:sticky;top:0}.sidebar__brand{justify-content:space-between;align-items:center;gap:8px;padding:0 14px 0 22px;display:flex}.sidebar__brand-name{color:var(--rail-text);letter-spacing:-.2px;font-size:1.05rem;font-weight:700;line-height:1.25}.sidebar__collapse-btn{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--rail-text);cursor:pointer;transition:var(--transition);background:#ffffff14;border:none;flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar__collapse-btn:hover{background:#ffffff29}.sidebar__collapse-btn:active{background:#ffffff0d}.sidebar__nav{flex-direction:column;flex:1;gap:5px;padding-left:14px;display:flex}.sidebar__link{color:var(--color-text);border-radius:12px 0 0 12px;align-items:center;gap:12px;margin-left:10px;padding:11px 14px 11px 16px;font-size:.9rem;font-weight:600;transition:margin-left .15s,filter .15s;display:flex}.sidebar__link--sand{background:var(--tab-sand)}.sidebar__link--sky{background:var(--tab-sky)}.sidebar__link--rose{background:var(--tab-rose)}.sidebar__link--sage{background:var(--tab-sage)}.sidebar__link--lavender{background:var(--tab-lavender)}.sidebar__link-icon{color:var(--color-text-secondary);flex-shrink:0}.sidebar__link:hover{filter:brightness(1.04);margin-left:4px}.sidebar__link:focus-visible{outline:2px solid var(--rail-text);outline-offset:-3px}.sidebar__link--active,.sidebar__link--active:hover{background:var(--color-page);color:var(--color-text);font-weight:var(--font-bold);filter:none;margin-left:0}.sidebar__link--active .sidebar__link-icon{color:var(--icon-accent)}.sidebar__footer{border-top:1px solid var(--rail-line);flex-direction:column;gap:12px;padding:16px 14px 0 22px;display:flex}.sidebar__user{flex-direction:column;gap:1px;display:flex}.sidebar__user-name{color:var(--rail-text);text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;font-weight:700;overflow:hidden}.sidebar__user-role{letter-spacing:.04em;text-transform:uppercase;color:var(--rail-text-dim);font-size:.7rem;font-weight:600}.sidebar__signout{border-radius:var(--radius-md);color:var(--rail-text);cursor:pointer;transition:var(--transition);background:#ffffff14;border:none;justify-content:center;align-items:center;gap:8px;padding:9px 14px;font-size:.85rem;font-weight:600;display:flex}.sidebar__signout-icon{color:#f3a79e}.sidebar__signout:hover{color:#fff;background:#ffffff29}.sidebar__signout:active{background:#ffffff0d}.sidebar--collapsed{width:72px}.sidebar--collapsed .sidebar__brand{justify-content:center;padding:0}.sidebar--collapsed .sidebar__link-label,.sidebar--collapsed .sidebar__user,.sidebar--collapsed .sidebar__signout span{display:none}.sidebar--collapsed .sidebar__nav{padding-left:10px}.sidebar--collapsed .sidebar__link{justify-content:center;margin-left:8px;padding:12px 0}.sidebar--collapsed .sidebar__link:hover{margin-left:3px}.sidebar--collapsed .sidebar__link--active,.sidebar--collapsed .sidebar__link--active:hover{margin-left:0}.sidebar--collapsed .sidebar__footer{padding:16px 10px 0}.sidebar--collapsed .sidebar__signout{padding:10px}@media (width<=860px){.sidebar{width:72px}.sidebar__brand{justify-content:center;padding:0}.sidebar__brand-name,.sidebar__link-label,.sidebar__user,.sidebar__signout span{display:none}.sidebar__nav{padding-left:10px}.sidebar__link{justify-content:center;margin-left:8px;padding:12px 0}.sidebar__link:hover{margin-left:3px}.sidebar__link--active,.sidebar__link--active:hover{margin-left:0}.sidebar__footer{padding:16px 10px 0}.sidebar__signout{padding:10px}}.inv-header{flex-direction:column;gap:16px;margin-bottom:8px;display:flex}.inv-header__top{justify-content:space-between;align-items:center;gap:var(--space-sm);flex-wrap:wrap;display:flex}.inv-header__title{align-items:baseline;gap:var(--space-sm);display:flex}.inv-header__heading{color:var(--color-text);margin:0;font-size:1.3rem;font-weight:700}.inv-header__subtitle{color:var(--color-text-muted);padding-left:var(--space-sm);border-left:1px solid var(--color-border);font-size:.85rem}.inv-header__stats{gap:var(--space-sm);flex-wrap:wrap;align-items:center;display:flex}.inv-header__stat{background:var(--color-bg);color:var(--color-text-secondary);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:var(--font-semibold);box-shadow:var(--neu-shadow-raised-sm);border:none;align-items:center;gap:6px;padding:5px 12px;display:inline-flex}.inv-header__stat--alert{color:var(--color-danger-text);cursor:pointer}.inv-header__subnav{flex-wrap:wrap;gap:8px;display:flex}.inv-header__subtab{border-radius:var(--radius-full);background:var(--color-bg);color:var(--color-text-secondary);box-shadow:var(--neu-shadow-raised-sm);transition:var(--transition);align-items:center;gap:7px;padding:8px 16px;font-size:.85rem;font-weight:600;display:inline-flex}.inv-header__subtab svg{color:var(--icon-accent)}.inv-header__subtab:hover{color:var(--color-text);box-shadow:var(--neu-shadow-hover)}.inv-header__subtab--active{color:var(--color-text);box-shadow:var(--neu-shadow-inset-sm)}@media (width<=480px){.inv-header__subtitle{display:none}}.app{background:var(--color-page);min-height:100vh}.app-shell{min-height:100vh;display:flex}.app-shell__main{flex-direction:column;flex:1;min-width:0;display:flex}
