@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800;900&family=Noto+Sans+Thai:wght@300;400;500;600;700;800;900&display=swap";
:root{--bg:#f4f6fb;--surface:#fff;--ink:#15202b;--muted:#607080;--line:#d9e0e7;--accent:#007c89;--accent-strong:#005e68;--accent-soft:#e7f5f6;--warning:#b75f00;--warning-soft:#fff3df;--success:#137333;--success-soft:#e7f4ec;--danger:#b3261e;--danger-soft:#fdebea;--info:#1a73e8;--info-soft:#eaf2ff;--shadow:0 12px 30px #15202b14;--card-shadow:0 10px 22px #15202b12}*{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;color:var(--ink);margin:0;font-family:Outfit,Noto Sans Thai,Arial,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button:disabled{cursor:not-allowed}.app-shell{min-height:100vh}.mobile-shell{background:linear-gradient(180deg, #007c891a, #f4f6fb00 220px), var(--bg);min-height:100vh;color:var(--ink);padding-bottom:86px}.h-screen{--accent:#2563eb;--accent-strong:#1d4ed8;--accent-soft:#dbeafe;background:#f3f4f6}.app-header{z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff0;border-bottom:1px solid #d9e0e7cc;grid-template-columns:1fr auto;align-items:center;gap:12px;padding:14px 16px 12px;display:grid;position:sticky;top:0}.app-header__main{align-items:center;gap:10px;min-width:0;display:flex}.app-mark{background:var(--accent);color:#fff;border-radius:10px;flex:none;place-items:center;width:38px;height:38px;font-size:18px;font-weight:900;display:grid}.app-header h1{margin:0;font-size:22px;line-height:1.15}.app-header p{color:var(--muted);margin:2px 0 0;font-size:12px;line-height:1.35}.user-pill{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:inline-flex}.user-pill>span{color:#fff;background:#182d3d;border-radius:999px;place-items:center;width:34px;height:34px;font-weight:900;display:grid}.user-pill div{display:none}.user-pill strong,.user-pill small{line-height:1.2;display:block}.user-pill strong{font-size:13px}.user-pill small{color:var(--muted);font-size:11px}.top-switch{border:1px solid var(--line);background:#edf2f6;border-radius:10px;grid-column:1/-1;grid-template-columns:1fr 1fr;gap:6px;padding:4px;display:grid}.top-switch a{min-height:34px;color:var(--muted);border-radius:8px;justify-content:center;align-items:center;font-size:13px;font-weight:800;display:flex}.top-switch a.active{color:var(--accent-strong);background:#fff;box-shadow:0 4px 10px #15202b14}.mobile-page{width:min(760px,100%);margin:0 auto;padding:14px 14px 24px}.ops-reference-page,.tech-reference-page{gap:12px;display:grid}.ops-hero-card,.tech-connection-card{background:#fff;border:1px solid #d9e0e7e6;border-radius:16px;justify-content:space-between;align-items:center;gap:12px;padding:14px;display:flex;box-shadow:0 10px 24px #0f172a14}.ops-hero-card h2,.tech-connection-card h2{margin:0;font-size:22px;line-height:1.15}.ops-hero-card p,.tech-connection-card p,.eyebrow{color:var(--muted);margin:2px 0 0;font-size:12px;line-height:1.35}.eyebrow{color:var(--accent-strong);letter-spacing:.04em;text-transform:uppercase;margin:0 0 4px;font-weight:900}.safe-icon-button{background:var(--accent);color:#fff;border-radius:999px;flex:none;place-items:center;width:42px;height:42px;font-size:22px;font-weight:900;display:grid;box-shadow:0 10px 20px #007c8940}.safe-icon-button.blue{box-shadow:0 10px 20px #2563eb40}.ops-dashboard-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}.ops-stat-card,.tech-kpi-row>div{border:1px solid var(--line);background:#fff;border-radius:14px;min-width:0;padding:12px;box-shadow:0 6px 16px #0f172a0f}.ops-stat-card span,.tech-kpi-row span{color:var(--muted);font-size:11px;font-weight:900;display:block}.ops-stat-card strong,.tech-kpi-row strong{margin-top:2px;font-size:28px;line-height:1;display:block}.ops-stat-card.accent strong{color:var(--accent-strong)}.ops-stat-card.warning strong{color:var(--warning)}.ops-stat-card.info strong{color:var(--info)}.ops-stat-card.danger strong{color:var(--danger)}.filter-bar{grid-template-columns:minmax(0,1fr) 44px;align-items:center;gap:10px;display:grid}.filter-scroll{scrollbar-width:none;gap:8px;padding:2px 2px 6px;display:flex;overflow-x:auto}.filter-scroll::-webkit-scrollbar{display:none}.filter-chip{border:1px solid var(--line);min-width:max-content;min-height:40px;color:var(--muted);cursor:default;background:#fff;border-radius:999px;align-items:center;gap:8px;padding:8px 12px;display:inline-flex;box-shadow:0 5px 12px #15202b0a}.filter-chip span{font-size:13px;font-weight:800}.filter-chip strong{min-width:24px;height:24px;color:var(--ink);background:#f0f3f6;border-radius:999px;place-items:center;font-size:12px;display:grid}.filter-chip.active{border-color:var(--accent);background:var(--accent);color:#fff}.filter-chip.active strong{color:#fff;background:#ffffff38}.refresh-button,.floating-refresh{background:var(--accent);color:#fff;border:0;border-radius:999px;place-items:center;font-size:23px;font-weight:900;display:grid;box-shadow:0 10px 22px #007c8947}.refresh-button{width:44px;height:44px}.mobile-list{gap:12px;display:grid}.ops-job-card,.tech-job-card{background:var(--surface);box-shadow:var(--card-shadow);border:1px solid #d9e0e7eb;border-radius:14px}.ops-job-card{gap:12px;padding:14px;display:grid}.ops-reference-card{border-left:5px solid var(--accent)}.tech-job-card{grid-template-columns:62px 1fr;display:grid;overflow:hidden}.tech-reference-card{border-radius:18px}.tech-job-card__rail{color:#1d4ed8;background:#dbeafe;flex-direction:column;align-items:center;gap:4px;padding-top:18px;font-size:13px;font-weight:900;display:flex}.tech-job-card__rail small{color:#64748b;font-size:11px;font-weight:800}.tech-job-card__body{gap:10px;padding:14px;display:grid}.card-row{gap:10px;display:flex}.card-row--top{justify-content:space-between;align-items:flex-start}.ops-job-card h2,.tech-job-card h2{margin:2px 0 0;font-size:18px;line-height:1.25}.job-time,.job-number{color:var(--accent-strong);margin:0;font-size:13px;font-weight:900}.job-number{color:var(--muted);font-size:12px}.job-problem,.job-address{color:var(--muted);margin:0;font-size:14px;line-height:1.45}.job-problem{color:var(--ink);font-weight:700}.job-meta-grid{grid-template-columns:1fr 1fr;gap:10px;margin:0;display:grid}.job-meta-grid div{min-width:0}.job-meta-grid dt{color:var(--muted);font-size:11px;font-weight:900}.job-meta-grid dd{overflow-wrap:anywhere;color:var(--ink);margin:2px 0 0;font-size:13px;font-weight:800}.status-chip{white-space:nowrap;border-radius:999px;flex:none;justify-content:center;align-items:center;min-height:28px;padding:5px 9px;font-size:12px;font-weight:900;line-height:1;display:inline-flex}.tone-info{background:var(--info-soft);color:#1457a8}.tone-warning,.tone-urgent{background:var(--warning-soft);color:var(--warning)}.tone-success{background:var(--success-soft);color:var(--success)}.tone-danger{background:var(--danger-soft);color:var(--danger)}.tone-default{color:var(--muted);background:#eef2f5}.card-actions{grid-template-columns:repeat(2,minmax(0,1fr));align-items:center;gap:8px;display:grid}.card-actions--ops{grid-template-columns:repeat(4,minmax(0,1fr))}.card-actions--tech{grid-template-columns:repeat(3,minmax(0,1fr))}.action-button,.action-icon{border:1px solid var(--line);min-height:38px;color:var(--ink);background:#fff;border-radius:10px;justify-content:center;align-items:center;padding:8px 10px;font-size:13px;font-weight:900;display:inline-flex}.action-button.primary{border-color:var(--accent);background:var(--accent);color:#fff}.action-button.danger{color:var(--danger)}.action-button:disabled{color:#94a3b8;opacity:.9;background:#f1f5f9}.action-icon{min-height:34px;color:var(--accent-strong);grid-column:1/-1}.tech-contact-row{color:#475569;background:#f8fafc;border-radius:12px;justify-content:space-between;gap:8px;padding:9px 10px;font-size:12px;font-weight:900;display:flex}.date-nav,.tech-date-strip{border:1px solid var(--line);background:#fff;border-radius:14px;grid-template-columns:42px 1fr 42px;align-items:center;gap:8px;padding:8px;display:grid;box-shadow:0 6px 14px #15202b0d}.date-nav button,.tech-date-strip button{width:42px;height:42px;color:var(--accent-strong);background:#f0f4f7;border:0;border-radius:10px;place-items:center;font-size:28px;line-height:1;display:grid}.tech-date-strip button:disabled{opacity:.55}.date-nav div,.tech-date-strip div{justify-items:center;gap:2px;display:grid}.date-nav strong,.tech-date-strip strong{font-size:16px}.date-nav span,.tech-date-strip span{color:var(--muted);font-size:12px;font-weight:800}.segmented-tabs,.tech-tabs{background:#e5e7eb;border-radius:12px;grid-template-columns:repeat(2,1fr);gap:4px;padding:4px;display:grid}.segmented-tabs button,.tech-tabs button{min-height:38px;color:var(--muted);background:0 0;border:0;border-radius:9px;font-size:13px;font-weight:900}.segmented-tabs button.active,.tech-tabs button.active{color:var(--accent-strong);background:#fff;box-shadow:0 4px 10px #15202b14}.tech-tabs span{color:#94a3b8;margin-left:4px}.tech-kpi-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.tech-tool-icon{color:#1d4ed8;background:#dbeafe;border-radius:14px;flex:none;place-items:center;width:44px;height:44px;font-size:22px;display:grid}.safe-banner,.loading-card,.error-card{border-radius:14px;padding:12px;font-size:13px;font-weight:800;line-height:1.45}.safe-banner{color:#9a3412;background:#fff7ed;border:1px solid #fed7aa}.safe-banner.blue{color:#1d4ed8;background:#eff6ff;border-color:#bfdbfe}.loading-card{border:1px solid var(--line);color:var(--muted);text-align:center;background:#fff}.error-card{border:1px solid var(--danger-soft);background:var(--danger-soft);color:var(--danger)}.floating-refresh{z-index:20;width:54px;height:54px;position:fixed;bottom:88px;right:18px}.bottom-nav{z-index:30;width:min(760px,100%);padding:10px 14px max(10px, env(safe-area-inset-bottom));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffffff5;grid-template-columns:1fr 1fr;gap:8px;margin:0 auto;display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav a{min-height:46px;color:var(--muted);border-radius:8px;justify-content:center;align-items:center;gap:8px;font-size:13px;font-weight:900;display:flex}.bottom-nav span{font-size:18px;line-height:1}.bottom-nav a.active{background:var(--accent-soft);color:var(--accent-strong)}.topbar{z-index:10;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffeb;justify-content:space-between;align-items:center;gap:16px;padding:16px 28px;display:flex;position:sticky;top:0}.brand{flex-direction:column;gap:2px;display:flex}.brand strong{letter-spacing:0;font-size:18px}.brand span,.meta{color:var(--muted);font-size:13px}.nav{align-items:center;gap:8px;display:flex}.nav a,.button{border:1px solid var(--line);background:var(--surface);min-height:38px;color:var(--ink);border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:8px 12px;font-size:14px;font-weight:700;display:inline-flex}.button.primary,.nav a.active{border-color:var(--accent);background:var(--accent);color:#fff}.page{width:min(1180px,100% - 32px);margin:0 auto;padding:28px 0 48px}.page-header{justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:22px;display:flex}.page-title{margin:0;font-size:clamp(28px,4vw,44px);line-height:1.1}.summary-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px;display:grid}.summary-card,.panel,.job-card{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:8px}.summary-card{padding:16px}.summary-card span{color:var(--muted);margin-bottom:6px;font-size:13px;display:block}.summary-card strong{font-size:28px}.panel{overflow:hidden}.table{border-collapse:collapse;width:100%}.table th,.table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:14px 16px;font-size:14px}.table th{color:var(--muted);text-transform:uppercase;font-size:12px}.table tr:last-child td{border-bottom:0}.status{color:var(--accent-strong);white-space:nowrap;background:#eef6f7;border-radius:999px;align-items:center;padding:5px 9px;font-size:12px;font-weight:800;display:inline-flex}.status.urgent{color:var(--warning);background:#fff3e3}.job-list{gap:12px;display:grid}.job-card{grid-template-columns:1fr auto;gap:16px;padding:16px;display:grid}.job-card h2,.job-card h3{margin:0 0 6px;font-size:18px}.job-card p,.detail-list p{color:var(--muted);margin:0;line-height:1.55}.detail-grid{grid-template-columns:1.3fr .7fr;gap:16px;display:grid}.detail-list{gap:14px;padding:18px;display:grid}.field-label{color:var(--muted);text-transform:uppercase;margin-bottom:4px;font-size:12px;font-weight:800;display:block}.form{gap:14px;padding:18px;display:grid}.form textarea,.form input{border:1px solid var(--line);background:#fff;border-radius:8px;width:100%;min-height:42px;padding:10px 12px}.form textarea{resize:vertical;min-height:120px}@media (max-width:820px){.topbar,.page-header,.job-card{flex-direction:column;align-items:stretch}.topbar{position:static}.nav{grid-template-columns:1fr 1fr;width:100%;display:grid}.summary-grid,.detail-grid{grid-template-columns:1fr}.table{white-space:nowrap;display:block;overflow-x:auto}}@media (max-width:560px){.ops-dashboard-grid,.card-actions--ops,.card-actions--tech{grid-template-columns:repeat(2,minmax(0,1fr))}}.ops-admin-screen{background:#f4f6f5;padding-bottom:82px}.ops-admin-header{z-index:25;background:#fff;border-bottom:1px solid #e5e7eb;justify-content:space-between;align-items:center;padding:14px 16px;display:flex;position:sticky;top:0}.ops-admin-header h1{color:#12805c;margin:0;font-size:22px;font-weight:900;line-height:1.1}.ops-admin-avatar{color:#047857;background:#d1fae5;border-radius:999px;place-items:center;width:38px;height:38px;font-weight:900;display:grid}.ops-admin-page{gap:10px;padding-top:16px}.ops-title-row h2{color:#111827;margin:0;font-size:24px;font-weight:900}.bottom-nav{z-index:30;width:min(760px,100%);padding:8px 6px max(8px, env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(16px);background:#fffffff2;border-top:1px solid #e2e8f0;margin:0 auto;display:grid;position:fixed;bottom:0;left:0;right:0}.bottom-nav a{color:#94a3b8;border-radius:8px;flex-direction:column;justify-content:center;align-items:center;gap:3px;min-height:48px;font-size:11px;font-weight:600;transition:all .2s;display:flex}.bottom-nav a.active{background:0 0}.tech-bottom-nav{grid-template-columns:repeat(6,1fr)}.tech-bottom-nav a.active{color:#1d4ed8}.ops-bottom-nav{grid-template-columns:repeat(3,1fr)}.ops-bottom-nav a.active{color:#16a34a}.tech-pwa-screen{background:#f8fafc;min-height:100vh}.tech-pwa-page{gap:12px;padding-top:0}.tech-pwa-hero{color:#fff;background:linear-gradient(135deg,#1d4ed8 0%,#3b82f6 100%);border-radius:0 0 28px 28px;margin:0 -14px 12px;padding:24px 20px 20px;box-shadow:0 10px 25px #1d4ed826}.tech-pwa-hero__top{justify-content:space-between;align-items:center;display:flex}.tech-pwa-hero p{opacity:.9;margin:0;font-size:13px;font-weight:500}.tech-pwa-hero h1{margin:4px 0 0;font-size:26px;font-weight:800}.tech-pwa-avatar{color:#fff;background:#ffffff38;border-radius:999px;place-items:center;width:44px;height:44px;font-weight:900;display:grid}.tech-pwa-status-box{flex-direction:column;align-items:flex-end;gap:6px;display:flex}.tech-pwa-badge{color:#fff;background:#ffffff26;border:1px solid #fff3;border-radius:99px;align-items:center;gap:6px;padding:4px 10px;font-size:11px;font-weight:600;display:inline-flex}.tech-pwa-badge.green-dot:before{content:"";background-color:#10b981;border-radius:99px;width:6px;height:6px;display:inline-block}.tech-pwa-kpis{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:20px;display:grid}.tech-pwa-kpis div{-webkit-backdrop-filter:blur(12px);text-align:center;background:#ffffff1f;border:1px solid #ffffff2e;border-radius:12px;padding:10px 6px;box-shadow:0 4px 15px #0000000d}.tech-pwa-kpis strong{color:#fff;font-size:22px;font-weight:700;display:block}.tech-pwa-kpis span{opacity:.85;margin-top:2px;font-size:11px;font-weight:500;display:block}.tech-pwa-tabs{background:#f1f5f9;border-radius:14px;grid-template-columns:repeat(3,1fr);gap:4px;margin-bottom:8px;padding:4px;display:grid}.tech-pwa-tabs button{color:#64748b;background:0 0;border:0;border-radius:10px;min-height:38px;font-size:13px;font-weight:700;transition:all .2s}.tech-pwa-tabs button.active{color:#1e293b;background:#fff;box-shadow:0 4px 10px #0f172a0d}.tech-quick-actions{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:8px;display:grid}.tech-quick-actions button{color:#fff;cursor:pointer;border:0;border-radius:12px;justify-content:center;align-items:center;gap:6px;min-height:42px;font-size:14px;font-weight:700;transition:all .2s;display:flex;box-shadow:0 4px 12px #0000000d}.tech-quick-actions button.btn-green{background:#10b981}.tech-quick-actions button.btn-green:hover{background:#059669}.tech-quick-actions button.btn-blue{background:#2563eb}.tech-quick-actions button.btn-blue:hover{background:#1d4ed8}.tech-pwa-card{background:#fff;border:1px solid #f1f5f9;border-radius:16px;gap:12px;padding:16px;display:grid;box-shadow:0 4px 15px #0f172a08}.tech-pwa-card__header{justify-content:space-between;align-items:center;display:flex}.tech-pwa-card__header .job-meta{color:#94a3b8;font-size:12px;font-weight:500}.tech-pwa-card__header .status-badge{color:#1d4ed8;background:#dbeafe;border-radius:99px;padding:4px 10px;font-size:11px;font-weight:700}.tech-pwa-card .job-title{color:#1e293b;margin:0;font-size:18px;font-weight:800}.tech-pwa-card .info-rows{gap:8px;display:grid}.tech-pwa-card .info-row{color:#475569;align-items:center;gap:8px;font-size:13px;font-weight:500;display:flex}.tech-pwa-card .info-row svg{color:#64748b;flex-shrink:0}.tech-pwa-card__actions{grid-template-columns:repeat(3,1fr);gap:8px;margin-top:4px;display:grid}.tech-pwa-card__actions button,.tech-pwa-card__actions a{cursor:pointer;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:4px;min-height:38px;padding:6px 4px;font-size:13px;font-weight:700;text-decoration:none;transition:all .2s;display:flex}.tech-pwa-card__actions button.btn-call{color:#de350b;background:#fdf2f2}.tech-pwa-card__actions button.btn-nav{color:#334155;background:#f1f5f9}.tech-pwa-card__actions button.btn-depart{color:#fff;background:#2563eb}.tech-pwa-card__actions button.btn-reschedule{color:#d97706;background:#fff;border-color:#f59e0b}.tech-pwa-card__actions button.btn-cancel{color:#dc2626;background:#fff;border-color:#ef4444}.tech-pwa-card__actions button.btn-rebook{color:#059669;background:#fff;border-color:#10b981}.ops-admin-screen{background:#f8fafc}.ops-admin-header{background:#fff;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.ops-admin-header h1{color:#16a34a;margin:0;font-size:20px;font-weight:800}.ops-admin-header p{color:#64748b;margin:2px 0 0;font-size:11px;font-weight:500}.ops-admin-avatar{color:#fff;background:#cbd5e1;border:1px solid #cbd5e1;border-radius:99px;justify-content:center;align-items:center;width:36px;height:36px;font-weight:800;display:flex;overflow:hidden}.ops-admin-avatar img{object-fit:cover;width:100%;height:100%}.ops-admin-filters{background:#fff;border-radius:12px;grid-template-columns:1fr 1fr;gap:8px;padding:12px;display:grid;box-shadow:0 4px 12px #0f172a0a}.ops-admin-filters label{flex-direction:column;gap:4px;display:flex}.ops-admin-filters span{color:#64748b;font-size:11px;font-weight:600}.ops-admin-filters input,.ops-admin-filters select{color:#1e293b;background-color:#fff;border:1px solid #cbd5e1;border-radius:8px;height:36px;padding:0 8px;font-size:13px;font-weight:600}.ops-refresh-button{color:#fff;background:#16a34a;border-radius:8px;grid-column:1/-1;justify-content:center;align-items:center;height:38px;font-size:14px;font-weight:700;text-decoration:none;display:flex}.ops-job-card{background:#fff;border:1px solid #e2e8f0;border-radius:14px;gap:10px;padding:14px;display:grid;box-shadow:0 4px 12px #0f172a08}.ops-job-card__top{justify-content:space-between;align-items:center;display:flex}.ops-job-card__job-no{color:#1e293b;font-size:14px;font-weight:700}.ops-job-card__status{color:#dc2626;background:#fee2e2;border-radius:99px;padding:4px 8px;font-size:11px;font-weight:700}.ops-job-card__status.status-assigned{color:#15803d;background:#dcfce7}.ops-job-card__status.status-working{color:#1d4ed8;background:#dbeafe}.ops-job-card__time{color:#64748b;align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex}.ops-job-card__customer{flex-direction:column;gap:2px;display:flex}.ops-job-card__customer strong{color:#1e293b;font-size:14px;font-weight:700}.ops-job-card__customer a{color:#2563eb;align-items:center;gap:6px;font-size:13px;font-weight:600;display:inline-flex}.ops-job-card__address{color:#475569;align-items:center;gap:6px;font-size:13px;font-weight:500;display:flex}.ops-job-card__divider{background:#f1f5f9;height:1px}.ops-job-card__tech{color:#64748b;font-size:12px;font-weight:600}.ops-job-card__actions{align-items:center;gap:8px;display:flex}.ops-detail-button{color:#1e293b;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:8px;flex-grow:1;justify-content:center;align-items:center;height:34px;font-size:13px;font-weight:700;display:flex}.ops-icon-button{color:#64748b;cursor:not-allowed;opacity:.8;background:#fff;border:1px solid #cbd5e1;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;font-size:15px;display:flex}.ops-icon-button.danger{color:#ef4444}.modal-overlay{z-index:50;background:#0006;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal-content{background:#fff;border-radius:16px;flex-direction:column;width:100%;max-width:480px;max-height:85vh;display:flex;overflow:hidden;box-shadow:0 10px 25px #00000026}.modal-header{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;padding:16px;display:flex}.modal-header h3{color:#1e293b;margin:0;font-size:16px;font-weight:700}.modal-close{color:#94a3b8;cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;width:28px;height:28px;font-size:20px;display:flex}.modal-body{flex-direction:column;gap:14px;padding:16px;display:flex;overflow-y:auto}.modal-section-title{color:#1e293b;margin:0 0 6px;font-size:13px;font-weight:700}.modal-card{background:#f8fafc;border:1px solid #f1f5f9;border-radius:10px;padding:12px}.modal-info-grid{gap:6px;display:grid}.modal-info-row{color:#475569;font-size:13px;font-weight:500}.modal-info-row strong{color:#1e293b}.modal-footer{border-top:1px solid #f1f5f9;padding:16px}.modal-btn-close{color:#fff;cursor:pointer;background:#16a34a;border:0;border-radius:8px;width:100%;height:40px;font-size:14px;font-weight:700}@media (max-width:560px){.ops-admin-filters{grid-template-columns:1fr 1fr}.ops-refresh-button{grid-column:1/-1}.tech-pwa-card__actions{grid-template-columns:repeat(3,1fr)}}.theme-toggle{color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff26;border:1px solid #ffffff40;border-radius:99px;justify-content:center;align-items:center;width:32px;height:32px;font-size:15px;transition:all .2s;display:flex}.theme-toggle:hover{background:#ffffff40;transform:scale(1.05)}.ops-admin-header .theme-toggle{color:#1e293b;background:#f1f5f9;border-color:#cbd5e1}.ops-admin-header .theme-toggle:hover{background:#e2e8f0}.dark{--bg:#0f172a;--surface:#1e293b;--ink:#f8fafc;--muted:#94a3b8;--line:#334155;--card-shadow:0 4px 15px #00000040}.dark .tech-pwa-screen{background:#0f172a}.dark .tech-pwa-card{background:#1e293b;border-color:#334155}.dark .tech-pwa-card .job-title{color:#f8fafc}.dark .tech-pwa-card .info-row{color:#cbd5e1}.dark .tech-pwa-card .info-row svg{color:#94a3b8}.dark .tech-pwa-tabs{background:#1e293b}.dark .tech-pwa-tabs button{color:#94a3b8}.dark .tech-pwa-tabs button.active{color:#f8fafc;background:#334155}.dark .tech-quick-actions button{box-shadow:0 4px 12px #0003}.dark .bottom-nav{background:#0f172af2;border-top-color:#334155}.dark .ops-admin-screen{background:#0f172a}.dark .ops-admin-header{background:#1e293b;border-bottom-color:#334155}.dark .ops-admin-filters{background:#1e293b;box-shadow:0 4px 12px #0003}.dark .ops-admin-filters input,.dark .ops-admin-filters select{color:#f8fafc;background-color:#334155;border-color:#475569}.dark .ops-job-card{background:#1e293b;border-color:#334155}.dark .ops-job-card__job-no,.dark .ops-job-card__customer strong{color:#f8fafc}.dark .ops-job-card__address{color:#cbd5e1}.dark .ops-job-card__divider{background:#334155}.dark .ops-detail-button,.dark .ops-icon-button,.dark .ops-admin-header .theme-toggle{color:#f8fafc;background:#334155;border-color:#475569}.dark .modal-content{background:#1e293b;box-shadow:0 10px 25px #0006}.dark .modal-header{border-bottom-color:#334155}.dark .modal-header h3,.dark .modal-section-title{color:#f8fafc}.dark .modal-card{background:#334155;border-color:#475569}.dark .modal-info-row{color:#cbd5e1}.dark .modal-info-row strong{color:#f8fafc}.dark .modal-footer{border-top-color:#334155}.drawer-overlay{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;visibility:hidden;background:#0f172a66;justify-content:flex-end;transition:opacity .3s,visibility .3s;display:flex;position:fixed;inset:0}.drawer-overlay.open{opacity:1;visibility:visible}.drawer-content{background:var(--surface);width:100%;max-width:500px;color:var(--ink);flex-direction:column;height:100%;transition:transform .3s cubic-bezier(.16,1,.3,1);display:flex;transform:translate(100%);box-shadow:-10px 0 30px #00000026}.drawer-overlay.open .drawer-content{transform:translate(0)}.drawer-header{border-bottom:1px solid var(--line);background:var(--surface);justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.drawer-header h2{margin:0;font-size:20px;font-weight:900}.drawer-body{flex-direction:column;flex:1;gap:20px;padding:24px;display:flex;overflow-y:auto}.drawer-footer{border-top:1px solid var(--line);background:var(--surface);gap:12px;padding:16px 24px;display:flex;box-shadow:0 -4px 12px #00000008}@media (max-width:576px){.drawer-overlay{justify-content:center;align-items:flex-end}.drawer-content{border-radius:24px 24px 0 0;max-height:92vh;transform:translateY(100%);box-shadow:0 -10px 30px #00000026}.drawer-overlay.open .drawer-content{transform:translateY(0)}}.drawer-drag-handle{display:none}@media (max-width:576px){.drawer-drag-handle{background:var(--line);opacity:.8;border-radius:99px;width:48px;height:6px;margin:12px auto 4px;display:block}}.drawer-section-title{text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:8px;padding-left:4px;font-size:11px;font-weight:800}.drawer-card{background:var(--bg);border:1px solid var(--line);box-shadow:var(--card-shadow);border-radius:16px;flex-direction:column;gap:12px;padding:16px;transition:all .2s;display:flex}.dark .drawer-card{background:#1e293b;border-color:#334155}.drawer-info-row{justify-content:space-between;align-items:center;font-size:14px;display:flex}.drawer-info-row.vertical{flex-direction:column;align-items:flex-start;gap:6px}.drawer-info-label{color:var(--muted);font-weight:500}.drawer-info-value{color:var(--ink);font-weight:700}.drawer-badge{text-transform:uppercase;border-radius:99px;align-items:center;gap:4px;padding:4px 10px;font-size:11px;font-weight:800;display:inline-flex}.drawer-badge.priority-urgent{background:var(--danger-soft);color:var(--danger);border:1px solid #b3261e33}.drawer-badge.status-booked{background:var(--info-soft);color:var(--info);border:1px solid #1a73e833}.drawer-badge.status-assigned{background:var(--success-soft);color:var(--success);border:1px solid #13733333}.drawer-badge.status-working{background:var(--warning-soft);color:var(--warning);border:1px solid #b75f0033}.drawer-btn{cursor:pointer;border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;min-width:100px;height:48px;padding:0 20px;font-size:14px;font-weight:700;transition:all .2s;display:inline-flex}.drawer-btn:active{transform:scale(.98)}.drawer-btn:disabled{opacity:.5;cursor:not-allowed}.drawer-btn-primary{background:var(--accent);color:#fff}.drawer-btn-primary:hover:not(:disabled){background:var(--accent-strong)}.drawer-btn-secondary{background:var(--bg);color:var(--ink);border:1px solid var(--line)}.drawer-btn-secondary:hover:not(:disabled){background:var(--line)}.drawer-btn-danger{background:var(--danger-soft);color:var(--danger);border:1px solid #b3261e33}.drawer-btn-danger:hover:not(:disabled){background:var(--danger);color:#fff}.drawer-btn-success{background:var(--success);color:#fff}.drawer-btn-success:hover:not(:disabled){background:var(--success-soft);color:var(--success)}.drawer-input,.drawer-select,.drawer-textarea{background:var(--surface);border:1px solid var(--line);width:100%;color:var(--ink);border-radius:12px;outline:none;padding:12px 16px;font-size:14px;transition:border-color .2s}.drawer-input:focus,.drawer-select:focus,.drawer-textarea:focus{border-color:var(--accent)}.drawer-textarea{resize:vertical;min-height:80px}.drawer-image-grid{scrollbar-width:thin;gap:8px;padding-bottom:8px;display:flex;overflow-x:auto}.drawer-image-item{object-fit:cover;border:1px solid var(--line);border-radius:10px;flex-shrink:0;width:80px;height:80px;box-shadow:0 2px 6px #0000000d}.drawer-part-row{background:var(--bg);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:8px;padding:12px;display:flex;position:relative}.dark .drawer-part-row{background:#1e293b;border-color:#334155}
