  * { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
  body { font-family:-apple-system,"PingFang SC","Helvetica Neue",sans-serif; background:#16181d; color:#e8eaed; min-height:100vh; }
  header { padding:14px 16px; font-size:17px; font-weight:600; text-align:center; background:#1e2128; border-bottom:1px solid #2a2e37; position:relative; }
  #gearBtn { position:absolute; right:10px; top:50%; transform:translateY(-50%); background:none; border:none; font-size:20px; padding:6px; cursor:pointer; }
  main { max-width:520px; margin:0 auto; padding:14px; }
  #previewWrap { position:relative; width:100%; background:#0c0d10; border-radius:12px; overflow:hidden; min-height:180px; display:flex; align-items:center; justify-content:center; }
  #cv { width:100%; display:none; }
  #emptyTip { text-align:center; padding:56px 20px; color:#8a8f9a; font-size:14px; line-height:1.9; }
  .panel { background:#1e2128; border-radius:12px; padding:14px; margin-top:14px; }
  .row { display:flex; gap:10px; margin-bottom:10px; }
  .row:last-child { margin-bottom:0; }
  .field { flex:1; display:flex; flex-direction:column; gap:6px; }
  label { font-size:12px; color:#8a8f9a; }
  input[type=date], input[type=time], input[type=text], input[type=password], select {
    width:100%; padding:11px 12px; border-radius:9px; border:1px solid #33383f;
    background:#101216; color:#e8eaed; font-size:15px; outline:none; color-scheme:dark;
  }
  input:focus, select:focus { border-color:#4c8dff; }
  .gpsBtn { white-space:nowrap; align-self:flex-end; padding:11px 14px; border-radius:9px; border:1px solid #33383f; background:#23262e; color:#9ecbff; font-size:14px; }
  .gpsBtn:active { background:#2b2f38; }
  .actions { display:flex; gap:10px; margin-top:14px; }
  .btn { flex:1; padding:15px 0; border:none; border-radius:12px; font-size:16px; font-weight:600; letter-spacing:1px; }
  .btn:active { transform:scale(.98); }
  .btn:disabled { opacity:.5; }
  #btnIn { background:#2f81f7; color:#fff; }
  #btnOut { background:#238636; color:#fff; }
  #btnShoot { width:100%; padding:15px 0; margin-top:14px; border:none; border-radius:12px; background:#2f81f7; color:#fff; font-size:16px; font-weight:600; }
  .linkBtn { display:block; width:100%; margin-top:10px; padding:10px 0; text-align:center; background:none; border:none; color:#8a8f9a; font-size:14px; text-decoration:underline; }
  #toast { position:fixed; left:50%; bottom:36px; transform:translateX(-50%); max-width:86%; padding:12px 18px; border-radius:10px; background:#000c; font-size:14px; display:none; z-index:9; }
  #toast.ok { background:#1a7f37; color:#fff; }
  #toast.err { background:#b62324; color:#fff; }
  #spin { position:absolute; inset:0; display:none; align-items:center; justify-content:center; background:#0009; color:#fff; font-size:14px; border-radius:12px; }

  /* ===== 设置向导 ===== */
  #setupView { position:fixed; inset:0; background:#16181d; z-index:20; overflow-y:auto; display:none; }
  #setupInner { max-width:520px; margin:0 auto; padding:22px 16px 40px; }
  #setupInner h2 { font-size:19px; margin-bottom:4px; }
  #setupInner .sub { font-size:13px; color:#8a8f9a; margin-bottom:18px; }
  #testResult { font-size:13px; margin-top:8px; display:none; }
  #testResult.ok { color:#3fb950; display:block; }
  #testResult.err { color:#f85149; display:block; }
  .setupBtns { display:flex; gap:10px; margin-top:18px; }
  #btnTest { background:#238636; color:#fff; }
  #btnSaveCfg { background:#2f81f7; color:#fff; }
  #btnCloseSetup { background:none; border:1px solid #33383f; color:#8a8f9a; flex:0 0 90px; }
  .locItem { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:8px 10px; background:#101216; border:1px solid #33383f; border-radius:8px; margin-bottom:6px; font-size:14px; }
  .locItem button { background:none; border:none; color:#f85149; font-size:15px; padding:2px 6px; }
