:root{--surface:#f5f7fb;--surface-dim:#d8dde8;--surface-bright:#f5f7fb;--surface-container-lowest:#fff;--surface-container-low:#eef1f7;--surface-container:#e6ebf3;--surface-container-high:#dde3ee;--surface-container-highest:#d4dbe8;--on-surface:#1b1b1d;--on-surface-variant:#414755;--outline:#717786;--outline-variant:#c1c6d7;--primary:#0058bc;--primary-hover:#0070eb;--on-primary:#fff;--primary-container:#0070eb;--on-primary-container:#fefcff;--secondary:#006e28;--on-secondary:#fff;--secondary-container:#6ffb85;--tertiary:#894d00;--on-tertiary:#fff;--error:#ba1a1a;--on-error:#fff;--danger:#ba1a1a;--border:#c1c6d7;--text:#1b1b1d;--muted:#414755;--bg:#f5f7fb;--sidebar-width:240px;--radius:.5rem;--radius-md:.75rem;--radius-lg:1rem;--font-headline:"Plus Jakarta Sans", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-body:Inter, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-mono:"Geist Mono", "SF Mono", ui-monospace, Menlo, Consolas, monospace;--space-md:16px;--space-lg:24px;--space-xl:32px}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{font-family:var(--font-body);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:14px;line-height:20px}h1,h2,h3,h4,h5,h6{font-family:var(--font-headline)}button,input,select,textarea{font:inherit}.material-symbols-outlined{font-variation-settings:"FILL" 0, "wght" 400, "GRAD" 0, "opsz" 24;vertical-align:middle;-webkit-user-select:none;user-select:none;line-height:1}.mono{font-family:var(--font-mono);color:var(--primary);font-size:13px;font-weight:500}.layout{grid-template-columns:var(--sidebar-width) 1fr;min-height:100vh;display:grid}.login-page{background-color:#f5f7fb;background-image:radial-gradient(#c1c6d7 .5px,#0000 .5px);background-size:24px 24px;place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{background:var(--surface-container-lowest);border:1px solid var(--border);border-radius:var(--radius-lg);flex-direction:column;gap:32px;width:min(420px,100%);padding:32px;display:flex;box-shadow:0 10px 25px -5px #00418f0d,0 8px 10px -6px #00418f0d}.login-brand{text-align:center;flex-direction:column;align-items:center;gap:4px;display:flex}.login-brand .brand-mark{margin-bottom:12px}.login-brand h1{font-family:var(--font-headline);color:var(--primary);margin:0;font-size:24px;font-weight:600;line-height:32px}.login-brand p{letter-spacing:.05em;color:var(--on-surface-variant);margin:0;font-size:12px;font-weight:600;line-height:16px}.login-footer{border-top:1px solid var(--outline-variant);letter-spacing:.05em;color:var(--on-surface-variant);justify-content:center;align-items:center;gap:8px;padding-top:16px;font-size:12px;font-weight:600;line-height:16px;display:flex}.login-footer .material-symbols-outlined{font-size:16px}.brand-mark{border-radius:var(--radius);background:var(--primary);width:48px;height:48px;color:var(--on-primary);flex-shrink:0;place-items:center;display:grid}.brand-mark .material-symbols-outlined{color:var(--on-primary);font-size:28px}.brand-mark.sm{border-radius:6px;width:32px;height:32px}.brand-mark.sm .material-symbols-outlined{font-size:20px}.login-form{gap:24px;display:grid}.login-form label{letter-spacing:.05em;color:var(--on-surface-variant);gap:4px;font-size:12px;font-weight:600;line-height:16px;display:grid}.login-label{align-items:center;gap:4px;display:inline-flex}.login-label .material-symbols-outlined{font-size:14px}.password-field{position:relative}.password-field input{padding-right:44px}.password-toggle{width:32px;height:32px;color:var(--outline-variant);cursor:pointer;background:0 0;border:0;border-radius:999px;place-items:center;padding:0;display:grid;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.password-toggle:hover{color:var(--on-surface-variant);background:var(--surface-container-low)}.password-toggle .material-symbols-outlined{font-size:20px}.sider{background:var(--surface-container);border-right:1px solid var(--border);color:var(--on-surface);flex-direction:column;height:100vh;min-height:100vh;display:flex;position:sticky;top:0;overflow:hidden}.sider-brand{align-items:center;gap:10px;min-height:auto;padding:24px 16px 16px;display:flex}.sider-title{font-family:var(--font-headline);color:var(--primary);font-size:14px;font-weight:600;line-height:1.3}.sider-subtitle{letter-spacing:.04em;color:var(--muted);opacity:.7;margin-top:2px;font-size:11px;font-weight:600}.menu{flex-direction:column;flex:1;place-content:start flex-start;gap:4px;min-height:0;padding:8px 10px 12px;display:flex;overflow-y:auto}.menu-group{flex-direction:column;gap:4px;display:flex}.menu-group-label{letter-spacing:.06em;text-transform:uppercase;color:var(--outline);margin:8px 12px 4px;font-size:11px;font-weight:600}.menu-divider{background:var(--outline-variant);opacity:.4;border:0;height:1px;margin:10px 12px}.menu-item{text-align:left;color:var(--on-surface-variant);border-radius:var(--radius);cursor:pointer;background:0 0;border:0;flex:none;align-items:center;gap:12px;padding:10px 12px;font-size:14px;line-height:1.25;text-decoration:none;transition:background .15s,color .15s;display:flex}.menu-icon{flex-shrink:0;width:20px;height:20px;font-size:20px}.menu-item:hover{color:var(--on-surface);background:var(--surface-container-high)}.menu-item.active{background:var(--primary);color:var(--on-primary)}.menu-item.active .menu-icon{font-variation-settings:"FILL" 1, "wght" 400, "GRAD" 0, "opsz" 24}.sider-footer{flex:none;margin-top:auto;padding:12px}.sider-user{background:var(--surface-container-high);border-radius:var(--radius);align-items:center;gap:12px;padding:12px;display:flex}.sider-avatar{background:var(--primary);width:32px;height:32px;color:var(--on-primary);text-transform:uppercase;border-radius:999px;flex-shrink:0;place-items:center;font-size:12px;font-weight:700;display:grid}.sider-user-meta{flex:1;min-width:0}.sider-user-name{color:var(--on-surface);text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:12px;font-weight:600;line-height:16px;overflow:hidden}.sider-user-role{color:var(--on-surface-variant);text-overflow:ellipsis;white-space:nowrap;margin:2px 0 0;font-size:10px;overflow:hidden}.sider-logout{color:var(--on-surface-variant);cursor:pointer;background:0 0;border:0;border-radius:6px;flex-shrink:0;place-items:center;width:28px;height:28px;padding:0;display:grid}.sider-logout:hover{color:var(--primary);background:var(--surface-container-lowest)}.sider-logout .material-symbols-outlined{font-size:18px}.main{flex-direction:column;min-width:0;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:20;justify-content:space-between;align-items:center;height:64px;min-height:64px;padding:0 24px;display:flex;position:sticky;top:0}.breadcrumb{letter-spacing:.05em;color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;font-weight:600;line-height:16px;display:flex}.breadcrumb strong{color:var(--primary);font-weight:600}.sep{color:var(--outline)}.crumb-link{color:var(--muted);cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:none}.crumb-link:hover{color:var(--primary)}.topbar-right{align-items:center;gap:8px;display:flex}.user-chip{letter-spacing:.04em;color:var(--muted);background:var(--surface-container-low);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:600}.content{gap:16px;padding:24px;display:grid}.page-header{justify-content:space-between;align-items:end;gap:16px;display:flex}.page-header h2{margin:0;font-size:20px;font-weight:600}.page-desc{color:var(--muted);margin:6px 0 0;font-size:13px}.panel{background:var(--surface-container-lowest);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.panel-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.panel-header h3{margin:0;font-size:15px;font-weight:600}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.inline-filter{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:flex}.filter-card{background:var(--surface-container-lowest);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px}.field-label{letter-spacing:.05em;text-transform:uppercase;color:var(--outline);margin-bottom:4px;font-size:12px;font-weight:600;line-height:16px;display:block}.section-title{font-family:var(--font-headline);color:var(--on-surface);align-items:center;gap:10px;margin:0 0 16px;font-size:16px;font-weight:600;display:flex}.section-title:before{content:"";background:var(--primary);border-radius:2px;flex-shrink:0;width:3px;height:16px}.form-layout-8-4{grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start;gap:24px;display:grid}.form-sticky-bar{z-index:10;background:color-mix(in srgb, var(--surface-container-lowest) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-top:1px solid var(--border);justify-content:flex-end;gap:8px;margin:0 -24px -24px;padding:12px 16px;display:flex;position:sticky;bottom:0}.login-form label,.form-grid label{color:var(--muted);gap:6px;font-size:13px;display:grid}.login-form input,.form-grid input,.form-grid select,.form-grid textarea,.inline-filter select,.inline-filter input,.filter-card select,.filter-card input{border:1px solid var(--outline-variant);height:36px;color:var(--text);background:#fff;border-radius:6px;outline:none;padding:0 11px;transition:border-color .15s,box-shadow .15s}.login-form input{border-radius:var(--radius);height:44px;padding:0 16px}.inline-filter input{width:140px}.form-grid textarea{resize:vertical;height:auto;padding:8px 11px}.login-form input:focus,.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.inline-filter select:focus,.inline-filter input:focus,.filter-card select:focus,.filter-card input:focus{border-color:var(--primary);box-shadow:0 0 0 2px #0058bc1f}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 16px;padding:16px;display:grid}.form-grid .full-width,.form-grid .form-actions{grid-column:1/-1}.image-field{color:var(--muted);gap:6px;font-size:13px;display:grid}.image-uploader{gap:10px;display:grid}.image-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;display:grid}.image-grid.single{grid-template-columns:minmax(140px,220px)}.slot-thumb{object-fit:cover;border:1px solid var(--border);background:var(--surface-container-low);border-radius:4px;width:72px;height:48px;display:block}.thumb-sq{object-fit:cover;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);flex-shrink:0;width:48px;height:48px;display:block}.thumb-sq.placeholder{color:var(--outline);place-items:center;display:grid}.cell-stack{flex-direction:column;gap:2px;min-width:0;display:flex}.cell-title{color:var(--on-surface);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.cell-mono{font-family:var(--font-mono);color:var(--outline);font-size:12px}.price-stack{flex-direction:column;align-items:flex-end;gap:2px;font-size:12px;display:flex}.price-stack .price-main{font-family:var(--font-mono);color:var(--primary);font-weight:700}.price-stack .price-sub{font-family:var(--font-mono);color:var(--on-surface-variant);font-size:11px}.brand-pill{background:var(--surface-container);letter-spacing:.02em;color:var(--on-surface);border-radius:999px;align-items:center;padding:2px 8px;font-size:12px;font-weight:600;display:inline-flex}.status-dot{align-items:center;gap:8px;font-size:12px;font-weight:700;display:inline-flex}.status-dot:before{content:"";background:var(--outline-variant);border-radius:999px;flex-shrink:0;width:8px;height:8px}.status-dot.status-on{color:var(--secondary)}.status-dot.status-on:before{background:var(--secondary)}.status-dot.status-off{color:var(--tertiary)}.status-dot.status-off:before{background:var(--tertiary)}.toggle{width:44px;height:24px;display:inline-block;position:relative}.toggle input{opacity:0;width:0;height:0}.toggle-track{background:var(--outline-variant);cursor:pointer;border-radius:999px;transition:background .15s;position:absolute;inset:0}.toggle-track:after{content:"";background:#fff;border-radius:999px;width:20px;height:20px;transition:transform .15s;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #1b1b1d33}.toggle input:checked+.toggle-track{background:var(--primary)}.toggle input:checked+.toggle-track:after{transform:translate(20px)}.toggle input:disabled+.toggle-track{opacity:.55;cursor:not-allowed}.sort-badge{background:var(--surface-container-low);border:1px solid var(--outline-variant);min-width:28px;height:22px;font-family:var(--font-mono);color:var(--primary);border-radius:4px;justify-content:center;align-items:center;padding:0 8px;font-size:12px;font-weight:500;display:inline-flex}.missing-tag{background:var(--surface-container-low);height:22px;color:var(--muted);border:1px solid var(--outline-variant);border-radius:4px;align-items:center;margin-left:4px;padding:0 8px;font-size:12px;font-weight:600;display:inline-flex}.missing-tag.cover,.missing-tag.COVER{color:var(--danger);background:#fff2f0;border-color:#ffccc7}.missing-tag.purchase-url,.missing-tag.PURCHASE_URL{color:var(--primary);background:#e8f1fc;border-color:#adc6ff}.missing-tag.prices,.missing-tag.PRICES{color:var(--tertiary);background:#fff4e8;border-color:#ffdcc0}.missing-tag.off-shelf,.missing-tag.OFF_SHELF{color:var(--outline);background:var(--surface-container);border-color:var(--outline-variant)}.sub-text{color:var(--muted);margin-top:4px;font-size:12px}.image-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-container-low);position:relative;overflow:hidden}.image-card img{object-fit:cover;background:var(--surface-container);width:100%;height:120px;display:block}.cover-badge{color:#fff;background:#0058bceb;border-radius:4px;height:22px;padding:0 8px;font-size:12px;line-height:22px;position:absolute;top:8px;left:8px}.image-actions{border-top:1px solid var(--surface-container);background:#fff;flex-wrap:wrap;justify-content:center;gap:2px;padding:6px 4px;display:flex}.upload-trigger{border:1px dashed var(--outline-variant);background:var(--surface-container-low);width:fit-content;min-height:36px;color:var(--text);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;padding:0 14px;transition:border-color .15s,color .15s;display:inline-flex}.upload-trigger:hover:not(.disabled){border-color:var(--primary);color:var(--primary)}.upload-trigger.disabled{opacity:.55;cursor:not-allowed}.upload-trigger input{display:none}.field-hint{color:var(--muted);margin:0;font-size:12px}.check-field .switch{height:36px;color:var(--text);align-items:center;gap:8px;font-size:14px;display:inline-flex}.form-actions{grid-column:1/-1;gap:8px;display:flex}.table-wrap{overflow:auto}.pager{border-top:1px solid var(--border);color:var(--muted);flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;padding:12px 16px;font-size:13px;display:flex}.pager-total{margin-right:auto}.pager-page{text-align:center;min-width:64px;color:var(--text)}.pager-size,.pager-jump{align-items:center;gap:6px;display:inline-flex}.pager-size select,.pager-jump input{border:1px solid var(--border);background:var(--surface-container-lowest);height:32px;color:var(--text);border-radius:6px;padding:0 8px}.pager-size select{min-width:72px}.pager-jump input{text-align:center;width:64px}.data-table{border-collapse:collapse;width:100%;font-size:14px}.data-table th,.data-table td{border-bottom:1px solid var(--surface-container);text-align:left;white-space:nowrap;padding:12px 16px}.data-table th{background:var(--surface-container-low);color:var(--muted);z-index:1;font-size:13px;font-weight:500;position:sticky;top:0}.data-table tbody tr:hover{background:var(--surface-container-low)}.col-actions{text-align:right}.empty{color:var(--muted);text-align:center!important;padding:36px 16px!important}.tag{border:1px solid #0000;border-radius:4px;align-items:center;height:22px;margin-left:4px;padding:0 8px;font-size:12px;display:inline-flex}.tag-success{color:var(--secondary);background:#eefbf0;border-color:#9af8a0}.tag-muted{color:#8c8c8c;background:var(--surface-container-low);border-color:var(--outline-variant)}.tag-info{color:var(--primary);background:#e8f1fc;border-color:#adc6ff}.tag-warning{color:var(--tertiary);background:#fff4e8;border-color:#ffdcc0}.tag-error{color:var(--danger);background:#fff2f0;border-color:#ffccc7}.btn{cursor:pointer;border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;gap:6px;height:32px;padding:0 14px;font-size:14px;text-decoration:none;transition:all .15s;display:inline-flex}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--on-primary)}.btn-primary:hover:not(:disabled){background:var(--primary-hover);border-color:var(--primary-hover)}.btn-default{border-color:var(--outline-variant);color:var(--text);background:#fff}.btn-default:hover:not(:disabled){color:var(--primary);border-color:var(--primary)}.btn-text,.btn-link{color:var(--primary);background:0 0;border:0;height:auto;padding:0 6px}.btn-text{color:var(--muted)}.btn-text:hover,.btn-link:hover{color:var(--primary-hover)}.btn-danger-link{color:var(--danger)}.btn-danger-link:hover:not(:disabled){color:#93000a}.btn-block{border-radius:var(--radius);width:100%;height:44px;font-family:var(--font-headline);font-size:16px;font-weight:600;box-shadow:0 8px 16px #0058bc1f}.alert{border-radius:6px;margin:0;padding:10px 12px;font-size:13px}.alert-error{color:var(--danger);background:#fff2f0;border:1px solid #ffccc7}.login-card .alert{margin-top:0}.alert-cards{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.alert-card{background:var(--surface-container-lowest);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:8px;padding:16px;transition:border-color .15s;display:flex}.alert-card:hover{border-color:var(--primary)}.alert-card-header{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.alert-card-icon{border-radius:6px;flex-shrink:0;place-items:center;width:32px;height:32px;display:grid}.alert-card-icon .material-symbols-outlined{font-size:16px}.alert-card-icon.danger{color:var(--danger);background:#ba1a1a1f}.alert-card-icon.primary{color:var(--primary);background:#0058bc1f}.alert-card-icon.tertiary{color:var(--tertiary);background:#894d001f}.alert-card-icon.muted{background:var(--surface-container);color:var(--outline)}.alert-card-label{color:var(--muted);letter-spacing:.03em;font-size:12px;font-weight:600}.alert-card-count{font-family:var(--font-headline);color:var(--on-surface);font-size:28px;font-weight:700;line-height:1}.alert-card-footer{border-top:1px solid var(--outline-variant);text-align:right;margin-top:auto;padding-top:12px}.tabs{border-bottom:1px solid var(--border);gap:4px;padding:0 16px;display:flex}.tab{cursor:pointer;color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:12px 16px;font-size:14px}.tab.active{color:var(--primary);border-bottom-color:var(--primary);font-weight:600}.inline-row{align-items:center;gap:8px;margin-top:8px;display:flex}@media (width<=1100px){.alert-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.form-layout-8-4{grid-template-columns:1fr}}@media (width<=900px){.layout{grid-template-columns:1fr}.sider{display:none}.form-grid,.alert-cards{grid-template-columns:1fr}.page-header,.panel-header,.topbar{flex-wrap:wrap;row-gap:10px;height:auto;min-height:64px}.topbar{padding:12px 16px}.form-sticky-bar{margin:0}}
