:root{--bg:#f6f7f9;--card:#fff;--border:#e4e6eb;--text:#1f2329;--muted:#6b7280;--blue:#185fa5;--blue-bg:#e6f1fb;--teal:#0f6e56;--teal-bg:#e1f5ee;--amber:#854f0b;--amber-bg:#faeeda;--red:#a32d2d;--red-bg:#fcebeb;--radius:10px}*{box-sizing:border-box;margin:0;padding:0}body{font-family:PingFang SC,Microsoft YaHei,-apple-system,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.6}header{background:var(--card);border-bottom:1px solid var(--border);padding:14px 24px;display:flex;align-items:center;justify-content:space-between;position:-webkit-sticky;position:sticky;top:0;z-index:10;gap:16px}header h1{font-size:16px;font-weight:500}header .sub{font-size:12px;color:var(--muted)}.lang-toggle{display:flex;gap:6px}.lang-toggle button{border:1px solid var(--border);background:var(--card);padding:4px 12px;border-radius:6px;cursor:pointer;font-size:12px;color:var(--text)}.lang-toggle button.active{background:var(--blue);color:#fff;border-color:var(--blue)}.tabs{display:flex;gap:8px;padding:14px 24px 0}.tabs a{padding:9px 18px;border:1px solid var(--border);border-bottom:none;background:var(--card);border-radius:8px 8px 0 0;font-size:14px;color:var(--muted);text-decoration:none}.tabs a.active{color:var(--blue);font-weight:500;border-bottom:2px solid var(--blue)}main{padding:20px 24px 60px;max-width:1080px;margin:0 auto}main.wide{max-width:1280px}.grid{grid-template-columns:1fr 1fr;grid-gap:18px}.grid,.grid3{display:grid;gap:18px}.grid3{grid-template-columns:1fr 1fr 1fr;grid-gap:18px}.stack{display:flex;flex-direction:column;gap:18px}.row2{grid-template-columns:1fr 1fr;grid-gap:10px}.row2,.row3{display:grid;gap:10px}.row3{grid-template-columns:1fr 1fr 1fr;grid-gap:10px}.row{display:flex;align-items:center;gap:10px}.row.between{justify-content:space-between}.row.wrap{flex-wrap:wrap}.spacer{flex:1 1}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:18px}.card h3{font-size:14px;font-weight:500;margin-bottom:12px;display:flex;align-items:center;gap:8px}.card h3 .dot{width:8px;height:8px;border-radius:50%;background:var(--blue);display:inline-block}label{display:block;font-size:12px;color:var(--muted);margin:10px 0 4px}input,select,textarea{width:100%;padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:13px;background:#fff;color:var(--text);font-family:inherit}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue)}input:disabled,select:disabled{background:var(--bg);color:var(--muted)}.btn{display:inline-block;padding:9px 20px;border:none;border-radius:6px;font-size:14px;cursor:pointer;background:var(--blue);color:#fff;font-family:inherit}.btn:hover{opacity:.9}.btn.secondary{background:#fff;color:var(--text);border:1px solid var(--border)}.btn.teal{background:var(--teal)}.btn.danger{background:var(--red)}.btn.small{padding:4px 12px;font-size:12px}.btn:disabled{background:#c9cdd4;cursor:not-allowed;color:#fff}.quote-box{margin-top:14px;padding:14px;background:var(--blue-bg);border-radius:8px}.quote-box .price{font-size:22px;font-weight:500;color:var(--blue)}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;font-weight:500;color:var(--muted);padding:8px;font-size:12px;white-space:nowrap}td,th{border-bottom:1px solid var(--border)}td{padding:9px 8px;vertical-align:top}tbody tr:hover{background:#fafbfc}.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11px;white-space:nowrap}.b-wait{background:var(--amber-bg);color:var(--amber)}.b-doing,.b-open{background:var(--blue-bg);color:var(--blue)}.b-confirm{background:var(--amber-bg);color:var(--amber)}.b-done,.b-paid{background:var(--teal-bg);color:var(--teal)}.b-cancel{background:var(--red-bg);color:var(--red)}.b-muted{background:var(--bg);color:var(--muted)}.balance{font-size:24px;font-weight:500;color:var(--teal)}.muted{color:var(--muted);font-size:12px}.mono{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.strong{font-weight:500}.empty{padding:24px;text-align:center;font-size:13px}.empty,.note{color:var(--muted)}.note{font-size:12px;padding:10px 12px;background:var(--bg);border-radius:8px;margin-top:12px}.note.warn{background:var(--amber-bg);color:var(--amber)}.note.danger{background:var(--red-bg);color:var(--red)}.note.ok{background:var(--teal-bg);color:var(--teal)}.modal-mask{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:50;display:flex;align-items:center;justify-content:center}.modal{background:#fff;border-radius:12px;padding:24px;width:380px;max-width:calc(100vw - 40px)}.modal h3{font-size:15px;font-weight:500;margin-bottom:14px}.pay-opt{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:8px;padding:12px;margin-bottom:10px;cursor:pointer;background:#fff;width:100%;font-family:inherit;font-size:14px;color:var(--text);text-align:left}.pay-opt.sel{border-color:var(--teal);background:var(--teal-bg)}.pay-opt .ic{width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:500}.toast{position:fixed;top:70px;left:50%;transform:translateX(-50%);background:#1f2329;color:#fff;padding:9px 20px;border-radius:8px;font-size:13px;z-index:99}.stars{display:flex;gap:6px;margin:10px 0}.star{font-size:28px;line-height:1;cursor:pointer;color:#d5d7dd;background:none;border:none;padding:0}.star.on{color:#ef9f27}.kpi{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:16px}.kpi .card{flex:1 1;min-width:150px;padding:14px}.kpi .v{font-size:20px;font-weight:500}.kpi .l{font-size:12px;color:var(--muted)}.kv{display:flex;justify-content:space-between;gap:12px;padding:6px 0;font-size:13px;border-bottom:1px dashed var(--border)}.kv:last-child{border-bottom:none}.kv .k{color:var(--muted)}.kv .v{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.seg button{padding:6px 14px;border:none;background:#fff;cursor:pointer;font-size:12px;color:var(--text);font-family:inherit}.seg button+button{border-left:1px solid var(--border)}.seg button.active{background:var(--blue);color:#fff}@media (max-width:820px){.grid,.grid3,.row2,.row3{grid-template-columns:1fr}header{flex-wrap:wrap}}