body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--bg:#f5f7fa;--card:#fff;--muted:#6b7280;--accent-2:#10b981;--border:#e6e9ef;--shadow:0 6px 18px #1418210f;--radius:10px}*{box-sizing:border-box}#root,body,html{height:100%}.mobile-container{background:#f5f7fa;background:var(--bg);color:#0f1724;display:flex;flex-direction:column;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial;gap:8px;min-height:100vh;padding:12px}.mobile-topbar{justify-content:flex-end}.mobile-topbar,.top-right{align-items:center;display:flex;gap:8px}.language-selector{font-size:.8rem;gap:4px}.language-selector select{border:1px solid var(--border);font-size:.8rem;padding:2px 4px}.btn{background:var(--accent);padding:8px 10px}.btn.small{font-size:.9rem;padding:6px 8px}.btn.ghost{border:1px solid #2563eb;border:1px solid var(--accent);color:var(--accent)}.btn.small.ghost{padding:5px 8px}.mobile-main{display:flex;flex-direction:column;gap:8px;height:calc(100vh - 72px)}.current-room{background:#fff;background:var(--card);border:1px solid #e6e9ef;border:1px solid var(--border);border-radius:12px;box-shadow:0 6px 18px #1418210f;box-shadow:var(--shadow);display:flex;flex:0 0 33%;flex-direction:column;gap:8px;justify-content:flex-start;padding:12px}.room-header{align-items:center;display:flex;justify-content:space-between}.room-header h2{font-size:1.15rem;margin:0}.battery{color:#6b7280;color:var(--muted);font-size:.95rem}.comment-box{border:1px solid #e6e9ef;border:1px solid var(--border);border-radius:8px;font-family:inherit;font-size:.95rem;padding:8px;resize:vertical;width:100%}.current-actions{display:flex;gap:8px;justify-content:flex-end}.bottom-area{display:flex;flex:1 1 67%;gap:8px}.next-rooms{background:#fff;background:var(--card);border:1px solid #e6e9ef;border:1px solid var(--border);border-radius:12px;box-shadow:0 6px 18px #1418210a;display:flex;flex:1 1;flex-direction:column;min-width:0;padding:10px}.next-rooms h3{font-size:1rem;margin:0 0 8px}.next-list{display:flex;flex-direction:column;gap:8px;overflow:auto;padding-right:6px}.mini-room{align-items:center;background:#fbfdff;border:1px solid #e6e9ef;border:1px solid var(--border);border-radius:8px;display:flex;justify-content:space-between;padding:8px}.mobile-stats{background:#fff;background:var(--card);border:1px solid #e6e9ef;border:1px solid var(--border);border-radius:12px;box-shadow:0 6px 18px #14182105;display:flex;flex:1 1;flex-direction:column;min-width:0;padding:10px}.mobile-stats h3{font-size:1rem;margin:0 0 8px}.stats-list{display:flex;flex-direction:column;gap:8px;overflow:auto}.stat-card{border:1px solid #e6e9ef;border:1px solid var(--border);padding:8px}.empty{color:#6b7280;color:var(--muted);font-size:.95rem}@media (max-width:420px){.current-room{padding:10px}.comment-box{font-size:.9rem}.mini-room{font-size:.95rem}}@media (min-width:700px){.bottom-area{gap:12px}}.mobile-container .btn{border:none!important}.current-actions .btn,.mobile-container .btn{background:#2563eb!important;background:var(--accent)!important;color:#fff!important}.profile-container{background:#fff;border-radius:10px;box-shadow:0 6px 18px #1418210a;color:#0f1724;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial;margin:20px auto;max-width:720px;padding:16px}.profile-header{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.header-top{justify-content:space-between}.header-top,.language-selector{align-items:center;display:flex}.language-selector{font-size:.9rem;gap:8px}.language-selector label{margin:0}.language-selector select{border:1px solid #e6e9ef;border-radius:4px;font-size:.9rem;padding:4px 8px}.profile-header h2{font-size:1.2rem;margin:0}.btn{background:#2563eb;border:none;color:#fff;padding:8px 12px}.btn.ghost{background:#0000;border:1px solid #e6e9ef;color:#2563eb}.return-btn{font-size:.95rem;padding:6px 10px}.profile-container .btn{background:#2563eb!important;border:none!important;color:#fff!important}.profile-form{gap:10px}.form-row,.profile-form{display:flex;flex-direction:column}.form-row{gap:6px}.form-row label{color:#374151;font-size:.9rem}.form-row input{border:1px solid #e6e9ef;border-radius:8px;font-size:.95rem;padding:8px}.form-actions{display:flex;gap:8px;justify-content:flex-start;margin-top:6px}.previous-rooms{margin-top:16px}.previous-rooms,.rooms-list{display:flex;flex-direction:column;gap:8px}.rooms-list{margin-top:8px;max-height:220px;overflow:auto;padding-right:6px}.room-item{background:#fbfdff;border:1px solid #e6e9ef;border-radius:8px;display:flex;flex-direction:column;gap:6px;padding:8px}.room-comment{color:#6b7280;font-size:.9rem}.sidebar{background:#f1f5fb;padding:24px 16px;width:220px}.sidebar li{background:#0000;color:#0f172a;font-size:20px;transition:.2s;width:100%}.sidebar li.active{box-shadow:0 4px 16px #2563eb40}.sidebar-brand{border-bottom:1px solid #0f172a0a;gap:12px;padding-bottom:6px}.brand-mark,.sidebar-brand{align-items:center;display:flex}.brand-mark{background:linear-gradient(135deg,#2563eb,#7c3aed);border-radius:8px;color:#fff;font-weight:800;height:44px;justify-content:center;width:44px}.brand-name{color:#0f172a;font-size:14px;font-weight:700}.sidebar-footer{margin-top:auto}.sidebar-footer .btn{align-items:center;background:#0000;border:none;border-radius:8px;color:#0f172a;cursor:pointer;display:inline-flex;font-weight:700;gap:8px;justify-content:center;padding:10px 12px;width:100%}.sidebar-footer .btn:hover{background:#0f172a0a}.admin-container{background:#f8fafc;display:grid;grid-template-areas:"sidebar top" "sidebar main";grid-template-columns:220px 1fr;grid-template-rows:70px 1fr;height:100vh}.sidebar{background:linear-gradient(180deg,#eef2ff,#ebf4ff);border-right:2px solid #2563eb;display:flex;flex-direction:column;gap:24px;grid-area:sidebar;height:100vh;padding:28px 16px;position:-webkit-sticky;position:sticky;top:0}.sidebar ul{list-style:none;margin:0;padding:0;width:100%}.sidebar li{border-radius:10px;color:#1e293b;cursor:pointer;font-size:22px;font-weight:700;padding:14px 18px;transition:.15s ease}.sidebar li:hover{background:#2563eb26;color:#2563eb}.sidebar li.active{background:#2563eb;box-shadow:0 4px 12px #2563eb40;color:#fff}.admin-topbar{align-items:center;background:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 2px 6px #0000000d;display:flex;grid-area:top;justify-content:space-between;padding:0 24px}.admin-top-left{color:#0f172a;font-size:22px;font-weight:700}.admin-top-right .btn.small{color:#000;font-size:15px;font-weight:700;padding:8px 14px}.admin-main{grid-area:main;overflow-y:auto;padding:28px 40px}:root{--bg:#f8fafc;--muted:#64748b;--accent:#2563eb;--surface:#fff;--card-shadow:0 4px 16px #0000000d;--divider:#e2e8f0}.admin-dash{background:#f8fafc;background:var(--bg);font-family:Inter,sans-serif;min-height:100%;padding:0 24px 40px}.admin-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:28px}.admin-title{color:#2563eb;color:var(--accent);font-size:2rem;font-weight:800}.floor-select{align-items:center;display:flex;gap:12px;margin-bottom:22px}.floor-list{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px}.floor-item{background:#fff;border:1px solid #e2e8f0;border:1px solid var(--divider);border-radius:8px;color:#475569;cursor:pointer;font-size:15px;font-weight:600;padding:8px 14px;transition:.15s ease}.floor-item:hover{background:#2563eb1f;color:#2563eb;color:var(--accent)}.floor-item.active{background:#2563eb;background:var(--accent);border-color:#2563eb;border-color:var(--accent);box-shadow:0 4px 10px #2563eb40;color:#fff}.btn{align-items:center;background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--divider);border-radius:8px;cursor:pointer;display:inline-flex;font-size:14px;font-weight:600;gap:6px;padding:8px 16px;transition:.15s ease}.btn.primary{background:#2563eb;background:var(--accent);border-color:#2563eb;border-color:var(--accent);color:#fff}.btn.green{background:#10b981;border-color:#10b981;color:#fff}.btn.red{background:#ef4444;border-color:#ef4444;color:#fff}.muted{color:#64748b;color:var(--muted);font-size:16px;padding-top:10px}.modal-bg{align-items:center;background:#00000073;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999}.modal{background:#fff;border-radius:12px;box-shadow:0 6px 24px #0000002e;padding:22px;width:350px}.modal input{border:1px solid #d1d5db;border-radius:8px;font-size:15px;margin-top:8px;padding:10px 12px;width:100%}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}.error{color:crimson;margin-top:6px}.room-list{display:none;margin-top:20px}.room-card{background:#fff;border:1px solid #e2e8f0;border:1px solid var(--divider);border-radius:12px;box-shadow:0 4px 16px #0000000d;box-shadow:var(--card-shadow);display:flex;flex-direction:column;gap:8px;padding:18px 16px}.room-card h4{color:#2563eb;color:var(--accent);font-size:18px;font-weight:700;margin:0}.room-card p{color:#475569;font-size:14px;margin:4px 0}.room-grid{background-image:linear-gradient(90deg,#00000008 1px,#0000 0),linear-gradient(180deg,#00000008 1px,#0000 0);background-size:40px 40px;background-size:calc(40px*var(--scale, 1)) calc(40px*var(--scale, 1));border:1px dashed #e2e8f0;border:1px dashed var(--divider);border-radius:12px;height:640px;margin-top:18px;overflow:auto;position:relative;width:100%}.room-node{cursor:grab;position:absolute;transform:translate(-50%,-50%);z-index:20}.room-node .room-card{background:#fff;border:1px solid #e2e8f0;border:1px solid var(--divider);border-radius:10px;box-shadow:0 8px 20px #02061714;max-width:220px;min-width:150px;padding:12px 14px;transform:scale(1);transform:scale(var(--scale,1));transform-origin:center center}.room-card[data-status=clean]{background:linear-gradient(90deg,#10b98114,#fff);border-left:5px solid #10b981}.room-card[data-status=dirty]{background:linear-gradient(90deg,#f9731614,#fff);border-left:5px solid #f97316}.room-card[data-status=cleaning_in_progress]{background:linear-gradient(90deg,#3b82f614,#fff);border-left:5px solid #3b82f6}.room-card[data-status=do_not_disturb]{background:linear-gradient(90deg,#ef444414,#fff);border-left:5px solid #ef4444}.room-card[data-status=emergency_clean]{background:linear-gradient(90deg,#dc26261f,#fff);border-left:5px solid #dc2626;box-shadow:0 8px 24px #dc262633}@media (max-width:900px){.room-grid{background-size:20px 20px;background-size:calc(20px*var(--scale,1)) calc(20px*var(--scale,1));height:auto}.room-list{grid-gap:18px;display:grid;gap:18px;grid-template-columns:1fr}}.grid-controls{align-items:center;display:flex;gap:12px}.zoom-btn{align-items:center;background:#fff;background:var(--surface);border:1px solid #e2e8f0;border:1px solid var(--divider);border-radius:8px;color:#000;display:inline-flex;height:36px;justify-content:center;padding:8px;width:36px}.zoom-btn:hover{background:#2563eb0f}.zoom-btn svg{stroke:currentColor}.center{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:40px}.loader{animation:spin 1s linear infinite;border:5px solid #e2e8f0;border-radius:50%;border-top:5px solid var(--accent);height:45px;margin-bottom:12px;width:45px}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:900px){.admin-dash{padding:10px}.floor-select{align-items:flex-start;flex-direction:column}.room-list{grid-template-columns:1fr}}.maid-activity{padding:12px 8px}.maid-header{margin-bottom:18px}.maid-list{display:flex;flex-wrap:nowrap;gap:14px;overflow-x:auto;padding-bottom:8px}.maid-card{align-items:flex-start;background:#fff;border:1px solid #0e141e0a;box-shadow:0 6px 18px #0206170f;flex-direction:column;gap:10px;max-width:260px;min-width:220px;padding:14px}.maid-info{width:100%}.maid-name{color:#0f172a}.maid-status{color:#475569}.maid-status.status-active{color:#059669;font-weight:700}.maid-status.status-inactive{color:#ef4444;font-weight:700}.maid-actions{justify-content:flex-end;margin-top:6px;width:100%}.maid-actions .btn{padding:8px 10px}.maid-actions .btn.secondary{background:#0000;border:1px solid #0206170f}.maid-actions .btn.secondary svg{stroke:currentColor;color:#000}.maid-stats{display:flex;flex-direction:column;gap:8px}.maid-stats .stat-row{border-bottom:1px dashed #0206170a;display:flex;justify-content:space-between;padding:6px 0}.stats-cards{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));margin-bottom:12px}.stat-card{background:#fff;border:1px solid #02061708;border-radius:8px;box-shadow:0 6px 18px #0206170a;display:flex;flex-direction:column;gap:6px;padding:10px 12px}.stat-label{color:#64748b;font-size:12px}.stat-value{color:#0f172a;font-size:20px;font-weight:800}.progress{background:#0206170f;border-radius:999px;height:10px;overflow:hidden}.progress-fill{background:linear-gradient(90deg,#10b981,#06b6d4);height:100%;transition:width .3s ease;width:0}.stats-table{border-collapse:collapse;margin-top:10px;width:100%}.stats-table td{border-bottom:1px solid #02061708;padding:8px 6px}.stats-table td.key{color:#64748b;font-size:13px;width:60%}.stats-table td.value{font-weight:700;text-align:right}.modal-actions .btn{background:#fff;border:1px solid #0206170f;color:#000}@media (max-width:900px){.maid-list{flex-wrap:nowrap}.maid-card{min-width:200px}}.maid-activity{padding:10px}.maid-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:14px}.maid-list{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.maid-card{align-items:center;background:linear-gradient(180deg,#fff,#fbfdff);border:1px solid #e6edf3;border-radius:10px;box-shadow:0 6px 18px #0206170a;display:flex;gap:12px;justify-content:space-between;padding:12px;transition:transform .12s ease,box-shadow .12s ease}.maid-card.clickable{cursor:pointer}.maid-card:hover{box-shadow:0 14px 36px #02061714;transform:translateY(-6px)}.maid-info{display:flex;flex-direction:column}.maid-name{font-size:16px;font-weight:700}.maid-status{border-radius:999px;display:inline-block;font-size:13px;margin-top:6px;padding:6px 8px}.maid-status.status-active{background:#ecfdf5;border:1px solid #86efac;color:#065f46}.maid-status.status-inactive{background:#fff7ed;border:1px solid #fdba74;color:#92400e}.maid-actions{display:flex;gap:8px}.empty{color:#64748b;padding:8px}@media (max-width:600px){.maid-list{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}}