:root{--primary:#6366f1;--primary-hover:#4f46e5;--bg:#f9fafb;--card-bg:#fff;--text:#111827;--text-muted:#6b7280;--border:#e5e7eb;--danger:#ef4444;--success:#10b981;--shadow:0 1px 3px 0 #0000001a, 0 1px 2px 0 #0000000f}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%}body{background-color:var(--bg);color:var(--text);font-family:Inter,PingFang SC,Microsoft YaHei,-apple-system,sans-serif;line-height:1.5}a{color:inherit;text-decoration:none}.app-shell{max-width:1000px;margin:0 auto;padding:2rem 1rem}.hidden{display:none!important}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-4{gap:1rem}.card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:.75rem;margin-bottom:1.5rem;padding:1.5rem}.topbar{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.title-wrap h1{letter-spacing:-.025em;margin-bottom:.5rem;font-size:1.875rem;font-weight:800}h2{margin-bottom:1rem;font-size:1.25rem;font-weight:700}.eyebrow{text-transform:uppercase;color:var(--primary);letter-spacing:.05em;margin-bottom:.25rem;font-size:.75rem;font-weight:600}.meta{color:var(--text-muted);font-size:.875rem}.top-actions{gap:.5rem;display:flex}button,.primary,.ghost,.danger,.small,.login-btn{cursor:pointer;border:1px solid #0000;border-radius:.5rem;justify-content:center;align-items:center;padding:.5rem 1rem;font-size:.875rem;font-weight:600;transition:all .2s;display:inline-flex}.primary,.login-btn{background:var(--primary);color:#fff}.primary:hover,.login-btn:hover{background:var(--primary-hover)}.ghost,.small{border-color:var(--border);color:var(--text);background:0 0}.ghost:hover,.small:hover{background:#f3f4f6}.danger{color:var(--danger);background:0 0;border-color:#fee2e2}.danger:hover{background:#fef2f2}button:disabled{opacity:.5;cursor:not-allowed}input,textarea,select{border:1px solid var(--border);background:#fff;border-radius:.5rem;outline:none;width:100%;padding:.625rem;font-size:.875rem}input:focus,textarea:focus,select:focus{border-color:var(--primary);box-shadow:0 0 0 2px #6366f126}.row{gap:1rem;margin:1rem 0;display:flex}.nav-bar{border-bottom:1px solid var(--border);gap:1rem;margin-bottom:2rem;padding-bottom:1rem;display:flex;overflow-x:auto}.nav-item{color:var(--text-muted);white-space:nowrap;border-radius:.375rem;padding:.5rem .75rem;font-size:.875rem;font-weight:500}.nav-item:hover{color:var(--text);background:#f3f4f6}.nav-item.active{color:var(--primary);background:#eef2ff}.balance-display{color:#fff;text-align:center;background:linear-gradient(135deg,#6366f1 0%,#a855f7 100%);border-radius:1rem;margin-bottom:2rem;padding:2rem}.balance-display p,.balance-display h3{opacity:.9;font-size:.875rem;font-weight:500}.balance-display .amount{margin:.5rem 0;font-size:3.5rem;font-weight:800;line-height:1}.grid-menu{grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;display:grid}.menu-card{cursor:pointer;transition:transform .2s,box-shadow .2s}.menu-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #11182714}.menu-card h3{margin-bottom:.4rem;font-size:1.05rem}.tabs{background:#f3f4f6;border-radius:.625rem;gap:.5rem;margin-bottom:1rem;padding:.25rem;display:inline-flex}.tab-btn{color:var(--text-muted);background:0 0;border:none}.tab-btn.active{color:var(--primary);border:1px solid var(--border);background:#fff}.panel{border:1px solid var(--border);border-radius:.75rem;padding:1rem}.upload-zone{border:2px dashed var(--border);background:#11182708;border-radius:.75rem;margin-bottom:1rem;padding:1rem}.upload-zone-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.75rem;display:flex}.upload-empty{border:1px dashed var(--border);width:100%;min-height:120px;color:var(--text-muted);cursor:pointer;border-radius:.625rem;place-items:center;display:grid}.upload-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.75rem;display:grid}.upload-tile{border:1px solid var(--border);background:#fff;border-radius:.625rem;overflow:hidden}.upload-tile .thumb-image{border:none;border-radius:0;max-height:110px}.upload-tile-meta{justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem;display:flex}.upload-name{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}.upload-add{border:1px dashed var(--border);min-height:148px;color:var(--text-muted);cursor:pointer;border-radius:.625rem;place-items:center;display:grid}.preview-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1rem;margin-top:1rem;display:grid}.preview-card{border:1px solid var(--border);border-radius:.625rem;padding:.75rem}.preview-card p{color:var(--text-muted);margin-bottom:.5rem;font-size:.75rem}.preview-card-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.5rem;display:flex}.btn-xs{padding:.25rem .5rem;font-size:.75rem;line-height:1}.thumb-image{object-fit:cover;border:1px solid var(--border);border-radius:.5rem;width:100%;max-height:170px;display:block}.preview-link{width:100%;min-height:44px}.result-image{border:1px solid var(--border);border-radius:.5rem;width:100%;display:block}.section-head{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.list{gap:.75rem;display:grid}.list-item{border:1px solid var(--border);border-radius:.625rem;justify-content:space-between;gap:.875rem;padding:.875rem;display:flex}.title{margin-bottom:.25rem;font-weight:700}.actions{align-items:center;gap:.5rem;display:flex}.hint-box{border:1px solid var(--border);background:#f8fafc;border-radius:.625rem;margin-bottom:1rem;padding:.875rem}code{color:#e5e7eb;background:#111827;border-radius:.5rem;margin-top:.5rem;padding:.625rem;font-size:.8125rem;display:block;overflow-x:auto}table{border-collapse:collapse;width:100%;margin-top:1rem}th{text-align:left;text-transform:uppercase;color:var(--text-muted);border-bottom:1px solid var(--border);padding:.75rem;font-size:.75rem}td{border-bottom:1px solid var(--border);padding:1rem .75rem;font-size:.875rem}.login-card,.center-card{text-align:center;max-width:460px;margin:8vh auto 0}.error{color:var(--danger);margin-top:.75rem;font-size:.875rem}.ok{color:var(--success);margin-top:.75rem;font-size:.875rem}@media (width<=900px){.grid-menu{grid-template-columns:1fr}}@media (width<=768px){.topbar,.row,.list-item{flex-direction:column;align-items:stretch}.top-actions,.actions{flex-wrap:wrap;justify-content:flex-start}.balance-display .amount{font-size:2.6rem}.title-wrap h1{font-size:1.5rem}}.auth-shell{place-items:center;min-height:100vh;padding-top:0;display:grid}.redeem-card{background:linear-gradient(#fff 0%,#fafaff 100%);border:1px solid #e9e5ff;border-radius:1rem;width:100%;max-width:520px;margin:0;padding:2rem;box-shadow:0 18px 45px #4f46e51f,0 2px 10px #1118270f}.redeem-badge{background:radial-gradient(circle at 30% 20%,#c7d2fe 0%,#818cf8 55%,#6366f1 100%);border-radius:14px;place-items:center;width:56px;height:56px;margin:0 auto .9rem;font-size:1.4rem;display:grid;box-shadow:inset 0 1px #fff6,0 10px 24px #6366f159}.redeem-card h1{margin-bottom:.4rem}.redeem-subtitle{color:var(--text-muted);margin-bottom:1rem;font-size:.92rem}.redeem-input-wrap{margin-top:.25rem}.redeem-input-wrap input{background:#fff;border-color:#ddd6fe;border-radius:.7rem;height:46px}.redeem-input-wrap input:focus{border-color:#6366f1;box-shadow:0 0 0 3px #6366f129}.redeem-submit{letter-spacing:.01em;border-radius:.7rem;width:100%;height:46px;margin-top:.85rem;font-size:.95rem}.redeem-tips{color:var(--text-muted);justify-content:center;gap:.4rem;margin-top:.95rem;font-size:.78rem;display:flex}.auth-card{background:linear-gradient(#fff 0%,#fafaff 100%);border:1px solid #e9e5ff;border-radius:1rem;width:100%;max-width:520px;margin:0;padding:2rem;box-shadow:0 18px 45px #4f46e51f,0 2px 10px #1118270f}.auth-badge{background:radial-gradient(circle at 30% 20%,#c7d2fe 0%,#818cf8 55%,#6366f1 100%);border-radius:14px;place-items:center;width:56px;height:56px;margin:0 auto .9rem;font-size:1.4rem;display:grid;box-shadow:inset 0 1px #fff6,0 10px 24px #6366f159}.auth-subtitle{color:var(--text-muted);margin-bottom:1rem;font-size:.92rem}.auth-submit{letter-spacing:.01em;border-radius:.7rem;width:100%;height:46px;margin-top:.85rem;font-size:.95rem}
