:root{--background:#fff;--surface:#f7fafb;--surface-strong:#eef5f6;--text:#172026;--muted:#65727c;--border:#dbe5e7;--accent:#0891b2;--accent-strong:#0e7490;--green:#16a34a;--green-soft:#e9f8ef;--amber:#d97706;--amber-soft:#fff7ed;--shadow:0 20px 60px #17202617}*{box-sizing:border-box}html{background:var(--background)}body{color:var(--text);background:linear-gradient(180deg, #0891b214, #fff0 300px), var(--background);letter-spacing:0;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif}button,input,textarea{font:inherit}button{cursor:pointer}.app-shell{width:min(1180px,100vw - 32px);min-height:100vh;margin:0 auto;padding:28px 0 44px}.topbar{justify-content:space-between;align-items:center;gap:20px;margin-bottom:18px;display:flex}.brand{align-items:center;gap:10px;font-size:20px;font-weight:760;display:flex}.brand-mark{color:#fff;background:var(--accent);border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;display:inline-flex}.topbar-copy{color:var(--muted);margin:7px 0 0;font-size:14px;line-height:1.5}.ghost-button,.primary-button{border-radius:8px;justify-content:center;align-items:center;gap:8px;min-height:42px;font-size:14px;font-weight:680;transition:transform .16s,border-color .16s,background .16s;display:inline-flex}.ghost-button{color:var(--text);border:1px solid var(--border);background:#ffffffb3;padding:0 14px}.ghost-button:hover,.primary-button:hover,.drop-zone:hover{transform:translateY(-1px)}.primary-button{color:#fff;background:var(--accent);border:1px solid var(--accent);width:100%;margin-top:18px}.primary-button:hover{background:var(--accent-strong)}.primary-button:disabled,.ghost-button:disabled{cursor:not-allowed;opacity:.65;transform:none}.status-strip{min-height:44px;color:var(--text);border:1px solid var(--border);background:#ffffffc7;border-radius:8px;align-items:center;gap:10px;margin-bottom:18px;padding:0 14px;font-size:14px;display:flex;box-shadow:0 8px 26px #1720260a}.status-dot{border-radius:999px;width:10px;height:10px}.status-dot.success{background:var(--green)}.status-dot.warning{background:var(--amber)}.dashboard-grid{grid-template-columns:minmax(320px,.88fr) minmax(460px,1.12fr);align-items:start;gap:18px;display:grid}.upload-panel,.gallery-panel,.check-panel,.metric{border:1px solid var(--border);box-shadow:var(--shadow);background:#ffffffe6;border-radius:8px}.upload-panel{padding:22px}.section-heading{align-items:flex-start;gap:12px;margin-bottom:22px;display:flex}.section-heading svg{color:var(--accent);flex:none;margin-top:3px}.section-heading h1,.section-heading h2{margin:0;font-size:24px;font-weight:780;line-height:1.18}.section-heading h2{font-size:18px}.section-heading p{color:var(--muted);margin:6px 0 0;font-size:14px;line-height:1.5}.section-heading.compact{margin-bottom:14px}.field-label{color:#3d4a52;margin:14px 0 7px;font-size:13px;font-weight:700;display:block}.text-input,.text-area{width:100%;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;outline:none;transition:border-color .16s,box-shadow .16s,background .16s}.text-input{height:42px;padding:0 12px}.text-area{resize:vertical;min-height:90px;padding:11px 12px;line-height:1.55}.text-input:focus,.text-area:focus{background:#fff;border-color:#0891b28c;box-shadow:0 0 0 4px #0891b21f}.drop-zone{aspect-ratio:16/10;width:100%;color:var(--muted);background:linear-gradient(135deg, #0891b214, #16a34a12), var(--surface);border:1px dashed #0891b28c;border-radius:8px;justify-content:center;align-items:center;margin-top:16px;transition:transform .16s,border-color .16s;display:flex;overflow:hidden}.drop-zone img{object-fit:cover;width:100%;height:100%}.drop-placeholder{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:20px;display:flex}.drop-placeholder strong{color:var(--text);font-size:16px}.drop-placeholder small{max-width:260px;font-size:13px;line-height:1.45}.right-stack{gap:18px;display:grid}.metric-row{grid-template-columns:repeat(3,1fr);gap:12px;display:grid}.metric{min-height:78px;padding:15px 16px;box-shadow:0 10px 34px #1720260f}.metric span{color:var(--muted);font-size:13px;font-weight:650;display:block}.metric strong{margin-top:8px;font-size:24px;line-height:1;display:block}.gallery-panel,.check-panel{padding:18px}.gallery-list{gap:10px;max-height:430px;padding-right:3px;display:grid;overflow:auto}.photo-row{background:var(--surface);border:1px solid #0000;border-radius:8px;grid-template-columns:82px 1fr 36px;align-items:center;gap:12px;min-height:92px;padding:9px;display:grid}.thumb{background:var(--surface-strong);border-radius:7px;width:82px;height:74px;overflow:hidden}.thumb img{object-fit:cover;width:100%;height:100%}.photo-meta{min-width:0}.photo-title{align-items:center;gap:8px;display:flex}.photo-title strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.photo-meta p{color:#42515a;text-overflow:ellipsis;white-space:nowrap;margin:5px 0;font-size:13px;line-height:1.45;overflow:hidden}.photo-meta small{color:var(--muted);font-size:12px}.chip{border-radius:999px;align-items:center;height:22px;padding:0 8px;font-size:12px;font-weight:760;display:inline-flex}.chip.success{color:var(--green);background:var(--green-soft)}.chip.warning{color:var(--amber);background:var(--amber-soft)}.icon-link{width:34px;height:34px;color:var(--accent);border:1px solid var(--border);background:#fff;border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.empty-state{min-height:150px;color:var(--muted);background:var(--surface);border:1px dashed var(--border);text-align:center;border-radius:8px;justify-content:center;align-items:center;padding:22px;line-height:1.5;display:flex}.check-list{gap:9px;display:grid}.check-item{color:#34434c;align-items:center;gap:9px;min-height:34px;font-size:14px;display:flex}.check-item svg{color:var(--green);flex:none}.check-item:nth-child(n+3) svg{color:#99a6ad}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.spin{animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width:900px){.app-shell{width:min(100vw - 24px,680px);padding-top:18px}.topbar{flex-direction:column;align-items:flex-start}.dashboard-grid,.metric-row{grid-template-columns:1fr}.photo-row{grid-template-columns:72px 1fr 34px}.thumb{width:72px;height:66px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
