:root{--bg: #f4f5f7;--card: #ffffff;--border: #d8dce3;--accent: #2b6cb0;--error: #c53030;--text: #1a202c}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}.app{max-width:640px;margin:0 auto;padding:24px 16px 64px}.topbar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--card);border-bottom:1px solid var(--border)}.topbar-brand{display:flex;align-items:baseline;gap:10px}.topbar-brand a{font-weight:700;color:var(--text);text-decoration:none}.topbar-user{color:#718096;font-size:.85rem}.topbar-nav{display:flex;align-items:center;gap:16px}.topbar-nav a{color:var(--accent);text-decoration:none;font-weight:600;font-size:.9rem}.topbar-nav a.active{text-decoration:underline}.topbar-nav button{padding:6px 14px;font-size:.9rem}h1{font-size:1.6rem}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:20px}.card.success{border-color:#38a169}.dropzone{border:2px dashed var(--border);border-radius:10px;padding:24px;text-align:center;cursor:pointer;margin-bottom:16px}.preview{max-width:100%;max-height:320px;border-radius:8px}label{display:block;margin-bottom:12px;font-size:.9rem;font-weight:600}input,select,textarea{display:block;width:100%;margin-top:4px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:1rem;font-weight:400;background:#fff;color:var(--text)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2b6cb026}input[aria-invalid=true],select[aria-invalid=true]{border-color:var(--error)}input[readonly]{background:var(--bg);color:#4a5568}button{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:10px 18px;font-size:1rem;font-weight:600;cursor:pointer;transition:background-color .15s ease,opacity .15s ease}button:hover:not(:disabled){background:#245a91}button:disabled{opacity:.5;cursor:not-allowed}.hint{color:#718096;font-size:.85rem}.error{color:var(--error);font-weight:600}.success{color:#38a169;font-weight:600}.summary{list-style:none;padding:0}.summary li{padding:4px 0;border-bottom:1px solid var(--border)}.upload-modes{display:flex;gap:16px;margin-bottom:12px}label.inline{display:flex;align-items:center;gap:6px;margin-bottom:0;font-weight:600}label.inline input{display:inline-block;width:auto;margin-top:0}.task-row-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.task-row-times{display:flex;gap:12px}.task-row-times label{flex:1}button.link-danger{background:none;color:var(--error);border:none;padding:0;font-size:.85rem;font-weight:600;width:auto}button.secondary{background:var(--card);color:var(--accent);border:1px solid var(--border)}.actions{display:flex;gap:12px;margin-top:8px}input.has-error,select.has-error{border-color:var(--error)}.task-row .error{display:block;margin-top:4px;font-size:.8rem}.reports-filters-dates{display:flex;gap:12px}.reports-filters-dates label{flex:1}button.report-card-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;width:100%;background:none;color:var(--text);border:none;padding:0;text-align:left;cursor:pointer}.report-card-date{font-weight:700}.report-card-worker{font-weight:600}.report-card-meta{color:#718096;font-size:.85rem}.report-card-toggle{margin-left:auto;color:#718096}.report-card-tasks{list-style:none;padding:0;margin:12px 0 0}.report-task{padding:10px 0;border-top:1px solid var(--border)}.report-task-main{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px}.report-task-site{font-weight:600}.report-task-worktype{color:#4a5568}.report-task-times{margin-top:2px;color:#718096;font-size:.85rem}.report-task-desc{margin-top:4px;font-size:.9rem}.field-error{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:4px}.field-error .error{margin:0}.field-error button{padding:6px 12px;font-size:.85rem}button.secondary:hover:not(:disabled){background:var(--bg)}button.link-danger:hover:not(:disabled){background:none;text-decoration:underline}.app form.card{max-width:420px;margin-left:auto;margin-right:auto}.worker-shell{--worker-accent: #0f3d2e;--worker-accent-ink: #ffffff;--worker-assistant-bg: #ffffff;display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;background:var(--bg)}.worker-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top,0px));background:var(--worker-accent);color:var(--worker-accent-ink);position:sticky;top:0;z-index:10}.worker-topbar-brand{display:flex;align-items:baseline;gap:10px;min-width:0}.worker-brand{font-weight:800;letter-spacing:.2px}.worker-user{color:#ffffffd1;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.worker-topbar-right{display:flex;align-items:center;gap:12px;flex-shrink:0}.net-indicator{display:inline-flex;align-items:center;gap:5px;font-size:.78rem;font-weight:700;padding:3px 9px;border-radius:999px;background:#ffffff24;white-space:nowrap}.net-indicator.online{color:#c6f6d5}.net-indicator.offline{color:#fbd38d}.link-logout{background:none;border:1px solid rgba(255,255,255,.4);color:var(--worker-accent-ink);cursor:pointer;padding:6px 12px;border-radius:8px;font-size:.85rem;font-weight:600}.link-logout:hover{background:#ffffff1f}.worker-main{flex:1;display:flex;min-height:0}.assistant-page{display:flex;flex-direction:column;flex:1;max-width:720px;width:100%;margin:0 auto;min-height:0}.chat-view{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px 14px;display:flex;flex-direction:column;gap:12px}.chat-empty{color:#718096;text-align:center;margin:auto;max-width:26ch;line-height:1.5}.bubble-row{display:flex}.bubble-row.from-user{justify-content:flex-end}.bubble-row.from-assistant{justify-content:flex-start}.bubble{max-width:82%;padding:11px 14px;border-radius:18px;line-height:1.45;font-size:1rem;box-shadow:0 1px 2px #00000012}.bubble.user{background:var(--worker-accent);color:var(--worker-accent-ink);border-bottom-right-radius:5px}.bubble.assistant{background:var(--worker-assistant-bg);border:1px solid var(--border);border-bottom-left-radius:5px}.bubble.kind-done{border-color:#9ae6b4;background:#f0fff4}.bubble.kind-info{background:#fffaf0;border-color:#fbd38d}.bubble-text{margin:0;white-space:pre-wrap;word-break:break-word}.bubble-status{display:block;margin-top:5px;font-size:.72rem;font-weight:600;opacity:.85;text-align:right}.bubble-choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.choice-btn{padding:9px 16px;min-height:40px;border:1.5px solid var(--worker-accent);background:#fff;color:var(--worker-accent);border-radius:999px;cursor:pointer;font-size:.92rem;font-weight:600}.choice-btn:hover{background:var(--worker-accent);color:#fff}.recap-card{margin-top:10px;padding:12px 14px;border:1px solid var(--border);border-left:4px solid var(--worker-accent);border-radius:10px;background:#f9fbfa}.recap-body{white-space:pre-wrap;font-size:.95rem;line-height:1.5}.recap-warning{margin-top:8px;padding:6px 8px;border-radius:6px;background:#fffaf0;color:#b7791f;font-size:.85rem;font-weight:600}.assistant-status{display:flex;flex-wrap:wrap;gap:8px;padding:6px 14px 0}.assistant-status span{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:.8rem;font-weight:600}.status-pending{background:#ebf8ff;color:#2b6cb0;border:1px solid #bee3f8}.status-pending:before{content:"⏳"}.status-offline{background:#fffaf0;color:#b7791f;border:1px solid #fbd38d}.status-offline:before{content:"📴"}.composer{display:flex;gap:10px;align-items:flex-end;padding:10px 12px;padding-bottom:calc(10px + env(safe-area-inset-bottom,0px));background:var(--card);border-top:1px solid var(--border);position:sticky;bottom:0}.composer-input{flex:1;resize:none;padding:12px 14px;border:1px solid var(--border);border-radius:22px;font:inherit;line-height:1.4;max-height:120px}.composer-input:focus{border-color:var(--worker-accent);box-shadow:0 0 0 3px #0f3d2e1f}.composer-send{align-self:flex-end;min-height:46px;padding:0 20px;border-radius:23px;background:var(--worker-accent);font-weight:700}.composer-send:hover:not(:disabled){background:#0c3325}.step-indicator{color:#5b6b63;font-size:.9rem;margin:0 0 1rem}.invite-row{display:flex;gap:.5rem;align-items:stretch}.invite-row input{flex:1}.invited-list{list-style:none;padding:0;margin:.75rem 0 0}.invited-list li{padding:.35rem 0;border-bottom:1px solid #e3e8e5;color:#2f4a3f}.update-banner{position:fixed;right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom,0px));z-index:1000;display:flex;align-items:center;gap:.75rem;max-width:calc(100vw - 2rem);padding:.75rem 1rem;border-radius:10px;background:#0f3d2e;color:#fff;font-size:.95rem;box-shadow:0 8px 24px #00000040}.update-banner-action{flex:none;padding:.45rem .9rem;border:none;border-radius:8px;background:#fff;color:#0f3d2e;font-weight:600;cursor:pointer}.update-banner-action:hover{background:#e9f0ec}.update-banner-close{flex:none;padding:0 .4rem;border:none;background:transparent;color:#fff;font-size:1.2rem;line-height:1;cursor:pointer}.readonly-profile{margin:0;display:grid;grid-template-columns:max-content 1fr;gap:.4rem 1rem}.readonly-profile dt{font-weight:600;color:#2f4a3f}.readonly-profile dd{margin:0}.workers-toolbar{display:flex;justify-content:flex-end;margin-bottom:16px}.worker-form h2{margin-top:0;font-size:1.1rem}.workers-table{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--border);border-radius:12px;overflow:hidden;font-size:.9rem}.workers-table th,.workers-table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}.workers-table th{background:#f0f2f5;font-weight:700;font-size:.8rem;text-transform:uppercase;letter-spacing:.02em;color:#4a5568}.workers-table tr:last-child td{border-bottom:none}.workers-table tr.worker-inactive td{color:#718096;background:#fafafa}.workers-table tr.worker-edit-row td{padding:16px;background:#f7faf9}.workers-table tr.worker-edit-row .worker-form{margin:0}.worker-actions{display:flex;gap:12px;align-items:center;white-space:nowrap}.status-badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.78rem;font-weight:700}.status-badge.status-active{background:#e6f4ea;color:#276749}.status-badge.status-inactive{background:#f0f0f0;color:#718096}
