:root{--bg-primary:#0b0f19;--bg-secondary:#131b2e;--bg-tertiary:#1e293b;--bg-glass:#131b2eb3;--bg-glass-hover:#1e293bcc;--border-glass:#ffffff14;--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-muted:#64748b;--primary:#6366f1;--primary-hover:#4f46e5;--primary-glow:#6366f126;--success:#10b981;--success-glow:#10b9811a;--warning:#f59e0b;--warning-glow:#f59e0b1a;--danger:#ef4444;--danger-glow:#ef44441a;--info:#0ea5e9;--info-glow:#0ea5e91a;--radius-sm:8px;--radius-md:16px;--radius-lg:24px;--transition:all .3s cubic-bezier(.4, 0, .2, 1);--shadow:0 10px 30px -10px #00000080;--font-family:"Inter", "IBM Plex Sans Thai", sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);background-color:var(--bg-primary);color:var(--text-primary);background-image:radial-gradient(at 0 0,#6366f11f 0,#0000 50%),radial-gradient(at 100% 100%,#10b98114 0,#0000 50%);background-attachment:fixed;min-height:100vh;line-height:1.5;overflow-x:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--bg-tertiary);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}h1,h2,h3,h4,h5,h6{color:var(--text-primary);letter-spacing:-.02em;font-weight:600}.glass-card{background:var(--bg-glass);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-glass);border-radius:var(--radius-md);box-shadow:var(--shadow);transition:var(--transition);padding:24px}.glass-card:hover{border-color:#ffffff26;transform:translateY(-2px);box-shadow:0 15px 35px -5px #0009,0 0 20px #6366f10d}.app-container{grid-template-columns:280px 1fr;min-height:100vh;display:grid}@media (width<=1024px){.app-container{grid-template-columns:1fr}}.sidebar{-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-right:1px solid var(--border-glass);z-index:100;background:#0b0f19d9;flex-direction:column;gap:32px;height:100vh;padding:32px 24px;display:flex;position:sticky;top:0;overflow-y:auto}@media (width<=1024px){.sidebar{border-right:none;border-bottom:1px solid var(--border-glass);height:auto;padding:20px;position:relative}}.logo-container{align-items:center;gap:12px;display:flex}.logo-icon{background:linear-gradient(135deg, var(--primary), var(--success));color:#fff;border-radius:12px;justify-content:center;align-items:center;width:40px;height:40px;font-size:20px;font-weight:700;display:flex;box-shadow:0 0 20px #6366f14d}.logo-text h2{background:linear-gradient(90deg,#fff,#94a3b8);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:18px}.logo-text p{color:var(--text-muted);text-transform:uppercase;letter-spacing:.1em;font-size:11px}.menu-section{flex-direction:column;gap:8px;display:flex}.menu-title{text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin-bottom:8px;padding-left:12px;font-size:11px}.menu-item{border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:var(--transition);text-align:left;background:0 0;border:1px solid #0000;align-items:center;gap:12px;padding:12px 16px;font-size:14px;font-weight:500;text-decoration:none;display:flex}.menu-item:hover{color:var(--text-primary);background:#ffffff08}.menu-item.active{background:var(--primary-glow);color:var(--primary);border-color:#6366f133;box-shadow:inset 0 0 10px #6366f10d}.main-content{flex-direction:column;gap:32px;padding:40px;display:flex;overflow-y:auto}@media (width<=768px){.main-content{gap:20px;padding:20px}}.content-header{justify-content:space-between;align-items:center;gap:20px;display:flex}@media (width<=768px){.content-header{flex-direction:column;align-items:flex-start}}.header-role-badge{background:var(--bg-tertiary);border:1px solid var(--border-glass);border-radius:50px;align-items:center;gap:8px;padding:6px 16px;font-size:13px;font-weight:600;display:inline-flex}.header-role-badge:before{content:"";background:var(--primary);width:8px;height:8px;box-shadow:0 0 8px var(--primary);border-radius:50px}.form-group{flex-direction:column;gap:8px;margin-bottom:20px;display:flex}.form-group label{color:var(--text-secondary);font-size:13px;font-weight:500}.form-control{background:var(--bg-tertiary);border:1px solid var(--border-glass);border-radius:var(--radius-sm);color:var(--text-primary);font-family:var(--font-family);transition:var(--transition);padding:12px 16px;font-size:14px}.form-control:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-glow);outline:none}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);font-size:14px;font-weight:600;font-family:var(--font-family);border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:12px 24px;display:inline-flex}.btn-primary{background:var(--primary);color:#fff;box-shadow:0 4px 12px #6366f133}.btn-primary:hover{background:var(--primary-hover);transform:translateY(-1px)}.btn-secondary{background:var(--bg-tertiary);color:var(--text-primary);border:1px solid var(--border-glass)}.btn-secondary:hover{background:var(--bg-glass-hover)}.btn-success{background:var(--success);color:#fff}.btn-success:hover{filter:brightness(1.1);background:#0ea5e9}.badge{border-radius:50px;align-items:center;padding:4px 12px;font-size:12px;font-weight:600;display:inline-flex}.badge-pending{background:var(--warning-glow);color:var(--warning);border:1px solid #f59e0b33}.badge-approved{background:var(--success-glow);color:var(--success);border:1px solid #10b98133}.badge-danger{background:var(--danger-glow);color:var(--danger);border:1px solid #ef444433}.badge-info{background:var(--info-glow);color:var(--info);border:1px solid #0ea5e933}.table-container{margin-top:16px;overflow-x:auto}.custom-table{border-collapse:collapse;text-align:left;width:100%}.custom-table th{border-bottom:2px solid var(--border-glass);color:var(--text-secondary);padding:16px;font-size:13px;font-weight:600}.custom-table td{border-bottom:1px solid var(--border-glass);color:var(--text-primary);padding:16px;font-size:14px}.custom-table tr:last-child td{border-bottom:none}.custom-table tr:hover td{background:#ffffff03}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:24px;display:grid}.stat-card{flex-direction:column;gap:8px;display:flex}.stat-val{background:linear-gradient(90deg,#fff,#cbd5e1);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:28px;font-weight:700}.stat-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.progress-bar-container{background:var(--bg-tertiary);border:1px solid var(--border-glass);border-radius:50px;height:8px;margin-top:8px;overflow:hidden}.progress-bar-fill{background:linear-gradient(to right, var(--primary), var(--success));border-radius:50px;height:100%;transition:width 1s ease-in-out}.gantt-chart{flex-direction:column;gap:16px;display:flex}.gantt-row{grid-template-columns:180px 1fr;align-items:center;gap:16px;display:grid}@media (width<=600px){.gantt-row{grid-template-columns:1fr;gap:8px}}.gantt-label{font-size:14px;font-weight:500}.gantt-track{background:var(--bg-tertiary);border:1px solid var(--border-glass);border-radius:50px;height:24px;position:relative;overflow:hidden}.gantt-fill{color:#fff;border-radius:50px;align-items:center;height:100%;padding-left:12px;font-size:11px;font-weight:600;transition:width 1s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:0;left:0}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-gap-sm{align-items:center;gap:8px;display:flex}.flex-gap-md{align-items:center;gap:16px;display:flex}.flex-wrap{flex-wrap:wrap;gap:12px;display:flex}.grid-2col{grid-template-columns:repeat(2,1fr);gap:24px;display:grid}@media (width<=768px){.grid-2col{grid-template-columns:1fr}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:.4s ease-out forwards fadeIn}.dashboard-title{align-items:center;gap:12px;margin-bottom:24px;font-size:24px;display:flex}.dashboard-title svg{color:var(--primary)}.form-row{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;display:grid}.blueprint-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:24px;display:grid}.blueprint-card{flex-direction:column;gap:12px;display:flex}.blueprint-preview{border-radius:var(--radius-sm);height:160px;color:var(--primary);background:repeating-linear-gradient(45deg,#6366f10d,#6366f10d 10px,#6366f11a 10px 20px);border:1px dashed #6366f14d;justify-content:center;align-items:center;display:flex}.blueprint-details{flex-direction:column;gap:4px;display:flex}.blueprint-name{font-size:15px;font-weight:600}.blueprint-meta{color:var(--text-secondary);font-size:12px}.tabs-container{border-bottom:1px solid var(--border-glass);gap:8px;margin-bottom:24px;padding-bottom:1px;display:flex}.tab-btn{color:var(--text-secondary);cursor:pointer;transition:var(--transition);font-size:14px;font-weight:500;font-family:var(--font-family);background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 16px}.tab-btn:hover{color:var(--text-primary)}.tab-btn.active{color:var(--primary);border-bottom-color:var(--primary)}.worker-row{border-radius:var(--radius-sm);background:var(--bg-tertiary);border:1px solid var(--border-glass);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.worker-info{align-items:center;gap:12px;display:flex}.worker-avatar{background:var(--bg-glass-hover);width:32px;height:32px;color:var(--text-secondary);border:1px solid var(--border-glass);border-radius:50px;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:flex}@media (width<=1024px){.app-container{grid-template-columns:1fr!important}.sidebar{display:none!important}.mobile-header{display:flex!important}.main-content{gap:16px;padding:16px}.stats-grid,.grid-2col{grid-template-columns:1fr!important}}.pulsate-dot{animation:2s infinite pulse-green}@keyframes pulse-green{0%{transform:scale(.95);box-shadow:0 0 #10b981b3}70%{transform:scale(1);box-shadow:0 0 0 6px #10b98100}to{transform:scale(.95);box-shadow:0 0 #10b98100}}.bar-hover-tooltip{transition:opacity .2s,transform .2s;transform:translateY(5px)}div:hover>.bar-hover-tooltip{opacity:1!important;transform:translateY(0)!important}select.form-control option,select option{color:#f8fafc!important;background-color:#131b2e!important}.hover-day-cell:hover,.hover-bg-adjust:hover{color:#fff!important;background:#ffffff14!important}
