:root{--bg: #f6f7f9;--surface: #ffffff;--surface-muted: #f3f4f6;--border: #e5e7eb;--border-strong: #d1d5db;--ink: #111827;--ink-2: #4b5563;--ink-3: #6b7280;--primary: #111827;--primary-hover: #1f2937;--success: #047857;--success-bg: #ecfdf5;--success-border: #a7f3d0;--danger: #b91c1c;--danger-bg: #fef2f2;--danger-border: #fecaca;--warning: #b45309;--focus: 0 0 0 3px rgba(17, 24, 39, .15);--radius-sm: 8px;--radius-md: 10px;--radius-lg: 14px;--shadow: 0 1px 2px rgba(17, 24, 39, .04), 0 1px 3px rgba(17, 24, 39, .06);--transition: .15s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.5}h1,h2,h3{font-family:Outfit,Inter,sans-serif;letter-spacing:-.02em;line-height:1.2}a{color:inherit;text-decoration:none}button,input{font:inherit}:focus-visible{outline:none;box-shadow:var(--focus)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px}.full-center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.app-shell{display:flex;height:100vh;overflow:hidden}.app-main{flex:1;overflow-y:auto;min-width:0}.app-main-content{padding:2rem 2.5rem 3rem;max-width:1400px;margin:0 auto}.sidebar{width:240px;flex-shrink:0;display:flex;flex-direction:column;background:var(--surface);border-right:1px solid var(--border)}.sidebar-header{padding:1.5rem 1.25rem 1.25rem}.sidebar-brand{display:flex;align-items:center;gap:.6rem;font-family:Outfit,sans-serif;font-size:1.4rem;font-weight:700}.sidebar-logo{width:30px;height:30px;border-radius:7px}.sidebar-tagline{font-size:.68rem;color:var(--ink-3);font-weight:600;letter-spacing:.1em;text-transform:uppercase;margin-top:4px}.sidebar-nav{flex:1;overflow-y:auto;padding:.5rem .75rem;display:flex;flex-direction:column;gap:2px}.sidebar-link{display:flex;align-items:center;gap:.7rem;padding:.6rem .8rem;border-radius:var(--radius-sm);font-size:.875rem;font-weight:500;color:var(--ink-2);transition:background var(--transition),color var(--transition);white-space:nowrap}.sidebar-link:hover{background:var(--surface-muted);color:var(--ink)}.sidebar-link.active{background:var(--primary);color:#fff}.sidebar-link-icon{width:20px;text-align:center}.sidebar-footer{padding:1rem;border-top:1px solid var(--border)}.sidebar-user{display:flex;align-items:center;gap:.7rem;margin-bottom:.75rem}.sidebar-avatar{width:34px;height:34px;flex-shrink:0;border-radius:50%;background:var(--surface-muted);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem}.sidebar-user-info{min-width:0}.sidebar-user-email{font-size:.8rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user-role{font-size:.7rem;color:var(--ink-3)}.sidebar-logout{width:100%;padding:.5rem;border-radius:var(--radius-sm);background:transparent;color:var(--ink-2);border:1px solid var(--border);font-size:.8rem;font-weight:600;cursor:pointer;transition:background var(--transition),color var(--transition),border-color var(--transition)}.sidebar-logout:hover{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}@media (max-width: 768px){.app-shell{flex-direction:column;height:auto;min-height:100vh;overflow:visible}.app-main{overflow:visible}.app-main-content{padding:1.25rem 1rem 2.5rem}.sidebar{width:100%;flex-direction:row;flex-wrap:wrap;align-items:center;border-right:none;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:20}.sidebar-header{padding:.75rem 1rem;flex:1}.sidebar-tagline{display:none}.sidebar-brand{font-size:1.2rem}.sidebar-footer{border-top:none;padding:.75rem 1rem}.sidebar-user{display:none}.sidebar-logout{width:auto;padding:.4rem .75rem}.sidebar-nav{order:3;width:100%;flex:none;flex-direction:row;overflow-x:auto;padding:0 .75rem .6rem}.sidebar-link{padding:.45rem .7rem}}.page-header{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1.5rem;flex-wrap:wrap}.page-title{font-size:1.65rem;font-weight:700}.page-subtitle{color:var(--ink-3);font-size:.875rem;margin-top:4px}.back-link{display:inline-block;font-size:.85rem;color:var(--ink-3);margin-bottom:.5rem}.back-link:hover{color:var(--ink)}.search-field{max-width:320px}@media (max-width: 768px){.search-field{max-width:none}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);min-width:0}.card-header{padding:1rem 1.25rem;display:flex;justify-content:space-between;align-items:center;gap:.75rem;border-bottom:1px solid var(--border)}.card-title{font-size:.95rem;font-weight:600}.card-body{padding:1.25rem}.card-footnote,.table-footnote{padding:0 1.25rem 1.1rem;font-size:.8rem;color:var(--ink-3)}.table-footnote{padding-top:.75rem;border-top:1px solid var(--border)}.narrow-card{max-width:520px}.section-gap{margin-top:1.5rem}.section-gap-bottom{margin-bottom:1.5rem}.error-card{max-width:480px;padding:2rem;display:flex;flex-direction:column;gap:1rem;align-items:flex-start}.error-card pre{margin-top:.5rem;font-size:.75rem;white-space:pre-wrap;color:var(--ink-3)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:1rem 1.5rem;padding:1.25rem}.detail-grid dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-weight:600}.detail-grid dd{font-size:.9rem;margin-top:2px;word-break:break-word}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-bottom:1.5rem}@media (max-width: 1100px){.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 560px){.stats-grid{grid-template-columns:1fr}}.stats-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:1.1rem 1.25rem;min-width:0}.stats-card-content{display:flex;justify-content:space-between;align-items:flex-start;gap:.75rem}.stats-card-info{min-width:0}.stats-card-label{font-size:.78rem;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.04em}.stats-card-value{font-size:1.5rem;font-weight:700;margin-top:.35rem;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.stats-card-subtitle{font-size:.78rem;color:var(--ink-3);margin-top:.3rem}.stats-card-icon{width:38px;height:38px;flex-shrink:0;border-radius:var(--radius-md);background:var(--surface-muted);display:flex;align-items:center;justify-content:center;font-size:1.1rem}.skeleton-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem}@media (max-width: 1100px){.skeleton-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.skeleton-card{height:110px;background:var(--border);border-radius:var(--radius-lg);animation:skeleton-pulse 1.4s ease-in-out infinite}.charts-grid{display:grid;grid-template-columns:2fr 1fr;gap:1rem}@media (max-width: 1000px){.charts-grid{grid-template-columns:1fr}}.chart-area{position:relative;height:280px;padding:1rem 1.25rem}.chart-placeholder{height:340px;display:flex;align-items:center;justify-content:center}.table-container{width:100%;overflow-x:auto}.table-scroll{max-height:360px;overflow-y:auto}.tables-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:1.5rem}@media (max-width: 900px){.tables-grid{grid-template-columns:1fr}}table{width:100%;border-collapse:collapse;text-align:left}th{padding:.7rem 1.25rem;font-size:.7rem;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);background:var(--surface);white-space:nowrap;position:sticky;top:0}td{padding:.75rem 1.25rem;font-size:.85rem;border-bottom:1px solid var(--border);vertical-align:middle}tbody tr:last-child td{border-bottom:none}tbody tr:hover{background:#fafafa}@media (max-width: 768px){td{white-space:nowrap}}.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.table-clickable tbody tr{cursor:pointer}.table-clickable tbody tr:hover{background:var(--surface-muted)}.table-link{font-weight:500;text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px}.table-link:hover{text-decoration-color:var(--ink)}.row-actions{display:inline-flex;gap:.4rem;align-items:center;justify-content:flex-end;flex-wrap:wrap}.mono-text{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;color:var(--ink-3)}.empty-state{text-align:center;padding:3rem 1rem;color:var(--ink-3);font-size:.9rem}.empty-icon{font-size:1.8rem;margin-bottom:.4rem}.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:.72rem;font-weight:600;border:1px solid transparent;white-space:nowrap}.badge-success{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}.badge-danger{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.badge-dark{background:var(--primary);color:#fff}.badge-neutral{background:var(--surface-muted);color:var(--ink-2);border-color:var(--border)}.notice{padding:.75rem 1rem;border-radius:var(--radius-md);font-size:.85rem;border:1px solid;margin-bottom:1rem}.notice ul{margin:.35rem 0 0 1.1rem}.notice-error{background:var(--danger-bg);color:var(--danger);border-color:var(--danger-border)}.notice-success{background:var(--success-bg);color:var(--success);border-color:var(--success-border)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;padding:.55rem 1rem;font-size:.85rem;font-weight:600;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;white-space:nowrap;transition:background var(--transition),border-color var(--transition),color var(--transition)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-sm{padding:.32rem .7rem;font-size:.78rem}.btn-lg{padding:.75rem 1.25rem;font-size:.95rem}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--border-strong)}.btn-secondary:hover:not(:disabled){background:var(--surface-muted)}.btn-ghost{background:transparent;color:var(--ink-2);border-color:var(--border)}.btn-ghost:hover:not(:disabled){background:var(--surface-muted);color:var(--ink)}.btn-danger{background:var(--surface);color:var(--danger);border-color:var(--danger-border)}.btn-danger:hover:not(:disabled){background:var(--danger-bg)}.link-btn{background:none;border:none;color:var(--ink-2);font-size:.82rem;text-decoration:underline;text-underline-offset:3px;cursor:pointer;margin-top:1rem}.link-btn:hover{color:var(--ink)}.form-stack{display:flex;flex-direction:column;gap:1rem}.inline-form{display:flex;gap:1rem;align-items:flex-end;flex-wrap:wrap}.inline-form .field{flex:1 1 220px}.field{display:flex;flex-direction:column;gap:.3rem}.field-label{font-size:.8rem;font-weight:600;color:var(--ink-2)}.input-field{width:100%;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-sm);padding:.6rem .8rem;color:var(--ink);font-size:.875rem;transition:border-color var(--transition),box-shadow var(--transition)}.input-field:focus{outline:none;border-color:var(--ink);box-shadow:var(--focus)}.input-field::placeholder{color:#9ca3af}.tabs{display:flex;gap:.25rem;border-bottom:1px solid var(--border);margin-bottom:1rem;overflow-x:auto}.tab-btn{padding:.55rem .9rem;font-size:.85rem;font-weight:500;background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;color:var(--ink-3);cursor:pointer;white-space:nowrap}.tab-btn:hover{color:var(--ink)}.tab-btn.active{color:var(--ink);border-bottom-color:var(--ink);font-weight:600}.tab-count{font-size:.72rem;background:var(--surface-muted);border-radius:999px;padding:1px 7px;margin-left:4px;color:var(--ink-2)}.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:1rem}.login-card{width:100%;max-width:400px;padding:2.25rem 2rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 10px 30px #11182714;display:flex;flex-direction:column}.login-brand{display:flex;align-items:center;justify-content:center;gap:.75rem}.login-logo{width:42px;height:42px;border-radius:10px}.login-title{font-size:2.1rem;font-weight:800}.login-subtitle{text-align:center;color:var(--ink-3);font-size:.9rem;margin:.4rem 0 1.75rem}.login-card .notice{margin-bottom:1.25rem}.login-card .btn-primary{margin-top:.5rem}.login-footer{margin-top:1.75rem;padding-top:1.25rem;border-top:1px solid var(--border);text-align:center;font-size:.75rem;color:var(--ink-3)}.login-footer a{display:inline-block;margin-top:.4rem;font-weight:700;color:var(--ink-2)}.login-footer a:hover{color:var(--ink)}.spinner,.spinner-lg{display:inline-block;border-radius:50%;animation:spin .8s linear infinite}.spinner{width:1rem;height:1rem;border:2px solid rgba(255,255,255,.9);border-top-color:transparent}.spinner-dark{border-color:var(--ink-3);border-top-color:transparent}.spinner-lg{width:36px;height:36px;border:3px solid var(--ink);border-top-color:transparent}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes slide-up{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-fade-in{animation:fade-in .25s ease-out both}.animate-slide-up{animation:slide-up .35s ease-out both}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}.text-secondary{color:var(--ink-2)}.text-muted{color:var(--ink-3)}.text-success{color:var(--success)}.text-danger{color:var(--danger)}.text-warning{color:var(--warning)}.text-xs{font-size:.75rem}.text-sm{font-size:.85rem}.font-semibold{font-weight:600}.font-bold{font-weight:700}.w-full{width:100%}
