@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap";
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid}}}.relative{position:relative}.static{position:static}.sticky{position:sticky}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.border{border-style:var(--tw-border-style);border-width:1px}.uppercase{text-transform:uppercase}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}:root{--color-bg:#fff;--color-bg-subtle:#f9fafb;--color-bg-muted:#f3f4f6;--color-border:#e5e7eb;--color-border-strong:#d1d5db;--color-text:#0a0a0a;--color-text-secondary:#6b7280;--color-text-muted:#9ca3af;--color-accent:#22c55e;--color-accent-light:#dcfce7;--color-accent-dark:#16a34a;--color-warning:#f59e0b;--color-warning-light:#fef3c7;--color-danger:#ef4444;--color-danger-light:#fee2e2;--sidebar-width:240px;--header-height:56px}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;height:100%;height:-webkit-fill-available;font-family:Inter,system-ui,sans-serif}body{background-color:var(--color-bg);height:100%;height:-webkit-fill-available;color:var(--color-text);margin:0;line-height:1.5}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border-strong);border-radius:3px}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:4px}h1,h2,h3,h4,h5,h6{color:var(--color-text);font-weight:600;line-height:1.3}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-in{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.animate-fade-in{animation:.2s ease-out fade-in}.animate-slide-in{animation:.2s ease-out slide-in}.status-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px;display:inline-block}.status-dot.active{background-color:var(--color-accent);animation:2s infinite pulse-dot}.status-dot.warning{background-color:var(--color-warning);animation:2s infinite pulse-dot}.status-dot.down{background-color:var(--color-danger)}.status-dot.pending,.status-dot.paused{background-color:var(--color-text-muted)}.card{background:var(--color-bg);border:1px solid var(--color-border);border-radius:10px;transition:box-shadow .15s,border-color .15s}.card:hover{border-color:var(--color-border-strong);box-shadow:0 2px 12px #0000000f}.btn{cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:7px;align-items:center;gap:6px;padding:7px 14px;font-family:inherit;font-size:13px;font-weight:500;text-decoration:none;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-text);color:#fff;border-color:var(--color-text)}.btn-primary:hover:not(:disabled){background:#1a1a1a}.btn-secondary{background:var(--color-bg);color:var(--color-text);border-color:var(--color-border-strong)}.btn-secondary:hover:not(:disabled){background:var(--color-bg-subtle);border-color:var(--color-border-strong)}.btn-ghost{color:var(--color-text-secondary);background:0 0;border-color:#0000}.btn-ghost:hover:not(:disabled){background:var(--color-bg-muted);color:var(--color-text)}.btn-danger{color:var(--color-danger);border-color:var(--color-border);background:0 0}.btn-danger:hover:not(:disabled){background:var(--color-danger-light);border-color:var(--color-danger)}.btn-sm{border-radius:6px;padding:5px 10px;font-size:12px}.btn-icon{border-radius:7px;padding:7px}.form-group{flex-direction:column;gap:6px;display:flex}.form-label{color:var(--color-text);font-size:13px;font-weight:500}.form-hint{color:var(--color-text-muted);font-size:12px}.form-input,.form-select{border:1px solid var(--color-border-strong);width:100%;color:var(--color-text);background:var(--color-bg);border-radius:8px;outline:none;padding:9px 12px;font-family:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}.form-input:focus,.form-select:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #22c55e1f}.form-input::placeholder{color:var(--color-text-muted)}.form-error{color:var(--color-danger);margin-top:2px;font-size:12px}.app-layout{width:100%;min-height:100vh;display:flex}.sidebar{width:var(--sidebar-width);border-right:1px solid var(--color-border);background:var(--color-bg);z-index:40;height:100%;flex-direction:column;height:-webkit-fill-available;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.main-content{margin-left:var(--sidebar-width);background:var(--color-bg-subtle);flex:1;min-height:100vh}.table-wrapper{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{text-align:left;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-secondary);border-bottom:1px solid var(--color-border);background:var(--color-bg-subtle);padding:10px 16px;font-size:11px;font-weight:600}td{border-bottom:1px solid var(--color-border);color:var(--color-text);vertical-align:middle;padding:12px 16px}tr:last-child td{border-bottom:none}tr:hover td{background:var(--color-bg-subtle)}.badge{letter-spacing:.02em;border-radius:5px;align-items:center;gap:5px;padding:3px 8px;font-size:11px;font-weight:600;display:inline-flex}.badge-active{background:var(--color-accent-light);color:var(--color-accent-dark)}.badge-warning{background:var(--color-warning-light);color:#92400e}.badge-down{background:var(--color-danger-light);color:#991b1b}.badge-pending,.badge-paused{background:var(--color-bg-muted);color:var(--color-text-secondary)}.mono{font-family:Fira Code,JetBrains Mono,SF Mono,monospace;font-size:12px}.divider{border:none;border-top:1px solid var(--color-border);margin:0}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e8e8e8 50%,#f0f0f0 75%) 0 0/200% 100%;border-radius:4px;animation:1.5s infinite shimmer}.page-header{border-bottom:1px solid var(--color-border);background:var(--color-bg);justify-content:space-between;align-items:center;gap:16px;padding:24px 32px 20px;display:flex}.page-header.stack{display:block}.page-content{padding:28px 32px}.dashboard-grid{grid-template-columns:1fr 340px;align-items:start;gap:24px;display:grid}.stats-grid{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:28px;display:grid}.charts-grid{grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px;display:grid}.mobile-header{height:var(--header-height);background:var(--color-bg);border-bottom:1px solid var(--color-border);z-index:30;justify-content:space-between;align-items:center;padding:0 16px;display:none;position:fixed;top:0;left:0;right:0}.mobile-menu-btn{color:var(--color-text);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:8px;transition:background .15s;display:flex}.mobile-menu-btn:hover{background:var(--color-bg-muted)}.sidebar-backdrop{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:35;background:#0006;transition:opacity .2s;display:none;position:fixed;inset:0}.sidebar-mobile-close-container{display:none}.project-detail-header-row{justify-content:space-between;align-items:center;gap:12px;display:flex}@media (max-width:1024px){.dashboard-grid{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:900px){.mobile-header{height:60px;display:flex}.sidebar{z-index:40;transition:transform .25s cubic-bezier(.4,0,.2,1);transform:translate(-100%);box-shadow:0 0 20px #0000001a}.sidebar.open{transform:translate(0)}.sidebar-backdrop.open{display:block}.sidebar-mobile-close-container{justify-content:flex-end;padding:12px 16px 0;display:flex!important}.main-content{margin-left:0!important;padding-top:60px!important}}@media (max-width:768px){.page-header{padding:16px 20px}.page-content{padding:20px}.charts-grid{grid-template-columns:1fr}.project-detail-header-row{flex-direction:column;align-items:flex-start;gap:16px}.project-detail-header-row>div:last-child{flex-wrap:wrap;gap:8px;width:100%;display:flex}}@media (max-width:640px){.stats-grid{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start;gap:12px;padding:16px}.page-header:not(.stack)>div:last-child{justify-content:flex-end;width:100%;display:flex}.page-content{padding:16px 12px}}.login-page{background-color:var(--color-bg-subtle);flex:1;justify-content:center;align-items:center;width:100%;min-height:100vh;padding:24px;display:flex;position:relative;overflow:hidden}.login-bg-grid{background-image:linear-gradient(var(--color-border) 1px, transparent 1px), linear-gradient(90deg, var(--color-border) 1px, transparent 1px);opacity:.5;pointer-events:none;background-size:40px 40px;position:absolute;inset:0}.login-card{background:var(--color-bg);border:1px solid var(--color-border);z-index:1;border-radius:16px;width:100%;max-width:420px;padding:40px;position:relative;box-shadow:0 1px 3px #0000000f,0 8px 32px #00000014}.login-logo-wrap{justify-content:center;align-items:center;margin-bottom:28px;display:flex}.login-title{color:var(--color-text);letter-spacing:-.3px;margin:0 0 6px;font-size:22px;font-weight:700}.login-subtitle{color:var(--color-text-secondary);margin:0 0 28px;font-size:14px}.login-form{flex-direction:column;gap:16px;display:flex}.login-field{flex-direction:column;gap:6px;display:flex}.login-label{color:var(--color-text);font-size:13px;font-weight:500}.login-input{border:1px solid var(--color-border-strong);height:42px;color:var(--color-text);background:var(--color-bg);border-radius:8px;outline:none;width:100%;padding:0 12px;font-family:inherit;font-size:14px;transition:border-color .15s,box-shadow .15s}.login-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 3px #22c55e1f}.login-input-error{border-color:var(--color-danger)!important;box-shadow:0 0 0 3px #ef44441a!important}.login-password-wrap{align-items:center;display:flex;position:relative}.login-input-pw{padding-right:44px}.login-show-pw{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;align-items:center;padding:0;transition:color .15s;display:flex;position:absolute;right:12px}.login-show-pw:hover{color:var(--color-text-secondary)}.login-error{color:var(--color-danger);background:var(--color-danger-light);border:1px solid #ef444433;border-radius:8px;align-items:center;gap:7px;padding:10px 12px;font-size:13px;display:flex}.login-btn{background:var(--color-accent);color:#fff;cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:8px;height:44px;margin-top:4px;font-family:inherit;font-size:14px;font-weight:600;transition:background .15s,transform .1s;display:flex}.login-btn:hover:not(:disabled){background:var(--color-accent-dark)}.login-btn:active:not(:disabled){transform:scale(.98)}.login-btn:disabled{opacity:.7;cursor:not-allowed}.login-btn-spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.login-footer{color:var(--color-text-muted);text-align:center;margin:20px 0 0;font-size:12px}.sidebar-logout-btn{border:1px solid var(--color-border);width:100%;color:var(--color-text-secondary);cursor:pointer;text-align:left;background:0 0;border-radius:8px;align-items:center;gap:10px;margin-top:8px;padding:8px 12px;font-family:inherit;font-size:13px;font-weight:500;transition:background .15s,color .15s,border-color .15s;display:flex}.sidebar-logout-btn:hover{background:var(--color-danger-light);color:var(--color-danger);border-color:#ef444440}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}
