:root {
  --paper:#faf8f4; --card:#fff; --ink:#1d1c1a; --muted:#918c84; --faint:#c1bbb2;
  --line:#e8e2d9; --blue:#315f9d; --green:#59825a; --red:#c9675b; --warm:#fff9f7;
  --shadow:0 2px 18px rgba(42,34,24,.055),0 0 0 .5px rgba(42,34,24,.06);
}
*{box-sizing:border-box} body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.55 -apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased}
button,input,textarea,select{font:inherit} button{cursor:pointer} a{color:inherit}
#app{width:min(100%,520px);min-height:100vh;margin:auto;padding:0 18px 88px}
.loading,.center{padding:42vh 0;text-align:center;color:var(--muted)}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:30px 0 20px;gap:16px}.brand{font-size:13px;color:var(--muted);letter-spacing:.08em}.toplink{border:0;background:0;color:var(--blue);padding:8px 0}
.hero{padding:28px 0 24px}.hero h1{font-size:28px;line-height:1.25;letter-spacing:.01em;margin:0 0 9px;font-weight:650}.hero p{margin:0;color:var(--muted)}
.summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:4px 0 24px}.metric{background:rgba(255,255,255,.65);border:1px solid var(--line);border-radius:15px;padding:12px 8px;text-align:center}.metric strong{display:block;font-size:19px}.metric span{font-size:11px;color:var(--muted)}
.bulletin{background:#fffdf9;border:1px solid var(--line);border-radius:16px;padding:15px 17px;margin-bottom:18px;white-space:pre-wrap}.bulletin small{display:block;color:var(--faint);letter-spacing:.08em;margin-bottom:5px}
.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:24px}.role{border:1px solid var(--line);background:var(--card);border-radius:17px;text-align:left;padding:17px;color:var(--ink);box-shadow:0 1px 5px rgba(42,34,24,.025)}.role b{display:block;font-size:16px;margin-bottom:2px}.role span{font-size:12px;color:var(--muted)}
.section-head{display:flex;align-items:center;justify-content:space-between;margin:28px 2px 12px}.section-head h2{font-size:13px;letter-spacing:.08em;color:var(--muted);font-weight:550;margin:0}.section-head button{border:0;background:0;color:var(--blue)}
.car{background:var(--card);border-radius:20px;padding:20px;margin-bottom:12px;box-shadow:var(--shadow);position:relative;overflow:hidden}.car.needs{background:var(--warm)}.car.needs:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--red)}.car.full{background:#f7f6f3}.car-head{display:flex;justify-content:space-between;gap:14px}.plate{font-size:19px;font-weight:650}.meta{color:var(--muted);font-size:12px;margin-top:2px}.status{font-size:12px;font-weight:600;white-space:nowrap;padding-top:3px}.status.ok{color:var(--green)}.status.warn{color:var(--red)}.status.full{color:var(--faint)}
.driver{margin-top:17px}.driver b{font-weight:600}.driver small{color:var(--muted);margin-left:8px}.riders{margin-top:14px}.label{font-size:10px;letter-spacing:.1em;color:var(--faint);margin-bottom:4px}.names{color:#45413c;word-break:break-all}.empty-line{color:var(--faint)}
.actions{display:flex;flex-wrap:wrap;gap:20px;margin-top:16px}.link-btn{border:0;background:0;padding:2px 0;color:var(--blue)}.link-btn.danger{color:var(--red)}.link-btn.muted{color:var(--muted)}
.primary,.secondary,.danger-btn{width:100%;border-radius:14px;padding:13px 16px;font-weight:600}.primary{background:var(--ink);color:white;border:1px solid var(--ink)}.secondary{background:white;color:var(--ink);border:1px solid var(--line)}.danger-btn{background:#fff7f5;color:var(--red);border:1px solid #efd4cf}.stack{display:grid;gap:10px}.empty-state{text-align:center;padding:50px 20px;color:var(--muted)}
.notice{border-radius:13px;padding:12px 14px;margin-bottom:16px;background:#f0eee9;color:#625d56;font-size:13px}.notice.locked{background:#fff2e8;color:#8a5731}
.modal{display:none;position:fixed;inset:0;z-index:20;align-items:flex-end;justify-content:center}.modal.open{display:flex}.modal-backdrop{position:absolute;inset:0;background:rgba(22,18,14,.34)}.sheet{position:relative;width:min(100%,520px);max-height:88vh;overflow:auto;background:white;border-radius:24px 24px 0 0;padding:10px 24px 34px;animation:up .25s ease-out}.handle{width:34px;height:4px;border-radius:4px;background:#ded9d1;margin:0 auto 18px}.sheet h2{font-size:19px;margin:0 0 20px}.field{margin:0 0 18px}.field label{display:block;font-size:11px;color:var(--muted);letter-spacing:.06em;margin-bottom:5px}.field input,.field textarea,.field select{width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:10px 0;background:white;outline:0;color:var(--ink)}.field textarea{border:1px solid var(--line);border-radius:12px;padding:12px;min-height:100px;resize:vertical}.field input:focus,.field textarea:focus{border-color:var(--ink)}.form-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:25px}.hint{font-size:12px;color:var(--muted);margin-top:5px}.sheet-message{background:#f4f1eb;border-radius:14px;padding:14px;margin:0 0 18px;word-break:break-all}
.toast{position:fixed;z-index:30;left:50%;bottom:28px;transform:translate(-50%,20px);background:#24211d;color:white;padding:10px 16px;border-radius:22px;opacity:0;pointer-events:none;transition:.2s;white-space:nowrap;max-width:90%;overflow:hidden;text-overflow:ellipsis}.toast.show{opacity:1;transform:translate(-50%,0)}
.admin-card{background:white;border-radius:18px;padding:18px;margin-bottom:12px;box-shadow:var(--shadow)}.admin-card h3{margin:0 0 5px}.admin-card p{color:var(--muted);font-size:13px;margin:0}.admin-card .actions{border-top:1px solid var(--line);padding-top:13px}
.footer{text-align:center;margin-top:48px;color:var(--faint);font-size:12px}.code{font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px;word-break:break-all}
@keyframes up{from{transform:translateY(30px);opacity:.6}}
@media(max-width:370px){.summary{grid-template-columns:1fr 1fr}.role-grid{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
