* { box-sizing:border-box; margin:0; padding:0; font-family:'Segoe UI',sans-serif; }
body { background:#f1f5f9; color:#1e293b; }
.app { display:flex; min-height:100vh; }
.sidebar { width:250px; background:#0f172a; color:#fff; padding:20px 0; position:fixed; height:100vh; }
.logo { font-size:20px; font-weight:700; padding:0 20px 20px; border-bottom:1px solid #1e293b; margin-bottom:12px; }
nav { display:flex; flex-direction:column; gap:4px; padding:0 10px; }
.nav-btn { background:none; border:none; color:#cbd5e1; text-align:left; padding:10px 14px; border-radius:8px; cursor:pointer; font-size:14px; width:100%; }
.nav-btn:hover { background:#1e293b; color:#fff; }
.nav-btn.active { background:#2563eb; color:#fff; font-weight:600; }
#alertCount { background:#dc2626; color:#fff; border-radius:999px; padding:0 7px; font-size:11px; margin-left:4px; }
#alertCount:empty { display:none; }
.sidebar-footer { padding:10px; position:absolute; bottom:10px; width:230px; }
.sidebar-footer button { width:100%; }
.content { flex:1; margin-left:250px; padding:28px; max-width:1200px; }
.view { display:none; }
.view.active { display:block; }
h1 { margin-bottom:16px; }
h2 { margin-bottom:12px; font-size:17px; }
.hint { color:#64748b; font-size:13px; margin-bottom:10px; }
.panel { background:#fff; border-radius:10px; padding:20px; margin-bottom:20px; box-shadow:0 1px 3px rgba(0,0,0,.08); }
.cards-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:14px; }
.card { background:#fff; border-radius:10px; padding:16px; box-shadow:0 1px 3px rgba(0,0,0,.08); }
.form-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(180px,1fr)); gap:10px; align-items:center; }
.stack { display:flex; flex-direction:column; gap:10px; }
input, select, button, textarea { padding:9px 10px; border-radius:7px; border:1px solid #e2e8f0; font-size:14px; }
textarea { resize:vertical; width:100%; }
button { background:#2563eb; color:#fff; border:none; cursor:pointer; font-weight:600; }
button:hover { background:#1d4ed8; }
button.small { padding:4px 9px; font-size:12px; }
button.danger { background:#dc2626; }
button.ghost { background:#e2e8f0; color:#1e293b; }
table { width:100%; border-collapse:collapse; margin-top:6px; }
th, td { text-align:left; padding:10px; border-bottom:1px solid #f1f5f9; font-size:13px; vertical-align:middle; }
th { color:#64748b; text-transform:uppercase; font-size:11px; }
tr.own-row { background:#eff6ff; }
.badge { padding:2px 8px; border-radius:999px; font-size:11px; font-weight:600; white-space:nowrap; }
.badge-success { background:#dcfce7; color:#16a34a; }
.badge-danger { background:#fee2e2; color:#dc2626; }
.badge-warn { background:#fef3c7; color:#b45309; }
.text-success { color:#16a34a; font-weight:600; }
.text-danger { color:#dc2626; font-weight:600; }
.muted { color:#94a3b8; font-size:12px; }
.price { font-size:15px; font-weight:700; }
.group-head { display:flex; flex-wrap:wrap; gap:18px; align-items:baseline; margin-bottom:8px; }
.group-head h2 { margin:0; }
.group-stat { font-size:13px; color:#475569; }
.tour-name { max-width:300px; }
.tour-name a { color:#2563eb; text-decoration:none; }
.tour-name a:hover { text-decoration:underline; }
.actions { display:flex; gap:4px; flex-wrap:wrap; }
.alert-item { padding:10px; border-left:4px solid #dc2626; background:#fef2f2; border-radius:8px; margin-bottom:8px; }
.empty-text { color:#94a3b8; font-style:italic; padding:10px 0; }
.modal { display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,.5); justify-content:center; align-items:center; z-index:10; }
.modal.active { display:flex; }
.modal-content { background:#fff; padding:28px; border-radius:10px; text-align:center; }
.spinner { width:40px; height:40px; border:4px solid #f1f5f9; border-top-color:#2563eb; border-radius:50%; animation:spin 1s linear infinite; margin:0 auto 12px; }
@keyframes spin { to { transform:rotate(360deg); } }
