:root{--smc-font-sans:"Sarabun", system-ui, -apple-system, Segoe UI, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif;--smc-bg:#f4f6f9;--smc-surface:#fff;--smc-surface-2:#fbfcfe;--smc-text:#0f172a;--smc-muted:#0f172a9e;--smc-border:#0f172a1a;--smc-primary:#0d6efd;--smc-success:#16a34a;--smc-danger:#ef4444;--smc-warning:#f59e0b;--smc-info:#06b6d4;--smc-radius-sm:10px;--smc-radius:14px;--smc-radius-lg:18px;--smc-shadow-1:0 10px 24px #0f172a14;--smc-shadow-2:0 16px 40px #0f172a24;--smc-focus:0 0 0 .25rem #0d6efd2e;--smc-sidebar-w:280px;--smc-sidebar-bg1:#0b2a4a;--smc-sidebar-bg2:#071e35;--smc-sidebar-text:#ffffffeb;--smc-sidebar-muted:#ffffff8c;--smc-sidebar-active:#ffffff24;--smc-sidebar-hover:#ffffff1a}html,body{height:100%}body{font-family:var(--smc-font-sans);background:var(--smc-bg);color:#333}.btn,.form-control,.form-select,.input-group-text,.dropdown-menu,.card,.modal-content,.alert{border-radius:var(--smc-radius-sm)}.card{border:1px solid var(--smc-border);box-shadow:var(--smc-shadow-1)}.card.border-0{border:0!important}.card.shadow-sm{box-shadow:var(--smc-shadow-1)!important}.dropdown-menu{box-shadow:var(--smc-shadow-2);border-radius:var(--smc-radius);border:0;overflow:hidden}.table{color:#0f172adb}.table thead th,.table thead td{color:#0f172aad;border-bottom-color:#0f172a1f;font-weight:800}.table-hover tbody tr:hover{background-color:#0d6efd0f}.badge{letter-spacing:.01em;font-weight:800}.form-control:focus,.form-select:focus,.btn:focus{box-shadow:var(--smc-focus)!important}.app-shell{min-height:100vh}.content-wrap{flex:1}@media (width>=992px){.content-wrap{margin-left:var(--smc-sidebar-w)}}.sidebar{width:var(--smc-sidebar-w);background:linear-gradient(165deg, var(--smc-sidebar-bg1) 0%, #0a2544 45%, var(--smc-sidebar-bg2) 100%);color:var(--smc-sidebar-text);box-shadow:4px 0 24px #0000001f}.sidebar.desktop{z-index:1030;height:100vh;max-height:100vh;position:fixed;top:0;bottom:0;left:0;overflow:hidden}.sidebar-scroll{-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:#ffffff47 transparent;flex:auto;min-height:0;padding-bottom:.5rem;overflow:hidden auto}.sidebar-scroll::-webkit-scrollbar{width:7px}.sidebar-scroll::-webkit-scrollbar-track{background:0 0}.sidebar-scroll::-webkit-scrollbar-thumb{background:#ffffff38;border-radius:999px}.sidebar-scroll::-webkit-scrollbar-thumb:hover{background:#ffffff59}.sidebar .brand{background:#0000001f;border-bottom:1px solid #ffffff14;flex-shrink:0;align-items:center;gap:12px;height:64px;padding:0 18px;display:flex}.sidebar .brand img{width:auto;height:34px}.sidebar .brand .title{letter-spacing:.2px;font-size:20px;font-weight:800}.sidebar .section-title{letter-spacing:.14em;text-transform:uppercase;color:var(--smc-sidebar-muted);padding:14px 18px 6px;font-size:11px;font-weight:800}.sidebar .section-title:first-child{padding-top:10px}.sidebar .nav-link{color:#ffffffe0;border:1px solid #0000;border-radius:12px;align-items:center;gap:12px;margin:3px 10px;padding:10px 12px;font-size:.925rem;font-weight:600;line-height:1.25;transition:background-color .15s,border-color .15s,color .15s;display:flex}.sidebar .nav-link:hover{background:var(--smc-sidebar-hover);color:#fff}.sidebar .nav-link.active{color:#fff;background:linear-gradient(90deg,#0d6efd59,#ffffff1f);border-color:#ffffff24;box-shadow:inset 3px 0 #0d6efdf2}.sidebar .nav-link i{text-align:center;opacity:.95;width:18px}.sidebar-footer{background:#0000002e;border-top:1px solid #ffffff1a;flex-shrink:0;margin-top:auto;padding:14px 14px 16px}.navbar{padding-top:.75rem;padding-bottom:.75rem;box-shadow:0 8px 24px #00000014}.live-clock{color:var(--smc-primary);background:var(--smc-surface);border:1px solid #0d6efd33;border-radius:999px;align-items:center;padding:6px 14px;font-size:.9rem;display:flex;box-shadow:0 4px 12px #0000000d}.sidebar .live-clock{color:#fff;width:100%;box-shadow:none;background:#ffffff1a;border:1px solid #ffffff24}.audit-log-meta-pre{white-space:pre-wrap;word-break:break-word;background:#0f172a0a;border:1px solid #0f172a14;border-radius:8px;max-height:240px;padding:.5rem .65rem;overflow:auto}#loadingOverlay{z-index:9999;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#ffffffd9;flex-direction:column;justify-content:center;align-items:center;width:100%;height:100%;display:none;position:fixed;top:0;left:0}@media print{.navbar,.btn,form,footer,#loadingOverlay,.sidebar,.offcanvas{display:none!important}body{-webkit-print-color-adjust:exact;background-color:#fff!important}}.offcanvas.sidebar{flex-direction:column;height:100vh;max-height:100vh;display:flex;overflow:hidden;width:var(--smc-sidebar-w)!important}.offcanvas.sidebar .offcanvas-header{flex-shrink:0}.offcanvas.sidebar .sidebar-offcanvas-body{flex-direction:column;flex:auto;min-height:0;display:flex;overflow:hidden}.cal-hero{background:radial-gradient(1200px 400px at 20% 0,#3b82f62e,#0000 60%),radial-gradient(900px 320px at 90% 10%,#10b98129,#0000 55%),linear-gradient(#ffffffe6,#ffffffc7);border:1px solid #0f172a14}.cal-mini-wrap{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}@media (width<=1399px){.cal-mini-wrap{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=767px){.cal-mini-wrap{grid-template-columns:1fr}}.cal-mini{border-radius:var(--smc-radius);animation:.45s both calIn;animation-delay:var(--delay,0s);background:#ffffffeb;border:1px solid #0f172a1a;transition:transform .18s,box-shadow .18s,border-color .18s;position:relative;overflow:hidden;transform:translateY(0);box-shadow:0 10px 24px #0f172a0f}.cal-mini:before{content:"";opacity:0;pointer-events:none;background:linear-gradient(90deg,#0000,#ffffff8c,#0000);width:60%;height:140%;transition:transform .65s,opacity .18s;position:absolute;top:-20%;left:-60%;transform:skew(-18deg)}.cal-mini:hover{border-color:#3b82f640;transform:translateY(-3px);box-shadow:0 16px 34px #0f172a1a}.cal-mini:hover:before{opacity:1;transform:translate(260%)skew(-18deg)}@keyframes calIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.cal-mini .hdr{background:linear-gradient(90deg,#3b82f61f,#10b9811a);border-bottom:1px solid #0f172a0f;justify-content:space-between;align-items:center;padding:8px 10px;display:flex}.cal-mini .hdr .m{color:#0f172ae0;font-weight:900}.cal-mini .hdr .chips{gap:6px;display:flex}.cal-mini .chip{border-radius:999px;padding:3px 8px;font-size:11px;font-weight:800}.cal-mini .chip.open{color:#b91c1c;background:#ef44441f;border:1px solid #ef444433}.cal-mini .chip.done{color:#047857;background:#10b9811f;border:1px solid #10b98133}.cal-legend{flex-wrap:wrap;gap:10px;display:flex}.cal-legend .item{color:#0f172a9e;align-items:center;gap:8px;font-size:12px;font-weight:800;display:flex}.cal-legend .sw{border-radius:999px;width:10px;height:10px}.cal-legend .sw.open{background:#ef4444}.cal-legend .sw.done{background:#10b981}.cal-legend .sw.today{background:#3b82f699;box-shadow:inset 0 0 0 2px #3b82f640}.cal-legend .sw.holiday{background:#a855f7}.task-mini th,.task-mini td{padding:3px 6px;font-size:12px}.task-mini th{color:#0f172a9e;font-weight:900}.task-mini td{vertical-align:top;height:34px;position:relative}.task-mini td:hover{cursor:pointer;background:#3b82f60f}.task-mini .day-num{color:#0f172ad1;font-weight:900}.task-mini td.is-today{border-radius:8px;box-shadow:inset 0 0 0 2px #3b82f68c}.task-mini td.has-task{background:linear-gradient(#3b82f614,#10b9810f)}@keyframes cal-open-cell-blink{0%,to{background-color:#dc354529}50%{background-color:#dc354570}}.task-mini td.in-month.has-open-task{animation:1s ease-in-out infinite cal-open-cell-blink;box-shadow:inset 0 0 0 1px #dc354547}.task-mini td.in-month.has-open-task .day-num{color:#842029;font-weight:900}.task-mini td.in-month.has-open-task .count{color:#842029;background:#dc354524}.task-mini td.has-open-task .dot.open{display:none}.task-mini td.in-month.has-open-task:hover{background-color:#dc35454d;animation-play-state:paused}.task-mini td.in-month.has-open-task.is-today{box-shadow:inset 0 0 0 2px #3b82f68c}@media (prefers-reduced-motion:reduce){.task-mini td.in-month.has-open-task{background-color:#dc354538;animation:none;box-shadow:inset 0 0 0 1px #dc354559}}.task-mini td.is-empty{pointer-events:none}.task-mini td.is-empty:hover{cursor:default;background:0 0}.task-mini th:first-child{color:#b91c1c}.task-mini td.is-sun.in-month{background:#ef44440a}.task-mini td.is-sun.in-month.has-task{background:linear-gradient(#ef444414,#10b9810d)}.task-mini td.is-holiday.in-month{background:#a855f70f}.task-mini td.is-holiday.in-month.has-task{background:linear-gradient(#a855f71a,#3b82f60f)}.task-mini td.is-sun.in-month.has-task.has-open-task,.task-mini td.is-holiday.in-month.has-task.has-open-task{background:#dc354529}.task-mini .count{color:#0f172ab3;background:#0f172a14;border-radius:999px;padding:1px 6px;font-size:11px;font-weight:900;position:absolute;top:4px;right:4px}.task-mini .dots{gap:5px;margin-top:6px;display:flex}.task-mini .dot{border-radius:999px;width:9px;height:9px}.task-mini .dot.open{background:#ef4444;animation:1.8s ease-in-out infinite pulse;position:relative;box-shadow:0 0 0 3px #ef44441f,0 8px 18px #ef44442e}.task-mini .dot.open:before,.task-mini .dot.open:after{content:"";opacity:0;border:2px solid #ef444447;border-radius:999px;position:absolute;inset:-12px;transform:scale(.6)}.task-mini .dot.open:before{animation:1.6s ease-out infinite ring}.task-mini .dot.open:after{animation:1.6s ease-out .55s infinite ring}.task-mini .dot.done{background:#10b981;animation:2.8s ease-in-out infinite doneFloat;box-shadow:0 0 0 3px #10b9811a}.task-mini .dot.holiday{background:#a855f7;box-shadow:0 0 0 3px #a855f71f}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@keyframes doneFloat{0%,to{transform:translateY(0)scale(1)}50%{transform:translateY(-1px)scale(1.08)}}@keyframes ring{0%{opacity:.9;transform:scale(.6)}to{opacity:0;transform:scale(1.15)}}.task-popover .popover-body{white-space:pre-line}.cal-status{align-items:center;gap:6px;display:inline-flex;transform:translateZ(0)}.cal-status.status-open{animation:2.2s ease-in-out infinite statusBreath}.cal-status.status-done{animation:.22s ease-out both statusPop;position:relative;overflow:hidden}.cal-status.status-done:after{content:"";pointer-events:none;background:linear-gradient(90deg,#0000,#ffffff8c,#0000);width:50%;height:180%;animation:.9s ease-out .22s both statusShine;position:absolute;top:-40%;left:-60%;transform:skew(-18deg)translate(-140%)}@keyframes statusBreath{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}@keyframes statusPop{0%{opacity:.75;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes statusShine{0%{opacity:0;transform:skew(-18deg)translate(-140%)}to{opacity:1;transform:skew(-18deg)translate(260%)}}.smc-modal-head{background:linear-gradient(90deg,#3b82f62e,#10b9811f);border-bottom:1px solid #0f172a14}.smc-icon-pill{background:#ffffffe6;border:1px solid #0f172a14;width:42px;height:42px}.smc-title-lg{font-size:18px}.smc-badge-holiday{color:#6b21a8!important;background:#a855f724!important;border:1px solid #a855f738!important}.smc-modal{z-index:1055;padding:24px 16px;position:fixed;inset:0;overflow-y:auto}.smc-modal__backdrop{background:#0f172a8c;position:fixed;inset:0}.smc-modal__dialog{border-radius:var(--smc-radius);box-shadow:var(--smc-shadow-2);background:#fff;border:1px solid #0f172a1a;margin:0 auto;position:relative;overflow:hidden}.smc-modal__dialog--sm{max-width:420px}.smc-modal__dialog--md{max-width:560px}.smc-modal__dialog--lg{max-width:720px}.smc-modal__dialog--xl{max-width:920px}.smc-modal__dialog--2xl{max-width:1100px}@media (width<=575px){.smc-modal{padding:16px 10px}}.smc-status{z-index:2;position:sticky;top:12px}.auth-bg{background:radial-gradient(1200px circle at 10% 10%, #0d6efd2e, transparent 55%), radial-gradient(900px circle at 90% 20%, #f59e0b29, transparent 55%), var(--smc-bg)}.auth-card{border:1px solid var(--smc-border);border-radius:var(--smc-radius);box-shadow:var(--smc-shadow-1)}.smc-brand{letter-spacing:.4px;font-weight:900}.text-muted-strong{color:var(--smc-muted)!important}.smc-divider{background:#0f172a1a;height:1px}.kpi-actual-panel{border-radius:var(--smc-radius-sm);background:#ffffffd9;border:1px solid #0f172a1a;padding:.75rem}.admin-kpi-table{table-layout:fixed;width:100%}.admin-kpi-table .kpi-col{width:22%}.admin-kpi-table .target-col{width:18%}.admin-kpi-table .full-col{width:8%}.admin-kpi-table .actual-col{width:37%}.admin-kpi-table .result-col{width:15%}.admin-kpi-table th,.admin-kpi-table td{word-break:break-word;vertical-align:top}.admin-kpi-table .form-control[type=file]{font-size:.78rem}.kpi-employee-list{max-height:min(70vh,640px);overflow-y:auto}.my-kpi-period-form .form-select{min-width:110px}.team-kpi-stat{border:1px solid var(--smc-border);border-radius:var(--smc-radius-sm);background:var(--smc-surface-2);height:100%;padding:.65rem .85rem}.team-kpi-stat-label{letter-spacing:.04em;text-transform:uppercase;color:var(--smc-muted);margin-bottom:.15rem;font-size:.7rem;font-weight:800}.team-kpi-stat-value{color:#0f172aeb;font-size:1.15rem;font-weight:800;line-height:1.2}.team-kpi-stat-note{color:var(--smc-muted);margin-top:.15rem;font-size:.72rem}.team-kpi-legend{color:var(--smc-muted);border-radius:0 var(--smc-radius-sm) var(--smc-radius-sm) 0;background:#1987540f;border-left:3px solid #198754d9;padding:.35rem 0 .35rem .65rem;font-size:.78rem}.team-kpi-table thead th{text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;font-size:.72rem}.team-kpi-person-header td{background:linear-gradient(90deg,#0d6efd1a,#0d6efd05);border-bottom:1px solid var(--smc-border)!important;box-shadow:none!important;padding-top:.85rem!important;padding-bottom:.85rem!important}.team-kpi-person-header .team-kpi-person-inner{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.team-kpi-avatar{color:#fff;background:linear-gradient(145deg,#0d6efd,#0b2a4a);border-radius:999px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:.95rem;font-weight:800;display:inline-flex;box-shadow:0 4px 12px #0d6efd40}.team-kpi-person-chips{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.team-kpi-person-chips .badge{font-size:.7rem;font-weight:700}.team-kpi-progress{background:#0f172a14;border-radius:999px;max-width:220px}.team-kpi-progress .progress-bar{border-radius:999px}.team-kpi-cell-kpi{border-left:3px solid #0d6efd59;padding-left:.65rem!important}.team-kpi-actual-form{border-radius:var(--smc-radius-sm);border:1px solid var(--smc-border);background:#ffffffd9;padding:.65rem .75rem}.team-kpi-readonly-actual{border-radius:var(--smc-radius-sm);background:#0f172a0a;border:1px dashed #0f172a1f;min-height:2.25rem;padding:.5rem .65rem;font-size:.9rem}.team-kpi-score-pill{color:#0d6efd;background:#0d6efd1f;border-radius:999px;justify-content:center;align-items:center;min-width:2.75rem;padding:.2rem .55rem;font-size:.85rem;font-weight:800;display:inline-flex}.team-kpi-actions{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.team-kpi-row-fail>td{background-color:#dc354512!important}.team-kpi-row-has-actual>td:first-child{box-shadow:inset 4px 0 #16a34af2}.team-kpi-person-header td{box-shadow:none!important}.team-kpi-empty{text-align:center;color:var(--smc-muted);padding:3rem 1.5rem}.team-kpi-empty-title{color:#0f172abf;margin-bottom:.35rem;font-weight:800}@keyframes personal-kpi-fail-blink{0%,to{background-color:#dc354529;box-shadow:inset 0 0 0 1px #dc354559}50%{background-color:#dc354570;box-shadow:inset 0 0 0 2px #dc35459e}}.smc-kpi-month-fail-blink,.personal-kpi-month-cell--fail{color:#842029;font-weight:700;animation:1s ease-in-out infinite personal-kpi-fail-blink}.personal-kpi-month-cell--selected:not(.smc-kpi-month-fail-blink):not(.personal-kpi-month-cell--fail){background-color:#0d6efd14}
