:root{--tk-slate-0:#ffffff;--tk-slate-50:#f8fafc;--tk-slate-100:#f1f5f9;--tk-slate-200:#e2e8f0;--tk-slate-300:#cbd5e1;--tk-slate-400:#94a3b8;--tk-slate-500:#64748b;--tk-slate-600:#475569;--tk-slate-700:#334155;--tk-slate-800:#1e293b;--tk-slate-900:#0f172a;--tk-brand-50:#f0fdfa;--tk-brand-100:#ccfbf1;--tk-brand-200:#99f6e4;--tk-brand-500:#14b8a6;--tk-brand-600:#0d9488;--tk-brand-700:#0f766e;--tk-brand-800:#115e59;--tk-info-50:#eff6ff;--tk-info-100:#dbeafe;--tk-info-200:#bfdbfe;--tk-info-500:#3b82f6;--tk-info-600:#2563eb;--tk-info-700:#1d4ed8;--tk-info-800:#1e40af;--tk-success-50:#f0fdf4;--tk-success-100:#dcfce7;--tk-success-200:#bbf7d0;--tk-success-500:#22c55e;--tk-success-600:#16a34a;--tk-success-700:#15803d;--tk-success-800:#166534;--tk-warning-50:#fffbeb;--tk-warning-100:#fef3c7;--tk-warning-200:#fde68a;--tk-warning-500:#f59e0b;--tk-warning-600:#d97706;--tk-warning-700:#b45309;--tk-warning-800:#92400e;--tk-danger-50:#fef2f2;--tk-danger-100:#fee2e2;--tk-danger-200:#fecaca;--tk-danger-500:#ef4444;--tk-danger-600:#dc2626;--tk-danger-700:#b91c1c;--tk-danger-800:#991b1b;--tk-violet-50:#f5f3ff;--tk-violet-100:#ede9fe;--tk-violet-200:#ddd6fe;--tk-violet-500:#8b5cf6;--tk-violet-600:#7c3aed;--tk-violet-700:#6d28d9;--tk-violet-800:#5b21b6;--tk-bg:var(--tk-slate-50);--tk-surface:#ffffff;--tk-surface-2:var(--tk-slate-50);--tk-surface-3:var(--tk-slate-100);--tk-border:var(--tk-slate-200);--tk-border-strong:var(--tk-slate-300);--tk-text:var(--tk-slate-900);--tk-text-2:var(--tk-slate-600);--tk-muted:var(--tk-slate-500);--tk-faint:var(--tk-slate-400);--tk-on-solid:#ffffff;--tk-brand:var(--tk-brand-600);--tk-brand-hover:var(--tk-brand-700);--tk-brand-soft:var(--tk-brand-50);--tk-brand-soft-2:var(--tk-brand-100);--tk-brand-line:var(--tk-brand-200);--tk-brand-text:var(--tk-brand-800);--tk-info:var(--tk-info-600);--tk-info-hover:var(--tk-info-700);--tk-info-soft:var(--tk-info-50);--tk-info-soft-2:var(--tk-info-100);--tk-info-line:var(--tk-info-200);--tk-info-text:var(--tk-info-800);--tk-success:var(--tk-success-600);--tk-success-hover:var(--tk-success-700);--tk-success-soft:var(--tk-success-50);--tk-success-soft-2:var(--tk-success-100);--tk-success-line:var(--tk-success-200);--tk-success-text:var(--tk-success-800);--tk-warning:var(--tk-warning-600);--tk-warning-hover:var(--tk-warning-700);--tk-warning-soft:var(--tk-warning-50);--tk-warning-soft-2:var(--tk-warning-100);--tk-warning-line:var(--tk-warning-200);--tk-warning-text:var(--tk-warning-800);--tk-danger:var(--tk-danger-600);--tk-danger-hover:var(--tk-danger-700);--tk-danger-soft:var(--tk-danger-50);--tk-danger-soft-2:var(--tk-danger-100);--tk-danger-line:var(--tk-danger-200);--tk-danger-text:var(--tk-danger-800);--tk-violet:var(--tk-violet-600);--tk-violet-hover:var(--tk-violet-700);--tk-violet-soft:var(--tk-violet-50);--tk-violet-soft-2:var(--tk-violet-100);--tk-violet-line:var(--tk-violet-200);--tk-violet-text:var(--tk-violet-800);--tk-neutral:var(--tk-slate-600);--tk-neutral-hover:var(--tk-slate-700);--tk-neutral-soft:var(--tk-slate-100);--tk-neutral-soft-2:var(--tk-slate-200);--tk-neutral-line:var(--tk-slate-200);--tk-neutral-text:var(--tk-slate-700);--tk-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--tk-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--tk-fs-2xs:10px;--tk-fs-xs:11px;--tk-fs-sm:12px;--tk-fs-md:13px;--tk-fs-base:14px;--tk-fs-lg:16px;--tk-fs-xl:18px;--tk-fs-2xl:20px;--tk-fs-3xl:24px;--tk-fs-4xl:32px;--tk-fw-regular:400;--tk-fw-medium:500;--tk-fw-semibold:600;--tk-fw-bold:700;--tk-lh-tight:1.25;--tk-lh:1.5;--tk-lh-relaxed:1.7;--tk-1:4px;--tk-2:8px;--tk-3:12px;--tk-4:16px;--tk-5:20px;--tk-6:24px;--tk-8:32px;--tk-10:40px;--tk-0h:2px;--tk-1h:6px;--tk-2h:10px;--tk-r-sm:4px;--tk-r-md:6px;--tk-r-lg:8px;--tk-r-xl:12px;--tk-r-full:999px;--tk-shadow-sm:0 1px 2px rgba(15,23,42,.06),0 1px 3px rgba(15,23,42,.06);--tk-shadow-md:0 4px 12px rgba(15,23,42,.08),0 2px 4px rgba(15,23,42,.04);--tk-shadow-lg:0 20px 48px rgba(15,23,42,.18),0 4px 12px rgba(15,23,42,.08);--tk-ring:0 0 0 3px rgba(13,148,136,.28);--tk-ring-danger:0 0 0 3px rgba(220,38,38,.25);--tk-overlay:rgba(15,23,42,.55);--tk-z-sticky:50;--tk-z-dropdown:100;--tk-z-overlay:1000;--tk-z-toast:2000;--tk-ease:cubic-bezier(.2,.8,.2,1);--tk-dur:.16s}[data-theme=dark]{--tk-bg:#0b1220;--tk-surface:#111a2b;--tk-surface-2:#0f1726;--tk-surface-3:#16213a;--tk-border:#22304a;--tk-border-strong:#2e3f5f;--tk-text:#e5ecf6;--tk-text-2:#b3c0d6;--tk-muted:#8a9bb8;--tk-faint:#5f7090;--tk-brand-soft:rgba(148,163,184,.08);--tk-brand-text:var(--tk-brand-200);--tk-brand-line:rgba(148,163,184,.2);--tk-info-soft:rgba(148,163,184,.08);--tk-info-text:var(--tk-info-200);--tk-info-line:rgba(148,163,184,.2);--tk-success-soft:rgba(148,163,184,.08);--tk-success-text:var(--tk-success-200);--tk-success-line:rgba(148,163,184,.2);--tk-warning-soft:rgba(148,163,184,.08);--tk-warning-text:var(--tk-warning-200);--tk-warning-line:rgba(148,163,184,.2);--tk-danger-soft:rgba(148,163,184,.08);--tk-danger-text:var(--tk-danger-200);--tk-danger-line:rgba(148,163,184,.2);--tk-violet-soft:rgba(148,163,184,.08);--tk-violet-text:var(--tk-violet-200);--tk-violet-line:rgba(148,163,184,.2)}@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}.tk,.tk *,.tk *:before,.tk *:after{box-sizing:border-box}.tk{font-family:var(--tk-font);font-size:var(--tk-fs-base);line-height:var(--tk-lh);color:var(--tk-text);-webkit-font-smoothing:antialiased}.tk :focus-visible{outline:none;box-shadow:var(--tk-ring);border-radius:var(--tk-r-sm)}.tk-sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.tk-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--tk-1h);min-height:32px;padding:0 var(--tk-3);border-radius:var(--tk-r-md);border:1px solid var(--tk-border-strong);background:var(--tk-surface);color:var(--tk-text);font:var(--tk-fw-semibold) var(--tk-fs-md)/1 var(--tk-font);cursor:pointer;text-decoration:none;white-space:nowrap;transition:background var(--tk-dur) var(--tk-ease),border-color var(--tk-dur) var(--tk-ease),box-shadow var(--tk-dur) var(--tk-ease),color var(--tk-dur) var(--tk-ease)}.tk-btn:hover{background:var(--tk-surface-3);border-color:var(--tk-slate-400)}.tk-btn:focus-visible{outline:none;box-shadow:var(--tk-ring)}.tk-btn:disabled,.tk-btn[aria-disabled=true]{opacity:.55;cursor:not-allowed;box-shadow:none}.tk-btn--primary{background:var(--tk-brand);border-color:var(--tk-brand);color:var(--tk-on-solid)}.tk-btn--primary:hover{background:var(--tk-brand-hover);border-color:var(--tk-brand-hover)}.tk-btn--success{background:var(--tk-success);border-color:var(--tk-success);color:var(--tk-on-solid)}.tk-btn--success:hover{background:var(--tk-success-hover);border-color:var(--tk-success-hover)}.tk-btn--danger{background:var(--tk-danger);border-color:var(--tk-danger);color:var(--tk-on-solid)}.tk-btn--danger:hover{background:var(--tk-danger-hover);border-color:var(--tk-danger-hover)}.tk-btn--danger:focus-visible{box-shadow:var(--tk-ring-danger)}.tk-btn--warning{background:var(--tk-warning);border-color:var(--tk-warning);color:var(--tk-on-solid)}.tk-btn--warning:hover{background:var(--tk-warning-hover);border-color:var(--tk-warning-hover)}.tk-btn--soft-danger{background:var(--tk-danger-soft);border-color:var(--tk-danger-line);color:var(--tk-danger-text)}.tk-btn--soft-danger:hover{background:var(--tk-danger-soft-2)}.tk-btn--ghost{background:transparent;border-color:transparent;color:var(--tk-text-2)}.tk-btn--ghost:hover{background:var(--tk-surface-3);border-color:transparent;color:var(--tk-text)}.tk-btn--link{background:none;border:none;min-height:0;padding:0;color:var(--tk-brand);font-weight:var(--tk-fw-semibold)}.tk-btn--link:hover{background:none;color:var(--tk-brand-hover);text-decoration:underline}.tk-btn--sm{min-height:26px;padding:0 var(--tk-2h);font-size:var(--tk-fs-sm);border-radius:var(--tk-r-sm)}.tk-btn--lg{min-height:40px;padding:0 var(--tk-4);font-size:var(--tk-fs-base)}.tk-btn--block{display:flex;width:100%}.tk-btn--icon{padding:0;width:32px}.tk-btn--icon.tk-btn--sm{width:26px}.tk-btn.is-busy{position:relative;color:transparent!important;pointer-events:none}.tk-btn.is-busy:after{content:"";position:absolute;width:14px;height:14px;border-radius:50%;border:2px solid currentColor;border-color:rgba(255,255,255,.9) rgba(255,255,255,.9) transparent transparent;animation:tk-spin .7s linear infinite}.tk-btn:not(.tk-btn--primary):not(.tk-btn--success):not(.tk-btn--danger):not(.tk-btn--warning).is-busy:after{border-color:var(--tk-slate-500) var(--tk-slate-500) transparent transparent}.tk-btn-row{display:flex;gap:var(--tk-2);justify-content:flex-end;flex-wrap:wrap}.tk-badge{display:inline-flex;align-items:center;gap:var(--tk-1);padding:2px var(--tk-2);border-radius:var(--tk-r-full);font-size:var(--tk-fs-xs);font-weight:var(--tk-fw-semibold);line-height:1.5;white-space:nowrap;border:1px solid var(--tk-neutral-line);background:var(--tk-neutral-soft-2);color:var(--tk-neutral-text)}.tk-badge--brand{background:var(--tk-brand-soft-2);border-color:var(--tk-brand-line);color:var(--tk-brand-text)}.tk-badge--info{background:var(--tk-info-soft-2);border-color:var(--tk-info-line);color:var(--tk-info-text)}.tk-badge--success{background:var(--tk-success-soft-2);border-color:var(--tk-success-line);color:var(--tk-success-text)}.tk-badge--warning{background:var(--tk-warning-soft-2);border-color:var(--tk-warning-line);color:var(--tk-warning-text)}.tk-badge--danger{background:var(--tk-danger-soft-2);border-color:var(--tk-danger-line);color:var(--tk-danger-text)}.tk-badge--violet{background:var(--tk-violet-soft-2);border-color:var(--tk-violet-line);color:var(--tk-violet-text)}.tk-badge--neutral{background:var(--tk-neutral-soft-2);border-color:var(--tk-neutral-line);color:var(--tk-neutral-text)}.tk-badge--solid-brand{background:var(--tk-brand);border-color:var(--tk-brand);color:var(--tk-on-solid)}.tk-badge--solid-info{background:var(--tk-info);border-color:var(--tk-info);color:var(--tk-on-solid)}.tk-badge--solid-success{background:var(--tk-success);border-color:var(--tk-success);color:var(--tk-on-solid)}.tk-badge--solid-warning{background:var(--tk-warning);border-color:var(--tk-warning);color:var(--tk-on-solid)}.tk-badge--solid-danger{background:var(--tk-danger);border-color:var(--tk-danger);color:var(--tk-on-solid)}.tk-badge--solid-violet{background:var(--tk-violet);border-color:var(--tk-violet);color:var(--tk-on-solid)}.tk-badge--solid-neutral{background:var(--tk-neutral);border-color:var(--tk-neutral);color:var(--tk-on-solid)}.tk-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--tk-slate-400);flex-shrink:0}.tk-dot--brand{background:var(--tk-brand)}.tk-dot--info{background:var(--tk-info)}.tk-dot--success{background:var(--tk-success)}.tk-dot--warning{background:var(--tk-warning)}.tk-dot--danger{background:var(--tk-danger)}.tk-dot--violet{background:var(--tk-violet)}.tk-dot--neutral{background:var(--tk-slate-400)}.tk-card{background:var(--tk-surface);border:1px solid var(--tk-border);border-radius:var(--tk-r-lg);box-shadow:var(--tk-shadow-sm);padding:var(--tk-4)}.tk-card--flush{padding:0}.tk-card__header{display:flex;align-items:center;justify-content:space-between;gap:var(--tk-3);margin-bottom:var(--tk-3)}.tk-card__title{margin:0;font-size:var(--tk-fs-base);font-weight:var(--tk-fw-semibold);color:var(--tk-text);display:flex;align-items:center;gap:var(--tk-2)}.tk-card__sub{font-size:var(--tk-fs-sm);color:var(--tk-muted)}.tk-card--brand{background:var(--tk-brand-soft);border-color:var(--tk-brand-line)}.tk-card--info{background:var(--tk-info-soft);border-color:var(--tk-info-line)}.tk-card--success{background:var(--tk-success-soft);border-color:var(--tk-success-line)}.tk-card--warning{background:var(--tk-warning-soft);border-color:var(--tk-warning-line)}.tk-card--danger{background:var(--tk-danger-soft);border-color:var(--tk-danger-line)}.tk-card--violet{background:var(--tk-violet-soft);border-color:var(--tk-violet-line)}.tk-card--neutral{background:var(--tk-neutral-soft);border-color:var(--tk-neutral-line)}.tk-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.tk-table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--tk-fs-sm)}.tk-table th{text-align:left;font-weight:var(--tk-fw-semibold);color:var(--tk-text-2);background:var(--tk-surface-2);border-bottom:1px solid var(--tk-border);padding:var(--tk-2) var(--tk-2h);white-space:nowrap;font-size:var(--tk-fs-xs);text-transform:none}.tk-table td{padding:var(--tk-2) var(--tk-2h);border-bottom:1px solid var(--tk-slate-100);vertical-align:middle;color:var(--tk-text)}.tk-table tbody tr:hover td{background:var(--tk-surface-2)}.tk-table tbody tr:last-child td{border-bottom:none}.tk-table .tk-num,.tk-table td.num{text-align:right;font-variant-numeric:tabular-nums}.tk-table--compact td,.tk-table--compact th{padding:var(--tk-1h) var(--tk-2)}.tk-field{display:flex;flex-direction:column;gap:var(--tk-1);margin-bottom:var(--tk-3)}.tk-label{font-size:var(--tk-fs-sm);font-weight:var(--tk-fw-semibold);color:var(--tk-text-2)}.tk-req{color:var(--tk-danger);margin-left:2px}.tk-input,.tk-select,.tk-textarea{width:100%;min-height:34px;padding:var(--tk-1h) var(--tk-2h);border:1px solid var(--tk-border-strong);border-radius:var(--tk-r-md);background:var(--tk-surface);color:var(--tk-text);font:var(--tk-fs-md)/1.4 var(--tk-font);transition:border-color var(--tk-dur) var(--tk-ease),box-shadow var(--tk-dur) var(--tk-ease)}.tk-textarea{min-height:80px;resize:vertical}.tk-input:focus,.tk-select:focus,.tk-textarea:focus{outline:none;border-color:var(--tk-brand);box-shadow:var(--tk-ring)}.tk-input:disabled,.tk-select:disabled,.tk-textarea:disabled{background:var(--tk-surface-3);color:var(--tk-muted);cursor:not-allowed}.tk-input[aria-invalid=true],.tk-select[aria-invalid=true],.tk-textarea[aria-invalid=true]{border-color:var(--tk-danger);box-shadow:var(--tk-ring-danger)}.tk-help{font-size:var(--tk-fs-xs);color:var(--tk-muted)}.tk-error-text{font-size:var(--tk-fs-xs);color:var(--tk-danger)}.tk-check{display:inline-flex;align-items:center;gap:var(--tk-2);font-size:var(--tk-fs-md);cursor:pointer}.tk-check input{width:16px;height:16px;accent-color:var(--tk-brand);margin:0}.tk-tabs{display:flex;gap:var(--tk-1);border-bottom:1px solid var(--tk-border);overflow-x:auto;scrollbar-width:thin}.tk-tab{appearance:none;background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;padding:var(--tk-2) var(--tk-3);font:var(--tk-fw-semibold) var(--tk-fs-md)/1.2 var(--tk-font);color:var(--tk-muted);cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:var(--tk-1h);border-radius:0}.tk-tab:hover{color:var(--tk-text)}.tk-tab.is-active,.tk-tab[aria-selected=true]{color:var(--tk-brand);border-bottom-color:var(--tk-brand)}.tk-tab__count{display:inline-block;min-width:18px;padding:0 5px;border-radius:var(--tk-r-full);background:var(--tk-slate-100);color:var(--tk-text-2);font-size:var(--tk-fs-2xs);line-height:18px;text-align:center}.tk-tab.is-active .tk-tab__count{background:var(--tk-brand-soft-2);color:var(--tk-brand-text)}.tk-overlay{position:fixed;inset:0;background:var(--tk-overlay);display:flex;align-items:center;justify-content:center;padding:var(--tk-4);z-index:var(--tk-z-overlay);animation:tk-fade var(--tk-dur) var(--tk-ease)}.tk-dialog{background:var(--tk-surface);border-radius:var(--tk-r-xl);box-shadow:var(--tk-shadow-lg);width:100%;max-width:480px;max-height:calc(100vh - 32px);display:flex;flex-direction:column;overflow:hidden;animation:tk-pop var(--tk-dur) var(--tk-ease)}.tk-dialog--sm{max-width:380px}.tk-dialog--lg{max-width:720px}.tk-dialog--xl{max-width:960px}.tk-dialog__header{display:flex;align-items:center;justify-content:space-between;gap:var(--tk-3);padding:var(--tk-4) var(--tk-5);border-bottom:1px solid var(--tk-border)}.tk-dialog__title{margin:0;font-size:var(--tk-fs-lg);font-weight:var(--tk-fw-semibold);color:var(--tk-text)}.tk-dialog__close{appearance:none;border:none;background:none;width:32px;height:32px;border-radius:var(--tk-r-md);color:var(--tk-muted);font-size:20px;line-height:1;cursor:pointer}.tk-dialog__close:hover{background:var(--tk-surface-3);color:var(--tk-text)}.tk-dialog__body{padding:var(--tk-5);overflow-y:auto;font-size:var(--tk-fs-md);color:var(--tk-text);line-height:var(--tk-lh)}.tk-dialog__footer{display:flex;gap:var(--tk-2);justify-content:flex-end;padding:var(--tk-3) var(--tk-5);border-top:1px solid var(--tk-border);background:var(--tk-surface-2)}.tk-dialog__message{white-space:pre-line;margin:0}.tk-alert{display:flex;gap:var(--tk-2h);align-items:flex-start;padding:var(--tk-2h) var(--tk-3);border-radius:var(--tk-r-md);border:1px solid var(--tk-neutral-line);background:var(--tk-neutral-soft);color:var(--tk-neutral-text);font-size:var(--tk-fs-md);line-height:var(--tk-lh)}.tk-alert--brand{background:var(--tk-brand-soft);border-color:var(--tk-brand-line);color:var(--tk-brand-text)}.tk-alert--info{background:var(--tk-info-soft);border-color:var(--tk-info-line);color:var(--tk-info-text)}.tk-alert--success{background:var(--tk-success-soft);border-color:var(--tk-success-line);color:var(--tk-success-text)}.tk-alert--warning{background:var(--tk-warning-soft);border-color:var(--tk-warning-line);color:var(--tk-warning-text)}.tk-alert--danger{background:var(--tk-danger-soft);border-color:var(--tk-danger-line);color:var(--tk-danger-text)}.tk-alert--violet{background:var(--tk-violet-soft);border-color:var(--tk-violet-line);color:var(--tk-violet-text)}.tk-alert--neutral{background:var(--tk-neutral-soft);border-color:var(--tk-neutral-line);color:var(--tk-neutral-text)}.tk-alert__title{font-weight:var(--tk-fw-semibold);display:block;margin-bottom:2px}.tk-toasts{position:fixed;right:var(--tk-4);bottom:var(--tk-4);z-index:var(--tk-z-toast);display:flex;flex-direction:column;gap:var(--tk-2);max-width:min(420px,calc(100vw - 32px));pointer-events:none}.tk-toast{pointer-events:auto;display:flex;gap:var(--tk-2h);align-items:flex-start;padding:var(--tk-3) var(--tk-3) var(--tk-3) var(--tk-4);border-radius:var(--tk-r-lg);background:var(--tk-slate-900);color:#fff;box-shadow:var(--tk-shadow-lg);font:var(--tk-fs-md)/1.45 var(--tk-font);border-left:4px solid var(--tk-slate-500);animation:tk-toast-in .2s var(--tk-ease)}.tk-toast--success{border-left-color:var(--tk-success-500)}.tk-toast--danger{border-left-color:var(--tk-danger-500)}.tk-toast--warning{border-left-color:var(--tk-warning-500)}.tk-toast--info{border-left-color:var(--tk-info-500)}.tk-toast--brand{border-left-color:var(--tk-brand-500)}.tk-toast__body{flex:1;white-space:pre-line;word-break:break-word}.tk-toast__close{appearance:none;background:none;border:none;color:#fff9;cursor:pointer;font-size:18px;line-height:1;padding:0 2px}.tk-toast__close:hover{color:#fff}.tk-toast.is-leaving{opacity:0;transform:translateY(6px);transition:opacity .18s,transform .18s}.tk-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--tk-2);padding:var(--tk-6) var(--tk-4);text-align:center;color:var(--tk-muted);font-size:var(--tk-fs-md)}.tk-empty__icon{color:var(--tk-faint)}.tk-loading{display:flex;align-items:center;justify-content:center;gap:var(--tk-2);padding:var(--tk-5);color:var(--tk-muted);font-size:var(--tk-fs-md)}.tk-spinner{width:16px;height:16px;border-radius:50%;border:2px solid var(--tk-slate-200);border-top-color:var(--tk-brand);animation:tk-spin .7s linear infinite;flex-shrink:0}.tk-skeleton{display:block;height:12px;border-radius:var(--tk-r-sm);background:linear-gradient(90deg,var(--tk-slate-100),var(--tk-slate-200),var(--tk-slate-100));background-size:200% 100%;animation:tk-shimmer 1.2s ease-in-out infinite}.tk-state-error{display:flex;align-items:center;gap:var(--tk-2);padding:var(--tk-3);border-radius:var(--tk-r-md);background:var(--tk-danger-soft);border:1px solid var(--tk-danger-line);color:var(--tk-danger-text);font-size:var(--tk-fs-md)}.tk-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--tk-3)}.tk-stat{background:var(--tk-surface);border:1px solid var(--tk-border);border-radius:var(--tk-r-lg);padding:var(--tk-3)}.tk-stat__label{font-size:var(--tk-fs-xs);font-weight:var(--tk-fw-semibold);color:var(--tk-muted);text-transform:uppercase;letter-spacing:.04em}.tk-stat__value{font-size:var(--tk-fs-3xl);font-weight:var(--tk-fw-bold);color:var(--tk-text);font-variant-numeric:tabular-nums;line-height:1.2;margin-top:var(--tk-1)}.tk-stat__sub{font-size:var(--tk-fs-xs);color:var(--tk-muted);margin-top:2px}.tk-avatar{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--tk-brand-soft-2);color:var(--tk-brand-text);font-weight:var(--tk-fw-semibold);font-size:var(--tk-fs-sm);overflow:hidden;flex-shrink:0}.tk-avatar img{width:100%;height:100%;object-fit:cover}.tk-avatar--lg{width:56px;height:56px;font-size:var(--tk-fs-xl)}.tk-kbd{font:var(--tk-fs-xs) var(--tk-mono);padding:1px 5px;border:1px solid var(--tk-border-strong);border-bottom-width:2px;border-radius:var(--tk-r-sm);background:var(--tk-surface-2)}.tk-divider{border:none;border-top:1px solid var(--tk-border);margin:var(--tk-3) 0}.tk-link{color:var(--tk-brand);text-decoration:none;font-weight:var(--tk-fw-semibold)}.tk-link:hover{text-decoration:underline}.tk-i{width:14px;height:14px;display:inline-block;vertical-align:-2px;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.tk-i--sm{width:12px;height:12px}.tk-i--md{width:16px;height:16px}.tk-i--lg{width:20px;height:20px}.tk-i--xl{width:32px;height:32px}.tk-tone-brand{color:var(--tk-brand)}.tk-tone-info{color:var(--tk-info)}.tk-tone-success{color:var(--tk-success)}.tk-tone-warning{color:var(--tk-warning)}.tk-tone-danger{color:var(--tk-danger)}.tk-tone-violet{color:var(--tk-violet)}.tk-tone-neutral{color:var(--tk-text-2)}.tk-row{display:flex;align-items:center;gap:var(--tk-2);flex-wrap:wrap}.tk-row--between{justify-content:space-between}.tk-stack{display:flex;flex-direction:column;gap:var(--tk-2)}.tk-grow{flex:1;min-width:0}.tk-muted{color:var(--tk-muted)}.tk-text-2{color:var(--tk-text-2)}.tk-faint{color:var(--tk-faint)}.tk-nums{font-variant-numeric:tabular-nums}.tk-mono{font-family:var(--tk-mono)}.tk-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tk-fs-2xs{font-size:var(--tk-fs-2xs)}.tk-fs-xs{font-size:var(--tk-fs-xs)}.tk-fs-sm{font-size:var(--tk-fs-sm)}.tk-fs-md{font-size:var(--tk-fs-md)}.tk-fs-base{font-size:var(--tk-fs-base)}.tk-fs-lg{font-size:var(--tk-fs-lg)}.tk-strong{font-weight:var(--tk-fw-semibold)}.tk-hidden{display:none!important}@keyframes tk-spin{to{transform:rotate(360deg)}}@keyframes tk-fade{0%{opacity:0}to{opacity:1}}@keyframes tk-pop{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}@keyframes tk-toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes tk-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}body.tk-page{margin:0;background:var(--tk-bg);font-family:var(--tk-font);color:var(--tk-text)}.tk-page__bar{background:var(--tk-slate-900);color:#fff;padding:var(--tk-3) var(--tk-5);display:flex;align-items:center;gap:var(--tk-2h);font-weight:var(--tk-fw-semibold);font-size:var(--tk-fs-base)}.tk-page__brandmark{width:22px;height:22px;border-radius:6px;background:var(--tk-brand);display:inline-flex;align-items:center;justify-content:center}.tk-page__main{max-width:880px;margin:0 auto;padding:var(--tk-6) var(--tk-4) var(--tk-10)}.tk-page__foot{text-align:center;color:var(--tk-faint);font-size:var(--tk-fs-xs);padding:var(--tk-6) var(--tk-4)}:where(.ttp) *{margin:0;padding:0;box-sizing:border-box}.ttp{--primary:var(--tk-brand-600);--secondary:var(--tk-brand-700);--accent:var(--tk-brand-500);--bg:var(--tk-slate-50);--card:var(--tk-surface);--text:var(--tk-slate-800);--muted:var(--tk-slate-500);--success:var(--tk-success-700);--warning:var(--tk-warning-500);--error:var(--tk-danger-500);--border:var(--tk-slate-200);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}.ttp .login{min-height:70vh;display:flex;align-items:center;justify-content:center;padding:16px;background:linear-gradient(135deg,var(--primary),var(--secondary));border-radius:12px}.ttp .login-card{background:var(--card);border-radius:16px;padding:28px 24px;width:100%;max-width:340px;box-shadow:0 20px 60px #0000004d;text-align:center}.ttp .login h1{font-size:20px;color:var(--primary);margin-bottom:4px}.ttp .login p{color:var(--muted);margin-bottom:20px;font-size:13px}.ttp .login input{width:100%;padding:14px;font-size:20px;border:2px solid var(--border);border-radius:10px;text-align:center;letter-spacing:4px;margin-bottom:14px}.ttp .login input:focus{outline:none;border-color:var(--accent)}.ttp .login button{width:100%;padding:14px;font-size:15px;font-weight:600;color:var(--tk-on-solid);background:var(--accent);border:none;border-radius:10px;cursor:pointer;-webkit-appearance:none}.ttp .login button:active{transform:scale(.98)}.ttp .login button:disabled{background:var(--muted);cursor:wait}.ttp .login-error{color:var(--error);margin-top:10px;font-size:13px;display:none}.ttp .dash{display:none}.ttp .header{background:var(--primary);color:var(--tk-on-solid);padding:10px 14px;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;border-radius:12px 12px 0 0;position:sticky;top:0;z-index:100}.ttp .header-left{display:flex;align-items:center;gap:10px}.ttp .header h1{font-size:16px;font-weight:600}.ttp .header-right{display:flex;align-items:center;gap:8px}.ttp .user-name{font-size:12px;opacity:.9}.ttp .admin-badge,.ttp .master-badge{padding:2px 8px;border-radius:12px;font-size:10px;font-weight:600}.ttp .admin-badge{background:var(--warning);color:var(--tk-slate-900)}.ttp .master-badge{background:var(--tk-danger-500);color:var(--tk-on-solid)}.ttp .logout-btn{background:rgba(255,255,255,.2);color:var(--tk-on-solid);border:none;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:12px;-webkit-appearance:none}.ttp .content{padding:12px;max-width:1400px;margin:0 auto}.ttp .clocks{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin-bottom:14px}.ttp .clock{background:var(--card);border-radius:10px;padding:12px;box-shadow:0 1px 3px #00000014;text-align:center}.ttp .clock.main{background:var(--primary);color:var(--tk-on-solid);padding:16px}.ttp .clock-city{font-size:11px;color:var(--muted);margin-bottom:2px}.ttp .clock.main .clock-city{color:#ffffffb3}.ttp .clock-time{font-size:20px;font-weight:700;font-family:ui-monospace,monospace}.ttp .clock.main .clock-time{font-size:32px}.ttp .clock-date{font-size:10px;color:var(--muted);margin-top:2px}.ttp .clock.main .clock-date{color:#fff9}.ttp .grid{display:grid;grid-template-columns:minmax(0,1fr);gap:14px}.ttp .grid.full-width{grid-template-columns:minmax(0,1fr)}.ttp .actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.ttp .action-btn .icon{font-size:18px;line-height:1;display:flex}.ttp .action-btn .icon .tk-i{width:20px;height:20px}.ttp .btn-in{background:var(--tk-success-200);color:var(--tk-success-800)}.ttp .btn-out{background:var(--tk-danger-100);color:var(--tk-danger-800)}.ttp .btn-break{background:var(--tk-warning-100);color:var(--tk-warning-800)}.ttp .status-box{text-align:center;padding:10px;margin-top:10px;border-radius:8px;background:var(--bg)}.ttp .status-label{font-size:10px;color:var(--muted)}.ttp .status-val{font-size:15px;font-weight:600;margin-top:3px}.ttp .status-working{color:var(--success)}.ttp .status-break{color:var(--warning)}.ttp .status-out{color:var(--muted)}.ttp .stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.ttp .stat{text-align:center;padding:10px 6px;background:var(--bg);border-radius:8px}.ttp .stat-val{font-size:18px;font-weight:700;color:var(--primary)}.ttp .stat-val.warn{color:var(--warning)}.ttp .stat-val.bad{color:var(--error)}.ttp .stat-val.good{color:var(--success)}.ttp .stat-label{font-size:9px;color:var(--muted);margin-top:2px}.ttp .team-filter{padding:4px 8px;font-size:11px;border:1px solid var(--border);border-radius:4px}.ttp .country-filters{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.ttp .country-checkbox{display:flex;align-items:center;gap:3px;font-size:10px;cursor:pointer;padding:4px 6px;background:var(--bg);border-radius:4px;border:1px solid var(--border)}.ttp .country-checkbox input{margin:0;width:12px;height:12px}.ttp .country-checkbox.checked{background:var(--accent);color:var(--tk-on-solid);border-color:var(--accent)}.ttp .team-list{max-height:240px;overflow-y:auto;-webkit-overflow-scrolling:touch}.ttp .team-member{display:flex;align-items:center;padding:8px 6px;border-bottom:1px solid var(--border)}.ttp .team-member:last-child{border-bottom:none}.ttp .member-name{flex:1;font-size:12px;font-weight:500}.ttp .member-status{font-size:10px;color:var(--muted)}.ttp .weekly{display:flex;flex-direction:column;gap:4px}.ttp .day-row{display:flex;align-items:center;padding:6px 8px;background:var(--bg);border-radius:6px;font-size:12px}.ttp .day-name{width:60px;font-weight:500}.ttp .day-hours{flex:1;text-align:right;font-family:ui-monospace,monospace}.ttp .perf-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-bottom:10px}.ttp .perf-card{background:var(--bg);border-radius:8px;padding:10px;text-align:center}.ttp .perf-val{font-size:18px;font-weight:700;color:var(--primary)}.ttp .perf-label{font-size:9px;color:var(--muted);margin-top:1px}.ttp .trend-up{color:var(--success)}.ttp .trend-down{color:var(--error)}.ttp .trend-stable{color:var(--muted)}.ttp .achievement{display:inline-flex;align-items:center;gap:4px;background:linear-gradient(135deg,var(--tk-violet-50),var(--tk-violet-100));border:1px solid var(--tk-violet-200);border-radius:16px;padding:4px 10px;font-size:11px;margin:3px}.ttp .request-tab .tab-count{margin-left:4px;padding:1px 5px;background:rgba(0,0,0,.15);border-radius:8px;font-size:9px}.ttp .request-tab.active .tab-count{background:rgba(255,255,255,.25)}.ttp .my-request.addressed{border-left:3px solid var(--muted);opacity:.85}.ttp .my-request-actions{display:flex;gap:8px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--border)}.ttp .my-request.pending{border-left:4px solid var(--tk-warning-500);background:linear-gradient(135deg,var(--tk-warning-50) 0%,var(--bg) 100%)}.ttp .lock-indicator{font-size:10px;color:var(--tk-violet-500);margin-left:6px}.ttp .staff-editing-badge{background:var(--tk-violet-200);color:var(--tk-violet-800);font-size:9px;padding:2px 6px;border-radius:8px;margin-left:6px}.ttp .admin-reviewing-badge{background:var(--tk-danger-100);color:var(--tk-danger-800);font-size:9px;padding:2px 6px;border-radius:8px}.ttp .pending-req.locked-by-staff{opacity:.6;border-left-color:var(--tk-violet-500)}.ttp .addressed-section{margin-top:16px;padding-top:12px;border-top:1px dashed var(--border)}.ttp .tab-panel{display:none}.ttp .tab-panel.active{display:block}.ttp .admin-table tr:hover{background:var(--bg)}.ttp th.sortable{cursor:pointer;user-select:none}.ttp th.sortable:hover{background:var(--tk-slate-200)}.ttp th.sortable .sort-icon{margin-left:4px;font-size:10px;color:var(--tk-slate-500)}.ttp #ttpTimelogEditModal{display:none;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:1001;align-items:center;justify-content:center;padding:16px}.ttp #ttpTimelogEditModal.show{display:flex}.ttp .hidden{display:none!important}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.ttp .admin-toggle:hover{background:var(--tk-success-800)}.ttp .admin-toggle:active{transform:scale(.99);transition-duration:.05s}.ttp .master-toggle:hover{background:var(--tk-danger-700)}.ttp .master-toggle:active{transform:scale(.99);transition-duration:.05s}.ttp .logout-btn:hover{background:rgba(255,255,255,.35)}.ttp .logout-btn:active{transform:scale(.95);transition-duration:.05s}.ttp .master-btn:active{transform:scale(.97);transition-duration:.05s}.ttp .progression-actions button:hover{filter:brightness(1.1);transform:translateY(-1px)}.ttp .progression-actions button:active{transform:scale(.97);transition-duration:.05s}.ttp button:disabled,.ttp .btn-submit:disabled,.ttp .btn-cancel:disabled,.ttp .btn-approve:disabled,.ttp .btn-deny:disabled{opacity:.5;cursor:not-allowed;pointer-events:none;filter:grayscale(30%)}.ttp .btn-submit,.ttp .btn-cancel,.ttp .btn-danger,.ttp .btn-approve,.ttp .btn-deny,.ttp .btn-primary,.ttp .filter-btn,.ttp .export-btn,.ttp .logout-btn,.ttp .admin-toggle,.ttp .master-toggle,.ttp .action-btn,.ttp .tab-btn,.ttp .admin-tab,.ttp .request-tab,.ttp .master-btn,.ttp .progression-actions button,.ttp .calendar-nav button,.ttp .compare-chip{transition:all .15s ease}.ttp button:focus-visible,.ttp a:focus-visible,.ttp input:focus-visible,.ttp select:focus-visible,.ttp textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 4px #14b8a633}.ttp button:focus:not(:focus-visible){outline:none}.ttp .btn-loading:after{content:"";position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;border:2px solid rgba(255,255,255,.3);border-top-color:var(--tk-surface);border-radius:50%;animation:btn-spin .6s linear infinite}@keyframes btn-spin{to{transform:rotate(360deg)}}.ttp .required-marker{color:var(--tk-danger-600)}.ttp .admin-badge.badge-purple{background:var(--tk-violet-500)}.ttp .admin-badge.badge-warning{background:var(--tk-warning-500)}.ttp .admin-table tr:not(:first-child):hover,.ttp .table tr:not(:first-child):hover{background:rgba(20,184,166,.04)}@media (prefers-reduced-motion:reduce){.ttp *,.ttp *:before,.ttp *:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}@media (min-width:600px){.ttp .clocks{grid-template-columns:repeat(2,minmax(0,1fr))}.ttp .clock.main{grid-column:span 2}.ttp .content{padding:16px}}@media (min-width:900px){.ttp .clocks{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1fr)}.ttp .clock.main{grid-column:span 1;grid-row:span 2;display:flex;flex-direction:column;justify-content:center}.ttp .grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.ttp .header{padding:12px 20px}.ttp .header h1{font-size:18px}.ttp .clock-time{font-size:24px}.ttp .clock.main .clock-time{font-size:36px}}.ttp .accommodation-bar{flex:1;height:8px;background:var(--tk-surface);border-radius:4px;margin:0 10px;overflow:hidden}.ttp .accommodation-fill{height:100%;background:var(--tk-brand-600);border-radius:4px}.ttp .calendar-nav{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.ttp .calendar-nav button{background:var(--bg);border:1px solid var(--border);padding:6px 12px;border-radius:6px;cursor:pointer;font-size:12px}.ttp .calendar-nav button:hover{background:var(--border)}.ttp .calendar-title{font-weight:600;font-size:14px}.ttp .tz-toggle{display:flex;gap:4px}.ttp .calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.ttp .calendar-header{text-align:center;font-size:11px;font-weight:600;color:var(--muted);padding:8px 0}.ttp .calendar-day{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:6px;font-size:12px;position:relative;cursor:pointer}.ttp .calendar-day:hover{opacity:.8}.ttp .calendar-day.empty{background:transparent}.ttp .calendar-day.green{background:var(--tk-success-200);color:var(--tk-success-800)}.ttp .calendar-day.yellow,.ttp .calendar-day.orange{background:var(--tk-warning-100);color:var(--tk-warning-800)}.ttp .calendar-day.red{background:var(--tk-danger-100);color:var(--tk-danger-800)}.ttp .calendar-day.gray{background:var(--tk-slate-100);color:var(--tk-slate-500)}.ttp .calendar-day.blue{background:var(--tk-info-100);color:var(--tk-info-800)}.ttp .calendar-day.today{box-shadow:0 0 0 2px var(--tk-slate-700);z-index:1}.ttp .calendar-day.purple{background:var(--tk-violet-200);color:var(--tk-violet-800)}.ttp .calendar-day .day-num{font-weight:600}.ttp .calendar-day .day-hours{font-size:9px;margin-top:2px}.ttp .calendar-legend{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;font-size:10px}.ttp .legend-item{display:flex;align-items:center;gap:4px}.ttp .legend-dot{width:12px;height:12px;border-radius:3px}.ttp .admin-section{display:none;margin-top:16px}.ttp .admin-section.show{display:block}.ttp .admin-toggle{width:100%;padding:12px;background:var(--secondary);color:var(--tk-on-solid);border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;position:relative}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:.8}}.ttp .notification-banner{display:none;background:var(--tk-danger-500);color:var(--tk-on-solid);padding:12px 16px;border-radius:8px;margin-bottom:16px;font-size:14px;font-weight:500;align-items:center;gap:12px}.ttp .notification-banner.show{display:flex}.ttp .notification-banner button{background:var(--tk-surface);color:var(--tk-danger-500);border:none;padding:6px 12px;border-radius:4px;cursor:pointer;font-weight:600;font-size:12px}.ttp .notification-banner .dismiss{background:transparent;color:var(--tk-on-solid);font-size:18px;padding:0 8px;opacity:.8}.ttp .notification-banner .dismiss:hover{opacity:1}.ttp .master-section{display:none;margin-top:16px}.ttp .master-section.show{display:block}.ttp .master-toggle{width:100%;padding:12px;background:var(--tk-danger-500);color:var(--tk-on-solid);border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600}.ttp .master-content{display:none;margin-top:12px;background:var(--tk-danger-50);border:2px solid var(--tk-danger-500);border-radius:8px;padding:16px}.ttp .master-content.show{display:block}.ttp .master-warning{background:var(--tk-danger-100);color:var(--tk-danger-800);padding:10px;border-radius:6px;margin-bottom:12px;font-size:12px}.ttp .master-btns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.ttp .master-btn{padding:12px;background:var(--tk-surface);border:2px solid var(--tk-danger-500);color:var(--tk-danger-700);border-radius:6px;cursor:pointer;font-weight:600;font-size:12px}.ttp .master-btn:hover{background:var(--tk-danger-100)}.ttp .master-btn.danger{background:var(--tk-danger-700);color:var(--tk-on-solid);border-color:var(--tk-danger-700)}.ttp .payroll-section{display:none;margin-top:16px}.ttp .payroll-section.show{display:block}.ttp .payroll-content{display:none;margin-top:12px;background:var(--tk-violet-50);border:2px solid var(--tk-violet-200);border-radius:8px;padding:16px}.ttp .payroll-content.show{display:block}.ttp .rate-cell{cursor:pointer;padding:6px 8px;border-radius:4px;transition:background .2s}.ttp .rate-cell:hover{background:var(--tk-violet-200)}.ttp .rate-cell.editing{background:var(--tk-surface);border:1px solid var(--tk-violet-500)}.ttp .rate-cell input{width:80px;padding:4px;border:1px solid var(--tk-violet-200);border-radius:4px;font-size:12px}.ttp .payroll-detail-section{margin-bottom:16px;padding:12px;background:var(--tk-slate-50);border-radius:8px}.ttp .payroll-detail-section h4{font-size:13px;margin-bottom:8px;color:var(--tk-slate-600)}.ttp .payroll-calc{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--tk-slate-200);font-size:12px}.ttp .payroll-calc:last-child{border-bottom:none}.ttp .payroll-calc.total{font-weight:600;font-size:14px;background:var(--tk-slate-100);margin:8px -12px -12px;padding:12px;border-radius:0 0 8px 8px}.ttp .admin-content{display:none;margin-top:12px}.ttp .admin-content.show{display:block}.ttp .tab-content{display:none}.ttp .tab-content.active{display:block}[data-role-cat=general] [data-only-cat=specialist],[data-role-cat=specialist] [data-only-cat=general],[data-tenured=true] [data-hide-when-tenured]{display:none!important}.ttp .my-request{padding:10px;background:var(--bg);border-radius:6px;margin-bottom:8px;font-size:13px}.ttp .my-request-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.ttp .my-request-type{font-weight:600;color:var(--primary)}.ttp .my-request-date{color:var(--muted);font-size:12px}.ttp .pending-req{padding:12px;background:var(--bg);border-radius:8px;margin-bottom:10px;border-left:4px solid var(--warning)}.ttp .req-header{display:flex;justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:6px;flex-wrap:wrap}.ttp .req-header-left{display:flex;align-items:center;gap:8px;flex-wrap:wrap;flex:1;min-width:0}.ttp .req-user{font-weight:600;font-size:13px;white-space:nowrap}.ttp .req-retro-pill{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.5px;background:var(--tk-warning-100);color:var(--tk-warning-800);padding:2px 6px;border-radius:3px;margin-left:6px;line-height:1.4;text-transform:uppercase}.ttp .req-type{font-size:11px;color:var(--muted);text-align:right;flex-shrink:0}.ttp .req-details{font-size:12px;color:var(--muted);margin-bottom:10px}.ttp .req-actions{display:flex;gap:8px}.ttp .admin-toggle svg,.ttp .master-toggle svg,.ttp #ttpPayrollToggle svg,.ttp .btn-submit svg,.ttp .btn-approve svg,.ttp .btn-deny svg,.ttp .btn-primary svg,.ttp .btn-danger svg,.ttp .logout-btn svg,.ttp .request-tab.active svg,.ttp .filter-btn svg,.ttp .export-btn svg,.ttp .compare-chip.selected svg,.ttp .req-badge svg,.ttp .req-badge-absence svg,.ttp .req-badge-late svg,.ttp .req-badge-correction svg,.ttp .req-badge-overtime svg,.ttp .tier-badge svg,.ttp .pending-badge svg,.ttp .pcb-confirm svg{stroke:var(--tk-on-solid)!important}.ttp .admin-toggle svg rect[fill],.ttp .admin-toggle svg circle[fill],.ttp .master-toggle svg rect[fill],.ttp .master-toggle svg circle[fill],.ttp #ttpPayrollToggle svg rect[fill],.ttp #ttpPayrollToggle svg circle[fill],.ttp .btn-submit svg rect[fill],.ttp .btn-submit svg circle[fill],.ttp .btn-approve svg rect[fill],.ttp .btn-approve svg circle[fill],.ttp .btn-deny svg rect[fill],.ttp .btn-deny svg circle[fill],.ttp .logout-btn svg rect[fill],.ttp .logout-btn svg circle[fill],.ttp .request-tab.active svg rect[fill],.ttp .request-tab.active svg circle[fill],.ttp .req-badge svg rect[fill],.ttp .req-badge svg circle[fill],.ttp .tier-badge svg rect[fill],.ttp .tier-badge svg circle[fill]{fill:#ffffff40!important}.ttp .req-badge svg[width="12"] circle,.ttp .tier-badge svg[width="12"] circle{fill:revert!important;stroke:none!important}.ttp .report-filters{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px;padding:12px;background:var(--bg);border-radius:8px}.ttp .filter-group{display:flex;flex-direction:column;gap:4px}.ttp .filter-label{font-size:10px;font-weight:600;color:var(--muted)}.ttp .compare-select{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.ttp .compare-chip{padding:6px 12px;background:var(--bg);border:2px solid var(--border);border-radius:20px;cursor:pointer;font-size:11px;transition:all .2s}.ttp .compare-chip.selected{background:var(--accent);color:var(--tk-on-solid);border-color:var(--accent)}.ttp .compare-chip:hover{border-color:var(--accent)}.ttp .compare-grid{display:grid;gap:12px;margin-top:16px}.ttp .compare-card{background:var(--bg);border-radius:8px;padding:16px}.ttp .compare-name{font-weight:600;font-size:14px;margin-bottom:8px;color:var(--primary)}.ttp .compare-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.ttp .compare-stat{text-align:center;padding:8px;background:var(--tk-surface);border-radius:6px}.ttp .compare-stat-val{font-size:18px;font-weight:700;color:var(--primary)}.ttp .compare-stat-label{font-size:9px;color:var(--muted)}.ttp .progression-card{background:var(--bg);border-radius:8px;padding:16px;border-left:4px solid var(--border);margin-bottom:12px}.ttp .progression-card.onboarding{border-left-color:var(--tk-success-700)}.ttp .progression-card.probation{border-left-color:var(--tk-violet-500)}.ttp .progression-card.ready{border-left-color:var(--tk-warning-500);background:var(--tk-warning-50)}.ttp .progression-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px}.ttp .progression-name{font-weight:600;font-size:14px;color:var(--primary)}.ttp .progression-stage{font-size:11px;padding:3px 8px;border-radius:12px;font-weight:500}.ttp .progression-stage.onboarding{background:var(--tk-success-200);color:var(--tk-success-800)}.ttp .progression-stage.probation{background:var(--tk-violet-200);color:var(--tk-violet-800)}.ttp .progression-stage.completed{background:var(--tk-info-100);color:var(--tk-info-800)}.ttp .progression-bar{height:8px;background:var(--tk-slate-200);border-radius:4px;overflow:hidden;margin:8px 0}.ttp .progression-bar-fill{height:100%;border-radius:4px;transition:width .3s}.ttp .progression-bar-fill.onboarding{background:linear-gradient(90deg,var(--tk-success-600),var(--tk-success-700))}.ttp .progression-bar-fill.probation{background:linear-gradient(90deg,var(--tk-violet-500),var(--tk-violet-500))}.ttp .progression-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:8px;font-size:11px;color:var(--muted)}.ttp .progression-stat-val{font-weight:600;color:var(--text)}.ttp .progression-actions{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.ttp .progression-actions button{padding:6px 12px;font-size:11px;border-radius:4px;cursor:pointer;border:none}.ttp .progression-actions .btn-promote{background:var(--tk-success-700);color:var(--tk-on-solid)}.ttp .progression-actions .btn-extend{background:var(--tk-warning-500);color:var(--tk-on-solid)}.ttp .progression-actions .btn-history{background:var(--tk-slate-600);color:var(--tk-on-solid)}.ttp .infraction-row{display:flex;gap:12px;padding:10px;border-bottom:1px solid var(--border);font-size:12px;align-items:center}.ttp .infraction-row:last-child{border-bottom:none}.ttp .infraction-type{padding:2px 8px;border-radius:4px;font-size:10px;font-weight:500}.ttp .infraction-type.absence{background:var(--tk-danger-100);color:var(--tk-danger-700)}.ttp .infraction-type.late{background:var(--tk-warning-100);color:var(--tk-warning-700)}.ttp .modal-overlay .modal{background:var(--tk-surface);border-radius:12px;padding:24px;width:90%;max-width:500px;max-height:90vh;overflow-y:auto}.ttp .holiday-notice{background:linear-gradient(135deg,var(--tk-violet-500),var(--tk-violet-700));color:var(--tk-on-solid);padding:14px;border-radius:10px;margin-bottom:12px;text-align:center;display:none}.ttp .holiday-notice.show{display:block}.ttp .text-center{text-align:center}.ttp .admin-panel{display:none;padding:16px 0}.ttp .admin-panel.active{display:block}.ttp .table tr:hover{background:var(--bg)}.ttp .action-icon{padding:4px 8px;font-size:12px;background:var(--bg);border:1px solid var(--border);border-radius:4px;cursor:pointer;margin:0 2px}.ttp .action-icon:hover{background:var(--border)}.ttp .action-icon.danger:hover{background:var(--tk-danger-100);border-color:var(--error);color:var(--error)}.ttp .tier-preview{padding:12px;border-radius:8px;margin-top:12px;text-align:center}.ttp .toggle-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--border)}.ttp .toggle-row:last-child{border-bottom:none}.ttp .toggle-switch{position:relative;display:inline-block;vertical-align:middle;width:44px;height:24px;flex-shrink:0}.ttp .toggle-switch input{opacity:0;width:0;height:0}.ttp .toggle-slider{position:absolute;cursor:pointer;inset:0;background:var(--tk-slate-300);border-radius:24px;transition:.3s}.ttp .toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background:var(--tk-surface);border-radius:50%;transition:.3s}.ttp .toggle-switch input:checked+.toggle-slider{background:var(--success)}.ttp .day-toggle{display:inline-flex;cursor:pointer}.ttp .day-toggle input{display:none}.ttp .day-toggle span{display:inline-block;padding:6px 10px;border:1px solid var(--border);border-radius:6px;font-size:12px;font-weight:500;background:var(--card);transition:.2s}.ttp .day-toggle input:checked+span{background:var(--success);color:var(--tk-on-solid);border-color:var(--success)}.ttp .toggle-switch input:checked+.toggle-slider:before{transform:translate(20px)}.ttp .doc-helper{background:var(--bg);border-radius:8px;padding:12px;margin-top:8px}.ttp .doc-helper-title{font-size:12px;font-weight:600;margin-bottom:8px;color:var(--primary)}.ttp .doc-helper-text{font-size:11px;color:var(--muted);margin-bottom:8px}.ttp .doc-helper-links{display:flex;flex-wrap:wrap;gap:6px}.ttp .doc-helper-link{font-size:11px;padding:4px 10px;background:var(--card);border:1px solid var(--border);border-radius:4px;text-decoration:none;color:var(--accent)}.ttp .doc-helper-link:hover{background:var(--accent);color:var(--tk-on-solid);border-color:var(--accent)}.ttp .audit-filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}.ttp .audit-filter{padding:6px 10px;font-size:12px;border:1px solid var(--border);border-radius:4px;background:var(--card)}.ttp .config-row{display:flex;align-items:center;justify-content:space-between;padding:12px;background:var(--bg);border-radius:8px;margin-bottom:8px}.ttp .config-name{font-weight:600;font-size:13px}.ttp .config-desc{font-size:11px;color:var(--muted)}.ttp .config-value{display:flex;align-items:center;gap:8px}.ttp .config-input{width:100px;padding:6px 10px;border:1px solid var(--border);border-radius:4px;font-size:13px;text-align:right}.ttp .pay-confirm-banner{border-radius:10px;padding:14px 16px;margin-bottom:10px;display:none;position:relative}.ttp .pay-confirm-banner.show{display:block}.ttp .pay-confirm-banner.urgency-green{background:linear-gradient(135deg,var(--tk-success-50),var(--tk-brand-50));border:1px solid var(--tk-success-200)}.ttp .pay-confirm-banner.urgency-yellow{background:linear-gradient(135deg,var(--tk-warning-50),var(--tk-warning-100));border:1px solid var(--tk-warning-200)}.ttp .pay-confirm-banner.urgency-orange{background:linear-gradient(135deg,var(--tk-warning-50),var(--tk-warning-100));border:1px solid var(--tk-warning-500)}.ttp .pay-confirm-banner.urgency-red{background:linear-gradient(135deg,var(--tk-danger-50),var(--tk-danger-100));border:1px solid var(--tk-danger-500)}.ttp .pay-confirm-banner .pcb-title{font-weight:700;font-size:14px;margin-bottom:4px}.ttp .pay-confirm-banner .pcb-detail{font-size:12px;color:var(--muted);margin-bottom:8px}.ttp .pay-confirm-banner .pcb-actions{display:flex;gap:8px;flex-wrap:wrap}.ttp .pay-confirm-banner .pcb-actions button{padding:6px 14px;border-radius:6px;border:none;font-size:12px;font-weight:600;cursor:pointer;transition:transform .1s}.ttp .pay-confirm-banner .pcb-actions button:active{transform:scale(.97)}.ttp .pay-confirm-banner .pcb-actions .pcb-confirm{background:var(--success);color:var(--tk-on-solid)}.ttp .pay-confirm-banner .pcb-actions .pcb-dispute{background:var(--tk-surface);color:var(--text);border:1px solid var(--border)!important}.ttp .pay-confirm-banner .pcb-confirmed{color:var(--success);font-weight:600;font-size:13px}.ttp .pay-confirm-banner .pcb-revoked{color:var(--tk-warning-800);font-weight:600;font-size:13px}.ttp .pay-confirm-banner .pcb-disputed{color:var(--primary);font-weight:600;font-size:13px}.ttp .payconf-summary{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}.ttp .payconf-summary .pc-stat{flex:1;min-width:80px;text-align:center;padding:10px;border-radius:8px;background:var(--bg)}.ttp .payconf-summary .pc-stat .pc-num{font-size:22px;font-weight:700}.ttp .payconf-summary .pc-stat .pc-label{font-size:11px;color:var(--muted)}.ttp .payconf-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px}.ttp .payconf-dot.dot-green{background:var(--success)}.ttp .payconf-dot.dot-yellow{background:var(--warning)}.ttp .payconf-dot.dot-orange{background:var(--tk-warning-600)}.ttp .payconf-dot.dot-red{background:var(--error)}.ttp .payconf-dot.dot-gray{background:var(--muted)}.ttp .v2-overlay{display:none;position:fixed;inset:0;background:var(--bg);z-index:9999;overflow-y:auto}.ttp .v2-overlay.show{display:block}.ttp .v2-view{padding:16px 24px}.ttp .v2-topbar{display:flex;align-items:center;gap:16px;padding:10px 24px;background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10000;margin:-16px -24px 16px}.ttp .v2-topbar .v2-brand{font-weight:700;color:var(--primary)}.ttp .v2-topbar .v2-nav{display:flex;gap:4px;flex:1}.ttp .v2-topbar .v2-nav a{padding:6px 12px;border-radius:6px;color:var(--muted);text-decoration:none;font-size:13px}.ttp .v2-topbar .v2-nav a:hover{background:var(--bg);color:var(--text)}.ttp .v2-topbar .v2-nav a.active{background:var(--tk-brand-600);color:var(--tk-on-solid)}.ttp .v2-exit{padding:4px 10px;font-size:11px;background:var(--bg);border:1px solid var(--border);border-radius:6px;cursor:pointer;color:var(--muted)}.ttp .v2-exit:hover{color:var(--text)}.ttp .v2-people-header{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}.ttp .v2-people-search{flex:1;min-width:240px;padding:10px 14px;border:1px solid var(--border);border-radius:8px;font-size:14px}.ttp .v2-people-search:focus{outline:2px solid var(--tk-brand-600);outline-offset:-1px}.ttp .v2-people-filter{padding:10px 14px;border:1px solid var(--border);border-radius:8px;background:var(--card);font-size:13px}.ttp .v2-chip{padding:5px 12px;border:1px solid var(--border);border-radius:999px;background:var(--card);color:var(--tk-text-2);font-size:12px;font-weight:600;line-height:1.4;cursor:pointer}.ttp .v2-chip:hover{border-color:var(--tk-border-strong);color:var(--text)}.ttp .v2-people-grid{background:var(--card);border-radius:12px;border:1px solid var(--border);overflow:hidden}.ttp .v2-people-row{display:grid;grid-template-columns:2fr 1.2fr minmax(0,1fr) minmax(0,1fr) minmax(0,1fr) 80px;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s;align-items:center}.ttp .v2-people-row:hover{background:var(--tk-slate-50)}.ttp .v2-people-row:last-child{border-bottom:none}.ttp .v2-people-row.v2-header-row{background:var(--tk-slate-50);font-weight:600;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;cursor:default}.ttp .v2-people-row.v2-header-row:hover{background:var(--tk-slate-50)}.ttp .v2-people-row{font-size:13px;color:var(--text)}.ttp .v2-people-name{font-weight:600;font-size:14px}.ttp .v2-people-role{font-size:13px;color:var(--muted)}.ttp .v2-chart-header{background:var(--card);border-radius:12px;border:1px solid var(--border);padding:20px 24px;margin-bottom:16px;display:grid;grid-template-columns:64px minmax(0,1fr) auto;gap:16px;align-items:center}.ttp .v2-chart-avatar{width:64px;height:64px;border-radius:50%;background:linear-gradient(135deg,var(--tk-brand-600),var(--tk-brand-800));color:var(--tk-on-solid);font-weight:700;font-size:22px;display:flex;align-items:center;justify-content:center}.ttp .v2-chart-identity{display:flex;flex-direction:column;gap:2px}.ttp .v2-chart-name{font-size:22px;font-weight:700;color:var(--text)}.ttp .v2-chart-meta{font-size:12px;color:var(--muted)}.ttp .v2-chart-status{font-size:12px;color:var(--tk-brand-600);margin-top:4px}.ttp .v2-chart-actions{display:flex;gap:8px}.ttp .v2-chart-actions button{padding:6px 12px;font-size:12px;border-radius:6px;border:1px solid var(--border);background:var(--card);cursor:pointer}.ttp .v2-chart-actions button:hover{background:var(--bg)}.ttp .v2-chart-actions button.primary{background:var(--tk-brand-600);color:var(--tk-on-solid);border-color:var(--tk-brand-600)}.ttp .v2-chart-actions button.primary:hover{background:var(--tk-brand-800)}.ttp .v2-chart-alert{background:var(--tk-danger-50);border:1px solid var(--tk-danger-700);border-radius:8px;padding:10px 14px;margin-bottom:12px;font-size:12px;color:var(--tk-danger-800)}.ttp .v2-chart-section{display:none}.ttp .v2-chart-section.active{display:block}.ttp.v2-deprecate .tab-btn[data-tab=profiles],.ttp.v2-deprecate .tab-btn[data-tab=hrinbox],.ttp.v2-deprecate .tab-btn[data-tab=hroverview],.ttp.v2-deprecate-aggressive .tab-btn[data-tab=attendance],.ttp.v2-deprecate-aggressive .tab-btn[data-tab=summary],.ttp.v2-deprecate-aggressive .tab-btn[data-tab=reports],.ttp.v2-deprecate-aggressive .tab-btn[data-tab=compare],.ttp.v2-deprecate-aggressive .tab-btn[data-tab=analytics],.ttp.v2-deprecate-aggressive .tab-btn[data-tab=auditlog],.ttp.v2-deprecate-aggressive .tab-btn[data-tab=apex]{display:none!important}.ttp .v2-deprecate-banner{background:var(--tk-brand-50);border:1px solid var(--tk-brand-600);color:var(--tk-brand-800);padding:10px 14px;border-radius:8px;margin:12px 24px;font-size:12px}.ttp .v2-deprecate-banner a{color:var(--tk-brand-600);font-weight:600}.ttp .v2-discover-banner{background:linear-gradient(135deg,var(--tk-brand-600) 0%,var(--tk-brand-800) 100%);color:var(--tk-on-solid);padding:10px 16px;border-radius:8px;margin:12px 24px;font-size:13px;display:flex;justify-content:space-between;align-items:center}.ttp .v2-discover-banner a{color:var(--tk-on-solid);text-decoration:underline;font-weight:600}.ttp{--primary:var(--tk-brand);--secondary:var(--tk-brand-700);--accent:var(--tk-brand);--bg:var(--tk-bg);--card:var(--tk-surface);--text:var(--tk-text);--muted:var(--tk-muted);--success:var(--tk-success);--warning:var(--tk-warning);--error:var(--tk-danger);--border:var(--tk-border);font-family:var(--tk-font)}.ttp .btn,.ttp .btn-submit,.ttp .btn-cancel,.ttp .btn-primary,.ttp .btn-secondary,.ttp .btn-danger,.ttp .btn-approve,.ttp .btn-deny,.ttp .filter-btn,.ttp .export-btn,.ttp .btn-edit-req,.ttp .btn-withdraw{display:inline-flex;align-items:center;justify-content:center;gap:var(--tk-1h);min-height:34px;padding:0 var(--tk-4);border-radius:var(--tk-r-md);border:1px solid transparent;font:var(--tk-fw-semibold) var(--tk-fs-md)/1.2 var(--tk-font);cursor:pointer;white-space:nowrap;-webkit-appearance:none;transition:background var(--tk-dur) var(--tk-ease),border-color var(--tk-dur) var(--tk-ease),box-shadow var(--tk-dur) var(--tk-ease),color var(--tk-dur) var(--tk-ease)}.ttp .btn:focus-visible,.ttp .btn-submit:focus-visible,.ttp .btn-cancel:focus-visible,.ttp .btn-primary:focus-visible,.ttp .btn-approve:focus-visible,.ttp .filter-btn:focus-visible,.ttp .export-btn:focus-visible{outline:none;box-shadow:var(--tk-ring)}.ttp .btn-danger:focus-visible,.ttp .btn-deny:focus-visible,.ttp .btn-withdraw:focus-visible{outline:none;box-shadow:var(--tk-ring-danger)}.ttp .btn:disabled,.ttp .btn-submit:disabled,.ttp .btn-cancel:disabled,.ttp .btn-primary:disabled,.ttp .btn-danger:disabled,.ttp .btn-approve:disabled,.ttp .btn-deny:disabled,.ttp .btn-edit-req:disabled,.ttp .btn-withdraw:disabled,.ttp .filter-btn:disabled,.ttp .export-btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.ttp .btn{background:var(--tk-surface);border-color:var(--tk-border-strong);color:var(--tk-text)}.ttp .btn:hover{background:var(--tk-surface-3)}.ttp .btn-submit,.ttp .btn-primary,.ttp .filter-btn{background:var(--tk-brand);border-color:var(--tk-brand);color:var(--tk-on-solid)}.ttp .btn-submit:hover,.ttp .btn-primary:hover,.ttp .filter-btn:hover{background:var(--tk-brand-hover);border-color:var(--tk-brand-hover)}.ttp .btn-cancel,.ttp .btn-secondary{background:var(--tk-surface);border-color:var(--tk-border-strong);color:var(--tk-text)}.ttp .btn-cancel:hover,.ttp .btn-secondary:hover{background:var(--tk-surface-3);border-color:var(--tk-slate-400)}.ttp .btn-danger,.ttp .btn-deny{background:var(--tk-danger);border-color:var(--tk-danger);color:var(--tk-on-solid)}.ttp .btn-danger:hover,.ttp .btn-deny:hover{background:var(--tk-danger-hover);border-color:var(--tk-danger-hover)}.ttp .btn-approve,.ttp .export-btn{background:var(--tk-success);border-color:var(--tk-success);color:var(--tk-on-solid)}.ttp .btn-approve:hover,.ttp .export-btn:hover{background:var(--tk-success-hover);border-color:var(--tk-success-hover)}.ttp .btn-approve,.ttp .btn-deny{flex:1}.ttp .filter-btn,.ttp .export-btn{align-self:flex-end}.ttp .btn-edit-req{flex:1;background:var(--tk-info-soft);border-color:var(--tk-info-line);color:var(--tk-info-text);font-size:var(--tk-fs-sm)}.ttp .btn-edit-req:hover{background:var(--tk-info-soft-2)}.ttp .btn-withdraw{flex:1;background:var(--tk-danger-soft);border-color:var(--tk-danger-line);color:var(--tk-danger-text);font-size:var(--tk-fs-sm)}.ttp .btn-withdraw:hover{background:var(--tk-danger-soft-2)}.ttp .btn-sm{min-height:28px;padding:0 var(--tk-2h);font-size:var(--tk-fs-sm);border-radius:var(--tk-r-sm)}.ttp .btn-back{background:var(--tk-info-soft-2);color:var(--tk-info-text)}.ttp .link-btn{background:none;border:none;padding:var(--tk-1);margin-top:var(--tk-2);color:var(--tk-brand);font-size:var(--tk-fs-xs);font-weight:var(--tk-fw-semibold);cursor:pointer;text-decoration:none}.ttp .link-btn:hover{text-decoration:underline;color:var(--tk-brand-hover)}.ttp .btn-loading{position:relative;color:transparent!important;pointer-events:none}.ttp .btn-loading:after{content:"";position:absolute;left:50%;top:50%;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;border:2px solid rgba(255,255,255,.9);border-right-color:transparent;animation:tk-spin .7s linear infinite}.ttp .btn-cancel.btn-loading:after,.ttp .btn.btn-loading:after{border-color:var(--tk-slate-500);border-right-color:transparent}.ttp .form-btns,.ttp .modal-actions{display:flex;gap:var(--tk-2);justify-content:flex-end;flex-wrap:wrap;margin-top:var(--tk-4)}.ttp .action-btn{padding:var(--tk-4) var(--tk-2h);font:var(--tk-fw-semibold) var(--tk-fs-md)/1.2 var(--tk-font);border:1px solid transparent;border-radius:var(--tk-r-lg);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:var(--tk-1);-webkit-appearance:none;touch-action:manipulation;transition:transform 80ms,box-shadow var(--tk-dur)}.ttp .action-btn:hover:not(:disabled){box-shadow:var(--tk-shadow-md)}.ttp .action-btn:disabled{opacity:.35;cursor:not-allowed}.ttp .action-btn:not(:disabled):active{transform:scale(.97)}.ttp .badge,.ttp .points-badge,.ttp .tier-badge,.ttp .v2-pill{display:inline-flex;align-items:center;gap:var(--tk-1);padding:2px var(--tk-2);border-radius:var(--tk-r-full);font-size:var(--tk-fs-xs);font-weight:var(--tk-fw-semibold);line-height:1.5;white-space:nowrap;border:1px solid var(--tk-neutral-line);background:var(--tk-neutral-soft);color:var(--tk-neutral-text)}.ttp .badge-approved,.ttp .badge-ok,.ttp .points-badge.full,.ttp .tier-1,.ttp .v2-pill-active{background:var(--tk-success-soft-2);border-color:var(--tk-success-line);color:var(--tk-success-text)}.ttp .badge-pending,.ttp .points-badge.partial,.ttp .tier-3,.ttp .tier-4,.ttp .v2-pill-offboarding{background:var(--tk-warning-soft-2);border-color:var(--tk-warning-line);color:var(--tk-warning-text)}.ttp .badge-denied,.ttp .badge-late,.ttp .points-badge.low,.ttp .tier-5,.ttp .v2-pill-terminated{background:var(--tk-danger-soft-2);border-color:var(--tk-danger-line);color:var(--tk-danger-text)}.ttp .badge-withdrawn,.ttp .badge-absent{background:var(--tk-neutral-soft);border-color:var(--tk-neutral-line);color:var(--tk-neutral-text)}.ttp .tier-2{background:var(--tk-info-soft);border-color:var(--tk-info-line);color:var(--tk-info-text)}.ttp .req-badge{display:inline-flex;align-items:center;gap:var(--tk-1);padding:2px var(--tk-2);border-radius:var(--tk-r-full);font-size:var(--tk-fs-xs);font-weight:var(--tk-fw-semibold);line-height:1.5;white-space:nowrap;border:1px solid var(--tk-neutral-line);background:var(--tk-neutral-soft);color:var(--tk-neutral-text)}.ttp .req-badge-absence{background:var(--tk-violet-soft-2);border-color:var(--tk-violet-line);color:var(--tk-violet-text)}.ttp .req-badge-late{background:var(--tk-warning-soft-2);border-color:var(--tk-warning-line);color:var(--tk-warning-text)}.ttp .req-badge-correction{background:var(--tk-info-soft-2);border-color:var(--tk-info-line);color:var(--tk-info-text)}.ttp .req-badge-overtime{background:var(--tk-brand-soft-2);border-color:var(--tk-brand-line);color:var(--tk-brand-text)}.ttp .pending-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;padding:0 var(--tk-1h);border-radius:var(--tk-r-full);background:var(--tk-danger);color:var(--tk-on-solid);font-size:var(--tk-fs-2xs);font-weight:var(--tk-fw-bold);line-height:18px;margin-left:var(--tk-1h)}.ttp .pending-badge.pulse{animation:pulse 1.5s infinite}.ttp .tab-count{display:inline-block;min-width:18px;padding:0 5px;border-radius:var(--tk-r-full);background:var(--tk-slate-100);color:var(--tk-text-2);font-size:var(--tk-fs-2xs);font-weight:var(--tk-fw-semibold);line-height:18px;text-align:center}.ttp .status-dot{width:10px;height:10px;border-radius:50%;margin-right:var(--tk-2h);flex-shrink:0;background:var(--tk-slate-400)}.ttp .dot-green{background:var(--tk-success-500)}.ttp .dot-yellow{background:var(--tk-warning-500)}.ttp .dot-red{background:var(--tk-danger-500)}.ttp .dot-gray{background:var(--tk-slate-400)}.ttp .dot-blue{background:var(--tk-info-500)}.ttp .dot-purple{background:var(--tk-violet-500)}.ttp .card,.ttp .v2-chart-card{background:var(--tk-surface);border:1px solid var(--tk-border);border-radius:var(--tk-r-lg);box-shadow:var(--tk-shadow-sm);padding:var(--tk-4);margin-bottom:var(--tk-3)}.ttp .card-title{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap;gap:var(--tk-1h);margin-bottom:var(--tk-3);padding-bottom:var(--tk-2);border-bottom:1px solid var(--tk-border);font-size:var(--tk-fs-md);font-weight:var(--tk-fw-semibold);color:var(--tk-text)}.ttp .card-title>:is(button,a,select,.card-title__actions):last-child{margin-left:auto}.ttp div[style*=space-between]:has(>.card-title:first-child){border-bottom:1px solid var(--tk-border);padding-bottom:var(--tk-2)}.ttp div[style*=space-between]>.card-title:first-child{border-bottom:0;padding-bottom:0}.ttp .v2-chart-card-title{font-size:var(--tk-fs-xs);font-weight:var(--tk-fw-semibold);color:var(--tk-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:var(--tk-3)}.ttp .table-wrap{width:100%;overflow:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--tk-border);border-radius:var(--tk-r-lg);background:var(--tk-surface)}.ttp .admin-table,.ttp .table,.ttp .data-table{width:100%;border-collapse:separate;border-spacing:0;font-size:var(--tk-fs-sm)}.ttp .admin-table th,.ttp .table th,.ttp .data-table th{position:sticky;top:0;z-index:1;text-align:left;font-size:var(--tk-fs-xs);font-weight:var(--tk-fw-semibold);color:var(--tk-text-2);background:var(--tk-surface-2);border-bottom:1px solid var(--tk-border);padding:var(--tk-2) var(--tk-2h)}.ttp .admin-table td,.ttp .table td,.ttp .data-table td{padding:var(--tk-2) var(--tk-2h);text-align:left;border-bottom:1px solid var(--tk-slate-100);vertical-align:middle;color:var(--tk-text)}.ttp .admin-table tbody tr:hover td,.ttp .table tbody tr:hover td,.ttp .data-table tbody tr:hover td{background:var(--tk-surface-2)}.ttp .admin-table tr:last-child td,.ttp .table tr:last-child td,.ttp .data-table tr:last-child td{border-bottom:none}.ttp .form-group{margin-bottom:var(--tk-3)}.ttp .form-label{display:block;margin-bottom:var(--tk-1);font-size:var(--tk-fs-sm);font-weight:var(--tk-fw-semibold);color:var(--tk-text-2)}.ttp .form-input,.ttp .form-select,.ttp .form-textarea{width:100%;min-height:36px;padding:var(--tk-2) var(--tk-2h);border:1px solid var(--tk-border-strong);border-radius:var(--tk-r-md);background:var(--tk-surface);color:var(--tk-text);font:var(--tk-fs-base)/1.4 var(--tk-font);-webkit-appearance:none;transition:border-color var(--tk-dur) var(--tk-ease),box-shadow var(--tk-dur) var(--tk-ease)}.ttp .form-select{padding-right:var(--tk-8);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.ttp select.form-select,.ttp select.form-input,.ttp select.filter-input{padding-right:28px!important;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center}.ttp .form-textarea{min-height:76px;resize:vertical}.ttp .form-input:focus,.ttp .form-select:focus,.ttp .form-textarea:focus,.ttp .filter-input:focus{outline:none;border-color:var(--tk-brand);box-shadow:var(--tk-ring)}.ttp .form-input:disabled,.ttp .form-select:disabled,.ttp .form-textarea:disabled{background:var(--tk-surface-3);color:var(--tk-muted);cursor:not-allowed}.ttp .form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--tk-3)}.ttp .filter-input{min-height:32px;padding:var(--tk-1h) var(--tk-2h);border:1px solid var(--tk-border-strong);border-radius:var(--tk-r-md);font:var(--tk-fs-sm)/1.3 var(--tk-font);background:var(--tk-surface);color:var(--tk-text)}.ttp .tabs,.ttp .admin-tabs,.ttp .v2-chart-tabs{display:flex;gap:var(--tk-1);margin-bottom:var(--tk-4);border-bottom:1px solid var(--tk-border);flex-wrap:wrap;row-gap:0}@media (max-width:640px){.ttp .tabs,.ttp .admin-tabs,.ttp .v2-chart-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}}.ttp .tab-btn,.ttp .admin-tab,.ttp .v2-chart-tab{appearance:none;-webkit-appearance:none;background:none;border:none;border-bottom:2px solid transparent;border-radius:0;margin-bottom:-1px;padding:var(--tk-2) var(--tk-3);font:var(--tk-fw-semibold) var(--tk-fs-md)/1.2 var(--tk-font);color:var(--tk-muted);cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:var(--tk-1h)}.ttp .tab-btn:hover,.ttp .admin-tab:hover,.ttp .v2-chart-tab:hover{color:var(--tk-text)}.ttp .tab-btn.active,.ttp .admin-tab.active,.ttp .v2-chart-tab.active{color:var(--tk-brand);border-bottom-color:var(--tk-brand);background:none}.ttp .request-tabs{display:inline-flex;gap:2px;padding:2px;margin-bottom:var(--tk-3);background:var(--tk-surface-3);border-radius:var(--tk-r-md);flex-wrap:wrap}.ttp .request-tab{display:inline-flex;align-items:center;gap:var(--tk-1h);padding:var(--tk-1h) var(--tk-3);border:none;border-radius:var(--tk-r-sm);background:transparent;color:var(--tk-text-2);font:var(--tk-fw-semibold) var(--tk-fs-sm)/1.2 var(--tk-font);cursor:pointer}.ttp .request-tab:hover{color:var(--tk-text)}.ttp .request-tab.active{background:var(--tk-surface);color:var(--tk-text);box-shadow:var(--tk-shadow-sm)}.ttp .modal-overlay,.ttp>.modal{display:none;position:fixed;inset:0;background:var(--tk-overlay);z-index:var(--tk-z-overlay);align-items:center;justify-content:center;padding:var(--tk-4)}.ttp .modal-overlay.show,.ttp>.modal.show{display:flex;animation:tk-fade var(--tk-dur) var(--tk-ease)}.ttp .modal-content{background:var(--tk-surface);border-radius:var(--tk-r-xl);box-shadow:var(--tk-shadow-lg);padding:var(--tk-5);width:100%;max-width:500px;max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch;animation:tk-pop var(--tk-dur) var(--tk-ease)}.ttp .modal-header{display:flex;justify-content:space-between;align-items:center;gap:var(--tk-3);margin-bottom:var(--tk-4)}.ttp .modal-title{margin:0 0 var(--tk-3);font-size:var(--tk-fs-lg);font-weight:var(--tk-fw-semibold);color:var(--tk-text)}.ttp .modal-header .modal-title{margin:0}.ttp .modal-close{appearance:none;background:none;border:none;width:32px;height:32px;border-radius:var(--tk-r-md);font-size:22px;line-height:1;color:var(--tk-muted);cursor:pointer;flex-shrink:0}.ttp .modal-close:hover{background:var(--tk-surface-3);color:var(--tk-text)}.ttp .alert{display:none;padding:var(--tk-2h) var(--tk-3);margin-bottom:var(--tk-2h);border-radius:var(--tk-r-md);border:1px solid var(--tk-neutral-line);background:var(--tk-neutral-soft);color:var(--tk-neutral-text);font-size:var(--tk-fs-md);line-height:var(--tk-lh)}.ttp .alert.show{display:block}.ttp .alert-warn{background:var(--tk-warning-soft);border-color:var(--tk-warning-line);color:var(--tk-warning-text)}.ttp .alert-success{background:var(--tk-success-soft);border-color:var(--tk-success-line);color:var(--tk-success-text)}.ttp .alert-info{background:var(--tk-info-soft);border-color:var(--tk-info-line);color:var(--tk-info-text)}.ttp .loading{display:flex;align-items:center;justify-content:center;gap:var(--tk-2);padding:var(--tk-5);color:var(--tk-muted);font-size:var(--tk-fs-md)}.ttp .loading:before{content:"";width:14px;height:14px;border-radius:50%;border:2px solid var(--tk-slate-200);border-top-color:var(--tk-brand);animation:tk-spin .7s linear infinite}.ttp .empty-state,.ttp .v2-chart-empty{padding:var(--tk-8) var(--tk-5);text-align:center;color:var(--tk-muted);font-size:var(--tk-fs-md)}.ttp .skeleton{height:14px;border-radius:var(--tk-r-sm);background:linear-gradient(90deg,var(--tk-slate-100),var(--tk-slate-200),var(--tk-slate-100));background-size:200% 100%;animation:tk-shimmer 1.2s ease-in-out infinite}.ttp .admin-toggle,.ttp .master-toggle{display:flex;align-items:center;gap:var(--tk-2);width:100%;padding:var(--tk-3) var(--tk-4);background:var(--tk-slate-800);color:var(--tk-on-solid);border:none;border-left:4px solid var(--tk-brand-500);border-radius:var(--tk-r-lg);font:var(--tk-fw-semibold) var(--tk-fs-base)/1.2 var(--tk-font);cursor:pointer;position:relative;text-align:left}.ttp .admin-toggle:hover,.ttp .master-toggle:hover{background:var(--tk-slate-700)}.ttp .admin-toggle .tk-i,.ttp .master-toggle .tk-i{color:var(--tk-on-solid)!important;opacity:.9}.ttp #ttpPayrollToggle{border-left-color:var(--tk-violet-500)}.ttp .master-toggle{border-left-color:var(--tk-danger-500)}
