:root{--primary: #e60012;--primary-dark: #b8000e;--accent: #1d5f9e;--bg: #f4f5f7;--card: #ffffff;--text: #1a1a1a;--muted: #767676;--border: #e6e6e6;--ok: #0a9d5c;--warn: #f08c00;--radius: 12px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}#root{max-width:640px;margin:0 auto;min-height:100%}a{color:var(--primary);text-decoration:none}.page{padding:16px 16px 40px;min-height:100%;background:var(--bg)}.topbar{background:var(--primary);color:#fff;padding:14px 16px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:10}.topbar .back{color:#fff;font-size:18px;padding:4px}.topbar h1{font-size:18px;font-weight:600}.card{background:var(--card);border-radius:var(--radius);padding:16px;margin-bottom:12px;box-shadow:0 1px 3px #0000000d}.btn{display:block;width:100%;border:none;border-radius:10px;padding:14px;font-size:16px;font-weight:600;cursor:pointer;text-align:center;background:var(--primary);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.ghost{background:#fff;color:var(--primary);border:1px solid var(--primary)}.btn.secondary{background:var(--accent)}.btn.small{padding:9px 14px;font-size:14px;width:auto}.form{display:flex;flex-direction:column;gap:12px}.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:5px}.field input,.field select{width:100%;padding:12px;border:1px solid var(--border);border-radius:9px;font-size:15px;background:#fff}.field input:focus,.field select:focus{outline:none;border-color:var(--primary)}.error{background:#fdecec;color:#c0392b;border-radius:8px;padding:10px 12px;font-size:14px}.notice{background:#fff7e6;color:#8a5a00;border-radius:8px;padding:10px 12px;font-size:13px}.route-card{display:flex;flex-direction:column;gap:10px}.route-card .head{display:flex;justify-content:space-between;align-items:center}.route-card .name{font-size:17px;font-weight:600}.route-card .region{font-size:13px;color:var(--muted)}.dir-row{display:flex;gap:10px}.dir-btn{flex:1;border:1px solid var(--border);border-radius:9px;padding:12px;text-align:center;cursor:pointer;background:#fff}.dir-btn .dir-label{font-size:13px;color:var(--muted)}.dir-btn .dir-name{font-size:15px;font-weight:600;margin-top:2px}.dir-btn:active{background:#f6f6f6}.seg{display:flex;gap:10px}.seg button{flex:1;padding:10px;border:1px solid var(--border);background:#fff;border-radius:9px;cursor:pointer}.seg button.active{border-color:var(--primary);color:var(--primary);font-weight:600}.trip{border:1px solid var(--border);border-radius:10px;padding:14px;margin-bottom:10px}.trip .line1{display:flex;justify-content:space-between;align-items:baseline}.trip .time{font-size:20px;font-weight:700}.trip .arrow{color:var(--muted);margin:0 6px}.trip .fare{display:flex;gap:8px;justify-content:space-between;margin-top:8px}.trip .seat-ok{color:var(--ok);font-weight:600}.trip .seat-full{color:var(--muted)}.badge{display:inline-block;background:#fdecec;color:var(--primary);font-size:11px;border-radius:4px;padding:1px 6px;margin-left:6px;vertical-align:middle}.badge.lady{background:#fdeef7;color:#c2185b}.fare-list{margin-top:12px;display:flex;flex-direction:column;gap:8px}.fare-row{border:1px solid var(--border);border-radius:9px;padding:10px 12px}.fare-row.disabled{opacity:.55;background:#fafafa}.fare-row-main{display:flex;justify-content:space-between;align-items:center}.fare-plan{font-size:14px;font-weight:600}.fare-price{font-size:16px;font-weight:700;color:var(--primary)}.fare-row-sub{display:flex;justify-content:space-between;align-items:center;margin-top:6px}.amount-line{display:flex;justify-content:space-between;padding:7px 0;font-size:15px}.amount-line.total{border-top:1px solid var(--border);margin-top:6px;padding-top:12px;font-size:18px;font-weight:700}.amount-line.total .value{color:var(--primary)}.tabs{display:flex;border-radius:10px;overflow:hidden;border:1px solid var(--border)}.tabs button{flex:1;padding:11px;background:#fff;border:none;cursor:pointer}.tabs button.active{background:var(--primary);color:#fff;font-weight:600}.muted{color:var(--muted);font-size:13px}.center{text-align:center}.mt8{margin-top:8px}.mt16{margin-top:16px}.mb8{margin-bottom:8px}.status-pill{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:600}.st-ISSUING{background:#fff7e6;color:#b06a00}.st-ISSUED{background:#e8f7ef;color:var(--ok)}.st-PENDING_PAY,.st-PAYING{background:#eef2ff;color:var(--accent)}.st-ISSUE_FAILED,.st-REFUND_FAILED,.st-CHANGE_FAILED{background:#fdecec;color:#c0392b}.st-REFUNDING,.st-CHANGING{background:#fff7e6;color:#b06a00}.st-REFUNDED,.st-CHANGED{background:#e8f7ef;color:var(--ok)}.spinner{border:2px solid var(--border);border-top-color:var(--primary);border-radius:50%;width:18px;height:18px;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.footer{padding:18px 16px 30px;text-align:center;font-size:12px;color:var(--muted)}.footer a{color:var(--accent)}.admin-table{width:100%;border-collapse:collapse;font-size:13px}.admin-table th,.admin-table td{border:1px solid var(--border);padding:8px;text-align:left}.admin-table th{background:#f7f7f7}
