:root{--primary-50:#eef2ff;--primary-100:#e0e7ff;--primary-200:#c7d2fe;--primary-500:#6366f1;--primary-600:#4f46e5;--primary-700:#4338ca;--neutral-50:#f8fafc;--neutral-100:#f1f5f9;--neutral-200:#e2e8f0;--neutral-300:#cbd5e1;--neutral-400:#94a3b8;--neutral-500:#64748b;--neutral-600:#475569;--neutral-700:#334155;--neutral-800:#1e293b;--neutral-900:#0f172a;--gray-50:#f9fafb;--gray-100:#f3f4f6;--gray-200:#e5e7eb;--gray-500:#6b7280;--gray-900:#111827;--success-50:#ecfdf3;--success-100:#dcfce7;--success-500:#22c55e;--danger-50:#fef2f2;--danger-100:#fee2e2;--danger-500:#ef4444;--danger-600:#dc2626;--danger-700:#b91c1c;--info-100:#dbeafe;--info-200:#bfdbfe;--info-600:#2563eb;--info-900:#1e3a8a;--emerald-500:#10b981;--cyan-700:#0e7490;--text-2xs:0.6875rem;--text-xs:0.75rem;--text-xs-plus:0.8125rem;--text-sm:0.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:1.5rem;--font-semibold:600;--font-bold:700;--bg:#f6f7fb;--card:#ffffff;--primary:var(--primary-600);--text:var(--gray-900);--muted:var(--gray-500);--border:var(--gray-200);--shadow:0 10px 30px rgba(17,24,39,0.08)}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}body:has(.nav-toggle:checked){overflow:hidden}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.nav-toggle{position:absolute;opacity:0;pointer-events:none}.app-shell{display:grid;grid-template-columns:260px minmax(0,1fr);min-height:100vh;position:relative;transition:grid-template-columns .2s ease}.sidebar{background:var(--card);border-right:1px solid var(--border);padding:16px;display:flex;flex-direction:column;gap:16px}.sidebar-header{display:flex;align-items:center;gap:10px}.logo{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;background:var(--primary-100);color:var(--primary);border-radius:10px}.logo,.logo-text{font-weight:var(--font-bold)}.mobile-toggle-btn,.toggle-btn{border:1px solid var(--border);background:var(--card);border-radius:10px;padding:6px 10px;cursor:pointer}.toggle-btn{margin-left:auto}.mobile-toggle-btn{display:none}.nav,.nav-group,.nav-sub{display:grid;gap:6px;justify-items:start}.nav-group{gap:8px;padding:6px 0}.nav-group__summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;padding:6px 8px;border-radius:10px;font-size:var(--text-2xs);font-weight:var(--font-bold);text-transform:uppercase;letter-spacing:.12em;color:var(--muted);text-align:left}.nav-group__summary::-webkit-details-marker{display:none}.nav-group__summary:after{content:"▾";font-size:var(--text-xs);color:var(--muted);transition:transform .2s ease}.nav-group[open] .nav-group__summary:after{transform:rotate(180deg)}.nav-group__label,.nav-text--with-badge{display:inline-flex;align-items:center;gap:8px}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;color:var(--text);text-align:left;justify-content:flex-start}.nav-item:hover{background:var(--primary-100)}.nav-item--home{font-weight:var(--font-bold)}.nav-item--sub{padding:8px 10px;font-weight:var(--font-semibold);background:rgba(0,0,0,0)}.nav-item--sub:hover{background:var(--primary-50)}.nav-icon{width:20px;text-align:center}.nav-group__text,.nav-text{white-space:nowrap}.nav-badge{display:inline-flex;align-items:center;border-radius:999px;border:1px solid var(--info-200);background:var(--info-100);color:var(--info-900);font-size:10px;font-weight:var(--font-bold);line-height:1;padding:2px 6px;text-transform:uppercase;letter-spacing:.04em}.icon{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.icon--fill{fill:currentColor;stroke:none}.content{display:flex;flex-direction:column;min-width:0}.topbar{justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--border);background:var(--card);position:sticky;top:0;z-index:40;flex-wrap:nowrap}.topbar,.topbar-actions{display:flex;align-items:center}.topbar-actions{margin-left:auto;gap:10px}.topbar-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;border:1px solid var(--border);background:var(--card);color:var(--text);cursor:pointer}.topbar-icon-btn:hover{background:var(--gray-100)}.notification-bell,.notification-bell__button{position:relative}.notification-bell__badge{position:absolute;top:-6px;right:-6px;display:inline-flex;min-width:20px;height:20px;align-items:center;justify-content:center;border:2px solid var(--card);border-radius:999px;background:#ef4444;color:#fff;font-size:11px;font-weight:800;line-height:1;padding:0 5px}.notification-bell__panel{position:absolute;top:calc(100% + 10px);right:0;z-index:120;width:min(380px,100vw - 32px);max-height:min(620px,100vh - 96px);overflow:hidden;border:1px solid var(--border);border-radius:14px;background:var(--card);box-shadow:0 22px 60px rgba(15,23,42,.18)}.notification-bell__header{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--border);padding:14px 14px 12px}.notification-bell__header>div:first-child{display:grid;gap:2px}.notification-bell__header strong{font-size:15px}.notification-bell__header span{color:var(--muted);font-size:12px}.notification-bell__actions button,.notification-bell__header button{border:1px solid var(--border);border-radius:10px;background:var(--gray-50);color:var(--text);cursor:pointer;font-size:12px;font-weight:700;padding:7px 10px}.notification-bell__header button:disabled{cursor:not-allowed;opacity:.45}.notification-bell__header-actions{display:flex;align-items:center;gap:8px}.notification-bell__view-switch{display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:12px;background:var(--gray-100)}.notification-bell__view-switch button{border:0;background:rgba(0,0,0,0);padding:5px 8px}.notification-bell__view-switch-button--active{background:var(--card)!important;box-shadow:0 1px 3px rgba(15,23,42,.1)}.notification-bell__list{max-height:calc(min(620px,100vh - 96px) - 62px);overflow:auto;padding:8px}.notification-bell__empty{margin:0;color:var(--muted);padding:18px 10px;text-align:center}.notification-bell__item{display:grid;gap:8px;border:1px solid rgba(0,0,0,0);border-radius:12px;padding:10px}.notification-bell__item+.notification-bell__item{margin-top:6px}.notification-bell__item--unread{border-color:color-mix(in srgb,var(--primary,#2563eb) 34%,transparent);background:color-mix(in srgb,var(--primary,#2563eb) 8%,transparent)}.notification-bell__content{display:grid;grid-template-columns:10px 1fr;gap:10px;width:100%;border:0;background:rgba(0,0,0,0);color:inherit;cursor:pointer;padding:0;text-align:left}.notification-bell__content>span:last-child{display:grid;gap:3px}.notification-bell__content strong{font-size:13px}.notification-bell__content small{color:var(--muted);font-size:12px;line-height:1.35}.notification-bell__content em{color:var(--muted);font-size:11px;font-style:normal;font-weight:700}.notification-bell__dot{width:8px;height:8px;border-radius:999px;margin-top:5px;background:var(--primary,#2563eb)}.notification-bell__dot--success{background:#10b981}.notification-bell__dot--warning{background:#f59e0b}.notification-bell__dot--error{background:#ef4444}.notification-bell__actions{display:flex;justify-content:flex-end;gap:8px}.main{padding:28px 24px 40px}.container{padding:20px;margin:0 auto}.grid{display:grid;gap:16px}.grid-2-1{grid-template-columns:2fr 1fr}.grid-3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px;box-shadow:var(--shadow)}.card-title{margin-top:0}.btn,.input,.modal-card,.table-card,.textarea{border:1px solid var(--border)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 14px;border-radius:10px;background:var(--card);color:var(--text);cursor:pointer;font-weight:var(--font-semibold)}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn--edit{border-color:rgba(37,99,235,.3);color:var(--info-600);background:rgba(37,99,235,.08)}.btn--delete{border-color:rgba(220,38,38,.35);color:var(--danger-600);background:rgba(220,38,38,.08)}.btn--add{border-color:rgba(16,185,129,.35);color:var(--emerald-500);background:rgba(16,185,129,.1)}.btn--icon{padding:8px;width:38px;height:38px}.input-row{display:grid;gap:6px}.input,.textarea,select.input{width:100%;border-radius:10px;padding:10px 12px;background:#fff;color:var(--text);outline:none}.textarea{min-height:80px;resize:vertical}.input:focus,.textarea:focus{border-color:var(--primary-300);box-shadow:0 0 0 3px rgba(99,102,241,.12)}.table-card{overflow:hidden;border-radius:14px;background:var(--card);box-shadow:var(--shadow)}.table-wrap{overflow-x:auto}.table{width:100%;border-collapse:collapse}.table td,.table th{padding:14px 16px;border-bottom:1px solid var(--border);text-align:left}.table thead th{background:var(--gray-50);color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.badge,.table thead th{font-size:var(--text-xs)}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border-radius:999px;font-weight:var(--font-semibold)}.badge--success{color:#166534;background:var(--success-100)}.badge--danger{color:var(--danger-700);background:var(--danger-100)}.badge--info{color:var(--info-900);background:var(--info-100)}.badge--neutral{color:var(--neutral-700);background:var(--neutral-100)}.modal-backdrop{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(15,23,42,.45)}.modal-card{width:min(960px,96vw);max-height:92vh;overflow:auto;border-radius:18px;background:var(--card);box-shadow:0 24px 80px rgba(15,23,42,.28)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 18px;border-bottom:1px solid var(--border)}.map-menu,.user-menu{position:relative}.user-menu-button{gap:8px;border:1px solid var(--border);background:var(--card);padding:6px 10px;cursor:pointer;color:var(--text)}.user-menu-avatar,.user-menu-button{display:inline-flex;align-items:center;border-radius:999px}.user-menu-avatar{width:32px;height:32px;background:var(--primary-50);justify-content:center;color:var(--primary)}.user-menu-avatar svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8}.user-menu-chevron{font-size:var(--text-xs);color:var(--muted)}.tenant-switcher{display:flex;align-items:center;gap:10px}.tenant-switcher__label{font-size:var(--text-xs);color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:var(--font-semibold)}.tenant-switcher__control{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:12px;border:1px solid var(--border);background:var(--neutral-50)}.tenant-switcher__select{border:none;background:rgba(0,0,0,0);font-weight:var(--font-semibold);font-size:var(--text-sm);color:var(--text);outline:none}.tenant-switcher__status{width:10px;height:10px;border-radius:999px;background:var(--danger-500)}.tenant-switcher__status--active{background:var(--success-500)}body.kiosk-mode .app-shell{grid-template-columns:1fr}body.kiosk-mode .sidebar,body.kiosk-mode .topbar{display:none}body.kiosk-mode .content,body.kiosk-mode .main{height:100vh;padding:0}.nav-toggle:checked~.app-shell{grid-template-columns:80px minmax(0,1fr)}.nav-toggle:checked~.app-shell .logo-text,.nav-toggle:checked~.app-shell .nav-group__summary:after,.nav-toggle:checked~.app-shell .nav-group__text,.nav-toggle:checked~.app-shell .nav-text{display:none}.nav-toggle:checked~.app-shell .nav-item{justify-content:center}@media(min-width:1025px){.app-shell{grid-template-rows:100vh}.sidebar{position:sticky;top:0}.content,.sidebar{height:100vh;overflow-y:auto}}@media(max-width:1024px){.app-shell,.nav-toggle:checked~.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;top:0;left:0;bottom:0;width:260px;transform:translateX(-100%);z-index:50;box-shadow:var(--shadow)}.nav-toggle:checked~.app-shell .sidebar{transform:translateX(0)}.nav-toggle:checked~.app-shell .logo-text,.nav-toggle:checked~.app-shell .nav-group__summary:after,.nav-toggle:checked~.app-shell .nav-group__text,.nav-toggle:checked~.app-shell .nav-text{display:inline}.topbar{gap:8px}.mobile-toggle-btn{display:inline-flex}.nav-toggle:checked~.app-shell:before{content:"";position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:45}.main{padding:16px}.container{max-width:100%}.grid-2-1{grid-template-columns:1fr}}