:root{--bg: #0f1419;--bg-elevated: #1a2332;--bg-card: #1e2a3a;--border: #2d3f54;--text: #e8edf4;--text-muted: #8b9cb3;--primary: #3b82f6;--primary-hover: #2563eb;--success: #22c55e;--warning: #f59e0b;--danger: #ef4444;--sidebar-width: 260px;--radius: 10px;--shadow: 0 4px 24px rgba(0, 0, 0, .35);font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5;color:var(--text);background:var(--bg)}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-height:100vh}a{color:var(--primary)}h1,h2,h3,p{margin:0}.layout{display:flex;min-height:100vh}.sidebar{width:var(--sidebar-width);background:var(--bg-elevated);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0}.sidebar-brand{display:flex;align-items:center;gap:12px;padding:24px 20px;border-bottom:1px solid var(--border)}.sidebar-brand strong{display:block;font-size:1rem}.sidebar-brand small{color:var(--text-muted);font-size:.75rem}.brand-icon{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,var(--primary),#6366f1);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.1rem;flex-shrink:0}.brand-icon.lg{width:56px;height:56px;font-size:1.5rem;margin:0 auto 16px}.sidebar-nav{flex:1;padding:16px 12px;display:flex;flex-direction:column;gap:4px}.nav-link{display:block;padding:10px 14px;border-radius:8px;color:var(--text-muted);text-decoration:none;font-size:.95rem;transition:background .15s,color .15s}.nav-link:hover{background:#ffffff0d;color:var(--text)}.nav-link.active{background:#3b82f626;color:var(--primary);font-weight:500}.sidebar-footer{padding:16px 20px;border-top:1px solid var(--border)}.user-info{margin-bottom:12px}.user-info strong{display:block;font-size:.9rem}.user-info small{color:var(--text-muted);font-size:.8rem;word-break:break-all}.main-content{flex:1;margin-left:var(--sidebar-width);padding:32px;min-width:0}.page{max-width:1200px}.page-header{margin-bottom:24px}.page-header h1{font-size:1.75rem;margin-bottom:4px}.page-header p{color:var(--text-muted)}.page-header.row{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.page-center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:48px;color:var(--text-muted)}.card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.card h2{font-size:1.1rem;margin-bottom:16px}.card-narrow{max-width:520px}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px}.stat-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px}.stat-label{display:block;color:var(--text-muted);font-size:.85rem;margin-bottom:8px}.stat-value{font-size:2rem;font-weight:700}.stat-success{color:var(--success)}.stat-warning{color:var(--warning)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--border)}th{color:var(--text-muted);font-weight:500;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}.th-sort{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.sort-btns{display:inline-flex;flex-direction:column;gap:0;line-height:1}.sort-btn{display:inline-flex;align-items:center;justify-content:center;margin:0;padding:0 2px;border:none;background:transparent;color:var(--text-muted);opacity:.45;font-size:.55rem;line-height:1;cursor:pointer}.sort-btn:hover{opacity:.9;color:var(--text)}.sort-btn.is-active{opacity:1;color:var(--primary, #3a86ff)}tr:last-child td{border-bottom:none}.actions{display:flex;flex-wrap:wrap;gap:6px}.truncate{max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.key-code{display:inline-block;background:#0000004d;padding:2px 6px;border-radius:4px;font-size:.8rem;margin-right:6px}.filters{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:16px}.select-inline{background:var(--bg-elevated);border:1px solid var(--border);color:var(--text);border-radius:6px;padding:6px 8px;font-size:.85rem}.field{display:flex;flex-direction:column;gap:6px}.field span{font-size:.85rem;color:var(--text-muted)}.field input,.field select,.field textarea{background:var(--bg-elevated);border:1px solid var(--border);border-radius:8px;padding:10px 12px;color:var(--text);font-size:.95rem}.field input:focus,.field select:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #3b82f633}.checkbox-field{display:flex;align-items:center;gap:8px;font-size:.9rem}.checkbox-list{display:flex;flex-direction:column;gap:8px;margin-top:8px;max-height:200px;overflow-y:auto}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:16px}.gallery-item{margin:0;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:var(--surface)}.gallery-item img{width:100%;height:140px;object-fit:cover;display:block}.gallery-item figcaption{display:flex;flex-direction:column;gap:6px;padding:10px}.gallery-item strong{font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ad-thumb{width:72px;height:48px;object-fit:cover;border-radius:6px;display:block}.ad-preview{width:100%;max-height:180px;object-fit:contain;border-radius:8px;background:var(--bg)}.row.gap{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.form-stack{display:flex;flex-direction:column;gap:16px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:8px}.hint{color:var(--text-muted);font-size:.8rem}.muted{color:var(--text-muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 18px;border-radius:8px;border:none;font-size:.9rem;font-weight:500;cursor:pointer;transition:background .15s,opacity .15s}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-danger{background:#ef444426;color:var(--danger);border:1px solid rgba(239,68,68,.3)}.btn-danger:hover:not(:disabled){background:#ef444440}.btn-ghost{background:transparent;color:var(--text-muted);border:1px solid var(--border)}.btn-ghost:hover:not(:disabled){background:#ffffff0d;color:var(--text)}.btn-sm{padding:6px 12px;font-size:.8rem}.btn-xs{padding:2px 8px;font-size:.75rem}.btn-block{width:100%}.btn-icon{background:none;border:none;color:var(--text-muted);font-size:1.5rem;cursor:pointer;line-height:1;padding:0 4px}.btn-icon:hover{color:var(--text)}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:.75rem;font-weight:500}.badge-success{background:#22c55e26;color:var(--success)}.badge-warning{background:#f59e0b26;color:var(--warning)}.badge-danger{background:#ef444426;color:var(--danger)}.badge-info{background:#3b82f626;color:var(--primary)}.badge-neutral{background:#ffffff14;color:var(--text-muted)}.alert{padding:12px 16px;border-radius:8px;margin-bottom:16px;font-size:.9rem}.alert-error{background:#ef44441f;border:1px solid rgba(239,68,68,.3);color:#fca5a5}.alert-success{background:#22c55e1f;border:1px solid rgba(34,197,94,.3);color:#86efac}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(ellipse at top,#1e3a5f 0%,var(--bg) 60%)}.login-card{width:100%;max-width:400px;background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:32px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:16px}.login-header{text-align:center;margin-bottom:8px}.login-header h1{font-size:1.5rem;margin-bottom:4px}.login-header p{color:var(--text-muted);font-size:.9rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;padding:24px;z-index:1000}.modal{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:var(--shadow)}.modal-wide{max-width:640px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border)}.modal-header h2{font-size:1.1rem}.modal-body{padding:24px}.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.breadcrumb{display:flex;align-items:center;gap:8px;margin:0 0 8px;color:var(--text-muted);font-size:.85rem}.breadcrumb a{color:var(--text-muted);text-decoration:none}.breadcrumb a:hover{color:var(--primary)}.table-link{color:var(--text);font-weight:600;text-decoration:none}.table-link:hover{color:var(--primary)}.section-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.section-header h2{margin:0 0 4px}.section-header .muted{margin:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.field-span-2{grid-column:span 2}.nested-filters{margin-bottom:16px;background:#0000001f}.check-col{width:42px}.modal-table{max-height:420px;margin-bottom:16px}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px 24px;margin:0}.detail-grid dt{color:var(--text-muted);font-size:.8rem;margin-bottom:4px}.detail-grid dd{margin:0;word-break:break-word}.stat-text{font-size:1.15rem;font-weight:600;line-height:1.35}.stat-hint{display:block;margin-top:8px;color:var(--text-muted);font-size:.8rem}a.stat-card{text-decoration:none;color:inherit;transition:border-color .15s ease,transform .15s ease}a.stat-card:hover{border-color:var(--primary);transform:translateY(-1px)}.call-indicator.is-active{border-color:#f59e0b8c;box-shadow:0 0 0 1px #f59e0b26}.call-indicator.is-active .stat-value{color:var(--warning)}.page-wide{max-width:none}.matrix-wrap{overflow:auto;max-height:72vh;border:1px solid var(--border);border-radius:var(--radius)}.matrix-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:.88rem}.matrix-table th,.matrix-table td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:10px 16px;white-space:nowrap;text-align:left}.matrix-table thead th{position:sticky;top:0;background:var(--bg-elevated);z-index:3;vertical-align:top;text-transform:none;letter-spacing:normal}.matrix-sticky-col{position:sticky;left:0;background:var(--bg-card);z-index:2;box-shadow:2px 0 0 var(--border)}.matrix-corner{z-index:4;background:var(--bg-elevated)}.matrix-role-col{min-width:200px}.matrix-role-head{display:flex;flex-direction:column;gap:6px}.matrix-role-title{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--text)}.matrix-role-desc{color:var(--text-muted);font-size:.75rem;white-space:normal;max-width:220px}.matrix-role-actions{display:flex;gap:6px}.matrix-role-save{display:flex;gap:6px;margin-top:4px}.matrix-warning{color:var(--warning);font-size:.72rem;white-space:normal;max-width:220px;line-height:1.3}.matrix-group-row td{background:#ffffff08}.matrix-group-label{font-weight:700;color:var(--text-muted);text-transform:uppercase;font-size:.75rem;letter-spacing:.04em}.matrix-perm-label{min-width:260px;white-space:normal}.matrix-cell{text-align:center}.matrix-create-list{max-height:320px}.matrix-create-group{display:flex;flex-direction:column;gap:4px;margin-bottom:10px}.matrix-create-group strong{font-size:.8rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.chip-list{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:4px;background:#ffffff14;border-radius:999px;padding:4px 10px;font-size:.78rem;white-space:nowrap}.chip-super{background:#3b82f62e;color:var(--primary);font-weight:600}.chip-remove{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:.9rem;line-height:1;padding:0}.chip-remove:hover{color:var(--danger)}.assignment-list{display:flex;flex-direction:column;gap:10px;margin-top:8px}.assignment-row{display:flex;gap:8px;align-items:center}.assignment-row select,.assignment-row input{flex:1;background:var(--bg-elevated);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:8px 10px;font-size:.9rem}.staff-member-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid var(--border)}.staff-member-row:last-child{border-bottom:none}@media (max-width: 768px){.sidebar{width:100%;position:relative;height:auto}.main-content{margin-left:0;padding:16px}.layout{flex-direction:column}.form-grid,.field-span-2{grid-template-columns:1fr}.field-span-2{grid-column:auto}.section-header{flex-direction:column}}
