:root{font-family:system-ui,-apple-system,sans-serif;line-height:1.5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}body{margin:0;min-height:100vh}#root{min-height:100vh}body{margin:0}.app-header{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:12px!important;padding-left:max(16px,env(safe-area-inset-left))!important;padding-right:max(16px,env(safe-area-inset-right))!important;padding-top:max(0px,env(safe-area-inset-top))!important;background:#001529!important;flex-wrap:nowrap!important}.app-header-left{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.app-header-logo{height:32px;width:auto;object-fit:contain;flex-shrink:0}.app-header-title{color:#fff;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-header-logout{color:#fff!important;flex-shrink:0}@media(max-width:480px){.app-header-logo{height:28px}.app-header-title{font-size:15px}}.upload-zone-wrapper{padding:24px;position:relative}.upload-zone-loading{position:absolute;top:16px;right:24px;display:flex;align-items:center;gap:8px;font-size:13px;color:#722ed1;z-index:1}.upload-zone-title{margin:0 0 16px;font-size:15px;color:#262626;font-weight:500}.upload-zone-dragger{padding:32px 24px!important;border-radius:12px!important;transition:border-color .2s,background-color .2s!important}.upload-zone-dragger:hover{border-color:#9254de!important;background:#faf5ff!important}.upload-zone-dragger.ant-upload-drag-hover{border-color:#722ed1!important;background:#f9f0ff!important}.upload-zone-dragger .ant-upload-drag-icon,.upload-zone-dragger .ant-upload-text,.upload-zone-dragger .ant-upload-hint:not(.upload-zone-hint){display:none}.upload-zone-content{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px 16px;position:relative;min-height:80px}.upload-zone-icon-left{position:relative;width:48px;height:48px;display:flex;align-items:center;justify-content:center;background:#f9f0ff;border-radius:50%}.upload-zone-icon-left .upload-zone-plus{position:absolute;right:-4px;bottom:-4px;width:22px;height:22px;background:#722ed1;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;box-sizing:border-box}.upload-zone-text{margin:0;font-size:15px;color:#262626;flex:1;min-width:200px;text-align:center}.upload-zone-click{color:#722ed1;font-weight:600;cursor:pointer}.upload-zone-hint{margin:8px 0 0;width:100%;font-size:13px;color:#8c8c8c;text-align:center}.upload-zone-icon-right{display:flex;align-items:center;justify-content:center}@media(max-width:768px){.dashboard-content{padding:12px 16px!important}.upload-card{margin-bottom:16px!important}.upload-zone-wrapper{padding:12px}.upload-zone-dragger{padding:14px 12px!important;min-height:auto!important}.upload-zone-content{min-height:0;gap:8px 10px;flex-wrap:wrap}.upload-zone-icon-left{width:40px;height:40px}.upload-zone-icon-left .anticon{font-size:22px!important}.upload-zone-icon-left .upload-zone-plus{width:18px;height:18px;font-size:10px}.upload-zone-icon-right{display:none}.upload-zone-text{font-size:14px;min-width:0}.upload-zone-hint{margin:4px 0 0;font-size:11px}.upload-zone-loading{top:10px;right:14px;font-size:12px}}.dashboard-content{padding:24px}.upload-card{margin-bottom:24px}.search-row{display:flex;align-items:center;gap:12px;margin-bottom:16px;flex-wrap:wrap}.search-row .search-input{flex:1;min-width:180px;max-width:320px}.search-row .sort-select{min-width:120px}.image-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;align-items:stretch}.image-card{display:flex;flex-direction:column;height:100%;transition:transform .2s ease,box-shadow .2s ease}.image-card .ant-card-body{flex:1;display:flex;flex-direction:column;min-height:0}.image-card-thumb{width:100%;aspect-ratio:1;overflow:hidden;background:#f5f5f5;flex-shrink:0}.image-card-thumb .ant-image{display:block;width:100%;height:100%}.image-card-thumb .ant-image img{width:100%;height:100%;object-fit:cover}.image-card-filename{margin-top:8px;font-size:12px;color:#666;word-break:break-all;flex-shrink:0}.image-card-new{animation:imageCardAppear .45s ease-out}@keyframes imageCardAppear{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
