/* Keep the interface monochrome; visual assets themselves remain in full colour. */
.asset-image,.detail-image{filter:none!important}.asset-card:hover .asset-image{filter:none!important}
.asset-card,.asset-image,.detail-image,.asset-meta{background:#fff!important}.asset-meta{border-top:0!important}.asset-tag{background:#fff!important;border:1px solid #dededb}.asset-image{object-fit:contain!important}.asset-grid{background:transparent!important;border:0!important;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))!important}
/* White-first refinement: black is reserved for hierarchy and actions. */
.sidebar{border-right-color:#e2e2df!important}.nav{border-top-color:#e2e2df!important}.topbar{border-bottom:1px solid #d8d8d5!important}.search-panel{border-bottom-color:#dededb!important}.search-form{border-color:#c7c7c3!important}.collection-grid{background:#e3e3e0!important;border-color:#e3e3e0!important}.asset-meta{border-top-color:#ececea!important}.asset-card:hover{background:#fafafa!important}.collection-card,.collection-card:nth-child(2n){background:#fff!important}.task,.task:first-child{border-color:#dededb!important}.empty-state{border-color:#dededb!important}.detail-info{border-left-color:#e1e1de!important}.detail-info h3{border-top-color:#e4e4e1!important}.detail-data{background:#e5e5e2!important}.detail-data div{background:#fafaf9!important}.source-section,.sidebar-footer{border-color:#e2e2df!important}.nav-item:not(.active):hover{background:#f2f2f0!important;color:#111!important}@media(max-width:800px){.sidebar{border-bottom-color:#e2e2df!important}.detail-info{border-top-color:#e1e1de!important}}
:root{--ink:#111;--paper:#fff;--fog:#f4f4f2;--line:#d8d8d5;--muted:#737370;--black:#111}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Work Sans',sans-serif;font-size:13px}.app-shell{display:grid;grid-template-columns:198px minmax(0,1fr);min-height:100vh}.sidebar{border-right:1px solid var(--ink);padding:25px 14px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;background:#fff}.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:var(--ink);font:700 21px 'Libre Baskerville',serif;letter-spacing:-.07em;padding:0 7px;margin-bottom:46px}.brand-mark{display:grid;place-items:center;border:1.5px solid var(--ink);width:22px;height:22px;font:600 12px 'IBM Plex Mono';letter-spacing:0}.nav{border-top:1px solid var(--ink)}.nav-item{display:flex;align-items:center;gap:9px;width:100%;background:transparent;border:0;border-bottom:1px solid var(--line);padding:12px 7px;color:var(--ink);font:500 12px 'Work Sans';cursor:pointer;text-align:left}.nav-item span{font-family:'IBM Plex Mono';font-size:14px;width:13px}.nav-item b{margin-left:auto;background:var(--ink);color:#fff;border-radius:0;padding:1px 5px;font:10px 'IBM Plex Mono'}.nav-item:hover,.nav-item.active{background:var(--ink);color:#fff}.nav-item.active b{background:#fff;color:#111}.side-section{margin:28px 7px 0}.side-label{display:flex;justify-content:space-between;align-items:center;color:var(--muted);font:10px 'IBM Plex Mono';letter-spacing:.08em;text-transform:uppercase;margin-bottom:10px}.side-label button{border:0;background:none;font:20px 'Work Sans';line-height:10px;color:var(--ink);cursor:pointer;padding:0}.tag-list{display:flex;flex-wrap:wrap;gap:5px}.tag-filter{border:1px solid var(--line);background:#fff;color:#333;border-radius:0;padding:4px 6px;font:10px 'IBM Plex Mono';cursor:pointer}.tag-filter.active,.tag-filter:hover{background:#111;border-color:#111;color:#fff}.source-section{border-top:1px solid var(--line);padding-top:13px}.source-section label{display:block;color:#3d3d3b;font-size:11px;margin:9px 0}.source-section input{accent-color:#111;margin-right:6px}.sidebar-footer{margin-top:auto;padding:12px 7px 0;border-top:1px solid var(--ink);display:flex;align-items:center;gap:6px;color:#555;font:10px 'IBM Plex Mono'}.signal{display:block;width:6px;height:6px;background:#111;border-radius:50%}.main{min-width:0;padding:29px 36px 70px}.topbar{display:flex;justify-content:space-between;align-items:flex-end;padding-bottom:18px;border-bottom:2px solid var(--ink)}.eyebrow{margin:0 0 5px;color:#62625f;text-transform:uppercase;font:9px 'IBM Plex Mono';letter-spacing:.08em}h1,h2{font-family:'Libre Baskerville',serif;letter-spacing:-.055em;margin:0}h1{font-size:31px;line-height:1}h2{font-size:24px}.top-actions{display:flex;gap:7px}.primary,.secondary,.icon-button{appearance:none;border-radius:0;font:600 11px 'Work Sans';cursor:pointer;padding:9px 12px;transition:background .12s,color .12s}.primary{background:#111;color:#fff;border:1px solid #111}.primary:hover{background:#fff;color:#111}.secondary,.icon-button{background:#fff;border:1px solid #111;color:#111}.secondary:hover,.icon-button:hover{background:#111;color:#fff}.icon-button{font:16px 'IBM Plex Mono';padding:5px 9px}.search-panel{padding:16px 0 14px;border-bottom:1px solid var(--ink);margin-bottom:18px}.search-form{height:39px;border:1px solid var(--ink);display:flex;align-items:center;padding:0 10px;gap:8px}.search-form span{font:21px 'IBM Plex Mono';line-height:1}.search-form input{height:100%;border:0;background:transparent;outline:0;min-width:0;flex:1;color:#111;font:12px 'Work Sans'}.search-form input::placeholder{color:#8c8c88}.search-form kbd{font:9px 'IBM Plex Mono';border:1px solid var(--line);padding:2px 4px;color:#777}.filter-row{display:flex;justify-content:space-between;align-items:center;margin-top:11px;gap:12px}.filter-group{display:flex;flex-wrap:wrap;gap:5px}.chip{border:0;background:#ededeb;color:#333;border-radius:0;padding:5px 8px;font:10px 'IBM Plex Mono';cursor:pointer}.chip:hover,.chip.active{background:#111;color:#fff}.result-count{margin-left:auto;white-space:nowrap;color:#555;font:10px 'IBM Plex Mono'}.asset-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}.asset-card{margin:0;border:0;background:#fff;min-width:0;cursor:pointer;transition:background .15s;position:relative}.asset-card:hover{background:#f1f1ee}.asset-card:hover .asset-image{filter:grayscale(1) contrast(1.06);transform:scale(1.018)}.asset-image{width:100%;height:clamp(140px,16vw,260px);display:block;object-fit:cover;transition:filter .2s,transform .2s;filter:grayscale(1)}.asset-card:nth-child(3n+1) .asset-image{object-position:top}.asset-meta{padding:9px 10px 10px;min-height:77px;border-top:1px solid var(--line)}.asset-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 11px 'Work Sans'}.asset-sub{display:flex;justify-content:space-between;color:#777;margin-top:6px;font:9px 'IBM Plex Mono'}.asset-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}.asset-tag{font:9px 'IBM Plex Mono';background:#ececea;color:#4d4d4b;padding:2px 4px}.processing:after{content:'处理中';position:absolute;z-index:1;top:7px;right:7px;background:#fff;border:1px solid #111;padding:3px 5px;font:9px 'IBM Plex Mono'}.empty-state{min-height:330px;border:1px solid var(--ink);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.empty-orb{height:40px;width:40px;border:1px solid #111;border-radius:50%;display:grid;place-items:center;font-size:16px;margin-bottom:15px}.empty-state p{color:#666;margin:8px 0 16px}.hidden{display:none!important}.section-heading{display:flex;justify-content:space-between;align-items:center;margin:19px 0}.section-heading p{color:#666;font:11px 'IBM Plex Mono'}.collection-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:#111;border:1px solid #111}.collection-card{min-height:170px;background:#fff;padding:15px;display:flex;flex-direction:column;justify-content:flex-end}.collection-card:nth-child(2n){background:#f2f2ef}.collection-card h3{margin:22px 0 4px;font:700 19px 'Libre Baskerville'}.collection-card p{margin:0;color:#666;font:10px 'IBM Plex Mono'}.task-list{max-width:920px}.task{display:grid;grid-template-columns:34px 1fr auto;border-bottom:1px solid #111;gap:11px;align-items:center;padding:13px 4px}.task:first-child{border-top:1px solid #111}.task-icon{height:25px;width:25px;border:1px solid #111;display:grid;place-items:center;font:13px 'IBM Plex Mono'}.task-name{font-size:12px;font-weight:600}.task-desc{margin-top:3px;color:#777;font:9px 'IBM Plex Mono'}.task-state{font:10px 'IBM Plex Mono';text-transform:uppercase}.task-state.failed{font-weight:700;text-decoration:underline}dialog{border:1px solid #111;border-radius:0;padding:0;box-shadow:8px 8px 0 #111;background:#fff;color:#111}dialog::backdrop{background:#0006}#collect-dialog{width:min(475px,calc(100vw - 30px))}#collect-form{padding:22px}.dialog-header{display:flex;justify-content:space-between;align-items:start;padding-bottom:16px;border-bottom:1px solid #111;margin-bottom:16px}.dialog-header h2{font-size:25px}.close{border:0;background:#fff;font:22px 'Work Sans';cursor:pointer;padding:0}.close:hover{background:#111;color:#fff}dialog label{display:grid;gap:6px;font:600 10px 'IBM Plex Mono';margin:13px 0}dialog input{border:1px solid #aaa;border-radius:0;padding:9px;background:#fff;font:12px 'Work Sans';outline-color:#111}.form-note{font:10px/1.55 'IBM Plex Mono';color:#666;border-left:2px solid #111;padding-left:8px;margin:15px 0}.dialog-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:17px}#detail-dialog{width:min(1060px,calc(100vw - 30px));max-height:90vh}.detail-close{position:absolute;z-index:2;right:10px;top:9px;width:27px;height:27px;border:1px solid #111}.detail-layout{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(290px,.7fr)}.detail-image{width:100%;height:calc(min(90vh,760px));object-fit:contain;background:#eee;filter:grayscale(1)}.detail-info{max-height:calc(min(90vh,760px));overflow:auto;padding:25px;border-left:1px solid #111}.detail-info h2{font-size:26px;padding-right:25px}.detail-info h3{margin:24px 0 7px;padding-top:7px;border-top:1px solid var(--line);color:#555;text-transform:uppercase;font:9px 'IBM Plex Mono';letter-spacing:.08em}.detail-info p{font-size:11px;line-height:1.7;color:#444}.detail-info a{color:#111;word-break:break-all}.detail-data{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#ccc}.detail-data div{background:#f3f3f1;padding:8px;font-size:10px}.detail-data strong{display:block;margin-bottom:4px;color:#777;font:9px 'IBM Plex Mono'}.detail-tags{display:flex;flex-wrap:wrap;gap:4px}.detail-tags span{border:1px solid #aaa;padding:4px 5px;font:10px 'IBM Plex Mono'}@media(max-width:1100px){.asset-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:800px){.app-shell{grid-template-columns:1fr}.sidebar{position:relative;height:auto;padding:16px;border-bottom:1px solid #111}.brand{margin:0 0 14px}.nav{display:flex;border-bottom:1px solid var(--line)}.nav-item{border-bottom:0}.side-section,.sidebar-footer{display:none}.main{padding:22px 16px}.asset-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.detail-layout{grid-template-columns:1fr}.detail-image{height:45vh}.detail-info{max-height:none;border:0;border-top:1px solid #111}}@media(max-width:520px){.topbar{align-items:start}.topbar h1{font-size:27px}.top-actions .icon-button{display:none}.filter-row{align-items:flex-start;flex-direction:column}.result-count{margin-left:0}.asset-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.asset-image{height:165px}.collection-grid{grid-template-columns:1fr 1fr}}
/* Analysis state and retry actions */
.task-actions{display:flex;align-items:center;gap:9px}
.task-retry{padding:5px 8px;font-size:10px}
.task-name{display:flex;align-items:baseline;gap:7px;min-width:0}
.task-asset-title{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.task-asset-id,.asset-detail-id{color:#777;font:9px 'IBM Plex Mono';letter-spacing:.01em}
.task-asset-id{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:22ch}
.asset-detail-id{margin:7px 0 -5px!important}
.analysis-actions{margin-top:11px}
.analysis-message{margin:0 0 11px!important}
.analysis-pending{display:flex;align-items:center;gap:7px}
.analysis-pending:before{content:'';width:7px;height:7px;background:#111;border-radius:50%;animation:analysis-pulse 1s ease-in-out infinite}
.analysis-error{color:#8b1e1e!important}
.detail-info button:disabled{cursor:wait;opacity:.55}
.primary:disabled,.secondary:disabled{background:#ececea;color:#555;border-color:#b9b9b5}
@keyframes analysis-pulse{50%{opacity:.2;transform:scale(.7)}}
@media(prefers-reduced-motion:reduce){.analysis-pending:before{animation:none;opacity:1;transform:none}}
.bulk-toolbar{position:fixed;z-index:4;left:calc(198px + 36px);right:36px;bottom:22px;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:11px 12px 11px 16px;background:#111;color:#fff;box-shadow:6px 6px 0 #bbb}.bulk-summary{display:flex;align-items:baseline;gap:10px}.bulk-summary .eyebrow{color:#bbb;margin:0}.bulk-summary strong{font:600 13px 'Work Sans'}.bulk-actions{display:flex;gap:6px}.bulk-toolbar .secondary{border-color:#fff;background:#111;color:#fff}.bulk-toolbar .secondary:hover{background:#fff;color:#111}.danger{appearance:none;border:1px solid #8d2525;background:#a22d2d;color:#fff;border-radius:0;font:600 11px 'Work Sans';cursor:pointer;padding:9px 12px}.danger:hover{background:#fff;color:#8d2525}.danger:disabled{cursor:not-allowed;opacity:.45}.asset-check{position:absolute;z-index:2;top:9px;right:9px;width:23px;height:23px;display:grid;place-items:center;border:1px solid #111;background:#fff;color:#111;font:700 14px 'IBM Plex Mono';padding:0;cursor:pointer}.asset-card.is-selected{outline:3px solid #111;outline-offset:-3px;z-index:1}.asset-card.is-selected:after{content:'';position:absolute;inset:0;background:#1110;pointer-events:none}.asset-card.is-selected .asset-check{background:#111;color:#fff}.asset-card.not-selectable{cursor:not-allowed;opacity:.68}.asset-card.not-selectable .asset-check{cursor:not-allowed;color:#aaa;border-color:#aaa}.action-dialog{width:min(490px,calc(100vw - 30px));padding:22px}.action-dialog .dialog-header{margin-bottom:12px}.dialog-copy{margin:0;color:#555;font:12px/1.65 'Work Sans'}.collection-picker{max-height:290px;overflow:auto;margin:16px 0;border-top:1px solid #111}.collection-option{display:flex;width:100%;align-items:center;justify-content:space-between;text-align:left;gap:12px;padding:12px 2px;border:0;border-bottom:1px solid #ddd;background:#fff;color:#111;cursor:pointer}.collection-option:hover,.collection-option.selected{background:#f2f2ef}.collection-option span{display:grid;gap:4px}.collection-option strong{font:600 12px 'Work Sans'}.collection-option small{color:#666;font:10px 'IBM Plex Mono'}.collection-option b{font:16px 'IBM Plex Mono'}.picker-empty{padding:24px 2px;color:#666;font:11px 'IBM Plex Mono'}.inline-create{border-top:1px solid #ddd;padding-top:14px}.inline-create form{display:grid;gap:8px}.inline-create input{width:100%;border:1px solid #aaa;padding:9px;background:#fff;font:12px 'Work Sans';outline-color:#111}.toast{position:fixed;z-index:10;right:28px;bottom:88px;background:#111;color:#fff;padding:10px 13px;box-shadow:4px 4px 0 #aaa;font:11px 'Work Sans'}
@media(max-width:800px){.bulk-toolbar{left:16px;right:16px;bottom:16px;align-items:flex-start;flex-direction:column}.bulk-actions{width:100%}.bulk-actions button{flex:1;padding-left:7px;padding-right:7px}.toast{left:16px;right:16px;bottom:142px}}
.asset-card.is-selected{outline:0}.asset-card.is-selected:after{z-index:4;box-shadow:inset 0 0 0 3px #111;background:transparent}.asset-card.is-selected .asset-image{transform:none!important}.asset-card.is-selected .asset-check{z-index:5}.toast{top:50%;left:50%;right:auto;bottom:auto;transform:translate(-50%,-50%);min-width:220px;max-width:min(420px,calc(100vw - 32px));padding:14px 18px;text-align:center;font-size:12px;box-shadow:6px 6px 0 #aaa;animation:toast-enter .16s ease-out}@keyframes toast-enter{from{opacity:0;transform:translate(-50%,-44%)}to{opacity:1;transform:translate(-50%,-50%)}}
.collection-card{position:relative;cursor:pointer;overflow:hidden;transition:transform .16s ease,background .16s ease}.collection-card:hover{transform:translate(-3px,-3px);box-shadow:4px 4px 0 #111}.collection-card-mark{position:absolute;right:13px;top:11px;width:30px;height:30px;display:grid;place-items:center;border:1px solid #111;font:16px 'Libre Baskerville',serif}.collection-detail-panel{max-width:1120px}.back-link{border:0;border-bottom:1px solid #111;background:#fff;padding:0 0 3px;font:11px 'IBM Plex Mono';cursor:pointer}.collection-detail-header{display:flex;align-items:flex-end;justify-content:space-between;gap:22px;padding:24px 0 18px;border-bottom:2px solid #111}.collection-detail-header h2{font-size:30px}.collection-description{max-width:580px;margin:9px 0 0;color:#666;font:11px/1.6 'Work Sans'}.collection-detail-actions{display:flex;align-items:center;gap:10px;white-space:nowrap}.collection-detail-actions span{font:10px 'IBM Plex Mono';color:#666}.collection-asset-grid{margin-top:18px}.collection-member .asset-image{filter:none}.remove-from-collection{position:absolute;z-index:3;top:9px;right:9px;width:25px;height:25px;border:1px solid #111;background:#fff;color:#111;font:18px/1 'Work Sans';cursor:pointer;opacity:0;transition:opacity .12s}.collection-member:hover .remove-from-collection{opacity:1}.remove-from-collection:hover{background:#111;color:#fff}@media(max-width:800px){.collection-detail-header{align-items:flex-start;flex-direction:column}.collection-detail-actions{width:100%;justify-content:space-between}.collection-detail-header h2{font-size:26px}.remove-from-collection{opacity:1}}
.collection-filter-control{position:relative}.collection-filter-toggle{display:flex;align-items:center;gap:7px;background:#fff;border:1px solid #111;color:#111}.collection-filter-toggle:hover,.collection-filter-toggle[aria-expanded="true"]{background:#111;color:#fff}.collection-filter-toggle .filter-label{font-weight:700}.collection-filter-toggle #collection-filter-value{max-width:13ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filter-caret{font:13px/1 'IBM Plex Mono';transform:translateY(-1px)}.collection-filter-toggle[aria-expanded="true"] .filter-caret{transform:rotate(180deg) translateY(1px)}.collection-filter-menu{position:absolute;z-index:8;top:calc(100% + 7px);right:0;width:min(270px,calc(100vw - 32px));max-height:285px;overflow:auto;background:#fff;border:1px solid #111;box-shadow:5px 5px 0 #111;padding:5px}.collection-filter-option{display:flex;width:100%;align-items:center;justify-content:space-between;gap:12px;border:0;background:#fff;color:#111;padding:9px 8px;text-align:left;cursor:pointer;font:11px 'Work Sans'}.collection-filter-option:hover,.collection-filter-option.selected{background:#111;color:#fff}.collection-filter-option b{font:10px 'IBM Plex Mono';font-weight:400}.collection-filter-option.selected:before{content:'✓';font:11px 'IBM Plex Mono';margin-right:-5px}@media(max-width:520px){.collection-filter-menu{left:0;right:auto}}
.ingest-mode{display:flex;gap:0;margin:0 0 5px;border-bottom:1px solid #111}.ingest-mode button{flex:1;border:0;border-right:1px solid #111;background:#fff;color:#666;padding:9px 10px;font:10px 'IBM Plex Mono';cursor:pointer}.ingest-mode button:last-child{border-right:0}.ingest-mode button.active,.ingest-mode button:hover{background:#111;color:#fff}.file-name{margin:7px 0 0;color:#666;font:10px/1.5 'IBM Plex Mono';word-break:break-all}#upload-ingest-fields label{padding:15px;border:1px dashed #999;background:#fafaf9}#upload-ingest-fields input[type=file]{padding:0;border:0;background:transparent;font-size:11px}
body.detail-dialog-open{overflow:hidden}#detail-dialog{overscroll-behavior:contain}.detail-image{overscroll-behavior:contain}
.detail-collections-section h3{margin-top:24px}.detail-collections{display:flex;flex-wrap:wrap;gap:5px}.detail-collection-chip{border:1px solid #111;background:#fff;color:#111;padding:5px 7px;font:10px 'IBM Plex Mono';cursor:pointer}.detail-collection-chip:hover{background:#111;color:#fff}.detail-collections-empty{color:#777;font:10px 'IBM Plex Mono'}
.detail-layout{grid-template-columns:155px minmax(0,1.3fr) minmax(290px,.7fr)}.detail-neighbor-rail{display:flex;flex-direction:column;justify-content:center;gap:9px;overflow:hidden;padding:18px 10px;background:#f4f4f2;border-right:1px solid #111}.detail-neighbor-card{display:grid;grid-template-columns:54px 1fr;align-items:center;gap:7px;width:100%;min-height:62px;border:1px solid transparent;background:transparent;color:#555;text-align:left;padding:4px;cursor:pointer;transform:scale(.88) translateX(8px);opacity:.48;transition:transform .2s,opacity .2s,border-color .2s,background .2s}.detail-neighbor-card img{width:54px;height:58px;display:block;object-fit:cover;background:#ddd}.detail-neighbor-card span{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;font:9px/1.35 'Work Sans'}.detail-neighbor-card:nth-child(odd){transform:scale(.8) translateX(15px)}.detail-neighbor-card:nth-child(even){transform:scale(.9) translateX(4px)}.detail-neighbor-card.active{transform:scale(1) translateX(0);opacity:1;border-color:#111;background:#fff;color:#111;box-shadow:3px 3px 0 #111}.detail-neighbor-card:hover{opacity:1;border-color:#111}.detail-neighbor-card.active img{filter:none}.detail-neighbor-card:focus-visible{outline:2px solid #111;outline-offset:2px}@media(max-width:800px){.detail-layout{grid-template-columns:1fr;grid-template-rows:auto auto auto}.detail-neighbor-rail{order:0;flex-direction:row;justify-content:flex-start;overflow-x:auto;overflow-y:hidden;border-right:0;border-bottom:1px solid #111;padding:10px;gap:7px}.detail-neighbor-card{flex:0 0 110px;grid-template-columns:45px 1fr;min-height:54px;transform:none!important;opacity:.58}.detail-neighbor-card img{width:45px;height:48px}.detail-neighbor-card.active{transform:none!important}.detail-image{order:1}.detail-info{order:2}}
.task-setting{display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:920px;margin:19px 0 18px;padding:16px;border:1px solid #111;background:#fafaf9}.task-setting .eyebrow{margin-bottom:6px}.task-setting h2{font-size:20px}.task-setting p:last-child{margin:7px 0 0;color:#666;font:11px/1.55 'Work Sans'}.switch{position:relative;flex:0 0 auto;width:42px;height:24px;cursor:pointer}.switch input{position:absolute;opacity:0;pointer-events:none}.switch span{position:absolute;inset:0;border:1px solid #111;background:#fff;transition:background .14s}.switch span:after{content:'';position:absolute;left:3px;top:3px;width:16px;height:16px;background:#111;transition:transform .14s}.switch input:checked + span{background:#111}.switch input:checked + span:after{background:#fff;transform:translateX(18px)}.switch input:focus-visible + span{outline:2px solid #777;outline-offset:3px}.switch input:disabled + span{opacity:.5;cursor:wait}@media(max-width:520px){.task-setting{align-items:flex-start}.task-setting h2{font-size:18px}}
#library-controls{position:sticky;top:0;z-index:7;background:#fff;padding-top:16px;box-shadow:0 9px 12px -13px #111}@media(max-width:800px){#library-controls{top:0;padding-top:12px}}
#library-controls.is-stuck{padding-top:9px;padding-bottom:9px;padding-right:190px;box-shadow:0 7px 14px -10px #111;border-bottom:1px solid #d8d8d5}#library-controls.is-stuck .search-form{height:35px}.library-search-stuck .top-actions{position:fixed;z-index:9;top:0;right:36px;height:54px;display:flex;align-items:center;padding-left:12px;background:#fff}.library-search-stuck .top-actions:before{content:'';position:absolute;left:0;top:9px;bottom:9px;border-left:1px solid #d8d8d5}@media(max-width:800px){#library-controls.is-stuck{padding-right:150px}.library-search-stuck .top-actions{right:16px;height:48px;padding-left:8px}.library-search-stuck .top-actions:before{top:7px;bottom:7px}}@media(max-width:520px){#library-controls.is-stuck{padding-right:100px}.library-search-stuck .top-actions{gap:4px}.library-search-stuck .top-actions .primary,.library-search-stuck .top-actions .secondary{padding-left:8px;padding-right:8px}.library-search-stuck .top-actions .secondary{display:none}}
.asset-load-more{padding:22px 0 34px;text-align:center;color:#666;font:10px 'IBM Plex Mono'}
.search-clear{display:grid;place-items:center;width:26px;height:26px;border:0;border-left:1px solid var(--line);background:transparent;color:#555;cursor:pointer;padding:0}.search-clear svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round}.search-clear:hover:not(:disabled),.search-clear:focus-visible{background:#111;color:#fff;outline:0}.search-clear:disabled{color:#aaa;cursor:default}
.tag-management-header,.tag-cleanup-panel{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;max-width:980px;padding:22px 0 16px;border-bottom:2px solid #111}.tag-management-header h2{margin:0;font-size:30px}.tag-management-header p:not(.eyebrow),.tag-cleanup-panel p:not(.eyebrow){color:#666;font:11px/1.6 'Work Sans';margin:8px 0 0}.tag-cleanup-panel{align-items:center;border-bottom:1px solid var(--line);padding:16px 0}.tag-cleanup-panel h3{margin:0;font-size:18px}.tag-management-list{max-width:980px;margin-top:10px}.tag-management-row,.tag-suggestion-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;border-bottom:1px solid var(--line)}.tag-management-row strong,.tag-suggestion-row strong{display:block;font:600 13px 'Work Sans'}.tag-management-row small,.tag-suggestion-row small{display:block;margin-top:5px;color:#777;font:10px 'IBM Plex Mono';word-break:break-word}.tag-management-actions{display:flex;gap:7px;flex:0 0 auto}.tag-suggestions-panel{max-width:980px;margin-top:12px;border:1px solid #111;padding:0 13px;background:#fafaf8}.tag-suggestion-row{padding:12px 0}.tag-suggestion-list{display:grid;gap:4px;margin-top:10px}.tag-suggestion-option{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);background:#fff;color:#111;padding:8px;text-align:left;cursor:pointer;font:11px 'Work Sans'}.tag-suggestion-option:hover{background:#111;color:#fff}.tag-suggestion-option small{font:9px 'IBM Plex Mono';color:#777}.tag-suggestion-option:hover small{color:#fff}.detail-tag-chip,.detail-tag-add{border:1px solid #111;background:#fff;color:#111;padding:5px 7px;font:10px 'IBM Plex Mono';cursor:pointer}.detail-tag-chip:hover,.detail-tag-add:hover{background:#111;color:#fff}.detail-tag-add{border-style:dashed}.detail-tags{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.tag-management-toolbar{display:flex;gap:8px;align-items:center}.tag-management-header{align-items:center}.tag-management-search{display:flex;align-items:center;gap:8px;width:min(520px,100%);height:39px;border:1px solid #111;padding:0 9px}.tag-management-search span{font:20px 'IBM Plex Mono';line-height:1}.tag-management-search input{min-width:0;flex:1;height:100%;border:0;outline:0;background:transparent;font:12px 'Work Sans'}.tag-management-search input::placeholder{color:#8c8c88}.tag-management-search button{border:0;background:transparent;color:#555;font:20px 'Work Sans';line-height:1;cursor:pointer;padding:0 2px}.tag-management-search button:hover{background:#111;color:#fff}.tag-merge-dialog{width:min(640px,calc(100vw - 30px))}.tag-merge-select-all{display:flex;align-items:center;gap:8px;margin:16px 0 8px;font:11px 'Work Sans';cursor:pointer}.tag-merge-list{max-height:min(54vh,460px);overflow:auto;border-top:1px solid #111}.tag-merge-option{display:flex;align-items:flex-start;gap:10px;padding:13px 2px;border-bottom:1px solid var(--line);cursor:pointer}.tag-merge-option input{margin:2px 0 0}.tag-merge-option strong{display:block;font:600 12px 'Work Sans'}.tag-merge-option small{display:block;margin-top:5px;color:#666;font:10px/1.5 'IBM Plex Mono'}
.tag-management-toolbar{display:flex;gap:8px;align-items:center}.tag-management-header{align-items:center}.tag-merge-dialog{width:min(640px,calc(100vw - 30px))}.tag-merge-select-all{display:flex;align-items:center;gap:8px;margin:16px 0 8px;font:11px 'Work Sans';cursor:pointer}.tag-merge-list{max-height:min(54vh,460px);overflow:auto;border-top:1px solid #111}.tag-merge-option{display:flex;align-items:flex-start;gap:10px;padding:13px 2px;border-bottom:1px solid var(--line);cursor:pointer}.tag-merge-option input{margin:2px 0 0}.tag-merge-option strong{display:block;font:600 12px 'Work Sans'}.tag-merge-option small{display:block;margin-top:5px;color:#666;font:10px/1.5 'IBM Plex Mono'}
@media(max-width:600px){.tag-management-header,.tag-cleanup-panel,.tag-management-row,.tag-suggestion-row{align-items:flex-start;flex-direction:column}.tag-management-actions{width:100%}.tag-management-actions button{flex:1}}
.tag-merge-option{cursor:default}.tag-merge-option input{cursor:pointer}.tag-merge-option>span{min-width:0;flex:1;cursor:pointer}.tag-merge-row-actions{display:flex;gap:5px;flex:0 0 auto}.tag-merge-row-actions button{padding:6px 8px;font-size:10px}@media(max-width:600px){.tag-merge-row-actions{width:100%}.tag-merge-row-actions button{flex:1}}
.filter-row{justify-content:flex-start}.filter-divider{width:1px;height:16px;flex:0 0 1px;background:#c7c7c3;margin:0 5px}@media(max-width:520px){.filter-divider{display:none}}
#detail-dialog{width:min(1320px,calc(100vw - 30px));max-height:94vh}.detail-layout{grid-template-columns:178px minmax(0,1.7fr) minmax(330px,.72fr)}.detail-neighbor-rail{padding:20px 14px;background:transparent;border-right:0;gap:6px}.detail-neighbor-card{grid-template-columns:58px 1fr;min-height:68px;padding:4px;border:0;border-radius:17px 5px 17px 5px;background:transparent;transform:translateX(22px) rotate(-7deg) scale(.82);opacity:.38}.detail-neighbor-card img{width:58px;height:64px;border-radius:13px 4px 13px 4px}.detail-neighbor-card:nth-child(1){transform:translateX(29px) rotate(-10deg) scale(.76)}.detail-neighbor-card:nth-child(2){transform:translateX(17px) rotate(-6deg) scale(.84)}.detail-neighbor-card:nth-child(3){transform:translateX(7px) rotate(-3deg) scale(.92)}.detail-neighbor-card:nth-child(4){transform:translateX(0) rotate(0) scale(1)}.detail-neighbor-card:nth-child(5){transform:translateX(7px) rotate(3deg) scale(.92)}.detail-neighbor-card:nth-child(6){transform:translateX(17px) rotate(6deg) scale(.84)}.detail-neighbor-card:nth-child(7){transform:translateX(29px) rotate(10deg) scale(.76)}.detail-neighbor-card.active{transform:translateX(0) rotate(0) scale(1);opacity:1;border:1px solid #111;background:#fff;box-shadow:4px 4px 0 #111}.detail-neighbor-card:hover{opacity:1;border-color:#111;background:#fff}.detail-neighbor-card span{font-size:9px}@media(max-width:800px){#detail-dialog{width:calc(100vw - 20px);max-height:94vh}.detail-layout{grid-template-columns:1fr}.detail-neighbor-rail{padding:10px;background:transparent}.detail-neighbor-card,.detail-neighbor-card:nth-child(n),.detail-neighbor-card.active{transform:none!important;border-radius:10px;box-shadow:none}.detail-neighbor-card.active{border:1px solid #111}}
#detail-dialog{position:relative;overflow:visible}.detail-layout{grid-template-columns:minmax(0,1.7fr) minmax(330px,.72fr)}.detail-neighbor-rail{position:absolute;z-index:3;top:0;right:100%;bottom:0;width:166px;padding:20px 10px;background:transparent;border:0;pointer-events:none}.detail-neighbor-card{pointer-events:auto}.detail-neighbor-card img{box-shadow:0 4px 12px #0002}@media(max-width:800px){#detail-dialog{overflow:hidden}.detail-layout{grid-template-columns:1fr}.detail-neighbor-rail{position:static;width:auto;display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;padding:10px;pointer-events:auto}.detail-neighbor-card{flex:0 0 110px}}
.detail-neighbor-card{display:block;grid-template-columns:none;width:72px;min-height:68px;transform:translateX(14px) rotate(-4deg) scale(.86);}.detail-neighbor-card span{display:none}.detail-neighbor-card img{width:64px;height:70px;object-fit:cover}.detail-neighbor-card:nth-child(1){transform:translateX(18px) rotate(-6deg) scale(.82)}.detail-neighbor-card:nth-child(2){transform:translateX(10px) rotate(-4deg) scale(.88)}.detail-neighbor-card:nth-child(3){transform:translateX(4px) rotate(-2deg) scale(.94)}.detail-neighbor-card:nth-child(4){transform:translateX(0) rotate(0) scale(1)}.detail-neighbor-card:nth-child(5){transform:translateX(4px) rotate(2deg) scale(.94)}.detail-neighbor-card:nth-child(6){transform:translateX(10px) rotate(4deg) scale(.88)}.detail-neighbor-card:nth-child(7){transform:translateX(18px) rotate(6deg) scale(.82)}.detail-neighbor-card.active{transform:translateX(0) rotate(0) scale(1)}@media(max-width:800px){.detail-neighbor-card,.detail-neighbor-card:nth-child(n),.detail-neighbor-card.active{flex:0 0 74px;width:74px;min-height:58px;transform:none!important}.detail-neighbor-card img{width:60px;height:62px}}
.detail-neighbor-rail{width:116px}.detail-neighbor-card{opacity:.62}.detail-neighbor-card.active{opacity:1}@media(max-width:800px){.detail-neighbor-rail{width:auto}}
.asset-card .asset-image{object-position:center!important}
:root { --auth-overlay: rgba(16, 18, 24, .94); }
.auth-gate { position: fixed; inset: 0; z-index: 100; display: grid; place-items: center; background: var(--auth-overlay); padding: 24px; }
.auth-gate.hidden { display: none; }
.auth-card { width: min(100%, 390px); display: grid; gap: 14px; padding: 30px; border-radius: 22px; background: #fff; color: #17191f; box-shadow: 0 24px 80px rgba(0,0,0,.28); }
.auth-card h1, .auth-card p { margin: 0; }
.auth-card label { display: grid; gap: 7px; font-size: 13px; }
.auth-card input { width: 100%; box-sizing: border-box; }
.auth-error { min-height: 20px; color: #b42318; font-size: 13px; }
.account-area { position: relative; margin-top: auto; }
.account-button { width: 100%; display: flex; align-items: center; gap: 8px; border: 1px solid var(--line); background: #fff; color: #111; padding: 8px 7px; text-align: left; cursor: pointer; }
.account-button:hover { background: #f2f2f0; border-color: #111; }
.account-avatar { display: grid; place-items: center; width: 24px; height: 24px; background: #111; color: #fff; font: 11px 'IBM Plex Mono'; }
.account-copy { min-width: 0; display: grid; gap: 3px; flex: 1; }
.account-copy strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 11px 'Work Sans'; }
.account-copy small, .account-menu small { color: #777; font: 9px 'IBM Plex Mono'; }
.account-caret { font: 13px 'IBM Plex Mono'; color: #777; }
.account-menu { position: absolute; z-index: 8; left: 0; right: 0; bottom: calc(100% + 7px); border: 1px solid #111; background: #fff; box-shadow: 4px 4px 0 #bbb; padding: 7px; }
.account-menu-heading { display: grid; gap: 4px; padding: 6px 7px 9px; border-bottom: 1px solid var(--line); }
.account-menu-heading span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 11px 'Work Sans'; }
.account-menu button { width: 100%; border: 0; background: #fff; color: #111; padding: 9px 7px; text-align: left; cursor: pointer; font: 11px 'Work Sans'; }
.account-menu button:hover { background: #111; color: #fff; }
.account-area + .sidebar-footer { margin-top: 10px; }
#detail-content{min-height:0}.detail-layout{height:min(90vh,760px);min-height:0}.detail-media-panel{position:relative;height:100%;min-height:0;overflow:hidden}.detail-media-panel .detail-image{height:100%;min-height:0;flex:1 1 auto;object-fit:contain}.detail-media-actions{position:absolute;z-index:2;right:18px;bottom:18px;display:flex;justify-content:flex-end;padding:0;background:transparent;border-top:0;pointer-events:none}.detail-retouch-button{display:inline-flex;align-items:center;justify-content:flex-start;gap:0;width:34px;min-width:34px;height:34px;flex:0 0 auto;aspect-ratio:1;border:1px solid #111;border-radius:50%;overflow:hidden;padding:0;background:#fff;color:#111;pointer-events:auto;box-shadow:3px 3px 0 #111;transform-origin:right center;transition:width .34s cubic-bezier(.22,.61,.36,1),border-radius .28s ease,background-color .28s ease,color .28s ease,box-shadow .28s ease}.detail-retouch-icon{display:grid;place-items:center;flex:0 0 32px;width:32px;height:32px}.detail-retouch-icon svg{display:block;width:16px;height:16px;fill:currentColor}.detail-retouch-label{max-width:0;overflow:hidden;white-space:nowrap;opacity:0;font:600 11px 'Work Sans';transition:max-width .3s ease .04s,opacity .22s ease .1s}.detail-retouch-button:hover,.detail-retouch-button:focus-visible{width:126px;min-width:126px;aspect-ratio:auto;border-radius:0;background:#111;color:#fff}.detail-retouch-button:hover .detail-retouch-label,.detail-retouch-button:focus-visible .detail-retouch-label{max-width:88px;opacity:1}.detail-retouch-button:focus-visible{outline:2px solid #fff;outline-offset:2px}
@media(max-width:800px){.detail-layout{height:auto;max-height:none}.detail-media-panel{height:45vh;max-height:45vh}.detail-media-panel .detail-image{height:45vh;flex:0 1 45vh}.detail-media-actions{right:12px;bottom:12px}.detail-retouch-button:active{width:126px;border-radius:0}.detail-info{height:auto;max-height:none}}
.detail-close{right:16px!important}
.asset-retention-status { display: inline-block; margin-left: 6px; padding: 2px 5px; color: #8a4b08; background: #fff1d6; border-radius: 4px; font: 10px monospace; }
.task-started { display: block; margin-top: 4px; color: #999; font: 9px 'IBM Plex Mono'; }
.task-time { color: #777; font: 9px 'IBM Plex Mono'; white-space: nowrap; }
.search-image-button { border: 0; background: transparent; color: #111; padding: 3px 5px; cursor: pointer; font: 17px 'IBM Plex Mono'; line-height: 1; }
.search-image-button:hover { background: #111; color: #fff; }
.search-image-button svg { display: block; width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.4; }
.search-image-button.is-loading { cursor: wait; }
.search-image-button.is-loading:hover { background: transparent; color: #111; }
.search-image-button.is-close { padding: 1px 5px 3px; font-size: 22px; line-height: 18px; }
.similar-search-loading { display: flex; align-items: center; gap: 8px; margin: 10px 0 0; padding: 7px 9px; border-left: 2px solid #111; color: #555; font: 10px 'IBM Plex Mono'; }
.similar-search-result { margin: 18px 0 20px; border: 1px solid #111; background: #fafaf8; }
.similar-search-query { display: grid; grid-template-columns: minmax(180px, 240px) 1fr; min-height: 180px; }
.similar-search-query-media { display: grid; place-items: center; min-height: 180px; padding: 12px; background: #efefec; border-right: 1px solid #111; }
.similar-search-query-media img { width: 100%; height: 180px; object-fit: contain; filter: none; }
.similar-search-query-copy { display: flex; flex-direction: column; justify-content: center; padding: 24px 28px; }
.similar-search-query-copy h2 { font-size: 30px; }
.similar-search-query-copy p:not(.eyebrow):not(.similar-search-filename) { margin: 10px 0 0; color: #555; font: 11px 'IBM Plex Mono'; }
.similar-search-filename { margin: 18px 0 0; max-width: 48ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #888; font: 10px 'IBM Plex Mono'; }
.loading-spinner { width: 12px; height: 12px; border: 1px solid #111; border-top-color: transparent; border-radius: 50%; animation: similar-search-spin .7s linear infinite; }
@keyframes similar-search-spin { to { transform: rotate(360deg); } }
.similarity-badge { display: inline-block; margin-left: 6px; color: #555; font: 9px 'IBM Plex Mono'; }
@media(max-width:520px){.similar-search-query{grid-template-columns:1fr}.similar-search-query-media{border-right:0;border-bottom:1px solid #111}.similar-search-query-copy{padding:20px}.similar-search-query-copy h2{font-size:25px}.similar-search-query-media img{height:200px}}
#smart-collection-settings .smart-collection-toggle{justify-content:flex-start;align-items:center;gap:8px;max-width:none}.smart-collection-toggle>input{accent-color:#111;margin:0;flex:0 0 auto}.smart-collection-toggle-copy{display:flex;align-items:center;max-width:none;margin:0}.smart-collection-toggle-copy strong{font-size:13px;font-weight:700}.smart-mode-options input{accent-color:#111}
.smart-collection-toggle{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:12px 0 16px;border-bottom:1px solid var(--line)}.smart-collection-toggle>span:first-child{font:600 12px 'Work Sans'}.smart-collection-toggle-copy{display:flex;align-items:flex-start;gap:8px;max-width:330px;font:13px/1.45 'Work Sans'}.smart-collection-toggle-copy strong{font-weight:700;font-size:13px}.smart-collection-toggle-copy input,.smart-mode-options input,.smart-tag-picker input{accent-color:#111}.smart-collection-toggle-copy input{margin-top:2px;flex:0 0 auto}.smart-match-mode{padding:16px 0 4px}.smart-mode-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}.smart-mode-options label{display:flex;align-items:center;gap:8px;margin:0;padding:11px 10px;border:1px solid var(--line);background:#fff;font:11px 'Work Sans';cursor:pointer}.smart-mode-options label:has(input:checked){border-color:#111;background:#111;color:#fff}.smart-mode-options input{margin:0}.smart-tag-config{padding-top:12px}.smart-tag-heading{display:flex;align-items:center;justify-content:space-between}.smart-tag-heading>span{color:#777;font:10px 'IBM Plex Mono'}.smart-selected-tags{display:flex;flex-wrap:wrap;gap:5px;min-height:34px;padding:8px 0}.smart-selected-tag{display:inline-flex;align-items:center;gap:6px;border:1px solid #111;background:#111;color:#fff;padding:5px 7px;font:10px 'IBM Plex Mono';cursor:pointer}.smart-selected-tag b{font:14px/1 'Work Sans';font-weight:400}.smart-empty-tags{color:#888;font:10px 'IBM Plex Mono'}.smart-tag-picker-toggle{width:100%;justify-content:space-between;margin-top:10px}.smart-tag-picker{margin-top:8px;border:1px solid var(--line);background:#fafaf8;box-shadow:4px 4px 0 rgba(17,17,17,.08)}.smart-tag-picker-head{padding:8px 10px;border-bottom:1px solid var(--line);font:10px 'IBM Plex Mono';color:#777}.smart-tag-picker-results{display:grid;gap:0;max-height:210px;overflow:auto}.smart-tag-result{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;border:0;border-bottom:1px solid var(--line);background:#fff;color:#111;padding:9px 10px;text-align:left;font:11px 'Work Sans';cursor:pointer}.smart-tag-result:hover{background:#f2f2f0}.smart-tag-result b{font:16px 'IBM Plex Mono';font-weight:400}.smart-tag-picker-search{display:flex;gap:6px;padding:10px;border-top:1px solid var(--line);background:#fff}.smart-tag-picker-search input{min-width:0;flex:1;border:1px solid #aaa;border-radius:0;background:#fff;color:#111;padding:8px;font:11px 'Work Sans';outline-color:#111}.smart-tag-picker-search .icon-button{flex:0 0 34px;padding:5px}.smart-tag-picker .picker-empty{padding:12px 10px}.smart-tag-config .picker-empty{padding:10px 2px}@media(max-width:520px){.smart-mode-options{grid-template-columns:1fr}.smart-collection-toggle{display:block}.smart-collection-toggle-copy{margin-top:8px;max-width:none}}
.tag-management-search input[type="search"]::-webkit-search-cancel-button{appearance:none;display:none}
