:root{
  --bg:#f4f6f9; --panel:#fff; --line:#e2e6eb; --text:#171b20; --muted:#6b7480;
  --accent:#2f6fed; --accent-soft:#e9f0fe; --ok:#1f9254; --danger:#d33b3b;
  --radius:14px; --shadow:0 8px 30px rgba(20,25,35,.08);
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#111418; --panel:#1a1e24; --line:#2a3038; --text:#e7eaee; --muted:#96a0ad;
    --accent:#5b8ef5; --accent-soft:#1d2a41; --ok:#3fbb77; --danger:#e56060;
    --shadow:0 8px 30px rgba(0,0,0,.45);
  }
}
*{box-sizing:border-box}
body{margin:0;min-height:100dvh;background:var(--bg);color:var(--text);padding:30px 16px 60px;
  font:15px/1.6 system-ui,-apple-system,"Segoe UI","Noto Sans TC","PingFang TC",sans-serif}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
h1{font-size:22px;margin:0 0 4px;text-align:center}
.lead{text-align:center;color:var(--muted);font-size:14px;margin:0 auto 26px}

.wrap{max-width:520px;margin:0 auto}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:24px;margin-bottom:18px}
.card h2{font-size:16px;margin:0 0 3px;display:flex;align-items:center;gap:8px}
.card .hint{color:var(--muted);font-size:13px;margin:0 0 16px}

.codebox{display:flex;gap:10px;justify-content:center;margin:6px 0 14px}
.codebox input{width:62px;height:74px;text-align:center;font-size:34px;font-weight:600;
  text-transform:uppercase;background:var(--bg);border:2px solid var(--line);border-radius:12px;
  outline:none;padding:0;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.codebox input:focus{border-color:var(--accent);background:var(--panel)}
.codebox input.filled{border-color:var(--accent)}
@media(max-width:420px){.codebox input{width:52px;height:64px;font-size:28px}}

.field{width:100%;padding:10px 12px;background:var(--bg);border:1px solid var(--line);
  border-radius:9px;outline:none}
.field:focus{border-color:var(--accent)}
select.field{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),
  linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 17px) 19px,calc(100% - 12px) 19px;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat}
label.lb{display:block;font-size:13px;color:var(--muted);margin:14px 0 5px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}

.btn{padding:11px 18px;border:1px solid var(--line);background:var(--panel);border-radius:9px}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:500}
.btn.primary:hover{opacity:.92;color:#fff}
.btn.block{display:block;width:100%}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn.ghost{background:none;border:none;color:var(--muted);padding:4px 8px;font-size:13px}
.btn.ghost:hover{color:var(--accent)}

#drop{border:2px dashed var(--line);border-radius:12px;padding:26px 18px;text-align:center;
  cursor:pointer;transition:.15s}
#drop:hover,#drop.over{border-color:var(--accent);background:var(--accent-soft)}
#drop .ic{font-size:30px;line-height:1}
#drop .t{font-weight:500;margin-top:6px}
#drop .s{color:var(--muted);font-size:13px}

#picked{margin-top:14px;display:none}
.f{display:flex;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);font-size:14px}
.f:last-child{border-bottom:none}
.f .n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.f .z{color:var(--muted);font-size:12px;flex:none}
.f button{background:none;border:none;color:var(--muted);padding:0 4px;flex:none}
.f button:hover{color:var(--danger)}

details.opts{margin-top:16px}
details.opts summary{cursor:pointer;color:var(--muted);font-size:13px;user-select:none}
details.opts summary:hover{color:var(--accent)}

.pbar{height:6px;background:var(--bg);border-radius:4px;overflow:hidden;margin-top:14px;display:none}
.pbar i{display:block;height:100%;background:var(--accent);width:0;transition:width .15s}
#upStat{font-size:13px;color:var(--muted);margin-top:8px;text-align:center;display:none}

#result{display:none;text-align:center}
.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:58px;font-weight:700;
  letter-spacing:.14em;color:var(--accent);margin:10px 0 4px;user-select:all}
.meta{color:var(--muted);font-size:13px}
.copybox{display:flex;gap:8px;margin-top:18px}
.copybox input{flex:1;font-size:13px;text-align:center}

.err{color:var(--danger);font-size:13px;margin-top:10px;text-align:center;min-height:18px}
.foot{text-align:center;color:var(--muted);font-size:12px;margin-top:8px}
.foot a{color:var(--muted)}
#toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%) translateY(80px);
  background:var(--text);color:var(--bg);padding:9px 18px;border-radius:20px;font-size:14px;
  opacity:0;transition:.25s;pointer-events:none;z-index:60}
#toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
