:root{color-scheme:light;--bg:#f5f7f3;--surface:#fff;--surface-soft:#eef4f1;--text:#18211f;--muted:#68736f;--line:#dfe6e2;--primary:#176b5c;--primary-dark:#0f4f44;--accent:#c87920;--danger:#b42318;--danger-soft:#fff0ed;--success:#23764f;--success-soft:#eaf7ef;--shadow:0 18px 45px rgba(18,33,31,.09)}*{box-sizing:border-box}body{margin:0;background:linear-gradient(135deg,rgba(23,107,92,.09),transparent 34%),linear-gradient(225deg,rgba(200,121,32,.09),transparent 30%),var(--bg);color:var(--text);font-family:Inter,PingFang SC,Microsoft YaHei,Arial,sans-serif}button,input,textarea{font:inherit}a,button{-webkit-tap-highlight-color:transparent}.app-shell{min-height:100vh;padding:18px}.topbar{gap:16px;justify-content:space-between;margin:0 auto;max-width:1180px;padding:14px 0 22px}.admin-toolbar,.brand,.claim-title,.code-chip,.danger-button,.download-button,.feedback,.ghost-button,.item-actions,.item-title,.metric,.primary-button,.section-heading,.top-link,.topbar{align-items:center;display:flex}.brand{gap:12px;min-width:0}.brand-mark{align-items:center;background:var(--primary);border-radius:8px;color:#fff;display:grid;flex:0 0 46px;height:46px;place-items:center;width:46px}.eyebrow{color:var(--accent);font-size:12px;font-weight:800;margin:0 0 4px;text-transform:uppercase}.eyebrow,h1,h2{letter-spacing:0}h1,h2{margin:0}h1{font-size:clamp(24px,4vw,34px);line-height:1.1}h2{font-size:22px;line-height:1.2}.top-link{background:var(--primary);border-radius:8px;box-shadow:0 8px 18px rgba(23,107,92,.18);color:#fff;font-weight:800;gap:7px;min-height:42px;padding:0 14px;text-decoration:none;transition:background .2s ease,box-shadow .2s ease,transform .2s ease;white-space:nowrap}.top-link:hover{background:var(--primary-dark);box-shadow:0 10px 24px rgba(23,107,92,.22);transform:translateY(-1px)}main{margin:0 auto;max-width:1180px}.workspace{display:grid;gap:18px}.redeem-workspace{grid-template-columns:minmax(0,1.15fr) minmax(280px,.85fr)}.surface{background:hsla(0,0%,100%,.9);border:1px solid rgba(223,230,226,.88);border-radius:8px;box-shadow:var(--shadow);padding:22px}.login-card,.redeem-card{min-height:430px}.login-card{margin:18px auto 0;max-width:460px;width:100%}.section-heading{color:var(--primary);justify-content:space-between;margin-bottom:24px}.section-heading.compact{margin-bottom:18px}label{color:var(--text);display:block;font-size:14px;font-weight:700;margin-bottom:8px}input,textarea{background:#fbfcfb;border:1px solid var(--line);border-radius:8px;color:var(--text);outline:none;padding:13px 14px;transition:border-color .2s ease,box-shadow .2s ease,background .2s ease;width:100%}textarea{min-height:112px;resize:vertical}input:focus,textarea:focus{background:#fff;border-color:rgba(23,107,92,.6);box-shadow:0 0 0 4px rgba(23,107,92,.12)}.field-count{color:var(--muted);font-size:12px;margin:-6px 0 4px;text-align:right}.input-row{display:grid;gap:10px;grid-template-columns:minmax(0,1fr) auto}.danger-button,.download-button,.ghost-button,.icon-button,.primary-button{border:0;border-radius:8px;cursor:pointer;font-weight:800;justify-content:center;text-decoration:none;transition:transform .18s ease,box-shadow .18s ease,background .18s ease;white-space:nowrap}.download-button,.primary-button{background:var(--primary);color:#fff;gap:8px;min-height:48px;padding:0 18px}.download-button:hover,.primary-button:hover{background:var(--primary-dark);box-shadow:0 10px 24px rgba(23,107,92,.22);transform:translateY(-1px)}.primary-button:disabled{cursor:not-allowed;opacity:.68;transform:none}.download-button,.ghost-button.full,.primary-button.full{width:100%}.danger-button,.ghost-button{background:#f4f7f5;color:var(--text);gap:7px;min-height:40px;padding:0 12px}.ghost-button:hover{background:var(--surface-soft)}.danger-button{background:var(--danger-soft);color:var(--danger)}.danger-button:hover{background:#ffe2dc}.small{min-height:36px}.icon-button{align-items:center;background:var(--surface-soft);color:var(--primary);display:grid;height:38px;place-items:center;width:38px}.feedback{border-radius:8px;gap:8px;margin:14px 0 0;padding:12px}.feedback.error{background:var(--danger-soft);color:var(--danger)}.feedback.success{background:var(--success-soft);color:var(--success)}.claim-panel{border:1px solid var(--line);border-radius:8px;margin-top:22px;padding:18px}.claim-title{color:var(--success);gap:10px;margin-bottom:16px}.claim-title span{display:block;font-size:13px;font-weight:700}.claim-title strong{color:var(--text);display:block;font-size:20px;margin-top:2px}dl{gap:12px;margin:0 0 18px}dl,dl div{display:grid}dl div{border-bottom:1px solid var(--line);gap:4px;padding-bottom:12px}dt{color:var(--muted);font-size:12px;font-weight:800}dd{margin:0;overflow-wrap:anywhere}.delivery-info{background:#fbfcfb;border:1px solid var(--line);border-radius:8px;color:var(--text);line-height:1.65;margin:0;max-height:260px;overflow:auto;padding:12px;white-space:pre-wrap;word-break:break-word}.claim-actions{grid-template-columns:1fr 1fr}.claim-actions,.status-list{display:grid;gap:10px}.status-list div{align-items:center;background:#fbfcfb;border:1px solid var(--line);border-radius:8px;display:flex;justify-content:space-between;padding:14px}.support-panel{border-top:1px solid var(--line);margin-top:18px;padding-top:18px}.support-title{align-items:center;color:var(--primary);display:flex;font-weight:800;gap:8px;margin-bottom:12px}.wechat-qr{aspect-ratio:1/1;background:#fff;border:1px solid var(--line);border-radius:8px;display:block;-o-object-fit:cover;object-fit:cover;width:min(100%,260px)}.item-meta,.policy-note,.status-list span{color:var(--muted)}.policy-note{border-top:1px solid var(--line);line-height:1.7;margin:18px 0 0;padding-top:16px}.create-card,.stack-form{display:grid;gap:12px}.admin-toolbar{justify-content:space-between;margin-bottom:14px}.admin-grid{display:grid;gap:18px;grid-template-columns:minmax(320px,.75fr) minmax(0,1.25fr)}.metric-grid{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.metric{background:hsla(0,0%,100%,.82);border:1px solid var(--line);border-radius:8px;color:var(--primary);gap:10px;min-height:78px;padding:16px}.metric span{color:var(--muted);font-size:13px;margin-right:auto}.metric strong{color:var(--text);font-size:24px}.file-box{align-items:center;background:#fbfcfb;border:1px dashed rgba(23,107,92,.42);border-radius:8px;color:var(--primary);cursor:pointer;display:flex;gap:10px;justify-content:center;min-height:84px;padding:14px;text-align:center}.file-box input{display:none}.list-card{min-width:0}.empty-state{align-items:center;color:var(--muted);display:grid;gap:10px;min-height:220px;place-items:center}.item-list{display:grid;gap:12px}.item-row{border:1px solid var(--line);border-radius:8px;display:grid;gap:14px;grid-template-columns:minmax(0,1fr) auto;padding:14px}.item-main{min-width:0}.item-title{gap:8px;justify-content:space-between;min-width:0}.item-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.item-badges{display:flex;flex:0 0 auto;flex-wrap:wrap;gap:6px;justify-content:flex-end}.status-pill{border-radius:999px;flex:0 0 auto;font-size:12px;font-weight:800;padding:4px 8px}.status-pill.on{background:var(--success-soft);color:var(--success)}.status-pill.off{background:#eceff2;color:#667085}.status-pill.claimed{background:#edf7ff;color:#175cd3}.status-pill.pending{background:#fff7ed;color:#b54708}.code-chip{background:var(--surface-soft);border:0;border-radius:6px;color:var(--primary);cursor:pointer;gap:6px;margin-top:10px;max-width:100%;min-height:34px;overflow-wrap:anywhere;padding:7px 9px;text-align:left}.item-meta{display:flex;flex-wrap:wrap;font-size:13px;gap:8px 14px;margin-top:10px}.item-actions{align-content:start;flex-wrap:wrap;gap:8px;justify-content:flex-end}.modal-layer{align-items:center;background:rgba(15,31,28,.42);display:flex;inset:0;justify-content:center;padding:18px;position:fixed;z-index:20}.modal-panel{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 24px 70px rgba(15,31,28,.22);display:grid;gap:12px;max-height:calc(100vh - 36px);max-width:560px;overflow:auto;padding:22px;width:min(560px,100%)}.modal-actions{display:grid;gap:10px;grid-template-columns:1fr 1fr}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}@media (max-width:900px){.topbar{align-items:stretch;flex-direction:column}.top-link{align-self:flex-start}.admin-grid,.metric-grid,.redeem-workspace{grid-template-columns:1fr}}@media (max-width:560px){.app-shell{padding:12px}.surface{padding:16px}.brand-mark{flex-basis:42px;height:42px;width:42px}.claim-actions,.input-row,.item-row,.modal-actions{grid-template-columns:1fr}.item-actions{justify-content:stretch}.item-actions button{flex:1}h1{font-size:24px}h2{font-size:20px}}