/* =====================================================================
   capitolo4.0 Scan: THEME
   Edit the values in this block to restyle the whole app.
   ===================================================================== */
:root{
  --bg:#121821;
  --panel:#1A222C;
  --border:#2C3947;
  --text:#EDEEF0;
  --muted:#8A96A3;
  --copper:#C1793F;
  --teal:#4FBEB5;
  --danger:#E08585;
  --pending:#D9B36C;

  --radius:8px;
  --font-ui:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-mono:ui-monospace,"SFMono-Regular",Menlo,Consolas,"Roboto Mono",monospace;

  --size-label:22px;
  --size-print-code:60px;
  --size-body:16px;
  --tap-height:56px;
}
/* ===================================================================== */

*{box-sizing:border-box;}
html,body{margin:0;padding:0;background:var(--bg);}
body{
  color:var(--text);
  font-family:var(--font-ui);
  font-size:var(--size-body);
  line-height:1.45;
  -webkit-font-smoothing:antialiased;
  -webkit-tap-highlight-color:transparent;
}
#app{
  min-height:100vh;
  min-height:100dvh;
  max-width:560px;
  margin:0 auto;
  display:flex;
  flex-direction:column;
  padding:calc(env(safe-area-inset-top,0px) + 14px) 18px calc(env(safe-area-inset-bottom,0px) + 14px);
}
button,input{font-family:inherit;}
button:focus-visible,input:focus-visible{outline:2px solid var(--teal);outline-offset:2px;}

/* header */
.top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;}
.brand{display:flex;align-items:center;gap:10px;min-width:0;}
.brand svg{flex:none;}
.brand h1{margin:0;font-size:20px;font-weight:700;letter-spacing:-0.01em;white-space:nowrap;}
.brand h1 span{color:var(--muted);font-weight:500;}
.link{
  background:none;border:none;color:var(--muted);font-size:14px;
  text-decoration:underline;cursor:pointer;padding:10px 4px;
}
.link:hover{color:var(--teal);}

/* layout */
main.center{flex:1;display:flex;flex-direction:column;justify-content:center;gap:14px;}
main.stack{flex:1;display:flex;flex-direction:column;gap:14px;}
.lead{margin:0 0 6px;font-size:18px;color:var(--text);}
.muted{color:var(--muted);}
.small{font-size:13px;}
.foot{margin-top:22px;text-align:center;font-size:12px;color:var(--muted);}

/* panels */
.panel{
  background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);
  padding:18px;display:flex;flex-direction:column;gap:12px;
}
.panel label{font-size:14px;color:var(--muted);}
.panel input{
  width:100%;height:var(--tap-height);padding:0 14px;font-size:18px;
  background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);
}
.error{margin:0;color:var(--danger);font-size:14px;}
.notice{
  margin:0;padding:12px 14px;border-radius:var(--radius);font-size:15px;
  background:rgba(79,190,181,0.12);border:1px solid var(--teal);color:var(--teal);
}

/* buttons */
.btn{
  width:100%;min-height:var(--tap-height);padding:0 18px;
  border-radius:var(--radius);border:1px solid transparent;
  font-size:17px;font-weight:600;cursor:pointer;
}
.btn[disabled]{opacity:.55;cursor:default;}
.btn.primary{background:var(--copper);color:#1B120A;}
.btn.secondary{background:transparent;border-color:var(--teal);color:var(--teal);}
.btn.ghost{background:transparent;border-color:var(--border);color:var(--text);}
.btn.danger{background:transparent;border-color:var(--danger);color:var(--danger);}

/* scanner */
#reader{
  width:100%;min-height:260px;overflow:hidden;background:#000;
  border:1px solid var(--border);border-radius:var(--radius);
}
#reader video{width:100%!important;}
.hint{margin:0;text-align:center;color:var(--muted);font-size:15px;}
.hint.warn{color:var(--pending);}

/* result */
.banner{
  padding:14px 16px;border-radius:var(--radius);font-weight:700;font-size:16px;
  border:1px solid var(--border);
}
.banner.is-pending{background:rgba(217,179,108,0.12);border-color:var(--pending);color:var(--pending);}
.banner.is-active{background:rgba(79,190,181,0.12);border-color:var(--teal);color:var(--teal);}
.card{
  background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);
  padding:18px;
}
.k{margin:14px 0 2px;font-size:13px;color:var(--muted);}
.card .k:first-child{margin-top:0;}
.label{margin:0;font-size:var(--size-label);font-weight:600;line-height:1.25;overflow-wrap:anywhere;}
.print-code{
  margin:0;font-family:var(--font-mono);font-size:var(--size-print-code);font-weight:700;
  letter-spacing:0.12em;line-height:1.1;user-select:all;
}
.meta{display:flex;gap:28px;}
.meta .v{margin:0;font-size:20px;font-weight:600;}
.meta .mono{font-family:var(--font-mono);font-size:16px;overflow-wrap:anywhere;}
.dest{
  margin:0;font-family:var(--font-mono);font-size:13px;color:var(--muted);
  overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;
}

/* confirm dialog */
.overlay{
  position:fixed;inset:0;background:rgba(0,0,0,0.65);
  display:flex;align-items:center;justify-content:center;padding:20px;z-index:10;
}
.dialog{
  width:100%;max-width:420px;background:var(--panel);border:1px solid var(--border);
  border-radius:var(--radius);padding:20px;display:flex;flex-direction:column;gap:12px;
}
.dialog h2{margin:0;font-size:20px;}
.dialog p{margin:0;color:var(--muted);}
.dialog-actions{display:flex;gap:10px;margin-top:6px;}
.dialog-actions .btn{flex:1;}
