@import "https://fonts.googleapis.com/css2?family=Sarabun:wght@300;400;500;600;700&display=swap";:root{--primary-red:#d32f2f;--primary-red-hover:#b71c1c;--bg-color:#f8fafc;--text-primary:#334155;--text-secondary:#64748b;--shadow-sm:0 1px 2px 0 #0000000d;--shadow-md:0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a;--border-radius:12px}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-color);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overscroll-behavior-y:contain;font-family:Sarabun,sans-serif;overflow-x:hidden}html{background-color:var(--bg-color);scroll-behavior:smooth;-webkit-text-size-adjust:100%}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}button{font-family:Sarabun,sans-serif}.driver-page{background:#f8fafc;width:100%;min-height:100dvh}.driver-web-container{background-color:#f8fafc;flex-direction:column;width:100%;min-height:100dvh;font-family:Sarabun,sans-serif;display:flex;position:relative}.driver-header{color:#fff;padding:calc(16px + env(safe-area-inset-top,0px)) 16px 16px;z-index:30;background:linear-gradient(135deg,#e53935 0%,#b71c1c 100%);border-bottom:1px solid #ffffff1a;position:sticky;top:0;box-shadow:0 4px 12px #e5393533}.header-title{letter-spacing:.2px;color:#fff;align-items:center;gap:12px;font-size:1.25rem;font-weight:600;display:flex}.driver-content{padding:16px;padding-bottom:calc(104px + env(safe-area-inset-bottom,0px));flex:1;animation:.18s ease-out contentIn}.driver-loading-page{min-height:calc(100dvh - 76px);padding:32px 28px calc(32px + env(safe-area-inset-bottom,0px));text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;display:flex}.driver-loading-spinner{border:4px solid #fee2e2;border-top-color:#d32f2f;border-radius:50%;width:48px;height:48px;margin-bottom:20px;animation:.7s linear infinite driverSpin}.driver-loading-page h1{color:#1e293b;margin:0 0 8px;font-size:1.25rem}.driver-loading-page p{color:#64748b;max-width:320px;margin:0;font-size:.95rem;line-height:1.6}.driver-load-error-icon{color:#c62828;background:#fff1f2;border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;margin-bottom:18px;display:flex}.driver-retry-button{color:#fff;cursor:pointer;background:#d32f2f;border:0;border-radius:10px;justify-content:center;align-items:center;gap:8px;margin-top:20px;padding:12px 18px;font-weight:600;display:inline-flex}.status-section{text-align:center;background:#fff;border-radius:12px;margin-bottom:16px;padding:16px;box-shadow:0 2px 8px #0000000d}.status-section h3{color:#475569;margin:0 0 12px;font-size:1rem}.status-badge{border-radius:20px;align-items:center;gap:8px;margin-bottom:12px;padding:8px 16px;font-size:1rem;font-weight:700;display:inline-flex}.status-badge.wait{color:#854d0e;background-color:#fef9c3}.status-badge.dispatching{color:#166534;background-color:#dcfce7}.status-badge.progress{color:#1e40af;background-color:#dbeafe}.status-badge.completed{color:#475569;background-color:#e2e8f0}.status-desc{color:#64748b;margin:0;font-size:.9rem;line-height:1.5}.session-expired-page{flex:1;justify-content:center;align-items:center;padding:24px 20px;display:flex;overflow-y:auto}.session-expired-card{text-align:center;background:#fff;border:1px solid #f1f5f9;border-radius:16px;width:100%;max-width:360px;padding:28px 20px;box-shadow:0 4px 16px #0000000f}.session-expired-icon{color:#c62828;background:#fff1f2;border-radius:50%;justify-content:center;align-items:center;width:84px;height:84px;margin:0 auto 18px;display:flex}.session-expired-card h1{color:#1e293b;margin:0 0 10px;font-size:1.35rem}.session-expired-description{color:#64748b;margin:0 0 18px;font-size:.95rem;line-height:1.6}.session-expired-error{color:#b91c1c;background:#fef2f2;border-radius:8px;margin:0 0 18px;padding:10px 12px;font-size:.86rem;line-height:1.45}.qr-primary-button,.qr-secondary-button,.qr-image-button{cursor:pointer;border:none;border-radius:10px;justify-content:center;align-items:center;gap:8px;width:100%;font-family:inherit;font-weight:600;display:flex}.qr-primary-button{color:#fff;background:linear-gradient(135deg,#e53935 0%,#c62828 100%);padding:14px 16px;box-shadow:0 7px 16px #d32f2f3d}.qr-image-button,.qr-secondary-button{color:#475569;background:#f1f5f9;margin-top:10px;padding:12px 16px}.qr-primary-button:disabled,.qr-image-button:disabled{opacity:.65;cursor:wait}.qr-camera-panel{background:#0f172a;border-radius:12px;padding:10px;position:relative;overflow:hidden}.qr-camera-preview{object-fit:cover;background:#020617;border-radius:8px;width:100%;min-height:220px;max-height:320px;display:block}.qr-camera-frame{aspect-ratio:1;pointer-events:none;border:3px solid #fff;border-radius:10px;width:58%;position:absolute;top:50%;left:50%;transform:translate(-50%,-60%);box-shadow:0 0 0 999px #02061747}.qr-camera-panel p{color:#fff;margin:10px 0 0;font-size:.85rem;position:relative}.qr-file-input{display:none}.info-card{background:#fff;border:1px solid #f1f5f9;border-radius:16px;margin-bottom:20px;padding:0;overflow:hidden;box-shadow:0 4px 16px #0000000a}.info-row{justify-content:space-between;align-items:center;padding:16px;display:flex}.info-row.divider{background-color:#f8fafc;border-top:1px solid #f1f5f9}.info-label{color:#64748b;font-size:.9rem;font-weight:500}.info-value{color:#0f172a;align-items:center;gap:6px;font-size:1rem;font-weight:700;display:flex}.info-value.license-plate{color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:6px;padding:4px 12px}.info-value.workers-req{color:#b91c1c}.market-list h3{color:#334155;margin:0 0 12px;font-size:1.1rem}.market-card{content-visibility:auto;contain-intrinsic-size:auto 220px;background:#fff;border:1px solid #f1f5f9;border-radius:16px;margin-bottom:20px;overflow:hidden;box-shadow:0 4px 16px #0000000a}.market-header{color:#be123c;background:linear-gradient(90deg,#fff1f2 0%,#fff 100%);border-bottom:1px solid #ffe4e6;align-items:center;gap:10px;padding:14px 16px;font-size:1.05rem;font-weight:600;display:flex}.stall-list{padding:16px}.stall-item{margin-bottom:16px}.stall-item:last-child{margin-bottom:0}.stall-header{color:#0f172a;margin-bottom:8px;font-size:.95rem;font-weight:700}.product-list{border-left:2px solid #e2e8f0;flex-direction:column;gap:8px;margin-left:6px;padding-left:20px;display:flex}.product-item{background:#f8fafc;border:1px solid #f1f5f9;border-radius:8px;padding:10px}.product-name{color:#334155;align-items:center;gap:6px;margin-bottom:4px;font-size:.9rem;font-weight:500;display:flex}.product-amount{color:#0f172a;padding-left:20px;font-size:.85rem;font-weight:700}.worker-hint{color:#64748b;margin-left:4px;font-size:.75rem;font-weight:400}.bottom-action-bar{z-index:25;padding:18px 20px calc(18px + env(safe-area-inset-bottom,0px));background:linear-gradient(#fff0 0%,#fff 28%);border-top:none;position:fixed;bottom:0;left:0;right:0}.btn-ready{color:#fff;cursor:pointer;background:linear-gradient(135deg,#e53935 0%,#c62828 100%);border:none;border-radius:12px;justify-content:center;align-items:center;gap:9px;width:100%;padding:18px;font-family:inherit;font-size:1.15rem;font-weight:700;transition:all .2s;display:flex;box-shadow:0 8px 20px #d32f2f4d}.btn-ready:active{transform:translateY(2px);box-shadow:0 4px 10px #d32f2f4d}.btn-disabled{color:#64748b;cursor:not-allowed;width:100%;box-shadow:none;background-color:#e2e8f0;border:none;border-radius:12px;padding:18px;font-family:inherit;font-size:1.1rem;font-weight:700}.button-spinner{border:2px solid #ffffff6b;border-top-color:#fff;border-radius:50%;width:18px;height:18px;animation:.65s linear infinite driverSpin}.simulator-controls{background:#fff;border:1px solid #f1f5f9;border-radius:16px;flex-direction:column;gap:10px;width:200px;padding:20px;display:flex;box-shadow:0 4px 16px #0000000a}.sim-btn{color:#475569;cursor:pointer;text-align:left;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;padding:10px 14px;font-family:inherit;font-size:.95rem;transition:all .2s}.sim-btn:hover{background:#f1f5f9;border-color:#cbd5e1}.sim-btn.active{color:#1d4ed8;background:#eff6ff;border-color:#3b82f6;font-weight:700}.status-badge.waiting-worker{color:#c2410c;background-color:#ffedd5}.status-badge.cancelled{color:#b91c1c;background-color:#fee2e2}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background-color:#00000080;justify-content:center;align-items:center;width:100%;height:100%;animation:.2s ease-out fadeIn;display:flex;position:fixed;top:0;left:0}.modal-content{border-radius:var(--border-radius);text-align:center;background-color:#fff;width:90%;max-width:320px;padding:24px;animation:.3s cubic-bezier(.175,.885,.32,1.275) slideUp;box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a}.modal-icon{background-color:#fee2e2;border-radius:50%;justify-content:center;align-items:center;width:72px;height:72px;margin:0 auto 16px;display:flex}.modal-title{color:var(--text-primary);margin-bottom:8px;font-size:1.25rem}.modal-desc{color:var(--text-secondary);margin-bottom:24px;font-size:.95rem;line-height:1.5}.modal-actions{gap:12px;display:flex}.modal-actions button{cursor:pointer;border:none;border-radius:8px;flex:1;padding:12px 0;font-size:1rem;font-weight:600;transition:all .2s}.btn-cancel{color:#475569;background-color:#f1f5f9}.btn-cancel:active{background-color:#e2e8f0}.btn-confirm{background-color:var(--primary-red);color:#fff}.btn-confirm:active{background-color:var(--primary-red-hover)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes driverSpin{to{transform:rotate(360deg)}}@keyframes contentIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (hover:hover) and (pointer:fine){.btn-ready:hover{background:linear-gradient(135deg,#ef5350 0%,#b71c1c 100%);transform:translateY(-2px);box-shadow:0 10px 24px #d32f2f66}}@media (prefers-reduced-motion:reduce){.driver-content{animation:none}.driver-loading-spinner,.button-spinner{animation-duration:1.4s}}
