:root{
  --bg:#0f1720; --card:#1b2733; --line:#2a3a48; --txt:#e7eef5; --muted:#9fb3c5;
  --green:#14532d; --accent:#22c55e; --accent2:#7dd3a8; --warn:#f59e0b;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--txt)}
header{position:sticky;top:0;z-index:5;background:var(--green);display:flex;align-items:center;
  justify-content:space-between;padding:12px 16px;padding-top:calc(12px + env(safe-area-inset-top))}
header h1{margin:0;font-size:18px}
.status{display:flex;gap:8px}
.badge{font-size:12px;padding:4px 8px;border-radius:999px;background:#0b3d1f}
.badge.on{background:#166534;color:#bbf7d0}.badge.off{background:#7f1d1d;color:#fecaca}
.badge.pend{background:#1b2733;color:var(--accent2)}
main{max-width:640px;margin:0 auto;padding:14px;display:flex;flex-direction:column;gap:14px}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
h2{font-size:15px;margin:0;color:var(--muted)}
.hidden{display:none}
.cam-wrap{position:relative;border-radius:12px;overflow:hidden;background:#000;aspect-ratio:3/4}
video,.shot{width:100%;height:100%;object-fit:cover;display:block}
.overlay{position:absolute;inset:0;pointer-events:none}
.guide{position:absolute;left:0;right:0;bottom:0;padding:8px;font-size:12px;text-align:center;
  background:linear-gradient(transparent,rgba(0,0,0,.7));color:#d7e3ee}
.shot{aspect-ratio:3/4;border-radius:12px;background:#000}
.row{display:flex;gap:10px;margin-top:12px}
button{font:inherit;border:0;border-radius:12px;padding:12px 16px;cursor:pointer}
button.primary{background:var(--accent);color:#04210f;font-weight:700}
button.ghost{background:transparent;border:1px solid var(--line);color:var(--txt)}
button.big{flex:1;font-size:17px;padding:16px}
button.sm{padding:8px 12px;font-size:13px}
button:disabled{opacity:.5;cursor:not-allowed}
.count-box{text-align:center;margin:14px 0}
.count-label{color:var(--muted);font-size:13px}
.counter{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:6px}
.counter input{width:120px;font-size:40px;text-align:center;background:#0f1720;color:var(--accent2);
  border:1px solid var(--line);border-radius:12px;padding:6px;font-weight:800}
.step{width:54px;height:54px;font-size:26px;background:#0f1720;color:var(--txt);border:1px solid var(--line)}
.ia-note{font-size:12px;color:var(--warn);margin-top:6px;min-height:16px}
label{display:block;font-size:13px;color:var(--muted);margin-top:10px}
input,select{width:100%;margin-top:4px;background:#0f1720;color:var(--txt);border:1px solid var(--line);
  border-radius:10px;padding:10px;font:inherit}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.queue{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.queue li{display:flex;justify-content:space-between;align-items:center;background:#0f1720;
  border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:14px}
.queue li.synced{opacity:.55}
.queue .meta{color:var(--muted);font-size:12px}
.queue .n{font-weight:700;color:var(--accent2)}
.sync-msg{font-size:13px;color:var(--muted);margin-top:8px;min-height:18px}
.muted{color:var(--muted);font-size:12px}
code{background:#0f1720;padding:1px 5px;border-radius:5px}
summary{cursor:pointer;font-weight:600}
