:root,[data-theme=dark]{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-card: #1e293b;--bg-input: #334155;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--accent: #3b82f6;--accent-hover: #2563eb;--accent-light: rgba(59, 130, 246, .15);--green: #22c55e;--green-light: rgba(34, 197, 94, .15);--yellow: #eab308;--yellow-light: rgba(234, 179, 8, .15);--red: #ef4444;--red-light: rgba(239, 68, 68, .15);--orange: #f97316;--orange-light: rgba(249, 115, 22, .15);--purple: #a855f7;--purple-light: rgba(168, 85, 247, .15);--border: #334155;--border-light: #475569;--radius: 12px;--radius-sm: 8px;--shadow: 0 4px 6px -1px rgba(0, 0, 0, .3), 0 2px 4px -2px rgba(0, 0, 0, .2);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .4), 0 4px 6px -4px rgba(0, 0, 0, .3)}[data-theme=light]{--bg-primary: #f1f5f9;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-input: #e2e8f0;--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--accent: #2563eb;--accent-hover: #1d4ed8;--accent-light: rgba(37, 99, 235, .1);--green: #16a34a;--green-light: rgba(22, 163, 74, .1);--yellow: #ca8a04;--yellow-light: rgba(202, 138, 4, .1);--red: #dc2626;--red-light: rgba(220, 38, 38, .1);--orange: #ea580c;--orange-light: rgba(234, 88, 12, .1);--purple: #9333ea;--purple-light: rgba(147, 51, 234, .1);--border: #e2e8f0;--border-light: #cbd5e1;--shadow: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg-primary);color:var(--text-primary);line-height:1.6;min-height:100vh}.app{min-height:100vh;display:flex;flex-direction:column}.app-header{background:linear-gradient(135deg,#1e3a5f,#0f172a);border-bottom:1px solid var(--border);padding:32px 24px;text-align:center;position:relative}[data-theme=light] .app-header{background:linear-gradient(135deg,#3b82f6,#1e40af)}.theme-toggle{position:absolute;top:16px;right:16px;width:40px;height:40px;border-radius:50%;border:2px solid rgba(255,255,255,.3);background:#ffffff1a;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.theme-toggle:hover{background:#fff3;border-color:#ffffff80;transform:scale(1.1)}.theme-toggle:active{transform:scale(.95)}.header-content h1{font-size:28px;font-weight:800;background:linear-gradient(135deg,#60a5fa,#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:4px}[data-theme=light] .header-content h1{background:linear-gradient(135deg,#fff,#e0e7ff);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.subtitle{color:var(--text-secondary);font-size:14px}[data-theme=light] .subtitle{color:#ffffffd9}.header-info{margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.2)}.header-info p{font-size:12px;color:#ffffffb3;line-height:1.5}.app-main{flex:1;max-width:900px;margin:0 auto;padding:24px 16px;width:100%}.tab-navigation{display:flex;gap:8px;margin-bottom:24px;background:var(--bg-secondary);padding:6px;border-radius:var(--radius);border:1px solid var(--border)}.tab-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit}.tab-btn:hover{color:var(--text-primary);background:var(--bg-input)}.tab-btn.active{background:var(--accent);color:#fff;box-shadow:var(--shadow)}.tab-icon{font-size:18px}.tab-panel{display:flex;flex-direction:column;gap:24px}.panel-description{text-align:center}.panel-description h2{font-size:22px;font-weight:700;margin-bottom:8px}.panel-description p{color:var(--text-secondary);font-size:14px}.panel-form{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.overtime-form,.weekly-form{display:flex;flex-direction:column;gap:20px}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{font-size:14px;font-weight:600;color:var(--text-primary)}.form-hint{font-size:12px;color:var(--text-muted)}.input-rupiah{display:flex;align-items:center;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;transition:border-color .2s}.input-rupiah:focus-within{border-color:var(--accent)}.rupiah-prefix{padding:12px 14px;background:var(--border);color:var(--text-secondary);font-weight:600;font-size:14px;border-right:1px solid var(--border)}.input-rupiah input{flex:1;padding:12px 14px;background:transparent;border:none;color:var(--text-primary);font-size:16px;font-weight:600;font-family:inherit;outline:none}.input-rupiah input::placeholder{color:var(--text-muted);font-weight:400}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}select,input[type=number]{padding:12px 14px;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);font-size:15px;font-family:inherit;outline:none;transition:border-color .2s;width:100%}select:focus,input[type=number]:focus{border-color:var(--accent)}select{cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2394a3b8' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}select option{background:var(--bg-secondary);color:var(--text-primary)}[data-theme=light] select option{background:#fff;color:#0f172a}.hours-input-group{display:flex;align-items:center;gap:12px}.hours-input-group input{width:100px;text-align:center;font-size:20px;font-weight:700}.hours-suffix{color:var(--text-secondary);font-size:14px}.toggle-group{display:flex;gap:8px}.toggle-btn{flex:1;padding:12px;border:2px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;font-family:inherit}.toggle-btn:hover{border-color:var(--border-light);color:var(--text-primary)}.toggle-btn.active{border-color:var(--accent);background:var(--accent-light);color:var(--accent)}.day-checkboxes{display:flex;flex-wrap:wrap;gap:8px}.day-chip{padding:8px 14px;border:1px solid var(--border);border-radius:20px;background:transparent;color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;transition:all .2s;font-family:inherit;display:flex;align-items:center;gap:6px}.day-chip:hover:not(:disabled){border-color:var(--accent);color:var(--text-primary)}.day-chip.default-rest{background:var(--green-light);border-color:var(--green);color:var(--green);cursor:default}.day-chip.extra-rest{background:var(--purple-light);border-color:var(--purple);color:var(--purple)}.chip-badge{font-size:10px;padding:2px 6px;border-radius:10px;background:#ffffff26}.btn-calculate{padding:14px 24px;border:none;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--accent),#6366f1);color:#fff;font-size:16px;font-weight:700;cursor:pointer;transition:all .2s;font-family:inherit;margin-top:8px}.btn-calculate:hover{transform:translateY(-1px);box-shadow:0 8px 25px #3b82f64d}.btn-calculate:active{transform:translateY(0)}.btn-optimize{background:linear-gradient(135deg,#22c55e,#16a34a)}.btn-optimize:hover{box-shadow:0 8px 25px #22c55e4d}.panel-result{min-height:100px}.overtime-result,.weekly-result{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow);animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.result-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)}.result-header h3{font-size:18px;font-weight:700}.badge{padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600}.badge-work{background:var(--accent-light);color:var(--accent)}.badge-rest{background:var(--orange-light);color:var(--orange)}.badge-optimize{background:var(--green-light);color:var(--green)}.result-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:24px}.summary-card{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px;text-align:center}.summary-card.accent{border-color:var(--accent);background:var(--accent-light)}.summary-card.highlight{border-color:var(--green);background:var(--green-light)}.summary-label{display:block;font-size:12px;color:var(--text-muted);margin-bottom:4px;text-transform:uppercase;letter-spacing:.5px}.summary-value{display:block;font-size:20px;font-weight:700;color:var(--text-primary)}.summary-value.big{font-size:24px;color:var(--accent)}.summary-value.accent{color:var(--accent)}.result-details h4,.optimization-plan h4,.comparison-section h4,.info-box h4{font-size:15px;font-weight:700;margin-bottom:12px;color:var(--text-primary)}.detail-table,.comparison-table{width:100%;border-collapse:collapse;font-size:14px}.detail-table th,.comparison-table th{text-align:left;padding:10px 12px;background:var(--bg-primary);color:var(--text-secondary);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--border)}.detail-table td,.comparison-table td{padding:10px 12px;border-bottom:1px solid var(--border);color:var(--text-primary)}.detail-table tbody tr:hover,.comparison-table tbody tr:hover{background:#3b82f60d}.amount{font-weight:600;text-align:right;font-variant-numeric:tabular-nums}.amount.total{color:var(--accent);font-size:16px}.multiplier-badge{display:inline-block;padding:2px 10px;border-radius:12px;font-size:13px;font-weight:700}.multiplier-low{background:var(--yellow-light);color:var(--yellow)}.multiplier-mid{background:var(--accent-light);color:var(--accent)}.multiplier-high{background:var(--red-light);color:var(--red)}.savings-banner{background:linear-gradient(135deg,#22c55e1a,#3b82f61a);border:1px solid var(--green);border-radius:var(--radius-sm);padding:20px;margin-bottom:20px;text-align:center}.savings-content{display:flex;flex-direction:column;gap:4px}.savings-label{font-size:13px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.savings-value{font-size:28px;font-weight:800}.savings-value.positive{color:var(--green)}.savings-value.negative{color:var(--red)}.savings-percent{font-size:14px;color:var(--text-secondary);font-weight:500}.day-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}.day-card{background:var(--bg-primary);border:2px solid var(--border);border-radius:var(--radius-sm);padding:12px;text-align:center;transition:all .2s}.day-card.active.rest{border-color:var(--orange);background:var(--orange-light)}.day-card.active.work{border-color:var(--accent);background:var(--accent-light)}.day-card-header{display:flex;flex-direction:column;gap:4px;margin-bottom:8px}.day-name{font-size:13px;font-weight:700}.day-type-badge{font-size:10px;padding:2px 6px;border-radius:8px;display:inline-block}.day-type-badge.rest{background:var(--orange-light);color:var(--orange)}.day-type-badge.work{background:var(--accent-light);color:var(--accent)}.day-card-body{display:flex;flex-direction:column;gap:4px}.day-card-body.empty{opacity:.5}.day-hours{font-size:20px;font-weight:800;color:var(--text-primary)}.day-amount{font-size:12px;font-weight:600;color:var(--green)}.day-multipliers{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;margin-top:4px}.mini-mult{font-size:10px;padding:1px 5px;border-radius:6px;font-weight:700}.mult-1x{background:var(--yellow-light);color:var(--yellow)}.mult-2x{background:var(--accent-light);color:var(--accent)}.mult-3x{background:var(--orange-light);color:var(--orange)}.mult-4x{background:var(--red-light);color:var(--red)}.no-overtime{font-size:11px;color:var(--text-muted)}.highlight-row{background:#3b82f60d}.type-chip{font-size:11px;padding:2px 8px;border-radius:8px;font-weight:600}.type-chip.rest{background:var(--orange-light);color:var(--orange)}.type-chip.work{background:var(--accent-light);color:var(--accent)}.comparison-table tfoot td{border-top:2px solid var(--border)}.info-box{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:20px;margin-top:20px}.info-box p{color:var(--text-secondary);font-size:13px;margin-bottom:12px}.info-box ol{padding-left:20px;display:flex;flex-direction:column;gap:6px}.info-box li{color:var(--text-secondary);font-size:13px}.info-box li strong{color:var(--text-primary)}.app-footer{text-align:center;padding:24px 16px;border-top:1px solid var(--border);margin-top:auto}.app-footer p{color:var(--text-muted);font-size:12px}.footer-note{margin-top:8px;font-size:11px!important}@media (max-width: 640px){.header-content h1{font-size:22px}.form-row{grid-template-columns:1fr}.tab-text{font-size:13px}.tab-icon{font-size:16px}.result-summary{grid-template-columns:1fr}.day-cards{grid-template-columns:repeat(auto-fill,minmax(90px,1fr))}.savings-value{font-size:22px}.summary-value{font-size:18px}.summary-value.big{font-size:20px}.comparison-table{font-size:12px}.detail-table th,.detail-table td,.comparison-table th,.comparison-table td{padding:8px 6px}}.monthly-overtime{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.monthly-header{text-align:center;margin-bottom:20px}.monthly-header h2{font-size:22px;font-weight:700;margin-bottom:4px}.monthly-header p{color:var(--text-secondary);font-size:14px}.monthly-controls{display:flex;flex-wrap:wrap;gap:16px;margin-bottom:24px;padding:16px;background:var(--bg-primary);border-radius:var(--radius-sm);border:1px solid var(--border);align-items:flex-end}.monthly-controls .control-group{display:flex;flex-direction:column;gap:6px;min-width:120px}.monthly-controls .control-group label{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.monthly-controls .input-rupiah{min-width:200px}.monthly-controls select{padding:10px 12px;font-size:14px}.rate-display{margin-left:auto;text-align:right}.rate-value{font-size:18px;font-weight:700;color:var(--green);padding:10px 0}.monthly-table-wrapper{overflow-x:auto;margin:0 -4px;padding:0 4px}.monthly-table{width:100%;border-collapse:collapse;font-size:13px}.monthly-table th{position:sticky;top:0;background:var(--bg-primary);color:var(--text-secondary);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;padding:10px 8px;border-bottom:2px solid var(--border);text-align:left;white-space:nowrap}.monthly-table td{padding:6px 8px;border-bottom:1px solid var(--border);vertical-align:middle}.monthly-table tbody tr{transition:background .15s}.monthly-table tbody tr:hover{background:#3b82f60d}.monthly-table tbody tr.has-data{background:#3b82f614}.monthly-table tbody tr.has-data:hover{background:#3b82f61f}.col-no{width:40px;text-align:center;font-weight:600;color:var(--text-muted)}.col-day{width:90px}.col-date{width:100px}.date-cell{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.date-number{font-size:11px;font-weight:600;color:var(--text-muted);line-height:1}.day-label{font-size:12px;font-weight:600;padding:2px 8px;border-radius:6px;display:inline-block}.day-label.weekday{background:var(--accent-light);color:var(--accent)}.day-label.weekend{background:var(--orange-light);color:var(--orange)}.col-type{width:70px}.type-toggle{padding:4px 10px;border:1px solid var(--border);border-radius:6px;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;font-family:inherit;background:transparent}.type-toggle.work{color:var(--accent);border-color:var(--accent)}.type-toggle.work:hover{background:var(--accent-light)}.type-toggle.rest{color:var(--orange);border-color:var(--orange);background:var(--orange-light)}.type-toggle.rest:hover{background:#f9731640}.col-time{width:90px}.col-time-input{width:85px}.time-input{width:75px;padding:6px 8px;text-align:center;font-size:13px;font-weight:600;background:var(--bg-input);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-family:inherit;outline:none;transition:border-color .15s}.time-input:focus{border-color:var(--accent)}.time-input.invalid{border-color:var(--red);background:var(--red-light)}.time-input::placeholder{color:var(--text-muted);font-weight:400}.col-hours{width:70px;text-align:center;white-space:nowrap}.hours-display{font-size:13px;font-weight:700;color:var(--accent);padding:2px 8px;background:var(--accent-light);border-radius:6px;display:inline-block;white-space:nowrap}.col-index{width:60px;text-align:center}.index-value{font-size:13px;font-weight:700;padding:2px 8px;border-radius:8px;display:inline-block}.index-value.low{background:var(--yellow-light);color:var(--yellow)}.index-value.mid{background:var(--accent-light);color:var(--accent)}.index-value.high{background:var(--red-light);color:var(--red)}.col-breakdown{min-width:120px}.breakdown-badges{display:flex;flex-wrap:wrap;gap:4px}.breakdown-badge{font-size:10px;padding:2px 6px;border-radius:6px;font-weight:600;white-space:nowrap}.breakdown-badge.b1x{background:var(--yellow-light);color:var(--yellow)}.breakdown-badge.b2x{background:var(--accent-light);color:var(--accent)}.breakdown-badge.b3x{background:var(--orange-light);color:var(--orange)}.breakdown-badge.b4x{background:var(--red-light);color:var(--red)}.breakdown-badge.b-partial{background:var(--purple-light);color:var(--purple)}.col-subtotal{width:130px;text-align:right}.subtotal-value{font-weight:600;font-variant-numeric:tabular-nums;color:var(--green)}.total-row{border-top:2px solid var(--border);background:var(--bg-primary)}.total-row td{padding:12px 8px}.total-breakdown{font-size:11px;color:var(--text-muted)}.total-amount{font-size:16px;color:var(--green)}.monthly-summary-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-top:20px}.monthly-summary-cards .summary-card{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px;text-align:center}.monthly-summary-cards .summary-card.accent{border-color:var(--green);background:var(--green-light)}.monthly-summary-cards .weekday-val{color:var(--accent)}.monthly-summary-cards .rest-val{color:var(--orange)}.monthly-summary-cards .summary-value.big{font-size:22px;color:var(--green)}.monthly-placeholder{text-align:center;padding:60px 20px;color:var(--text-muted);font-size:15px}.week-header-row{background:linear-gradient(90deg,#3b82f61f,#3b82f60d)}.week-header-row td{padding:10px 12px;border-bottom:2px solid var(--accent)}.week-header-content{display:flex;align-items:center;gap:12px}.week-label{font-size:13px;font-weight:700;color:var(--accent);background:var(--accent-light);padding:3px 10px;border-radius:6px}.week-range{font-size:12px;color:var(--text-muted)}.week-total-row{background:#3b82f60f;border-top:1px solid var(--border);border-bottom:2px solid var(--border)}.week-total-row td{padding:10px 8px}.week-total-label{font-size:12px;font-weight:700;color:var(--text-secondary)}.week-total-hours{font-size:14px;font-weight:700;color:var(--accent);background:var(--accent-light);padding:2px 8px;border-radius:6px}.week-total-index{font-size:13px;font-weight:700;color:var(--yellow)}.week-total-detail{font-size:11px;color:var(--text-muted)}.week-total-amount{font-size:14px;font-weight:700;color:var(--green)}.weekly-limit-info{margin-top:16px;padding:12px 16px;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);text-align:center}.weekly-limit-info p{font-size:12px;color:var(--text-muted);margin:0}.weekly-limit-info strong{color:var(--text-primary)}@media (max-width: 768px){.monthly-controls{flex-direction:column}.monthly-controls .control-group{width:100%}.monthly-controls .input-rupiah{min-width:100%}.rate-display{margin-left:0;text-align:left}.monthly-table{font-size:12px}.col-breakdown{display:none}.monthly-summary-cards{grid-template-columns:1fr 1fr}.pdf-modal{width:calc(100% - 24px);max-height:92vh}.suggestion-item{grid-template-columns:1fr 1fr}}.monthly-actions{display:flex;gap:10px;margin-bottom:16px;flex-wrap:wrap}.btn-import,.btn-reset{padding:10px 18px;border:none;border-radius:var(--radius-sm);font-size:14px;font-weight:700;cursor:pointer;transition:all .2s;font-family:inherit}.btn-import{background:linear-gradient(135deg,var(--accent),#6366f1);color:#fff}.btn-import:hover{transform:translateY(-1px);box-shadow:0 8px 25px #3b82f64d}.btn-reset{background:var(--bg-input);border:1px solid var(--border);color:var(--text-secondary)}.btn-reset:hover{color:var(--text-primary);border-color:var(--border-light)}.pdf-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:12px;animation:fadeIn .2s ease}.pdf-modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);width:720px;max-width:100%;max-height:88vh;display:flex;flex-direction:column;overflow:hidden}.pdf-modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--border)}.pdf-modal-header h3{font-size:17px;font-weight:700}.pdf-modal-close{width:32px;height:32px;border-radius:50%;border:1px solid var(--border);background:var(--bg-input);color:var(--text-secondary);font-size:18px;cursor:pointer;line-height:1}.pdf-modal-close:hover{color:var(--text-primary);border-color:var(--border-light)}.pdf-modal-body{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.pdf-upload-area{border:2px dashed var(--border-light);border-radius:var(--radius-sm);padding:36px 20px;text-align:center;cursor:pointer;transition:all .2s;background:var(--bg-primary)}.pdf-upload-area:hover{border-color:var(--accent);background:var(--accent-light)}.pdf-upload-content{display:flex;flex-direction:column;align-items:center;gap:8px}.pdf-upload-icon{font-size:40px}.pdf-upload-content p{font-size:15px;font-weight:600}.pdf-upload-hint{font-size:12px;color:var(--text-muted)}.pdf-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.pdf-error{padding:12px 16px;background:var(--red-light);border:1px solid var(--red);border-radius:var(--radius-sm);color:var(--red);font-size:13px;font-weight:600}.pdf-preview-header{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:10px}.pdf-preview-count{font-size:14px;font-weight:700;color:var(--green)}.pdf-preview-filename{font-size:12px;color:var(--text-muted)}.pdf-preview-table-wrapper{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-sm);max-height:320px;overflow-y:auto}.pdf-preview-table{width:100%;border-collapse:collapse;font-size:13px}.pdf-preview-table th{position:sticky;top:0;background:var(--bg-primary);color:var(--text-secondary);font-size:11px;text-transform:uppercase;letter-spacing:.5px;padding:10px 8px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.pdf-preview-table td{padding:8px;border-bottom:1px solid var(--border);white-space:nowrap}.pdf-preview-table tr.row-weekend{background:var(--orange-light)}.day-badge,.type-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;display:inline-block}.day-badge.weekday{background:var(--accent-light);color:var(--accent)}.day-badge.weekend{background:var(--orange-light);color:var(--orange)}.type-badge.work{background:var(--accent-light);color:var(--accent)}.type-badge.rest{background:var(--orange-light);color:var(--orange)}.pdf-modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 20px;border-top:1px solid var(--border)}.btn-cancel,.btn-apply{padding:10px 22px;border-radius:var(--radius-sm);font-size:14px;font-weight:700;cursor:pointer;font-family:inherit;transition:all .2s}.btn-cancel{background:transparent;border:1px solid var(--border);color:var(--text-secondary)}.btn-cancel:hover{color:var(--text-primary);border-color:var(--border-light)}.btn-apply{background:var(--green);border:none;color:#fff}.btn-apply:hover:not(:disabled){filter:brightness(1.1)}.btn-apply:disabled{opacity:.5;cursor:not-allowed}.week-limit-badge{margin-left:auto;font-size:11px;font-weight:700;padding:3px 10px;border-radius:6px;background:var(--bg-primary);color:var(--text-secondary);border:1px solid var(--border)}.week-limit-badge.over{background:var(--red-light);color:var(--red);border-color:var(--red)}.week-total-hours.over{background:var(--red-light);color:var(--red)}.rec-badge{margin-top:6px;font-size:10px;font-weight:700;padding:3px 8px;border-radius:6px;display:inline-block}.rec-badge.rec-yes{background:var(--green-light);color:var(--green);border:1px solid var(--green)}.rec-badge.rec-no{background:var(--red-light);color:var(--red);border:1px solid var(--red)}tr.rec-recommended{background:#22c55e0f}tr.rec-not{opacity:.85}tr.rec-not td{background:repeating-linear-gradient(45deg,transparent,transparent 4px,rgba(239,68,68,.04) 4px,rgba(239,68,68,.04) 8px)}.disclaimer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:9999;padding:16px}.disclaimer-modal{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:24px;max-width:420px;width:100%;text-align:center;box-shadow:var(--shadow-lg)}.disclaimer-modal h3{margin-bottom:10px;font-size:18px}.disclaimer-modal p{color:var(--text-secondary);font-size:14px;line-height:1.6;margin-bottom:16px}.disclaimer-btn{padding:10px 22px;border:none;border-radius:var(--radius-sm);background:var(--accent);color:#fff;font-weight:700;cursor:pointer}
