:root{--navy:#0d1b2a;--navy2:#132a44;--blue:#176b87;--teal:#1f9d8a;--gold:#c9a55b;--cream:#f6f2e8;--white:#fff;--ink:#15212e;--muted:#6c7a89;--card:#fff;--line:#dde5ec;--danger:#b84646;--warn:#d38b25;--ok:#21875c;--purple:#6f5aa8}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",Arial,sans-serif;background:#f3f6f8;color:var(--ink)}a{text-decoration:none;color:inherit}.topbar{background:linear-gradient(135deg,var(--navy),var(--navy2));color:#fff;padding:16px 20px;display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;z-index:10}.brand{font-weight:800;letter-spacing:.4px}.brand small{display:block;font-weight:500;opacity:.8;margin-top:2px}.badge{padding:7px 11px;border:1px solid rgba(255,255,255,.25);border-radius:999px;font-size:12px;background:rgba(255,255,255,.08)}.hero{background:linear-gradient(90deg,rgba(7,23,39,.94),rgba(14,55,76,.72)),radial-gradient(circle at 75% 20%,rgba(31,157,138,.45),transparent 30%),linear-gradient(135deg,#16394e,#0f2233);color:#fff;padding:54px 20px 46px}.wrap{max-width:1180px;margin:auto}.hero h1{font-size:clamp(32px,6vw,56px);margin:0 0 12px;line-height:1.08}.hero p{font-size:18px;max-width:760px;opacity:.9;line-height:1.7}.hero-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.btn{display:inline-flex;align-items:center;justify-content:center;padding:14px 18px;border-radius:12px;font-weight:800;border:0;cursor:pointer}.btn-primary{background:var(--gold);color:#111}.btn-secondary{background:#fff;color:var(--navy)}.btn-teal{background:var(--teal);color:#fff}.section{padding:28px 20px}.section h2{margin:0 0 16px;font-size:28px}.sub{color:var(--muted);margin-top:-8px;margin-bottom:18px}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:0 8px 24px rgba(26,42,58,.06)}.card h3{margin:0 0 8px}.portal{min-height:180px;color:#fff;display:flex;flex-direction:column;justify-content:space-between}.portal.customer{background:linear-gradient(135deg,#126a84,#1f9d8a)}.portal.driver{background:linear-gradient(135deg,#173e6e,#286b9f)}.portal.hotel{background:linear-gradient(135deg,#57427f,#8d6cad)}.portal .go{font-weight:800}.modules{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.module{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;font-weight:700}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.field{display:flex;flex-direction:column;gap:7px}label{font-weight:700;font-size:14px}input,select,textarea{width:100%;padding:12px 13px;border-radius:10px;border:1px solid #cfd8df;background:#fff;font-size:16px}textarea{min-height:88px;resize:vertical}.full{grid-column:1/-1}.hidden{display:none!important}.notice{padding:12px 14px;border-radius:10px;background:#fff8e7;border:1px solid #efd49a;color:#6e531d}.status-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.status{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px}.status strong{display:block;font-size:22px}.task-card{background:#fff;border-radius:18px;border:1px solid var(--line);padding:18px;margin-bottom:14px}.task-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:14px}.task-actions button{padding:15px 10px;border:0;border-radius:12px;font-weight:800;color:#fff;background:#1c6f8c}.task-actions button.done{background:var(--ok)}.task-actions button.warn{background:var(--warn)}.task-actions button.danger{background:var(--danger)}.footer{background:var(--navy);color:#dbe6ef;padding:26px 20px;margin-top:30px}.footer .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}.chip{display:inline-block;padding:6px 9px;border-radius:999px;background:#e9f2f5;color:#245267;font-size:12px;font-weight:700}.lookup-box{background:linear-gradient(180deg,#eef8f7,#fff);border:1px solid #cfe7e2;border-radius:16px;padding:18px}.lookup-box h3{margin:0 0 14px}.lookup-message{margin-top:12px;padding:12px 14px;border-radius:10px;background:#eef4f8;color:#35556c;font-size:14px}.result-card{margin-top:14px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;border-radius:14px;padding:14px;background:#f8fbfc;border:1px solid #dce7ed}.result-card>div{background:#fff;border-radius:10px;padding:10px;border:1px solid #e4ebef}.result-label{display:block;color:var(--muted);font-size:12px;margin-bottom:4px}.result-card strong{font-size:17px}.status-ok{border-left:6px solid var(--ok)}.status-early{border-left:6px solid var(--blue)}.status-warn{border-left:6px solid var(--warn)}.status-danger{border-left:6px solid var(--danger)}.manual{margin-top:14px;border:1px dashed #b8c7d2;border-radius:12px;padding:10px 12px;background:#fbfcfd}.manual summary{cursor:pointer;font-weight:800;color:#35556c}.manual[open] summary{margin-bottom:14px}.risk-light{display:inline-flex;align-items:center;gap:8px;padding:7px 10px;border-radius:999px;font-size:13px;font-weight:800}.risk-light::before{content:"";width:10px;height:10px;border-radius:50%;background:currentColor}.risk-green{color:var(--ok);background:#eaf7f1}.risk-yellow{color:var(--warn);background:#fff5e7}.risk-red{color:var(--danger);background:#fdecec}.driver-summary{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px;margin:14px 0}.driver-summary .status{min-height:92px}.footer-note{font-size:13px;color:var(--muted);margin-top:8px}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.admin-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:18px;box-shadow:0 6px 18px rgba(26,42,58,.05)}.admin-card h3{margin:0}.admin-card p{margin:10px 0;line-height:1.6}.admin-card small{color:var(--muted)}.admin-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.state{display:inline-block;padding:5px 8px;border-radius:999px;font-size:11px;font-weight:800;white-space:nowrap}.state-ready{background:#eaf7f1;color:var(--ok)}.state-progress{background:#edf5fb;color:var(--blue)}.state-build{background:#fff3df;color:#9a6514}.state-api{background:#f0ebfb;color:var(--purple)}.state-plan{background:#f2f4f6;color:#56616b}@media(max-width:860px){.grid,.modules,.form-grid,.status-row,.task-actions,.result-card,.driver-summary,.admin-grid{grid-template-columns:1fr}.topbar{align-items:flex-start}.hero{padding-top:38px}.task-actions button{font-size:16px;min-height:54px}.admin-head{flex-direction:column}}