:root{--bg: #f3f4f6;--card: #ffffff;--ink: #111827;--muted: #6b7280;--line: #e5e7eb;--brand: #1f2937;--accent: #f4b400;--accent-ink: #3f2d00;--ok: #15803d;--warn: #b45309;--danger: #b91c1c;--radius: 12px;font-family:Segoe UI,system-ui,-apple-system,Roboto,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink)}button{font:inherit;cursor:pointer;border:none;border-radius:10px;padding:12px 16px;background:var(--brand);color:#fff}button.secondary{background:#e5e7eb;color:var(--ink)}button.accent{background:var(--accent);color:var(--accent-ink);font-weight:700}button.danger{background:var(--danger)}button.ghost{background:transparent;color:var(--muted);padding:8px}button:disabled{opacity:.5}input,textarea{font:inherit;width:100%;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff}.app{max-width:720px;margin:0 auto;min-height:100%;display:flex;flex-direction:column}.topbar{background:var(--brand);color:#fff;padding:12px 16px calc(12px + env(safe-area-inset-top));padding-top:max(12px,env(safe-area-inset-top));display:flex;align-items:center;gap:12px}.topbar .logo{height:30px;display:flex;align-items:center;min-width:0}.topbar .logo svg{height:30px;width:auto;max-width:46vw;display:block}.topbar .logo svg text{fill:#fff}.topbar .spacer{flex:1}.topbar .who{font-size:12px;opacity:.85}.content{flex:1;padding:16px}.center-screen{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:24px;text-align:center}.center-screen .logo{display:block;width:260px;max-width:80%;overflow:hidden}.center-screen .logo svg{display:block;width:100%;height:auto;max-height:140px}.center-screen form{width:100%;max-width:340px;display:flex;flex-direction:column;gap:12px}.banner{border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:12px}.banner.offline{background:#fef3c7;color:var(--warn)}.banner.error{background:#fee2e2;color:var(--danger)}.banner.ok{background:#dcfce7;color:var(--ok)}.week-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.week-head h2{font-size:15px;margin:0}.week-strip{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:14px}.day-pill{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 4px;text-align:center;font-size:12px}.day-pill.today{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.day-pill .dow{color:var(--muted)}.day-pill .dom{font-size:18px;font-weight:700}.day-pill .count{display:inline-block;margin-top:2px;min-width:18px;background:var(--brand);color:#fff;border-radius:999px;font-size:11px;padding:0 5px}.day-pill.selected{background:var(--brand);color:#fff}.day-pill.selected .dow{color:#d1d5db}.day-section{margin-bottom:18px}.day-section h3{font-size:13px;color:var(--muted);margin:0 0 8px;text-transform:uppercase;letter-spacing:.04em}.task-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:10px;display:flex;flex-direction:column;gap:6px;width:100%;text-align:left;color:var(--ink)}.task-card .title{font-weight:600}.task-card .meta{font-size:12px;color:var(--muted);display:flex;flex-wrap:wrap;gap:8px}.chip{font-size:11px;padding:2px 8px;border-radius:999px;background:#eef2ff;color:#3730a3}.chip.overdue{background:#fee2e2;color:var(--danger)}.chip.in_progress{background:#fef9c3;color:#854d0e}.chip.completed{background:#dcfce7;color:var(--ok)}.chip.closed_incomplete{background:#e5e7eb;color:#374151}.chip.today{background:var(--accent);color:var(--accent-ink)}.detail h1{font-size:18px;margin:4px 0 8px}.detail .section{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:12px}.detail .section h4{margin:0 0 8px;font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.detail pre{white-space:pre-wrap;font:inherit;margin:0}.detail ul{margin:0;padding-left:18px}.checklist{list-style:none;padding-left:0}.checklist li{margin:4px 0}.checklist label{display:flex;align-items:flex-start;gap:10px;cursor:pointer}.checklist input[type=checkbox]{width:20px;height:20px;margin-top:1px;flex:0 0 auto;accent-color:var(--accent)}.checklist label.done span{text-decoration:line-through;color:var(--muted)}.timeline-item{border-left:3px solid var(--line);padding:4px 0 12px 12px}.timeline-item .k{font-weight:600;font-size:13px}.timeline-item .s{font-size:12px;color:var(--muted)}.actionbar{position:sticky;bottom:0;background:var(--bg);padding:12px 0 calc(12px + env(safe-area-inset-bottom));display:flex;gap:8px}.actionbar button{flex:1}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;display:flex;align-items:flex-end;justify-content:center;z-index:50}.sheet{background:#fff;width:100%;max-width:720px;border-radius:16px 16px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:12px;max-height:92vh;overflow-y:auto}.sheet h3{margin:0}.photo-preview{width:100%;border-radius:10px;border:1px solid var(--line)}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;margin-bottom:8px}.photo-thumb{position:relative;aspect-ratio:1}.photo-thumb img{width:100%;height:100%;object-fit:cover;border-radius:8px;border:1px solid var(--line)}.photo-remove{position:absolute;top:-6px;right:-6px;width:22px;height:22px;padding:0;border-radius:999px;background:var(--danger);color:#fff;font-size:15px;line-height:22px;display:flex;align-items:center;justify-content:center}.gps-line{font-size:12px;color:var(--muted)}.field-label{font-size:12px;color:var(--muted);margin-bottom:4px;display:block}
