@import "https://fonts.googleapis.com/css2?family=Syne:wght@400;500;600;700&family=DM+Sans:wght@300;400;500;600&family=DM+Mono:wght@400;500&display=swap";:root{--bg:#0c1117;--s1:#13151e;--s2:#1a1d28;--s3:#21253a;--border:#ffffff12;--border2:#ffffff21;--text:#dde1f0;--muted:#636882;--dim:#3a3e54;--accent:#22d3ee;--on-accent:#10121b;--font:"DM Sans", system-ui, sans-serif;--display:"Syne", system-ui, sans-serif;--mono:"DM Mono", monospace;--green:#22c55e;--orange:#f97316;--red:#ef4444;--purple:#a78bfa;--blue:#3b82f6;--teal:#14b8a6;--pink:#ec4899;--primary:var(--accent);--primary-alpha:#22d3ee33;--success:var(--green);--success-alpha:#22c55e33;--error:var(--red);--error-bg:#ef44441f;--text-heading:var(--text);--text-muted:var(--muted);--surface:var(--s2);--surface-hover:#ffffff0a;--shadow:0 4px 12px #0000004d;font-family:var(--font);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5}*{box-sizing:border-box}button,a,input,[role=button]{min-width:44px;min-height:44px}html{-webkit-text-size-adjust:100%}body{margin:0;padding:0}#root{flex-direction:column;min-height:100svh;display:flex}.login-page{box-sizing:border-box;justify-content:center;align-items:center;min-height:100svh;padding:24px;display:flex}.login-card{background:var(--surface);width:100%;max-width:360px;box-shadow:var(--shadow);border-radius:16px;padding:32px}.login-logo{color:var(--primary);text-align:center;margin:0 0 4px;font-size:28px;font-weight:600}.login-subtitle{text-align:center;color:var(--text-muted);margin:0 0 32px;font-size:15px}.login-form{flex-direction:column;gap:16px;display:flex}.login-error{background:var(--error-bg);color:var(--error);border-radius:8px;padding:12px;font-size:14px}.login-label{color:var(--text);font-size:14px;font-weight:500}.login-input{border:1px solid var(--border);background:var(--bg);min-height:48px;color:var(--text);appearance:none;border-radius:10px;padding:0 16px;font-size:16px}.login-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-alpha);outline:none}.login-input::placeholder{color:var(--text-muted)}.login-button{color:#fff;background:var(--primary);cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:12px;min-height:52px;margin-top:8px;padding:0 24px;font-size:17px;font-weight:600}.login-button:active{transform:scale(.98)}.login-button:disabled{opacity:.7;cursor:not-allowed;transform:none}.login-hint{text-align:center;color:var(--text-muted);margin:24px 0 0;font-size:13px}.skeleton-shimmer{background:linear-gradient(90deg, var(--s3) 0%, #ffffff0f 50%, var(--s3) 100%);background-size:200% 100%;animation:1.2s ease-in-out infinite skeleton-shimmer}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.skeleton-card{border:1px solid var(--border);background:var(--s2);border-radius:12px;flex-direction:column;gap:10px;min-height:5rem;padding:16px;display:flex}.skeleton-card__title{border-radius:6px;width:66%;height:1.1rem}.skeleton-card__line{opacity:.85;border-radius:4px;width:100%;height:.65rem}.skeleton-card__line--short{width:80%}.skeleton-schedule{flex-direction:column;gap:12px;padding:12px 16px;display:flex}.skeleton-schedule__week{gap:8px;display:flex}.skeleton-schedule__dayhead{border-radius:8px;flex:1;height:32px}.skeleton-schedule__row{align-items:stretch;gap:8px;display:flex}.skeleton-schedule__timecell{border-radius:8px;flex-shrink:0;width:96px;height:56px}.skeleton-schedule__block{border-radius:8px;flex:1;height:56px}.status-pill{font-size:11px;font-weight:600;font-family:var(--mono);white-space:nowrap;color:var(--status-pill-color,var(--muted));background:var(--status-pill-bg,var(--s3));border:1px solid var(--status-pill-border,var(--border2));border-radius:99px;align-items:center;gap:6px;padding:3px 10px;display:inline-flex}.status-pill-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:7px;height:7px}.status-pill-dot--active{animation:2s infinite status-pill-pulse}@keyframes status-pill-pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, currentColor 45%, transparent)}50%{box-shadow:0 0 0 5px color-mix(in srgb, currentColor 0%, transparent)}}.clock-page-installer{background:var(--bg);flex-direction:column;flex:1;padding-bottom:88px;display:flex}.app-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:16px 16px 12px;display:flex}.app-header-left{min-width:0}.app-greeting{color:var(--muted);font-size:11px}.app-name{font-family:var(--display);letter-spacing:-.4px;color:var(--text);margin-top:1px;font-size:18px;font-weight:700}.app-date{color:var(--muted);font-size:11px;font-family:var(--mono);letter-spacing:.03em;margin-top:2px}.clock-hero{border:1px solid #0000;border-radius:18px;margin:12px 14px;padding:16px}.clock-hero-active{background:linear-gradient(135deg,#22c55e1f,#10b9810f);border-color:#22c55e40}.clock-hero-idle{background:linear-gradient(135deg,#22d3ee1a,#22d3ee0d);border-color:#22d3ee33}.clock-hero-done{background:var(--s2);border-color:var(--border)}.clock-hero-empty{background:var(--s2);border-color:var(--border);text-align:center}.clock-status-row{align-items:center;gap:6px;margin-bottom:10px;display:flex}.clock-status-dot{border-radius:50%;width:7px;height:7px}.clock-status-dot.active{background:#22c55e;animation:2s infinite pulse-green;box-shadow:0 0 0 3px #22c55e33}.clock-status-dot.idle{background:var(--accent)}.clock-status-dot.done,.clock-status-dot.off{background:var(--dim)}@keyframes pulse-green{0%,to{box-shadow:0 0 #22c55e66}50%{box-shadow:0 0 0 5px #22c55e00}}.clock-status-text{color:var(--muted);flex:1;font-size:11px}.clock-job-name{font-family:var(--display);color:var(--text);margin-bottom:2px;font-size:16px;font-weight:700;line-height:1.3;text-decoration:none;display:block}.clock-job-name:active{opacity:.8}.clock-location{color:var(--muted);margin-bottom:4px;font-size:11px}.clock-addr-link{color:var(--accent);align-items:center;gap:4px;margin-bottom:8px;font-size:11px;text-decoration:none;display:inline-flex}.clock-drive-btn{border:1px solid var(--border2);min-height:44px;color:var(--accent);background:0 0;border-radius:10px;justify-content:center;align-items:center;gap:8px;margin-bottom:12px;padding:0 16px;font-size:14px;font-weight:600;text-decoration:none;display:flex}.clock-drive-btn:active{opacity:.85}.clock-addr-link:active{opacity:.8}.clock-timer{font-family:var(--mono);color:#22c55e;letter-spacing:-1.5px;margin-bottom:12px;font-size:32px;font-weight:500}.clock-timer.idle{color:var(--accent);font-size:22px}.clock-timer--paused{color:#94a3b8;margin-bottom:4px}.clock-break-timer{font-family:var(--mono);color:#fcd34d;letter-spacing:-.5px;margin-bottom:12px;font-size:20px;font-weight:500}.clock-break-total{color:var(--muted,#94a3b8);margin:-6px 0 12px;font-size:12px}.clock-btn{width:100%;font-size:14px;font-weight:700;font-family:var(--font);cursor:pointer;-webkit-tap-highlight-color:transparent;letter-spacing:.02em;border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:13px 16px;display:flex}.clock-in-btn{color:#000;background:#22c55e}.clock-in-btn:active{background:#16a34a}.clock-out-btn{color:#fca5a5;background:#ef44441f;border:1px solid #ef444440}.clock-out-btn:active{background:#ef444433}.clock-break-btn{color:#cbd5e1;background:#94a3b81f;border:1px solid #94a3b847}.clock-break-btn:active{background:#94a3b833}.clock-break-end-btn{color:#fcd34d;background:#f59e0b29;border:1px solid #f59e0b59}.clock-break-end-btn:active{background:#f59e0b42}.clock-break-banner{color:#fcd34d;text-align:center;background:#f59e0b24;border:1px solid #f59e0b4d;border-radius:10px;margin:0 0 10px;padding:8px 12px;font-size:13px}.clock-btn:disabled{opacity:.65;cursor:not-allowed}.clock-ghost-link{width:100%;color:var(--muted);text-underline-offset:2px;cursor:pointer;background:0 0;border:none;min-height:32px;margin-top:10px;padding:0;font-family:inherit;font-size:11.5px;text-decoration:underline;display:block}.clock-ghost-link:disabled{opacity:.6;cursor:not-allowed}.clock-done-text{color:var(--muted);text-align:center;margin-top:4px;font-size:13px}.clock-empty-icon{margin-bottom:8px;font-size:32px;display:block}.clock-empty-title{color:var(--text);margin-bottom:4px;font-size:14px;font-weight:600}.clock-empty-sub{color:var(--muted);font-size:12px}.clock-job-picker-wrap{margin:0 14px 14px;position:relative}.clock-job-picker{background:var(--s2);border:1px solid var(--border);width:100%;color:var(--muted);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:8px;min-height:44px;padding:10px 14px;font-family:inherit;font-size:13px;display:flex}.clock-job-picker b{color:var(--text);font-weight:600}.clock-job-menu{z-index:30;background:var(--s1);border:1px solid var(--border2);border-radius:12px;max-height:260px;padding:5px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 12px 30px -8px #0009}.clock-job-menu button{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;min-height:40px;padding:10px;font-family:inherit;font-size:12.5px;display:block}.clock-job-menu button:hover{background:var(--s3)}.clock-rm-active{color:var(--accent);font-weight:700}.clock-section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:22px 14px 10px;font-size:10.5px;font-weight:700}.clock-logged-card{background:var(--s1);border:1px solid var(--border);border-radius:18px;margin:0 14px;padding:0 16px}.clock-session-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:11px 0;display:flex}.clock-session-row:last-child{border-bottom:none}.clock-session-range{color:var(--text);font-size:13px}.clock-session-range span{color:var(--muted);margin-top:1px;font-size:11px;display:block}.clock-session-hrs{color:var(--muted);font-size:13.5px;font-family:var(--mono)}.schedule-skeleton-wrap{padding-bottom:8px}.clock-location-badge{font-size:11px;font-family:var(--mono);align-items:center;gap:5px;margin-bottom:12px;display:flex}.clock-location-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.clock-location-dot.acquiring{background:var(--dim);animation:1.5s ease-in-out infinite pulse-subtle}@keyframes pulse-subtle{0%,to{opacity:1}50%{opacity:.2}}.clock-location-badge--acquiring,.clock-location-badge--neutral,.clock-location-badge--manual{color:var(--muted)}.clock-location-badge--acquiring{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.gps-slow-fallback{border:1px solid var(--border);background:var(--s2);width:100%;color:var(--accent);text-align:center;cursor:pointer;border-radius:8px;margin-top:8px;padding:8px 10px;font-family:inherit;font-size:11px;display:block}.gps-slow-fallback:active{opacity:.9;transform:scale(.99)}.clock-confirm-backdrop{z-index:300;background:#000000a6;align-items:flex-end;animation:.2s fade-in;display:flex;position:fixed;inset:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.clock-confirm-sheet{border-top:1px solid var(--border2);width:100%;padding-bottom:calc(24px + env(safe-area-inset-bottom,0));background:#14141f;border-radius:22px 22px 0 0;animation:.3s cubic-bezier(.34,1.56,.64,1) slide-up}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.clock-confirm-handle{background:var(--border2);border-radius:99px;width:36px;height:4px;margin:12px auto 16px}.clock-confirm-header{align-items:center;gap:12px;padding:0 16px 14px;display:flex}.clock-confirm-check{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:42px;height:42px;display:flex}.clock-confirm-check.in{color:#22c55e;background:#22c55e26;border:1px solid #22c55e4d}.clock-confirm-check.out{color:var(--muted);border:1px solid var(--border2);background:#64748b26}.clock-confirm-title{font-family:var(--display);color:var(--text);font-size:16px;font-weight:700}.clock-confirm-job{color:var(--muted);margin-top:1px;font-size:11px}.clock-confirm-details{flex-wrap:wrap;gap:8px;padding:0 16px 14px;display:flex}.clock-confirm-distance{font-size:11px;font-family:var(--mono);border-radius:99px;align-items:center;gap:5px;padding:4px 10px;display:inline-flex}.clock-confirm-distance.ok{color:#86efac;background:#22c55e1a;border:1px solid #22c55e33}.clock-confirm-distance.flagged{color:#fcd34d;background:#f59e0b1a;border:1px solid #f59e0b33}.clock-confirm-distance.manual{background:var(--s3);color:var(--muted);border:1px solid var(--border)}.clock-confirm-hours{font-size:11px;font-family:var(--mono);color:#86efac;background:#22c55e14;border:1px solid #22c55e26;border-radius:99px;align-items:center;gap:5px;padding:4px 10px;display:inline-flex}.clock-confirm-dismiss{border:1px solid var(--border2);width:calc(100% - 32px);color:var(--muted);font-size:13px;font-family:var(--font);cursor:pointer;-webkit-tap-highlight-color:transparent;text-align:center;background:0 0;border-radius:12px;margin:0 16px;padding:13px;display:block}.clock-confirm-dismiss:active{background:var(--s3)}.travel-controls{background:var(--s2);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:8px;margin-top:8px;padding:10px 12px;display:flex}.clock-hero .travel-controls{background:#0000001f;border-color:#ffffff14;margin-top:12px}.travel-control-row{justify-content:space-between;align-items:center;gap:10px;display:flex}.travel-control-label{color:var(--text);font-size:12px;font-weight:600}.travel-btn{cursor:pointer;-webkit-tap-highlight-color:transparent;border:1px solid #0000;border-radius:10px;min-height:36px;padding:0 14px;font-size:12px;font-weight:600}.travel-btn-start{color:color-mix(in srgb, var(--accent) 75%, white);background:#22d3ee26;border-color:#22d3ee4d}.travel-btn-stop{color:#fcd34d;background:#f59e0b26;border-color:#f59e0b4d}.travel-btn:disabled{opacity:.5}.schedule-page-installer{background:var(--bg);flex-direction:column;flex:1;padding-bottom:88px;display:flex}.schedule-page-header{border-bottom:1px solid var(--border);padding:16px 16px 12px}.schedule-page-title{font-family:var(--display);letter-spacing:-.4px;color:var(--text);margin:0;font-size:20px;font-weight:700}.schedule-page-subtitle{color:var(--muted);margin:4px 0 0;font-size:12px}.schedule-day-group{margin:0 14px 20px}.schedule-day-title{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px;font-size:12px;font-weight:700}.schedule-day-title.today{color:var(--accent)}.schedule-empty{text-align:center;color:var(--muted);background:var(--s2);border:1px solid var(--border);border-radius:10px;margin:4px 14px;padding:14px;font-size:13px}.shift-item{background:var(--s2);border:1px solid var(--border);color:inherit;-webkit-tap-highlight-color:transparent;border-radius:12px;align-items:flex-start;gap:12px;margin-bottom:8px;padding:12px;text-decoration:none;transition:border-color .1s;display:flex}.shift-item:active{border-color:var(--border2)}.shift-time{width:56px;color:var(--muted);flex-shrink:0;padding-top:1px;font-size:11.5px;line-height:1.4}.shift-time b{color:var(--text);font-size:12.5px;display:block}.shift-info{flex:1;min-width:0}.shift-info h3{color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin:0 0 2px;font-size:14.5px;font-weight:700;overflow:hidden}.shift-client{color:var(--muted);margin:0;font-size:12px}.shift-addr{color:var(--muted);align-items:flex-start;gap:4px;margin:5px 0 0;font-size:11.5px;display:flex}.shift-tags{gap:6px;margin-top:7px;display:flex}.shift-directions-btn{background:color-mix(in srgb, var(--accent) 12%, transparent);width:36px;height:36px;color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 28%, transparent);border-radius:11px;flex-shrink:0;justify-content:center;align-self:center;align-items:center;display:flex}.schedule-loading{text-align:center;color:var(--muted);padding:28px;font-size:14px}.schedule-error{background:var(--error-bg);color:var(--error);border-radius:10px;margin:12px 14px;padding:12px;font-size:13px}.activity-editor{border:1px solid var(--border2);background:var(--s2);border-radius:12px;margin-top:8px;padding:12px}.activity-editor-note{box-sizing:border-box;border:1px solid var(--border2);background:var(--s1);width:100%;color:var(--text);resize:vertical;border-radius:10px;padding:10px 12px;font-family:inherit;font-size:15px}.activity-editor-photos{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px;display:grid}.activity-editor-photo{aspect-ratio:1;background:var(--s3);border-radius:10px;position:relative;overflow:hidden}.activity-editor-photo img,.activity-editor-photo video{object-fit:cover;width:100%;height:100%;display:block}.activity-editor-remove{color:#fff;cursor:pointer;background:#000000a6;border:none;border-radius:50%;width:26px;height:26px;font-size:13px;line-height:1;position:absolute;top:4px;right:4px}.activity-editor-input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.activity-editor-actions{flex-wrap:wrap;gap:8px;margin-top:12px;display:flex}.activity-editor-btn{border:1px solid var(--border2);background:var(--s3);min-height:44px;color:var(--text);cursor:pointer;border-radius:10px;flex:auto;padding:0 14px;font-family:inherit;font-size:14px;font-weight:600}.activity-editor-btn--primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.activity-editor-btn:disabled{opacity:.55}.activity-editor-error{color:var(--error);margin-top:8px;font-size:13px}.room-dot{background:var(--dim);border-radius:50%;flex-shrink:0;width:10px;height:10px;display:inline-block;box-shadow:0 0 0 3px #3a3e542e}.room-dot--not-started{background:var(--dim);box-shadow:0 0 0 3px #3a3e542e}.room-dot--in-progress{background:var(--orange);box-shadow:0 0 0 3px #f9731629}.room-dot--on-hold{background:var(--red);box-shadow:0 0 0 3px #ef444429}.room-dot--complete{background:var(--green);box-shadow:0 0 0 3px #22c55e29}.room-pill{font-size:11px;font-weight:600;font-family:var(--mono);white-space:nowrap;border:1px solid var(--border2);background:var(--s3);color:var(--muted);border-radius:99px;align-items:center;gap:6px;padding:3px 10px;display:inline-flex}.room-pill--in-progress{color:var(--orange);background:#f973161a;border-color:#f973164d}.room-pill--on-hold{color:var(--red);background:#ef44441a;border-color:#ef44444d}.room-pill--complete{color:var(--green);background:#22c55e1a;border-color:#22c55e4d}.room-chip{border:1px solid var(--border2);background:var(--s3);max-width:100%;color:var(--text);border-radius:99px;align-items:center;gap:6px;padding:2px 9px;font-size:11px;font-weight:600;line-height:1.6;display:inline-flex;overflow:hidden}.room-chip-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.room-chip--none{border-style:dashed;border-color:var(--border);color:var(--muted);background:0 0;font-weight:500}.room-bar{border:1px solid var(--border2);border-left:3px solid var(--accent);background:var(--s1);width:100%;min-height:56px;color:var(--text);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:12px;align-items:center;gap:12px;margin-bottom:12px;padding:10px 14px;font-family:inherit;display:flex}.room-bar:active{background:var(--s3)}.room-bar:disabled{opacity:.55;cursor:default}.room-bar-body{flex:1;min-width:0}.room-bar-label{letter-spacing:.8px;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:600;display:block}.room-bar-name{font-family:var(--display);color:var(--text);align-items:center;gap:8px;margin-top:2px;font-size:16px;font-weight:700;display:flex}.room-bar-name-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.room-bar-meta{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:12px;display:block;overflow:hidden}.room-bar-change{color:var(--accent);flex-shrink:0;font-size:12px;font-weight:600}.room-bar--unset{border-left-color:var(--orange);background:#f973160f;flex-direction:column;align-items:stretch;gap:10px}.room-bar-unset-head{align-items:center;gap:10px;display:flex}.room-bar-reason{color:var(--text);white-space:normal;font-size:13px;line-height:1.4}.room-bar-cta{background:var(--accent);min-height:44px;color:var(--on-accent);border-radius:10px;justify-content:center;align-items:center;padding:0 16px;font-size:15px;font-weight:700;display:flex}.room-bar-stale{color:var(--muted);margin:-6px 0 12px;font-size:11px}.room-sheet-backdrop{z-index:400;background:#000000a6;align-items:flex-end;animation:.2s room-fade-in;display:flex;position:fixed;inset:0}@keyframes room-fade-in{0%{opacity:0}to{opacity:1}}.room-sheet{background:var(--s1);border-top:1px solid var(--border2);width:100%;max-height:88svh;padding-bottom:calc(16px + env(safe-area-inset-bottom,0));border-radius:22px 22px 0 0;flex-direction:column;animation:.28s cubic-bezier(.34,1.56,.64,1) room-slide-up;display:flex}@keyframes room-slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.room-sheet-handle{background:var(--border2);border-radius:99px;flex-shrink:0;width:36px;height:4px;margin:12px auto 14px}.room-sheet-title{font-family:var(--display);color:var(--text);margin:0 16px 2px;font-size:17px;font-weight:700}.room-sheet-sub{color:var(--muted);margin:0 16px 12px;font-size:12px}.room-sheet-notice{color:var(--text);background:#f973161a;border:1px solid #f973164d;border-radius:10px;margin:0 16px 12px;padding:10px 12px;font-size:13px;line-height:1.45}.room-sheet-search{border:1px solid var(--border2);background:var(--s2);width:calc(100% - 32px);color:var(--text);box-sizing:border-box;border-radius:10px;margin:0 16px 10px;padding:10px 12px;font-family:inherit;font-size:16px}.room-sheet-list{-webkit-overflow-scrolling:touch;flex:1;margin:0;padding:0 8px;list-style:none;overflow-y:auto}.room-sheet-group{letter-spacing:.9px;text-transform:uppercase;color:var(--muted);padding:12px 8px 6px;font-size:10px;font-weight:700}.room-sheet-row{width:100%;min-height:54px;color:var(--text);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;border-radius:10px;align-items:center;gap:12px;padding:8px 10px;font-family:inherit;display:flex}.room-sheet-row:active{background:var(--s3)}.room-sheet-row:disabled{opacity:.6}.room-sheet-row--selected{background:var(--s3)}.room-sheet-row-body{flex:1;min-width:0}.room-sheet-row-name{text-overflow:ellipsis;white-space:nowrap;font-size:15px;font-weight:600;overflow:hidden}.room-sheet-row-meta{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:1px;font-size:12px;overflow:hidden}.room-sheet-row-mark{color:var(--accent);flex-shrink:0;font-size:12px;font-weight:700}.room-sheet-state{text-align:center;color:var(--muted);padding:24px 16px;font-size:14px}.room-sheet-state--error{color:var(--red)}.room-sheet-actions{flex-shrink:0;gap:8px;padding:10px 16px 0;display:flex}.room-sheet-btn{border:1px solid var(--border2);min-height:46px;color:var(--muted);font-family:var(--font);cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border-radius:12px;flex:1;font-size:14px;font-weight:600}.room-sheet-btn:active{background:var(--s3)}.room-sheet-btn--primary{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.room-sheet-btn:disabled{opacity:.55}.logs-page{background:var(--bg);flex:1;padding:16px 16px 100px}.logs-title{font-family:var(--display);color:var(--text);margin:4px 0;font-size:22px;font-weight:700}.logs-subtitle{color:var(--muted);margin:0 0 16px;font-size:13px}.logs-skeleton-list{flex-direction:column;gap:12px;display:flex}.logs-error{background:var(--error-bg);color:var(--error);border-radius:12px;padding:16px;font-size:15px}.logs-offline-hint{opacity:.85;margin:8px 0 0;font-size:13px}.logs-empty{background:var(--surface);text-align:center;border-radius:12px;padding:48px 24px}.logs-empty-icon{margin-bottom:20px;font-size:56px;display:block}.logs-empty p{color:var(--text);margin:0;font-size:17px}.logs-empty-hint{color:var(--text-muted)!important;margin-top:12px!important;font-size:15px!important;line-height:1.5!important}.logs-empty-inline{color:var(--muted);margin:0;padding:12px 0;font-size:14px}.logs-card{background:var(--s1);border:1px solid var(--border);border-radius:18px;padding:16px}.logs-job-context-wrap{margin-bottom:14px;position:relative}.logs-job-context{background:var(--s2);border:1px solid var(--border);width:100%;color:var(--muted);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:8px;min-height:44px;padding:10px 14px;font-family:inherit;font-size:13px;display:flex}.logs-job-context b{color:var(--text);font-weight:600}.logs-job-menu{z-index:30;background:var(--s1);border:1px solid var(--border2);border-radius:12px;max-height:260px;padding:5px;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow-y:auto;box-shadow:0 12px 30px -8px #0009}.logs-job-menu button{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;min-height:40px;padding:10px;font-family:inherit;font-size:12.5px;display:block}.logs-job-menu button:hover{background:var(--s3)}.logs-composer{margin-bottom:20px}.logs-row-label{color:var(--text);margin:0 0 8px;font-size:13px;font-weight:700}.logs-composer-note{box-sizing:border-box;border:1px solid var(--border2);background:var(--s3);width:100%;color:var(--text);resize:vertical;border-radius:12px;margin-bottom:10px;padding:11px 13px;font-family:inherit;font-size:16px}.logs-composer-note::placeholder{color:var(--muted)}.logs-composer-note:focus{border-color:var(--accent);outline:none}.logs-composer-note:disabled{opacity:.6}.logs-room-row{background:var(--s3);border:1px dashed var(--border2);border-radius:10px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px;padding:10px 12px;display:flex}.logs-room-row-label{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;flex-shrink:0;font-size:11px;font-weight:700}.logs-room-chip-wrap{position:relative}.logs-room-chip-btn{cursor:pointer;text-overflow:ellipsis;white-space:nowrap;border-radius:999px;align-items:center;gap:6px;max-width:220px;min-height:38px;padding:0 13px;font-family:inherit;font-size:12px;font-weight:600;display:inline-flex;overflow:hidden}.logs-room-chip-btn.set{background:color-mix(in srgb, var(--accent) 14%, transparent);color:var(--accent);border:none}.logs-room-chip-btn.unset{border:1px dashed var(--border2);color:var(--muted);background:0 0}.logs-room-chip-btn:disabled{opacity:.6}.logs-room-menu{z-index:30;background:var(--s1);border:1px solid var(--border2);border-radius:12px;width:180px;max-height:240px;padding:5px;position:absolute;top:calc(100% + 4px);right:0;overflow-y:auto;box-shadow:0 12px 30px -8px #0009}.logs-room-menu button{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;min-height:36px;padding:8px 10px;font-family:inherit;font-size:12.5px;display:block}.logs-room-menu button:hover{background:var(--s3)}.logs-rm-clear{color:var(--muted);border-bottom:1px solid var(--border);margin-bottom:3px;border-radius:0!important;padding-bottom:9px!important}.logs-rm-active{color:var(--accent);font-weight:700}.logs-rm-empty{color:var(--muted);margin:0;padding:8px 10px;font-size:12px}.logs-room-stale,.logs-room-error{color:var(--muted);margin:0 0 10px;font-size:12px}.logs-media-row{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px;display:grid}.logs-photo-input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.logs-media-btn{border:1px solid var(--border2);background:var(--s3);color:var(--muted);text-align:center;cursor:pointer;border-radius:10px;min-height:44px;padding:10px 6px;font-family:inherit;font-size:11.5px;font-weight:600}.logs-media-btn:disabled{opacity:.6}.logs-upload-error{color:var(--error);margin-top:8px;font-size:13px}.logs-pending{flex-direction:column;gap:10px;margin:8px 0 12px;display:flex}.logs-pending-hint{color:var(--muted);margin:0;font-size:13px}.logs-pending-item{align-items:flex-start;gap:10px;display:flex}.logs-pending-thumb{object-fit:cover;border:1px solid var(--border);border-radius:8px;flex-shrink:0;width:64px;height:64px}.logs-pending-fields{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.logs-pending-caption{border:1px solid var(--border2);background:var(--s1);width:100%;color:var(--text);box-sizing:border-box;border-radius:8px;padding:8px 10px;font-size:14px}.logs-pending-remove{color:var(--error);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:13px}.logs-save-note-btn{cursor:pointer;background:var(--accent);width:100%;color:var(--on-accent);border:none;border-radius:14px;padding:15px 18px;font-family:inherit;font-size:15.5px;font-weight:700;transition:transform 80ms,opacity .15s}.logs-save-note-btn:active{transform:scale(.98)}.logs-save-note-btn:disabled{opacity:.45;cursor:default}.logs-section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:22px 0 10px;font-size:10.5px;font-weight:700}.logs-feed{padding:0 16px}.logs-entry{border-bottom:1px solid var(--border);padding:14px 0}.logs-entry:last-child{border-bottom:none}.logs-entry-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;font-size:11.5px;display:flex}.logs-dot{opacity:.5}.logs-edit-link{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:2px 4px;font-family:inherit;font-size:12px;font-weight:600}.logs-text{color:var(--text);overflow-wrap:anywhere;margin:0;font-size:13.5px;line-height:1.5}.logs-photos{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.logs-photo-link{display:block}.logs-photos .ph{object-fit:cover;border:1px solid var(--border);background:#000;border-radius:9px;flex-shrink:0;width:64px;height:64px;display:block}.jobs-page{background:var(--bg);flex:1;padding:16px 16px 100px}.jobs-title{font-family:var(--display);color:var(--text);margin:4px 0;font-size:22px;font-weight:700}.jobs-subtitle{color:var(--muted);margin:0 0 16px;font-size:13px}.jobs-skeletons{flex-direction:column;gap:12px;display:flex}.jobs-error{color:var(--red);padding:16px 0;font-size:14px}.jobs-empty{color:var(--muted);text-align:center;padding:16px 0;font-size:14px}.job-list-item{border-bottom:1px solid var(--border);color:inherit;-webkit-tap-highlight-color:transparent;align-items:center;gap:12px;padding:14px 0;text-decoration:none;display:flex}.job-list-item:last-child{border-bottom:none}.job-thumb{background:var(--s3);width:44px;height:44px;color:var(--accent);font-family:var(--display);border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;font-weight:700;display:flex}.job-list-item .info{flex:1;min-width:0}.job-list-item h3{color:var(--text);text-overflow:ellipsis;white-space:nowrap;margin:0 0 2px;font-size:14.5px;font-weight:700;overflow:hidden}.job-list-item .client{color:var(--muted);margin:0 0 6px;font-size:12px}.job-list-item .chev{color:var(--dim);flex-shrink:0}.documents-page{padding:24px 24px 100px}.documents-empty{background:var(--surface);text-align:center;border-radius:12px;padding:48px 24px}.documents-empty-icon{margin-bottom:20px;font-size:56px;display:block}.documents-empty p{color:var(--text);margin:0;font-size:17px}.documents-empty-hint{color:var(--text-muted)!important;margin-top:12px!important;font-size:15px!important;line-height:1.5!important}.documents-error{background:var(--error-bg);color:var(--error);border-radius:12px;padding:16px;font-size:15px}.documents-offline-hint,.documents-offline-banner{background:var(--primary-alpha);color:var(--primary);border-radius:12px;margin-bottom:16px;padding:12px 16px;font-size:14px}.documents-skeleton-list{flex-direction:column;gap:12px;display:flex}.documents-list{flex-direction:column;gap:24px;display:flex}.documents-job-section{background:var(--surface);box-shadow:var(--shadow);border-radius:12px;padding:20px}.documents-job-title-link{color:inherit;margin-bottom:16px;text-decoration:none;display:block}.documents-job-title-link:active .documents-job-title{color:var(--accent)}.documents-job-title{color:var(--text-heading);margin:0;font-size:17px;font-weight:600}.documents-view-job-link{color:var(--accent);margin-top:16px;font-size:14px;text-decoration:none;display:block}.documents-view-job-link:active{opacity:.8}.documents-category{margin-bottom:16px}.documents-category:last-child{margin-bottom:0}.documents-category-title{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;margin:0 0 8px;font-size:14px;font-weight:600}.documents-list-items{margin:0;padding:0;list-style:none}.documents-item{margin:0}.documents-item-button{width:100%;min-height:44px;color:var(--text);border:none;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent;background:0 0;align-items:center;gap:12px;padding:12px 0;font-size:15px;display:flex}.documents-item-button:last-of-type{border-bottom:none}.documents-item-button:active{background:var(--surface-hover)}.documents-item-button:disabled{opacity:.7}.documents-item-icon{flex-shrink:0;font-size:20px}.documents-item-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.documents-item-loading{color:var(--text-muted)}.job-detail-page{background:var(--bg);flex:1;padding:16px 16px 100px}.job-detail-page--skeleton{flex-direction:column;gap:12px;display:flex}.job-detail-loading,.job-detail-error{text-align:center;color:var(--muted);padding:48px 24px}.job-detail-error{color:var(--error)}.job-detail-back{color:var(--accent);margin-top:16px;font-size:15px;display:block}.job-detail-header{margin-bottom:24px}.job-detail-back-link{color:var(--accent);margin-bottom:8px;font-size:14px;text-decoration:none;display:inline-block}.job-detail-title{font-family:var(--display);color:var(--text);margin:0 0 4px;font-size:20px;font-weight:700}.job-detail-sub{color:var(--muted);font-size:13px}.job-detail-sections{flex-direction:column;gap:20px;display:flex}.job-detail-section{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px}.job-detail-section-title{color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin:0 0 12px;font-size:12px;font-weight:600}.job-detail-location{color:var(--accent);margin-bottom:4px;font-size:15px;text-decoration:none;display:block}.job-detail-location:active{opacity:.8}.job-detail-drive-btn{background:var(--accent);min-height:44px;color:var(--on-accent);border-radius:10px;justify-content:center;align-items:center;gap:8px;margin-top:10px;padding:0 16px;font-size:15px;font-weight:600;text-decoration:none;display:flex}.job-detail-drive-btn:active{opacity:.85}.job-detail-site-contact{color:var(--muted);margin:8px 0 0;font-size:13px}.job-detail-contacts{margin:0;padding:0;list-style:none}.job-detail-contact{border-bottom:1px solid var(--border);padding:10px 0}.job-detail-contact:last-child{border-bottom:none}.job-detail-contact-name{color:var(--text);font-size:15px;font-weight:600}.job-detail-contact-role{color:var(--muted);margin-top:2px;font-size:12px}.job-detail-contact-link{color:var(--accent);margin-top:4px;font-size:14px;text-decoration:none;display:block}.job-detail-docs{margin:0;padding:0;list-style:none}.job-detail-doc-btn{width:100%;color:var(--text);border:none;border-bottom:1px solid var(--border);cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent;background:0 0;align-items:center;gap:10px;padding:12px 0;font-size:15px;display:flex}.job-detail-doc-btn:last-of-type{border-bottom:none}.job-detail-doc-icon{font-size:18px}.job-detail-doc-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.job-detail-empty{color:var(--muted);margin:0;font-size:14px}.job-detail-composer-note{box-sizing:border-box;border:1px solid var(--border2);background:var(--s1);width:100%;color:var(--text);resize:vertical;border-radius:10px;margin-bottom:10px;padding:10px 12px;font-family:inherit;font-size:16px}.job-detail-composer-note::placeholder{color:var(--muted)}.job-detail-composer-note:disabled{opacity:.6}.job-detail-rooms-link{border:1px solid var(--border2);background:var(--s1);min-height:52px;color:var(--text);-webkit-tap-highlight-color:transparent;border-radius:12px;align-items:center;gap:12px;padding:10px 12px;text-decoration:none;display:flex}.job-detail-rooms-link:active{background:var(--s3)}.job-detail-rooms-body{flex:1;min-width:0}.job-detail-rooms-count{font-family:var(--mono);color:var(--text);font-size:13px;display:block}.job-detail-rooms-meter{background:var(--s3);border-radius:99px;height:6px;margin-top:8px;display:block;overflow:hidden}.job-detail-rooms-meter-fill{background:var(--green);border-radius:99px;height:100%;display:block}.job-detail-rooms-open{color:var(--accent);flex-shrink:0;align-items:center;gap:4px;font-size:13px;font-weight:600;display:flex}.job-detail-photo-input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.job-detail-photo-upload{margin-bottom:12px}.job-detail-photo-btn{border:2px dashed var(--border2);background:var(--s1);width:100%;color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:10px;padding:12px;font-size:15px;font-weight:500}.job-detail-photo-btn:disabled{opacity:.7}.job-detail-upload-error{color:var(--error);margin-top:8px;font-size:13px}.job-detail-activity{margin:0;padding:0;list-style:none}.job-detail-activity-item{border-bottom:1px solid var(--border);padding:12px 0}.job-detail-activity-item:last-child{border-bottom:none}.job-detail-activity-meta{color:var(--muted);flex-wrap:wrap;gap:8px;margin-bottom:4px;font-size:12px;display:flex}.job-detail-activity-type{text-transform:capitalize}.job-detail-activity-note{color:var(--text);overflow-wrap:anywhere;margin:4px 0 0;font-size:15px;line-height:1.5}.job-detail-activity-photos{flex-wrap:wrap;gap:10px;margin-top:8px;display:flex}.job-detail-activity-photo{width:96px;margin:0}.job-detail-activity-photo-link{display:block;position:relative}.job-detail-activity-photo-img{object-fit:cover;border:1px solid var(--border);background:#000;border-radius:8px;width:96px;height:96px;display:block}.job-detail-activity-play{color:#fff;text-shadow:0 1px 4px #0009;pointer-events:none;background:#00000038;border-radius:8px;justify-content:center;align-items:center;font-size:22px;display:flex;position:absolute;inset:0}.job-detail-activity-photo-caption{color:var(--muted);overflow-wrap:anywhere;margin:4px 0 0;font-size:12px;line-height:1.35}.job-detail-pending{flex-direction:column;gap:10px;margin:8px 0 12px;display:flex}.job-detail-pending-hint{color:var(--muted);margin:0;font-size:13px}.job-detail-pending-item{align-items:flex-start;gap:10px;display:flex}.job-detail-pending-thumb{object-fit:cover;border:1px solid var(--border);border-radius:8px;flex-shrink:0;width:64px;height:64px}.job-detail-pending-fields{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.job-detail-pending-caption{border:1px solid var(--border2);background:var(--s1);width:100%;color:var(--text);box-sizing:border-box;border-radius:8px;padding:8px 10px;font-size:14px}.job-detail-pending-remove{color:var(--error);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:13px}.job-detail-pending-upload{border-style:solid;border-color:var(--accent);color:var(--accent);font-weight:600}.job-detail-activity-edit{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:4px 6px;font-family:inherit;font-size:12px;font-weight:600}.job-detail-status-pill{white-space:nowrap;background:var(--s3);color:var(--text);text-transform:capitalize;border-radius:999px;align-items:center;margin-bottom:6px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-flex}.job-detail-room-search{box-sizing:border-box;border:1px solid var(--border2);background:var(--s3);width:100%;color:var(--text);border-radius:12px;margin-bottom:12px;padding:11px 13px;font-family:inherit;font-size:16px}.job-detail-rooms-tally{color:var(--muted);margin:0 0 12px;font-size:12px}.job-detail-rooms-skeletons{flex-direction:column;gap:12px;display:flex}.job-detail-rooms-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.job-detail-room-card{border:1px solid var(--border2);background:var(--s1);width:100%;min-height:44px;color:var(--text);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:12px;flex-direction:column;gap:4px;padding:14px;font-family:inherit;text-decoration:none;display:flex}.job-detail-room-card:active{background:var(--s3)}.job-detail-room-card-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.job-detail-room-card-name{text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;font-weight:700;overflow:hidden}.job-detail-room-card-loc{color:var(--muted);font-size:12px}.job-detail-doc-chips{gap:7px;margin-bottom:14px;padding-bottom:4px;display:flex;overflow-x:auto}.job-detail-doc-chips::-webkit-scrollbar{display:none}.job-detail-doc-chips .chip{border:1px solid var(--border2);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;flex-shrink:0;padding:6px 13px;font-family:inherit;font-size:12.5px;font-weight:600}.job-detail-doc-chips .chip.active{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.job-rooms-page{background:var(--bg);flex:1;padding:16px 16px 100px}.job-rooms-header{margin-bottom:16px}.job-rooms-title{font-family:var(--display);color:var(--text);margin:4px 0 12px;font-size:22px;font-weight:700}.job-rooms-meter{background:var(--s3);border-radius:99px;height:8px;display:flex;position:relative;overflow:hidden}.job-rooms-meter-fill{height:100%;display:block}.job-rooms-meter-fill.is-complete{background:var(--green)}.job-rooms-meter-fill.is-progress{background:var(--orange)}.job-rooms-tally{font-size:12px;font-family:var(--mono);color:var(--muted);margin:8px 0 0}.job-rooms-stale{color:var(--muted);margin:6px 0 0;font-size:12px}.job-rooms-search{box-sizing:border-box;width:100%;margin:0 0 14px!important}.job-rooms-skeletons{flex-direction:column;gap:12px;display:flex}.job-rooms-error{color:var(--red);padding:16px 0;font-size:14px}.job-rooms-empty{color:var(--muted);text-align:center;padding:16px 0;font-size:14px}.job-rooms-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.job-rooms-card{border:1px solid var(--border2);background:var(--s1);width:100%;min-height:44px;color:var(--text);text-align:left;cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:12px;flex-direction:column;gap:4px;padding:14px;font-family:inherit;text-decoration:none;display:flex}.job-rooms-card:active{background:var(--s3)}.job-rooms-card-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.job-rooms-card-name{text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:700;overflow:hidden}.job-rooms-card-loc{color:var(--muted);font-size:13px}.job-rooms-card-hold{color:var(--red);font-size:13px}.job-rooms-card-counts{font-size:12px;font-family:var(--mono);color:var(--muted);margin-top:4px}.job-rooms-status-options{flex-direction:column;gap:8px;padding:4px 16px 0;display:flex}.job-rooms-status-option{border:1px solid var(--border2);background:var(--s2);min-height:48px;color:var(--text);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:10px;align-items:center;gap:10px;padding:0 14px;font-family:inherit;font-size:15px;font-weight:600;display:flex}.job-rooms-status-option--on{border-color:var(--accent);background:#818cf81f}.job-rooms-hold-reason{border:1px solid var(--border2);background:var(--s2);width:calc(100% - 32px);color:var(--text);box-sizing:border-box;resize:vertical;border-radius:10px;margin:10px 16px 0;padding:10px 12px;font-family:inherit;font-size:15px}.job-rooms-note{color:var(--muted);margin:12px 16px 0;font-size:12px;line-height:1.4}.job-rooms-error{margin:10px 16px 0;padding:0;font-size:13px}.room-detail-page{background:var(--bg);flex:1;padding:16px 16px 100px}.room-detail-error{background:var(--error-bg);color:var(--error);border-radius:12px;padding:16px;font-size:15px}.detail-back{color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:5px;margin-bottom:4px;padding:8px 0;font-family:inherit;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.detail-head h1{font-family:var(--display);color:var(--text);margin:8px 0 2px;font-size:20px}.detail-head .client{color:var(--muted);margin:0 0 8px;font-size:13px}.room-detail-status-pill{white-space:nowrap;background:var(--s3);color:var(--text);border:1px solid var(--border2);cursor:pointer;border-radius:999px;align-items:center;gap:6px;padding:3px 10px;font-family:inherit;font-size:11px;font-weight:600;display:inline-flex}.room-detail-hold-banner{background:color-mix(in srgb, var(--red) 10%, transparent);border:1px solid color-mix(in srgb, var(--red) 28%, transparent);color:var(--red);border-radius:10px;margin-bottom:16px;padding:10px 12px;font-size:12.5px}.subtabs{background:var(--s2);border-radius:12px;gap:4px;margin-bottom:16px;padding:4px;display:flex}.subtab-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:9px;flex:1;min-height:40px;padding:9px 4px;font-family:inherit;font-size:12.5px;font-weight:700}.subtab-btn.active{background:var(--s3);color:var(--text)}.subtab-btn .mono{opacity:.6;font-size:10.5px;font-family:var(--mono);margin-left:3px}.section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:22px 0 10px;font-size:10.5px;font-weight:700}.empty-note{color:var(--muted);text-align:center;padding:18px 0;font-size:12.5px}.room-detail-composer{background:var(--s1);border:1px solid var(--border);border-radius:18px;padding:16px}.room-detail-composer .row-label{color:var(--text);margin:0 0 8px;font-size:13px;font-weight:700}.room-detail-composer textarea{box-sizing:border-box;border:1px solid var(--border2);background:var(--s3);width:100%;color:var(--text);resize:vertical;border-radius:12px;margin-bottom:10px;padding:11px 13px;font-family:inherit;font-size:16px}.room-detail-media-row{margin-bottom:12px}.room-detail-photo-input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.room-detail-media-btn{border:1px solid var(--border2);background:var(--s3);width:100%;color:var(--muted);text-align:center;cursor:pointer;border-radius:10px;min-height:44px;padding:10px 6px;font-family:inherit;font-size:11.5px;font-weight:600}.room-detail-media-btn:disabled{opacity:.6}.room-detail-pending{flex-direction:column;gap:10px;margin:8px 0 12px;display:flex}.room-detail-pending-hint{color:var(--muted);margin:0;font-size:13px}.room-detail-pending-item{align-items:flex-start;gap:10px;display:flex}.room-detail-pending-thumb{object-fit:cover;border:1px solid var(--border);border-radius:8px;flex-shrink:0;width:64px;height:64px}.room-detail-pending-fields{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.room-detail-pending-fields input[type=text]{border:1px solid var(--border2);background:var(--s1);width:100%;color:var(--text);box-sizing:border-box;border-radius:8px;padding:8px 10px;font-size:14px}.room-detail-pending-fields button{color:var(--error);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:13px}.room-detail-upload-error{color:var(--error);margin-top:8px;font-size:13px}.save-note-btn{cursor:pointer;background:var(--accent);width:100%;color:var(--on-accent);border:none;border-radius:14px;padding:15px 18px;font-family:inherit;font-size:15.5px;font-weight:700}.save-note-btn:disabled{opacity:.45;cursor:default}.room-detail-feed{background:var(--s1);border:1px solid var(--border);border-radius:18px;padding:0 16px}.room-detail-entry{border-bottom:1px solid var(--border);padding:14px 0}.room-detail-entry:last-child{border-bottom:none}.room-detail-entry-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;font-size:11.5px;display:flex}.room-detail-entry-meta .dot{opacity:.5}.room-detail-edit-link{color:var(--accent);cursor:pointer;background:0 0;border:none;margin-left:auto;padding:2px 4px;font-family:inherit;font-size:12px;font-weight:600}.log-text{color:var(--text);overflow-wrap:anywhere;margin:0;font-size:13.5px;line-height:1.5}.room-detail-photos{flex-wrap:wrap;gap:6px;margin-top:8px;display:flex}.room-detail-photos .ph{object-fit:cover;border:1px solid var(--border);background:#000;border-radius:9px;width:64px;height:64px;display:block}.room-detail-photos-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.room-photo{aspect-ratio:1;border:1px solid var(--border);border-radius:10px;display:block;overflow:hidden}.room-photo img,.room-photo video{object-fit:cover;width:100%;height:100%;display:block}.room-detail-drawings{background:var(--s1);border:1px solid var(--border);border-radius:18px;margin:0;padding:0;list-style:none}.room-detail-drawings li{border-bottom:1px solid var(--border);color:var(--text);align-items:center;gap:10px;padding:14px 16px;font-size:13.5px;display:flex}.room-detail-drawings li:last-child{border-bottom:none}.room-detail-drawing-icon{font-size:16px}.profile-page{padding:24px 24px 100px}.profile-card{background:var(--surface);text-align:center;box-shadow:var(--shadow);border-radius:16px;margin-bottom:24px;padding:32px}.profile-avatar{background:var(--primary);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:80px;min-width:80px;height:80px;min-height:80px;margin:0 auto 20px;font-size:32px;font-weight:600;display:flex}.profile-name{color:var(--text-heading);margin:0 0 4px;font-size:22px;font-weight:600}.profile-email{color:var(--text-muted);margin:0 0 8px;font-size:15px}.profile-role{color:var(--primary);margin:0;font-size:14px;font-weight:500}.profile-logout{width:100%;min-height:52px;color:var(--error);background:var(--error-bg);border:1px solid var(--error-border);cursor:pointer;-webkit-tap-highlight-color:transparent;border-radius:12px;padding:0 24px;font-size:17px;font-weight:500}.profile-logout:active{transform:scale(.98)}.bottom-nav{background:var(--bg);border-top:1px solid var(--border);height:72px;padding:8px 0 12px;padding-bottom:calc(12px + env(safe-area-inset-bottom,0));z-index:100;justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav-item{color:#9aa1bd;min-width:64px;min-height:44px;font-family:var(--mono);letter-spacing:.04em;-webkit-tap-highlight-color:transparent;border-radius:8px;flex-direction:column;flex:1;align-items:center;gap:3px;padding:8px 12px;font-size:10px;text-decoration:none;display:flex}.bottom-nav-item.active{color:var(--accent)}.bottom-nav-item:active{opacity:.7}.bottom-nav-icon-wrap{justify-content:center;align-items:center;display:inline-flex;position:relative}.bottom-nav-icon{font-size:15px}.bottom-nav-badge{border:1.5px solid var(--bg);background:#ef4444;border-radius:50%;width:7px;height:7px;position:absolute;top:-2px;right:-4px}.bottom-nav-label{font-size:inherit}.install-prompt{background:var(--surface);box-shadow:var(--shadow);z-index:99;border:1px solid var(--border);border-radius:16px;padding:16px;position:fixed;bottom:80px;left:16px;right:16px}.install-prompt-content{align-items:center;gap:12px;margin-bottom:16px;display:flex}.install-prompt-icon{font-size:32px}.install-prompt-title{color:var(--text-heading);margin:0 0 2px;font-size:16px;font-weight:600}.install-prompt-text{color:var(--text-muted);margin:0;font-size:14px}.install-prompt-actions{justify-content:flex-end;gap:12px;display:flex}.install-prompt-dismiss,.install-prompt-install{cursor:pointer;-webkit-tap-highlight-color:transparent;border:none;border-radius:10px;min-width:80px;min-height:44px;padding:0 20px;font-size:15px;font-weight:500}.install-prompt-dismiss{color:var(--text-muted);background:0 0}.install-prompt-install{background:var(--primary);color:#fff}.offline-banner{padding:10px 14px;padding-top:calc(10px + env(safe-area-inset-top,0));background:color-mix(in srgb, var(--orange) 14%, var(--bg));border-bottom:1px solid color-mix(in srgb, var(--orange) 32%, transparent);color:var(--text);align-items:center;gap:8px;font-size:12px;line-height:1.4;display:flex}.offline-banner-dot{background:var(--orange);border-radius:50%;flex-shrink:0;width:7px;height:7px}.app-main{min-height:calc(100svh - 72px);padding-top:env(safe-area-inset-top,0);background:var(--bg);flex:1}.profile-link{top:calc(12px + env(safe-area-inset-top,0));z-index:90;background:var(--s2);border:1px solid var(--border);width:36px;height:36px;color:var(--muted);-webkit-tap-highlight-color:transparent;border-radius:50%;justify-content:center;align-items:center;display:flex;position:fixed;right:12px}.profile-link svg{width:18px;height:18px}.profile-link:active{opacity:.7}
