@font-face{font-family:Geist Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/geist-sans-latin-400-normal-gapTbOY8.woff2) format("woff2"),url(/assets/geist-sans-latin-400-normal-BOaIZNA2.woff) format("woff")}@font-face{font-family:Geist Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/geist-sans-latin-500-normal-uokXdC-Q.woff2) format("woff2"),url(/assets/geist-sans-latin-500-normal-CN2lyvyL.woff) format("woff")}@font-face{font-family:Geist Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/geist-sans-latin-600-normal-DFOURf8L.woff2) format("woff2"),url(/assets/geist-sans-latin-600-normal-CA1yjETN.woff) format("woff")}:root{--blue: #2563eb;--bg: #f7f9fc;--text: #1a1a1a;--muted: #5a6572;--border: #d5dce4;--field-disabled: #e9edf2;--error: #dc2626;--success: #1b7a3d}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{height:100%}body{margin:0;overflow:hidden;font-family:Geist Sans,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;background:var(--bg);color:var(--text)}#root{display:flex;flex-direction:column}.screen{width:100%;max-width:480px;margin:0 auto;padding:24px 20px 0;flex:1;min-height:0}@property --fade-top{syntax: "<length>"; inherits: false; initial-value: 0px;}@property --fade-bottom{syntax: "<length>"; inherits: false; initial-value: 0px;}.screen-body{display:flex;flex-direction:column;gap:14px;flex:1;min-height:0;overflow-y:auto;overscroll-behavior-y:contain;margin:0 -20px;padding:2px 20px 32px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--fade-top),#000 calc(100% - var(--fade-bottom)),transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 var(--fade-top),#000 calc(100% - var(--fade-bottom)),transparent 100%);transition:--fade-top .25s ease,--fade-bottom .25s ease}.screen-footer{flex-shrink:0;display:flex;flex-direction:column;gap:14px;padding-bottom:16px}.screen-body.fade-top{--fade-top: 22px}.screen-body.fade-bottom{--fade-bottom: 22px}h1{margin:0;font-size:1.4rem;color:var(--blue)}.hint{color:var(--muted);font-size:.95rem}form,.screen{display:flex;flex-direction:column;gap:14px}label{display:flex;flex-direction:column;gap:6px;font-size:.95rem;font-weight:600}label.checkbox{flex-direction:row;align-items:center;gap:10px}input,select{font-size:1rem;padding:12px;border:1px solid var(--border);border-radius:8px;background:#fff}input:disabled,select:disabled,textarea:disabled{opacity:1;background:var(--field-disabled);color:var(--muted);-webkit-text-fill-color:var(--muted);cursor:not-allowed}input[type=checkbox]{width:22px;height:22px}.password-field{position:relative;display:flex}.password-field input{flex:1;width:100%;padding-right:46px}.password-toggle{position:absolute;top:50%;right:6px;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:none;color:var(--muted)}.password-toggle svg{width:21px;height:21px}input[type=date],input[type=datetime-local]{height:46px;padding-top:0;padding-bottom:0;display:flex;align-items:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff}button{font-size:.95rem;font-weight:600;line-height:1.35;padding:14px;border:none;border-radius:10px;background:var(--blue);color:#fff;cursor:pointer}button:disabled{opacity:.6}button.start{background:var(--success)}button.stop{background:var(--error)}.link-button{background:none;color:var(--blue);font-weight:500;font-size:.95rem;padding:8px}.error{color:var(--error);font-size:.95rem}.success{color:var(--success);font-size:.95rem}.elapsed{font-family:Geist Sans,system-ui,sans-serif;font-size:3rem;font-variant-numeric:tabular-nums;text-align:center;margin:8px 0;color:var(--blue)}.running-address{text-align:center;color:var(--muted)}body:has(.auth-screen){background:#fff}.auth-screen{overflow-y:auto;padding:40px 32px calc(28px + env(safe-area-inset-bottom))}.auth-screen .auth-card{flex:1}.auth-card{display:flex;flex-direction:column;gap:14px}.auth-card form{flex:1}.auth-card form:before{content:"";flex:1}.auth-spacer{flex:2}.auth-logo{width:150px;align-self:center;margin-bottom:6px}.auth-card h1{margin:0;text-align:center;font-size:1.5rem;color:var(--blue)}.auth-card .hint{text-align:center;font-size:.9rem}.auth-card input{border-radius:12px;padding:14px 16px}.auth-card .password-field input{padding-right:46px}.input-icon-field{position:relative}.input-icon-field .field-icon{position:absolute;left:15px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:var(--muted);pointer-events:none;z-index:1}.input-icon-field input{width:100%;padding-left:46px}.auth-card .auth-alt{align-self:flex-end;padding:0}.tabbar{flex-shrink:0;display:flex;justify-content:space-around;align-items:center;background:#fff;border-top:1px solid var(--border);padding:10px 6px calc(10px + env(safe-area-inset-bottom))}.tabbar a{color:var(--muted);text-decoration:none;padding:8px 14px;display:flex;align-items:center;justify-content:center}.tabbar a svg{width:27px;height:27px}.tabbar a:active{opacity:.55}.tabbar a.active{color:var(--blue)}.profile-card{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--border);border-radius:14px;padding:16px}.avatar{border-radius:50%;background:var(--blue);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;object-fit:cover;flex-shrink:0}.avatar-tab{width:28px;height:28px;font-size:.75rem}.tabbar a.active .avatar-tab{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--blue)}.avatar-profile{width:64px;height:64px;font-size:1.5rem}.profile-name{margin:0;font-weight:600;font-size:1.35rem}.profile-detail{margin:2px 0 0;font-size:.9rem;color:var(--muted)}h2{font-size:1.05rem;margin:10px 0 0}.logout-button{margin-top:auto;display:flex;align-items:center;justify-content:center;gap:8px;background:#fff;color:var(--error);border:1px solid var(--error)}.logout-button svg{width:21px;height:21px}.skeleton{border-radius:10px;background:linear-gradient(90deg,#e4eaf2 25%,#eff3f9 37%,#e4eaf2 63%);background-size:400% 100%;animation:shimmer 1.4s ease infinite}@keyframes shimmer{0%{background-position:100% 0}to{background-position:0 0}}.skeleton-field{height:76px}.skeleton-button{height:52px}.skeleton-row{height:68px}.skeleton-title{height:32px;width:55%}.skeleton-stat{height:112px;flex:1}.skeleton-line{height:12px;width:150px;border-radius:6px}.skeleton-chart{height:212px;border-radius:14px}.empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px;padding:24px}.empty-state svg{width:56px;height:56px;color:var(--border);stroke-width:1.2;margin-bottom:8px}.empty-title{margin:0;font-weight:600;color:var(--muted)}.empty-text{margin:0;font-size:.95rem;color:var(--muted);opacity:.75}.entries{list-style:none;margin:0;padding:0;background:#fff;border:1px solid var(--border);border-radius:10px}.entries li+li{border-top:1px solid #edf1f5}.entries-day{display:flex;flex-direction:column;gap:8px}.entries-date{margin:8px 0 0;font-size:.85rem;font-weight:600;text-transform:capitalize;color:var(--muted)}.entry-button{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;background:none;border:none;border-radius:0;padding:13px 14px;font-size:1rem;font-weight:400;color:var(--text);text-align:left}.entry-info{display:flex;flex-direction:column;gap:3px;min-width:0}.entry-info span{color:var(--muted);font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.entry-side{display:flex;align-items:center;gap:6px;flex-shrink:0}.entry-time{color:var(--muted);font-size:.9rem;font-variant-numeric:tabular-nums}.entry-chevron{width:18px;height:18px;color:var(--border)}.screen-header{display:flex;justify-content:space-between;align-items:center;gap:12px}.screen-header h1{margin:0}.screen-header.align-top{align-items:flex-start}.screen-header.align-top .header-actions{margin-top:1px}.add-button{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border-radius:50%;flex-shrink:0}.header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.filter-button{position:relative;display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border-radius:50%;flex-shrink:0;background:#fff;border:1px solid var(--border);color:var(--muted)}.filter-button.active{background:var(--blue);border-color:var(--blue);color:#fff}.filter-button.active:after{content:"";position:absolute;top:-3px;right:-3px;width:9px;height:9px;border-radius:50%;background:var(--error);border:1.5px solid var(--bg)}.filter-button svg{width:16px;height:16px}.filter-button.active svg{fill:#fff;stroke:var(--blue);stroke-width:1.2}.filter-row{display:flex;gap:10px}.filter-row label{flex:1}.button-secondary{background:#fff;border:1px solid var(--border);color:var(--blue);font-weight:600;padding:13px;border-radius:10px}.load-more{width:100%;margin-top:4px}.add-button svg{width:16px;height:16px}.entry-icon{width:26px;height:26px;color:var(--muted);flex-shrink:0;stroke-width:1.5}.entry-play{width:26px;height:26px;color:var(--blue)}.search-box{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:0 12px}.search-box svg{width:20px;height:20px;color:var(--muted);flex-shrink:0}.search-box input{border:none;padding:12px 0;flex:1;min-width:0;outline:none;background:transparent}.entry-address{font-size:.95rem;font-weight:400;color:var(--text)}.picker-field{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:1rem;font-weight:400;padding:12px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);text-align:left}.picker-field span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.picker-field.placeholder{color:var(--muted)}.picker-field:disabled{opacity:1;background:var(--field-disabled);color:var(--muted);cursor:not-allowed}.picker-field svg{width:20px;height:20px;color:var(--muted);flex-shrink:0}.picker-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0a142373;z-index:100;display:flex;flex-direction:column;justify-content:flex-end;animation:picker-fade .2s ease}.picker-sheet{background:var(--bg);border-radius:16px 16px 0 0;padding:8px 20px calc(20px + env(safe-area-inset-bottom));max-height:85dvh;display:flex;flex-direction:column;gap:12px;overflow-y:auto;animation:picker-rise .25s ease}.picker-sheet h2{margin:0;font-size:1.1rem;color:var(--blue)}.picker-grabber{width:36px;height:4px;border-radius:2px;background:var(--border);margin:0 auto}.grouped-list,.picker-options{list-style:none;margin:0;padding:0;background:#fff;border:1px solid var(--border);border-radius:10px}.picker-options{overflow-y:auto;overscroll-behavior:contain}.grouped-list li+li,.picker-options li+li{border-top:1px solid #edf1f5}.grouped-row,.picker-option{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;background:none;border:none;border-radius:0;padding:13px 14px;font-size:1rem;font-weight:400;color:var(--text);text-align:left}.grouped-row strong,.picker-option strong{font-weight:500}.option-icon-row{display:flex;align-items:center;gap:12px;min-width:0}.option-icon{width:24px;height:24px;color:var(--muted);flex-shrink:0}.option-icon-danger,.option-danger{color:var(--error)}.badge-invoiced{align-self:flex-start;display:inline-flex;align-items:center;background:#1b7a3d1a;color:var(--success);font-size:.8rem;font-weight:600;padding:4px 12px;border-radius:999px}.invoiced-hint{margin-top:auto;text-align:center}.picker-check{width:20px;height:20px;color:var(--blue);flex-shrink:0}.picker-empty{text-align:center;color:var(--muted);padding:16px 0}.sheet-hint{margin:0}.location-heading{display:flex;flex-direction:column;gap:2px}.location-heading h1,.location-heading .hint{margin:0}.start-timer{display:flex;align-items:center;justify-content:center;gap:8px}.start-timer svg{width:18px;height:18px}.add-cleaning{display:flex;align-items:center;justify-content:center;gap:8px;background:#fff;border:1.5px dashed var(--border);color:var(--blue);font-weight:600;padding:13px;border-radius:10px}.add-cleaning svg{width:20px;height:20px}.add-cleaning:disabled{color:var(--muted);background:var(--field-disabled);opacity:1;cursor:not-allowed}.field-group{display:flex;flex-direction:column;gap:6px}.field-label{font-size:.95rem;font-weight:600}.field-column{display:flex;flex-direction:column;gap:6px}.segmented{display:flex;gap:4px;background:#e5eaf1;border-radius:10px;padding:3px}.segmented .segment{flex:1;min-width:0;background:none;color:var(--muted);font-size:.85rem;font-weight:600;padding:9px 4px;border-radius:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.segmented .segment.active{background:#fff;color:var(--blue);box-shadow:0 1px 3px #2563eb26}.button-destructive{background:#fff;border:1px solid var(--border);color:var(--error);font-weight:600;padding:13px;border-radius:10px}.draft-list{list-style:none;margin:0;padding:0;background:#fff;border:1px solid var(--border);border-radius:10px}.draft-list li+li{border-top:1px solid #edf1f5}.draft-card{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;padding:12px 14px;cursor:pointer}.title-dot{display:inline-block;width:4px;height:4px;border-radius:50%;background:var(--muted);vertical-align:3px;margin:0 6px}.time-arrow{display:inline-block;width:15px;height:15px;margin:0 5px;vertical-align:-2px;color:var(--muted)}.draft-remove{background:none;border:none;padding:6px;margin:-6px -6px 0 0;color:var(--muted);flex-shrink:0}.draft-remove svg{width:20px;height:20px}@keyframes picker-fade{0%{opacity:0}}@keyframes picker-rise{0%{transform:translateY(40px)}}.field-row{display:flex;justify-content:space-between;align-items:center;gap:12px;background:#fff;border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:.95rem;font-weight:600}.row-group{display:flex;flex-direction:column;background:#fff;border:1px solid var(--border);border-radius:10px}.row-group .field-row{background:none;border:none;border-radius:0}.row-group .field-row+.field-row{border-top:1px solid #edf1f5}.stepper{display:flex;align-items:center;gap:4px}.stepper button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border-radius:10px;background:var(--bg);color:var(--blue);border:1px solid var(--border)}.stepper button:disabled{opacity:.35}.stepper button svg{width:18px;height:18px}.stepper-value{min-width:36px;text-align:center;font-family:Geist Sans,system-ui,sans-serif;font-variant-numeric:tabular-nums;font-size:1.1rem}.switch{width:52px;height:32px;padding:2px;border-radius:99px;background:var(--border);flex-shrink:0;transition:background .2s}.switch.on{background:var(--success)}.switch-knob{display:block;width:28px;height:28px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #00000040;transition:transform .2s}.switch.on .switch-knob{transform:translate(20px)}.greeting{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.greeting h1{margin:0}.greeting-date{margin:0;color:var(--muted);font-size:.95rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.running-banner{display:flex;align-items:center;gap:10px;text-align:left;background:var(--blue);color:#fff;border-radius:14px;padding:14px 16px;font-size:.95rem}.running-banner strong{flex-shrink:0}.running-banner-project{margin-left:auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400;opacity:.85}.running-banner-time{flex-shrink:0;font-family:Geist Sans,system-ui,sans-serif;font-variant-numeric:tabular-nums;font-weight:500}.running-banner svg{width:18px;height:18px;flex-shrink:0}.pulse-dot{width:10px;height:10px;border-radius:50%;background:#6ee7a0;flex-shrink:0;animation:pulse 1.6s ease infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.stat-card{display:flex;flex-direction:column;gap:2px;background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 16px}.stat-label{font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stat-value{font-family:Geist Sans,system-ui,sans-serif;font-variant-numeric:tabular-nums;font-size:1.5rem;font-weight:600;color:var(--blue);margin-top:4px}.stat-sub{font-size:.85rem;color:var(--muted)}.chart-card{display:flex;flex-direction:column;gap:10px;background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 16px}.week-chart{width:100%;height:auto}.chart-card-grow{flex:1}.chart-fill{flex:1;min-height:150px;display:flex;align-items:center;justify-content:center}.chart-fill svg{width:100%;height:100%}.chart-day{font-size:11px;fill:var(--muted);font-family:inherit}.chart-day.today{fill:var(--text);font-weight:600}.chart-value{font-size:11px;font-weight:600;fill:var(--muted);font-family:Geist Sans,system-ui,sans-serif;font-variant-numeric:tabular-nums}.chart-empty{margin:24px 0;text-align:center;color:var(--muted);font-size:.95rem}.section-row{display:flex;justify-content:space-between;align-items:center;margin-top:6px}.section-row h2{margin:0}.section-row .link-button{padding:0}.toggle{display:flex;gap:2px;background:#e6ebf2;border-radius:10px;padding:3px}.toggle-btn{flex:1;background:transparent;color:var(--muted);font-size:.95rem;font-weight:500;padding:8px;border-radius:8px}.toggle-btn.active{background:#fff;color:var(--text);box-shadow:0 1px 2px #00000014}.back-button{align-self:flex-start;display:flex;align-items:center;gap:2px;background:none;color:var(--blue);font-size:.9rem;font-weight:500;padding:0}.back-button svg{width:16px;height:16px}.detail-list{margin:0;background:#fff;border:1px solid var(--border);border-radius:14px;padding:4px 16px}.detail-list>div{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:12px 0;border-bottom:1px solid var(--bg)}.detail-list>div:last-child{border-bottom:none}.detail-list dt{color:var(--muted);font-size:.95rem;flex-shrink:0}.detail-list dd{margin:0;text-align:right}.edit-button{margin-top:auto;display:flex;align-items:center;justify-content:center;gap:8px}.edit-button svg{width:20px;height:20px}.delete-button{display:flex;align-items:center;justify-content:center;gap:8px;background:var(--error);color:#fff}.delete-button svg{width:20px;height:20px}
