:root{--primary:#326c69;--primary-dark:#264f4d;--primary-light:#e8f0ef;--accent:#fcc85e;--accent-dark:#e5b44a;--brown:#6b584b;--bg:#f7f6f3;--bg-warm:#f5f0eb;--white:#fff;--text:#2d2a26;--text-light:#6b6560;--text-muted:#9a9490;--border:#e8e4df;--danger:#e74c3c;--danger-light:#fdf0ef;--success:#27ae60;--success-light:#eafaf1;--warning:#f39c12;--warning-light:#fef9e7;--info:#3498db;--info-light:#ebf5fb;--shadow-sm:0 2px 8px #2d2a260f;--shadow-md:0 8px 30px #2d2a2614;--radius:12px;--radius-sm:8px;--sans:"Noto Sans TC", "Helvetica Neue", sans-serif;--transition:.25s cubic-bezier(.4,0,.2,1);--sidebar-w:240px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:15px}body{font-family:var(--sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;line-height:1.6;overflow-x:hidden}img{max-width:100%;height:auto;display:block}a{color:var(--primary);text-decoration:none}button,input,select,textarea{font:inherit;border:none;outline:none}ul{list-style:none}.login-screen{background:linear-gradient(135deg, var(--primary-light) 0%, var(--bg) 50%, var(--bg-warm) 100%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow-md);width:100%;max-width:400px;padding:48px 40px}.login-logo{text-align:center;margin-bottom:32px}.login-logo img{border-radius:50%;margin:0 auto 16px}.login-logo h1{color:var(--text);margin-bottom:6px;font-size:22px;font-weight:700}.login-logo p{color:var(--text-muted);font-size:14px}.form-group{margin-bottom:20px}.form-group label{color:var(--text-light);margin-bottom:6px;font-size:13px;font-weight:600;display:block}.form-group input,.form-group select,.form-group textarea{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);width:100%;color:var(--text);transition:border-color var(--transition);padding:10px 14px;font-size:15px}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--primary);background:var(--white)}.form-group textarea{resize:vertical;min-height:80px}.login-error{color:var(--danger);min-height:20px;margin-bottom:12px;font-size:13px}.btn-primary-full{background:var(--primary);width:100%;color:var(--white);border-radius:var(--radius-sm);cursor:pointer;transition:background var(--transition);padding:12px;font-size:15px;font-weight:600}.btn-primary-full:hover{background:var(--primary-dark)}.app{min-height:100vh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--white);border-right:1px solid var(--border);z-index:100;transition:transform var(--transition);flex-direction:column;display:flex;position:fixed;top:0;bottom:0;left:0}.sidebar-header{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:20px;font-size:16px;font-weight:700;display:flex}.sidebar-header img{border-radius:50%}.sidebar-close{cursor:pointer;color:var(--text-muted);background:0 0;margin-left:auto;font-size:24px;display:none}.sidebar-nav{flex:1;padding:12px 0;overflow-y:auto}.sidebar-nav a{color:var(--text-light);transition:all var(--transition);border-left:3px solid #0000;align-items:center;gap:10px;padding:10px 20px;font-size:14px;font-weight:500;display:flex}.sidebar-nav a:hover{background:var(--primary-light);color:var(--primary)}.sidebar-nav a.active{background:var(--primary-light);color:var(--primary);border-left-color:var(--primary);font-weight:600}.sidebar-nav .nav-icon{text-align:center;width:20px;font-size:16px}.sidebar-footer{border-top:1px solid var(--border);padding:16px 20px}.user-info{color:var(--text-muted);margin-bottom:10px;font-size:13px}.user-info strong{color:var(--text);font-size:14px;display:block}.btn-back-front{background:var(--primary-light);border:1px solid var(--primary);border-radius:var(--radius-sm);width:100%;color:var(--primary);text-align:center;margin-bottom:8px;padding:8px;font-size:13px;font-weight:500;text-decoration:none;transition:all .2s;display:block}.btn-back-front:hover{background:var(--primary);color:#fff}.btn-logout{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);width:100%;color:var(--text-light);cursor:pointer;transition:all var(--transition);padding:8px;font-size:13px}.btn-logout:hover{background:var(--danger-light);color:var(--danger);border-color:var(--danger)}.main{min-width:0;margin-left:var(--sidebar-w);flex-direction:column;flex:1;min-height:100vh;display:flex}.topbar{background:var(--white);border-bottom:1px solid var(--border);z-index:50;align-items:center;gap:16px;padding:16px 28px;display:flex;position:sticky;top:0}.topbar-menu{cursor:pointer;color:var(--text);z-index:101;background:0 0;background:var(--white);border:1px solid var(--border);width:40px;height:40px;box-shadow:var(--shadow-sm);border-radius:8px;justify-content:center;align-items:center;font-size:22px;display:none;position:fixed;top:10px;left:10px}.sidebar-backdrop{z-index:99;background:#0006;display:none;position:fixed;inset:0}.topbar-title{flex:1;font-size:18px;font-weight:600}.topbar-right{align-items:center;gap:12px;display:flex}.content{flex:1;padding:28px}.card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--border);margin-bottom:20px;padding:24px}.card-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.card-header h3{font-size:16px;font-weight:600}.stats-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px;display:grid}.stat-card{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow-sm);border:1px solid var(--border);padding:20px}.stat-card .stat-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:6px;font-size:12px;font-weight:600}.stat-card .stat-value{color:var(--text);font-size:28px;font-weight:700}.stat-card .stat-sub{color:var(--text-muted);margin-top:4px;font-size:12px}.stat-card.primary{border-left:4px solid var(--primary)}.stat-card.accent{border-left:4px solid var(--accent)}.stat-card.success{border-left:4px solid var(--success)}.stat-card.danger{border-left:4px solid var(--danger)}.stat-card.warning{border-left:4px solid var(--warning,#f59e0b);background:#fff7ed}.btn{border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);white-space:nowrap;align-items:center;gap:6px;padding:8px 16px;font-size:13px;font-weight:600;display:inline-flex}.btn-sm{padding:5px 10px;font-size:12px}.btn-primary{background:var(--primary);color:var(--white)}.btn-primary:hover{background:var(--primary-dark)}.btn-success{background:var(--success);color:var(--white)}.btn-danger{background:var(--danger);color:var(--white)}.btn-warning{background:var(--warning);color:var(--white)}.btn-outline{background:var(--white);color:var(--text-light);border:1px solid var(--border)}.btn-outline:hover{border-color:var(--primary);color:var(--primary)}.btn-ghost{color:var(--text-light);background:0 0}.btn-ghost:hover{color:var(--primary)}.table-wrap{-webkit-overflow-scrolling:touch;background:linear-gradient(to right, var(--white), var(--white)) left center, linear-gradient(to left, var(--white), var(--white)) right center, radial-gradient(farthest-side at 0 50%, #00000024, #0000) left center, radial-gradient(farthest-side at 100% 50%, #00000024, #0000) right center;background-repeat:no-repeat;background-size:32px 100%,32px 100%,12px 100%,12px 100%;background-attachment:local,local,scroll,scroll;overflow-x:auto}table{border-collapse:collapse;width:100%}.table-wrap>table{min-width:max-content}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:12px 16px;font-size:13px}th{color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px;background:var(--bg);font-size:12px;font-weight:600}tr:hover td{background:#326c6905}.badge{border-radius:20px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.badge-pending{background:var(--warning-light);color:var(--warning)}.badge-confirmed{background:var(--info-light);color:var(--info)}.badge-progress{background:var(--primary-light);color:var(--primary)}.badge-completed{background:var(--success-light);color:var(--success)}.badge-settled{color:var(--text-light);background:#e8e4df}.badge-late{background:var(--danger-light);color:var(--danger)}.form-row{flex-wrap:wrap;gap:16px;display:flex}.form-row .form-group{flex:1;min-width:180px}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px;display:flex}.toolbar .spacer{flex:1}.filter-select{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--white);color:var(--text);padding:7px 12px;font-size:13px}.filter-input{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--white);color:var(--text);width:160px;padding:7px 12px;font-size:13px}.timer-container{text-align:center;max-width:500px;margin:0 auto}.timer-display{font-variant-numeric:tabular-nums;color:var(--primary);letter-spacing:4px;margin:24px 0;font-size:72px;font-weight:700}.timer-display.overtime{color:var(--warning)}.timer-display.paused{color:var(--text-muted)}.timer-status{color:var(--text-muted);margin-bottom:8px;font-size:14px}.timer-status .dot{vertical-align:middle;border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.dot-running{background:var(--success);animation:1.5s infinite pulse}.dot-paused{background:var(--warning)}.dot-idle{background:var(--text-muted)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.timer-actions{justify-content:center;gap:12px;margin:24px 0;display:flex}.timer-actions .btn{padding:12px 28px;font-size:15px}.timer-info{background:var(--bg);border-radius:var(--radius);text-align:left;margin-top:20px;padding:20px}.timer-info .info-row{justify-content:space-between;padding:6px 0;font-size:14px;display:flex}.timer-info .info-row .label{color:var(--text-muted)}.timer-info .info-row .value{font-weight:600}.timer-info .info-row.total{border-top:1px solid var(--border);margin-top:8px;padding-top:12px;font-size:16px}.calendar-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;max-width:720px;margin-inline:auto;display:grid}.cal-header{text-align:center;color:var(--text-muted);padding:8px 4px;font-size:12px;font-weight:600}.cal-day{aspect-ratio:1;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);border:1px solid #0000;flex-direction:column;justify-content:center;align-items:center;min-width:0;padding:2px;font-size:14px;display:flex;position:relative;overflow:hidden}.cal-day:hover{background:var(--primary-light)}.cal-day.empty{cursor:default}.cal-day.empty:hover{background:0 0}.cal-day.today{border-color:var(--primary);font-weight:700}.cal-day.available{background:var(--success-light);color:var(--success);font-weight:600}.cal-day.has-order:after{content:"";background:var(--accent);border-radius:50%;width:6px;height:6px;position:absolute;bottom:4px}.cal-nav{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.cal-nav h3{font-size:18px;font-weight:600}.cal-nav button{cursor:pointer;color:var(--text-light);border-radius:var(--radius-sm);transition:background var(--transition);background:0 0;padding:4px 12px;font-size:20px}.cal-nav button:hover{background:var(--primary-light)}.contract-modal{z-index:2000;background:var(--white);position:fixed;inset:0;overflow-y:auto}.contract-inner{max-width:800px;margin:0 auto;padding:32px 24px}.contract-header{border-bottom:2px solid var(--primary);justify-content:space-between;align-items:center;margin-bottom:28px;padding-bottom:16px;display:flex}.contract-header h2{font-size:22px;font-weight:700}.contract-close{cursor:pointer;color:var(--text-muted);background:0 0;font-size:28px}.contract-section{margin-bottom:28px}.contract-section h3{color:var(--primary);border-bottom:1px solid var(--border);margin-bottom:12px;padding-bottom:8px;font-size:16px;font-weight:600}.contract-section p,.contract-section li{color:var(--text-light);font-size:14px;line-height:1.8}.contract-section ol,.contract-section ul{padding-left:20px}.contract-section ol li,.contract-section ul li{margin-bottom:6px;list-style:decimal}.contract-section ul li{list-style:outside}.checklist-item{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 0;display:flex}.checklist-item label{flex:1;font-size:14px}.checklist-item input[type=checkbox]{width:18px;height:18px;accent-color:var(--primary)}.checklist-item input[type=text],.checklist-item select{border:1px solid var(--border);border-radius:var(--radius-sm);width:180px;padding:6px 10px;font-size:13px}.signature-area{margin-top:24px}.signature-area h3{color:var(--primary);margin-bottom:12px;font-size:16px;font-weight:600}.signature-canvas-wrap{border:2px dashed var(--border);border-radius:var(--radius);margin-bottom:12px;overflow:hidden}.signature-canvas-wrap canvas{background:var(--white);width:100%;height:200px;display:block}.signature-actions{gap:12px;display:flex}.slot-editor{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.slot-tag{background:var(--primary-light);color:var(--primary);border-radius:20px;align-items:center;gap:6px;padding:4px 12px;font-size:12px;font-weight:500;display:inline-flex}.slot-tag .remove-slot{cursor:pointer;color:var(--text-muted);font-size:14px}.slot-tag .remove-slot:hover{color:var(--danger)}.report-table-section{margin-top:24px}.summary-bar{background:var(--bg);border-radius:var(--radius-sm);flex-wrap:wrap;gap:24px;margin-bottom:20px;padding:16px 20px;display:flex}.summary-item{color:var(--text-light);font-size:13px}.summary-item strong{color:var(--text);font-size:20px;display:block}.empty-state{text-align:center;color:var(--text-muted);padding:60px 20px}.empty-state .icon{opacity:.5;margin-bottom:16px;font-size:48px}.empty-state p{font-size:14px}.toast-container{z-index:3000;flex-direction:column;gap:8px;display:flex;position:fixed;top:20px;right:20px}.toast{border-radius:var(--radius-sm);color:var(--white);box-shadow:var(--shadow-md);max-width:320px;padding:12px 20px;font-size:13px;font-weight:500;animation:.3s toastIn}.toast.success{background:var(--success)}.toast.error{background:var(--danger)}.toast.warning{background:var(--warning)}.toast.info{background:var(--info)}@keyframes toastIn{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}.modal-bg{z-index:1500;background:#0006;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-dialog{background:var(--white);border-radius:var(--radius);box-shadow:var(--shadow-md);width:100%;max-width:560px;max-height:85vh;padding:32px;overflow-y:auto}.modal-dialog h3{margin-bottom:20px;font-size:18px;font-weight:600}.modal-dialog .modal-actions{justify-content:flex-end;gap:12px;margin-top:24px;display:flex}@media (max-width:768px){.sidebar{transform:translate(-100%)}.sidebar.open{transform:translate(0);box-shadow:0 8px 30px #0000002e}.sidebar-backdrop,.sidebar-close{display:block}.main{margin-left:0}.topbar-menu{display:inline-flex}.topbar{padding:14px 16px 14px 58px}.topbar-title{font-size:17px}.content{padding:16px}.timer-display{font-size:48px}.stats-grid{grid-template-columns:repeat(2,1fr);gap:12px}.stat-card{padding:14px}.stat-card .stat-value{font-size:22px}.stat-card .stat-label{letter-spacing:.5px;font-size:11px}.stat-card .stat-sub{font-size:11px}.card{padding:16px}.form-row{flex-direction:column}.form-row .form-group{min-width:100%}}@media (max-width:480px){.stats-grid{grid-template-columns:repeat(2,1fr);gap:10px}.stat-card{padding:12px}.stat-card .stat-value{font-size:20px}.timer-display{font-size:40px}.login-card{padding:32px 24px}}#adminApp{color:#2d2a26;-webkit-font-smoothing:antialiased;background:#f7f6f3;font-family:Noto Sans TC,Helvetica Neue,sans-serif;font-size:15px;line-height:1.6}.time-picker{width:100%;position:relative}.time-picker-trigger{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);width:100%;color:var(--text);text-align:left;cursor:pointer;transition:border-color var(--transition);padding:10px 14px;font-size:15px}.time-picker-trigger:hover,.time-picker-trigger:focus{border-color:var(--primary);background:var(--white)}.time-picker-trigger:disabled{opacity:.5;cursor:not-allowed}.time-picker-popover{z-index:1000;background:var(--white);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);min-width:260px;padding:8px;position:absolute;top:calc(100% + 4px);left:0}.time-picker-cols{grid-template-columns:1fr 1fr 1fr;gap:4px;display:grid}.time-picker-col{flex-direction:column;gap:2px;max-height:200px;padding:2px;display:flex;overflow-y:auto}.time-picker-opt{color:var(--text);cursor:pointer;text-align:center;transition:background var(--transition);background:0 0;border-radius:6px;padding:6px 10px;font-size:14px}.time-picker-opt:hover{background:var(--primary-light)}.time-picker-opt.active{background:var(--primary);color:var(--white)}.time-picker-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:8px;margin-top:8px;padding-top:8px;display:flex}.time-picker-btn{cursor:pointer;transition:background var(--transition);border-radius:6px;padding:6px 14px;font-size:14px;font-weight:600}.time-picker-btn.ghost{color:var(--text-light);background:0 0}.time-picker-btn.ghost:hover{background:var(--bg)}.time-picker-btn.primary{background:var(--primary);color:var(--white)}.time-picker-btn.primary:hover{background:var(--primary-dark)}
