:root{--bg: #0f1115;--panel: #181b22;--border: #262b36;--text: #e6e8ec;--muted: #8a93a6;--accent: #4f7cff;--danger: #e5484d;--ok: #30a46c;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}h1{font-size:22px;margin:0}.container{max-width:920px;margin:0 auto;padding:32px 20px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px}.login-wrap{min-height:100vh;display:grid;place-items:center}.login-card{width:320px}label{display:block;font-size:13px;color:var(--muted);margin:12px 0 4px}input,select{width:100%;padding:10px 12px;background:#10131a;border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:14px}button{cursor:pointer;border:none;border-radius:8px;padding:9px 14px;font-size:14px;font-weight:500;color:#fff;background:var(--accent)}button.secondary{background:transparent;border:1px solid var(--border);color:var(--text)}button.danger{background:var(--danger)}button:disabled{opacity:.5;cursor:default}.btn-row{display:flex;gap:8px;margin-top:16px}table{width:100%;border-collapse:collapse;margin-top:8px}th,td{text-align:left;padding:12px 10px;border-bottom:1px solid var(--border);font-size:14px}th{color:var(--muted);font-weight:500}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px}.badge.ok{background:#30a46c26;color:var(--ok)}.badge.wait{background:#8a93a626;color:var(--muted)}.row-actions{display:flex;gap:6px}.error{color:var(--danger);font-size:13px;margin-top:8px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:grid;place-items:center}.modal{width:360px}.modal.wide{width:560px;max-width:calc(100vw - 32px);max-height:calc(100vh - 64px);overflow-y:auto}.muted{color:var(--muted);font-size:13px}.rooms-grid{display:flex;flex-wrap:wrap;gap:8px}.room-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 8px 6px 12px;background:#10131a;border:1px solid var(--border);border-radius:8px;font-size:14px}.room-status{font-size:11px;opacity:.85;padding-left:2px}.chart-row{display:flex;align-items:flex-start;gap:14px;padding:12px 0;border-top:1px solid var(--border)}.chart-cat{flex:0 0 130px;font-size:14px;font-weight:500;padding-top:6px}.chart-grid{display:flex;flex-wrap:wrap;gap:6px}.chart-cell{min-width:52px;padding:8px 6px;text-align:center;font-size:13px;font-weight:500;border:1px solid var(--border);border-radius:8px;background:#10131a}.room-x{background:transparent;color:var(--muted);padding:0;width:18px;height:18px;border-radius:4px;font-size:16px;line-height:1}.room-x:hover{color:var(--danger)}.screen{min-height:100vh;padding:24px 18px}.profile{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:24px}.avatar{width:56px;height:56px;border-radius:50%;background:var(--accent);display:grid;place-items:center;font-size:22px;font-weight:600;margin-bottom:14px}.name{font-size:20px;font-weight:600}.role{color:var(--muted);margin-top:4px}.tasks{margin-top:24px;padding:20px;border:1px dashed var(--border);border-radius:12px;text-align:center;color:var(--muted)}.section{margin-top:24px}.section-title{font-size:15px;font-weight:600;margin-bottom:12px}.materials{display:flex;flex-direction:column;gap:10px}.material{display:flex;flex-direction:column;gap:4px;padding:14px 16px;background:var(--panel);border:1px solid var(--border);border-radius:12px;text-decoration:none;color:var(--text)}.material:active{border-color:var(--accent)}.material-title{font-weight:500}.material-meta{font-size:12px;color:var(--muted);word-break:break-all}.category{margin-bottom:16px}.category-name{font-size:14px;font-weight:500;margin-bottom:8px;color:var(--text)}.room-chips{display:flex;flex-wrap:wrap;gap:8px}.task-list{display:flex;flex-direction:column;gap:10px}.task-item{display:flex;align-items:flex-start;gap:12px;width:100%;text-align:left;padding:14px 16px;background:var(--panel);border:1px solid var(--border);border-radius:12px;color:var(--text);font:inherit}.task-item.done{border-color:var(--accent);opacity:.7}.task-item.personal{border-left:3px solid var(--accent)}.task-check{flex:0 0 22px;height:22px;border-radius:6px;border:1px solid var(--border);display:grid;place-items:center;font-size:14px;color:#fff}.task-item.done .task-check{background:var(--accent);border-color:var(--accent)}.task-body{display:flex;flex-direction:column;gap:3px}.task-title{font-weight:500}.task-item.done .task-title{text-decoration:line-through}.task-desc{font-size:13px;color:var(--muted)}.cat-blocks{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}.cat-block{flex:1 1 0;min-width:90px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px;text-align:center;padding:18px 12px;background:var(--panel);border:1px solid var(--border);border-radius:14px;color:var(--text);font:inherit}.cat-block:active{border-color:var(--accent)}.cat-block-name{font-size:17px;font-weight:600}.cat-block-count{font-size:13px;color:var(--muted)}.room-chip.tappable{cursor:pointer;font:inherit;color:var(--text)}.room-chip.tappable:active{border-color:var(--accent)}.back-btn{background:transparent;border:none;color:var(--accent);padding:0;margin-bottom:12px;font-size:14px}.done-btn{width:100%;margin-top:20px;padding:15px;font-size:16px;font-weight:600;border-radius:12px;background:var(--ok);color:#fff;transition:opacity .15s,box-shadow .15s}.done-btn:disabled{background:var(--panel);color:var(--muted);border:1px solid var(--border);opacity:1;cursor:default}.done-btn:not(:disabled){box-shadow:0 0 0 2px #30a46c40}.st-FREE{border-color:var(--border)}.st-OCCUPIED{background:#e5484d2e;border-color:var(--danger);color:#ff9ea1}.st-DIRTY{background:#e0a8002e;border-color:#e0a800;color:#ffd166}.st-CLEANED{background:#30a46c2e;border-color:var(--ok);color:#6ee7a8}.legend{display:flex;flex-wrap:wrap;gap:10px 14px;margin-bottom:14px}.legend-item{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.dot{width:10px;height:10px;border-radius:50%;border:1px solid;display:inline-block}.sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-end;z-index:10}.sheet{width:100%;background:var(--panel);border-top-left-radius:18px;border-top-right-radius:18px;padding:20px 16px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:10px}.sheet-title{font-size:18px;font-weight:600}.sheet-status{font-size:13px;color:var(--muted);margin-bottom:6px}.sheet-btn{width:100%;padding:14px;font-size:15px;border-radius:12px;background:#10131a;border:1px solid var(--border);color:var(--text)}.sheet-btn.red{background:var(--danger);border-color:var(--danger);color:#fff}.sheet-btn.yellow{background:#e0a800;border-color:#e0a800;color:#201a00}.sheet-btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.sheet-btn.cancel{background:transparent;color:var(--muted);border-color:transparent}.center{min-height:100vh;display:grid;place-items:center;padding:24px;text-align:center}@media (max-width: 640px){.container{padding:16px 12px}h1{font-size:18px}.topbar{flex-direction:column;align-items:stretch;gap:10px;margin-bottom:16px}.btn-row,.row-actions{flex-wrap:wrap}button{padding:11px 14px}.card{padding:14px}table,tbody,tr,td{display:block;width:100%}thead{display:none}tr{border:1px solid var(--border);border-radius:10px;padding:10px 12px;margin-bottom:10px}td{border:none;padding:6px 0;display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:right}td:before{content:attr(data-label);color:var(--muted);font-size:12px;text-align:left;flex:0 0 auto}td:empty{display:none}.modal,.modal.wide{width:calc(100vw - 24px);max-height:calc(100vh - 48px);overflow-y:auto}.modal-backdrop{padding:12px}.chart-row{flex-direction:column;gap:8px}.chart-cat{flex:1 1 auto;padding-top:0}.chart-cell{min-width:46px;padding:10px 6px}.legend{gap:8px 12px}}.badge.admin{background:#4f7cff2e;color:#9db4ff}.check-row{display:flex;align-items:center;gap:8px;margin:16px 0 4px;color:var(--text);font-size:14px;cursor:pointer}.check-row input{width:auto;margin:0;accent-color:var(--accent)}.tabs{display:flex;gap:8px;margin-top:20px}.tab{flex:1 1 0;padding:12px;font-size:15px;border-radius:12px;background:var(--panel);border:1px solid var(--border);color:var(--muted)}.tab.active{background:var(--accent);border-color:var(--accent);color:#fff}.done-note{margin-top:20px;padding:14px;border:1px dashed var(--ok);border-radius:12px;text-align:center}.material{width:100%;text-align:left;font:inherit}.material-hint{font-size:12px;color:var(--accent);margin-top:2px}.material:disabled{opacity:.6}
