:root{
  --cream:#f6f1e6;--ink:#1f1f1d;--olive:#69734b;--gold:#d29a2f;--muted:#747169;
  --card:#fffdf8;--line:#ddd5c5;--danger:#a24b43;--shadow:0 18px 50px rgba(0,0,0,.14)
}
*{box-sizing:border-box}
html,body{margin:0;padding:0;background:#e8e4da;color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
.shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:22px}
.phone{width:min(430px,100%);min-height:860px;background:var(--cream);border:10px solid #171717;border-radius:42px;overflow:hidden;position:relative;box-shadow:var(--shadow)}
.status{height:28px;padding:7px 18px 0;font-size:12px;display:flex;justify-content:space-between}
.topbar{padding:14px 18px;display:flex;align-items:center;gap:10px;border-bottom:1px solid rgba(0,0,0,.06)}
.mark{width:38px;height:38px;border:2px solid var(--olive);border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:900;color:var(--olive);position:relative}
.mark:after{content:"";position:absolute;width:6px;height:6px;border-radius:50%;background:var(--gold);top:4px;right:4px}
.brand{font-size:21px;font-weight:850}.brand span{color:var(--olive)}
.badge{margin-left:auto;background:#ece7d8;border:1px solid var(--line);border-radius:999px;padding:6px 10px;font-size:12px}
main{padding:20px 18px 104px}.screen{display:none}.screen.active{display:block}
h1{font-size:34px;line-height:1.04;margin:8px 0 10px}h2{font-size:25px;margin:10px 0}h3{margin:8px 0}
p{line-height:1.45;color:#4a4843}.tiny{font-size:12px;color:var(--muted)}.subtle{font-size:14px;color:var(--muted)}
.hero,.card{background:var(--card);border:1px solid var(--line);border-radius:22px;padding:18px;margin:14px 0}.hero{text-align:center;background:linear-gradient(145deg,#fbf7ed,#eee7d6);border-radius:28px}.left{text-align:left}
button{width:100%;border:0;border-radius:16px;padding:15px 16px;font-size:16px;font-weight:800;margin-top:10px;cursor:pointer}.primary{background:var(--olive);color:#fff}.secondary{background:#ece7d8;color:var(--ink);border:1px solid var(--line)}.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}
.small{width:auto;padding:9px 11px;margin:0;border-radius:11px;font-size:13px}.icon-btn{width:44px;height:44px;padding:0;margin:0;border-radius:14px;background:#ece7d8;border:1px solid var(--line)}
label{display:block;font-size:14px;font-weight:760;margin:15px 0 7px}input,select{width:100%;padding:13px 14px;border-radius:14px;border:1px solid var(--line);font-size:16px;background:white;outline:none}input:focus,select:focus{border-color:var(--olive)}
.photo{height:210px;border:2px dashed #c6bca6;border-radius:18px;background:#faf6ec;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden;color:var(--muted)}.photo img{width:100%;height:100%;object-fit:cover}.storage-photo{height:270px}.photo-emoji{font-size:42px}
.progress{height:8px;background:#e5dece;border-radius:99px;overflow:hidden;margin:14px 0}.progress>div{height:100%;width:0;background:var(--olive);transition:.2s}.step{display:inline-flex;width:26px;height:26px;border-radius:50%;align-items:center;justify-content:center;background:var(--olive);color:white;font-weight:900;font-size:13px;margin-right:8px}
.pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.pill{padding:8px 11px;background:#e8eadf;color:#4f5937;border-radius:999px;font-size:13px;font-weight:700}
.meta{display:grid;grid-template-columns:1fr 1fr;gap:10px}.meta .card{margin:0;padding:14px}.meta strong{display:block;font-size:11px;color:var(--muted);margin-bottom:5px}.success{width:82px;height:82px;border-radius:50%;background:#e4ead7;color:var(--olive);display:flex;align-items:center;justify-content:center;font-size:42px;margin:20px auto 8px}
.tagcard{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:18px;padding:12px;margin:10px 0}.thumb{width:68px;height:68px;border-radius:14px;background:#e4dece;display:flex;align-items:center;justify-content:center;font-size:28px;overflow:hidden;flex:none}.thumb img{width:100%;height:100%;object-fit:cover}.grow{flex:1;min-width:0}.grow h3{margin:0 0 4px;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.grow p{margin:0;font-size:13px;color:var(--muted)}
.bottomnav{position:absolute;left:0;right:0;bottom:0;height:78px;background:rgba(255,253,248,.96);border-top:1px solid var(--line);display:flex;justify-content:space-around;align-items:center;padding-bottom:10px}.navitem{text-align:center;font-size:12px;color:var(--muted);cursor:pointer}.navitem b{display:block;color:var(--ink);font-size:22px;line-height:1.05}
.toast{position:absolute;left:50%;bottom:90px;transform:translateX(-50%);background:#1d1d1b;color:white;border-radius:999px;padding:10px 14px;font-size:13px;opacity:0;transition:.2s;white-space:nowrap;max-width:88%;overflow:hidden;text-overflow:ellipsis;z-index:50}.toast.show{opacity:1}
.notice{margin-top:12px;padding:12px 14px;background:#ece7d8;border:1px solid var(--line);border-radius:14px;font-size:13px}.notice.error{background:#f7e9e7;color:var(--danger)}
.center-block{min-height:560px;display:flex;flex-direction:column;align-items:center;justify-content:center}.spinner{width:38px;height:38px;border-radius:50%;border:4px solid #ddd5c5;border-top-color:var(--olive);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.hidden{display:none!important}.text-center{text-align:center}.qr-shell{width:170px;height:170px;background:white;border-radius:18px;margin:16px auto;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.08)}#claimQrIcon{font-size:88px;line-height:1}.tag-id{font-size:19px;font-weight:850}
.dashboard-head,.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.dashboard-head h1{margin-bottom:0}.admin-card{margin-top:22px}.pack-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.pack-tag{background:white;border:1px solid var(--line);border-radius:16px;padding:10px;text-align:center}.pack-tag .qrbox{width:128px;height:128px;margin:4px auto 8px;display:flex;align-items:center;justify-content:center}.pack-tag .qrbox img,.pack-tag .qrbox canvas{max-width:100%;height:auto!important}.pack-tag strong{font-size:14px}.pack-tag .tiny{word-break:break-all}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}
@media(max-width:480px){.shell{padding:0}.phone{width:100%;min-height:100vh;border:0;border-radius:0}.pack-grid{grid-template-columns:1fr 1fr}}
@media print{body{background:white}.shell{padding:0}.phone{border:0;box-shadow:none;width:100%;min-height:auto}.status,.topbar,.bottomnav,#dashboardScreen>:not(#packOutput){display:none!important}main{padding:0}#packOutput{display:block!important}.pack-grid{grid-template-columns:repeat(2,1fr);gap:18px}.pack-tag{break-inside:avoid;border:1px solid #aaa}.pack-tag .qrbox{width:170px;height:170px}}

.file-input-hidden{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}
.upload-label{
  width:100%;
  border-radius:16px;
  padding:15px 16px;
  font-size:16px;
  font-weight:800;
  margin-top:10px;
  cursor:pointer;
  display:block;
  text-align:center;
  -webkit-tap-highlight-color:transparent;
  touch-action:manipulation;
}
