[hidden]{display:none!important}:root{--p:#5b63f6;--bg:#f5f7fb;--text:#172033}*{box-sizing:border-box}body{margin:0;font-family:system-ui,"Microsoft YaHei";background:var(--bg);color:var(--text)}button{cursor:pointer}.login{width:min(420px,90vw);margin:14vh auto;background:#fff;padding:35px;border-radius:24px;box-shadow:0 25px 70px #26345a1f}.login input,.login button{width:100%;height:48px;margin:7px 0;border:1px solid #e2e7f0;border-radius:12px;padding:0 14px}.login button{background:var(--p);color:#fff;border:0;font-weight:700}#shell{display:grid;grid-template-columns:230px 1fr;min-height:100vh}aside{background:#111827;color:white;padding:25px;display:flex;flex-direction:column}nav{display:grid;gap:7px}nav button,#logout{border:0;background:transparent;color:#c7cfdb;padding:12px;text-align:left;border-radius:10px}nav button.active{background:var(--p);color:#fff}#logout{margin-top:auto}.work header{height:80px;background:#fff;border-bottom:1px solid #e8ecf3;padding:0 30px;display:flex;align-items:center;justify-content:space-between}#content{padding:26px}.panel{background:#fff;border-radius:18px;padding:20px;margin-bottom:18px}.albums,.photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:15px}.card{background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 6px 20px #2330520d}.cover{aspect-ratio:4/3;background:#e8ebff;display:grid;place-items:center;overflow:hidden}.cover img{width:100%;height:100%;object-fit:contain;background:#f1f3f8}.meta{padding:12px}.actions{display:flex;gap:7px;flex-wrap:wrap}.actions button,.primary{border:0;border-radius:9px;padding:9px 12px;background:#eef0ff;color:#4f57d0}.primary{background:var(--p);color:white}.sentinel{text-align:center;padding:25px;color:#778196}.settings{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.setting{display:grid;gap:7px;background:#f8f9fc;padding:13px;border-radius:12px}.setting input{height:40px;padding:0 10px}#preview{border:0;background:#111827;padding:10px;border-radius:15px}#preview img{max-width:85vw;max-height:78vh}.toast{position:fixed}@media(max-width:650px){#shell{display:block}aside{display:none}.photos{grid-template-columns:1fr}.cover{aspect-ratio:auto}.cover img{height:auto;object-fit:contain}#content{padding:14px}}

/* RC3 viewer and proportional thumbnails */
#preview{width:96vw;height:94vh;max-width:none;max-height:none;border:0;padding:0;background:#0b0e15;border-radius:16px;overflow:hidden;color:#fff}
#preview::backdrop{background:rgba(3,6,12,.88);backdrop-filter:blur(4px)}
.preview-stage{height:calc(100% - 92px);display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:grab;touch-action:none;user-select:none;background:linear-gradient(45deg,#111722 25%,#0e131d 25%,#0e131d 50%,#111722 50%,#111722 75%,#0e131d 75%);background-size:24px 24px}
.preview-stage.dragging{cursor:grabbing}.preview-stage img{display:block;max-width:none;max-height:none;transform-origin:center center;will-change:transform;pointer-events:none}
.preview-toolbar{height:56px;display:flex;align-items:center;justify-content:center;gap:8px;background:#151a24;border-top:1px solid #ffffff12;padding:8px}
.preview-toolbar button{border:1px solid #ffffff1f;background:#252c3a;color:#fff;border-radius:9px;padding:8px 12px}.preview-toolbar button:hover{background:#343d50}
#zoomValue{min-width:62px;text-align:center;font-variant-numeric:tabular-nums}.preview-help{height:36px;margin:0;text-align:center;color:#9ea8b8;background:#151a24;font-size:12px}
@media(max-width:650px){#preview{width:100vw;height:100vh;border-radius:0}.preview-stage{height:calc(100% - 104px)}.preview-toolbar{height:64px;flex-wrap:wrap}.preview-help{height:40px}.cover img{width:100%;height:auto;object-fit:contain}.cover{aspect-ratio:auto;min-height:180px}}

/* RC4: show the complete proportional thumbnail inside a uniform desktop frame */
.photos .cover{aspect-ratio:4/3;background:#eef1f6;display:flex;align-items:center;justify-content:center;overflow:hidden}
.photos .cover img{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain!important;object-position:center center!important;background:#eef1f6}
@media(max-width:650px){.photos .cover{aspect-ratio:auto;min-height:0}.photos .cover img{width:100%;height:auto;max-height:none;object-fit:contain!important}}

/* RC5 viewer: image has natural layout size; only transform controls zoom. */
#preview .preview-stage img{width:auto!important;height:auto!important;max-width:none!important;max-height:none!important;object-fit:initial!important}
#viewerSource{font-size:12px;color:#aeb8c8;padding:0 6px}


/* RC6 navigation, settings groups and stable infinite-scroll sentinel */
#shell{grid-template-columns:230px minmax(0,1fr);transition:grid-template-columns .22s ease}
#shell.sidebar-collapsed{grid-template-columns:0 minmax(0,1fr)}
#sidebar{position:sticky;top:0;height:100vh;min-height:0;overflow:hidden;transition:transform .22s ease,width .22s ease,padding .22s ease;z-index:40}
#shell.sidebar-collapsed #sidebar{transform:translateX(-100%);width:0;padding-left:0;padding-right:0}
.sidebar-head{display:flex;align-items:center;justify-content:space-between;flex:0 0 auto}.sidebar-head h2{margin:0 0 18px}.sidebar-head button,#sidebarToggle,#headerLogout{border:0;border-radius:9px;cursor:pointer}
#sidebarCollapse{width:34px;height:34px;background:#ffffff12;color:#fff;font-size:24px;margin-bottom:18px}
#sidebar nav{min-height:0;overflow:auto;flex:1 1 auto;padding-right:3px}
.sidebar-footer{flex:0 0 auto;margin-top:14px;padding-top:12px;border-top:1px solid #ffffff18;background:#111827}
#logout{display:block;width:100%;margin:0!important;background:#ffffff0d!important;color:#fff!important;text-align:center!important}
.header-left,.header-user{display:flex;align-items:center;gap:12px}.header-user{margin-left:auto}
#sidebarToggle{width:40px;height:40px;background:#eef0ff;color:#4f57d0;font-size:19px}#headerLogout{padding:8px 12px;background:#f2f3f7;color:#5e6878}
.setting-groups{display:grid;gap:18px}.setting-group{background:#fff;border:1px solid #e7eaf1;border-radius:16px;padding:18px}.setting-group h2{margin:0;font-size:18px}.setting-group>p{margin:6px 0 15px;color:#778196;font-size:13px}.setting-group-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:12px}
.setting .setting-label{font-weight:700}.setting .setting-key{font-size:11px;color:#8d96a6}.setting .setting-help{font-size:12px;color:#778196;line-height:1.5}.setting select{height:40px;padding:0 10px;border:1px solid #dfe4ed;border-radius:8px;background:#fff}
.settings-savebar{position:sticky;bottom:12px;display:flex;justify-content:flex-end;gap:10px;background:#ffffffed;backdrop-filter:blur(8px);padding:12px;border:1px solid #e7eaf1;border-radius:14px;box-shadow:0 8px 28px #1b294a18;margin-top:18px}
.sentinel{min-height:72px;display:flex;align-items:center;justify-content:center}.sentinel.loading:before{content:'';width:18px;height:18px;border:3px solid #dfe3ef;border-top-color:#5b63f6;border-radius:50%;animation:spin .8s linear infinite;margin-right:10px}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:650px){#shell,#shell.sidebar-collapsed{display:block}#sidebar{position:fixed;left:0;top:0;width:230px;transform:translateX(-100%);box-shadow:12px 0 35px #0004}#shell.sidebar-open #sidebar{transform:translateX(0)}#shell.sidebar-collapsed #sidebar{width:230px}.work header{padding:0 14px}#headerLogout{display:inline-flex}.setting-group-grid{grid-template-columns:1fr}}


/* RC7: compact nav, visible selection actions and user management */
#sidebar nav{display:grid!important;grid-template-columns:1fr!important;grid-auto-rows:max-content!important;align-content:start!important;justify-content:stretch!important;gap:7px!important}
#sidebar nav button{min-height:42px;margin:0!important}
.selection-dock{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);z-index:55;display:flex;align-items:center;gap:8px;padding:10px 12px;background:#141b29ee;color:#fff;border:1px solid #ffffff18;border-radius:15px;box-shadow:0 14px 42px #0005;backdrop-filter:blur(10px)}
.selection-dock[hidden]{display:none!important}.selection-dock b{white-space:nowrap}.selection-dock button{border:0;border-radius:9px;padding:9px 12px;background:#303a4e;color:#fff}.selection-dock button.primary{background:#5b63f6}.selection-dock .dock-close{width:34px;padding:9px}
.user-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:15px}.user-toolbar input,.user-toolbar select{height:42px;border:1px solid #dfe4ed;border-radius:10px;padding:0 11px;background:#fff}.user-toolbar input{min-width:240px;flex:1}.user-list{display:grid;gap:10px}.user-row{display:grid;grid-template-columns:minmax(190px,1.3fr) 120px minmax(190px,1fr) minmax(280px,auto);gap:12px;align-items:center;padding:14px;border:1px solid #e8ebf2;border-radius:14px;background:#fff}.user-name b,.user-name small{display:block}.user-name small,.user-validity{color:#778196;font-size:12px}.status-pill{display:inline-flex;width:max-content;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:700;background:#e8eefc;color:#4c5db4}.status-pill.active{background:#dcf7ec;color:#167a59}.status-pill.expired,.status-pill.disabled,.status-pill.locked{background:#ffe5ea;color:#b73b51}.status-pill.expiring{background:#fff1d5;color:#9a6509}.user-actions{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}.user-actions button{border:0;border-radius:8px;padding:7px 9px;background:#f0f2f7;color:#566175}.user-actions .danger{background:#fff0f3;color:#c43b55}.user-form{display:grid;grid-template-columns:1fr 1fr;gap:12px}.user-form label{display:grid;gap:6px}.user-form label.full{grid-column:1/-1}.user-form input,.user-form select{height:42px;border:1px solid #dfe4ed;border-radius:9px;padding:0 10px}.user-notice{padding:12px;background:#eef7ff;color:#356f9f;border-radius:10px;margin-bottom:12px;white-space:pre-wrap}
@media(max-width:900px){.user-row{grid-template-columns:1fr 1fr}.user-actions{grid-column:1/-1;justify-content:flex-start}}@media(max-width:650px){.selection-dock{left:10px;right:10px;bottom:10px;transform:none;flex-wrap:wrap;justify-content:center}.user-row{grid-template-columns:1fr}.user-actions{grid-column:auto}.user-form{grid-template-columns:1fr}.user-form label.full{grid-column:auto}}

/* RC9 transactional bulk permission editor */
.permission-editor{display:grid;gap:12px}.permission-head,.permission-row{display:grid;grid-template-columns:minmax(170px,1.5fr) repeat(6,minmax(72px,.7fr));gap:8px;align-items:center}.permission-head{position:sticky;top:78px;z-index:4;background:#f5f7fb;padding:10px;border-radius:10px;font-size:12px;font-weight:700;color:#667187}.permission-row{padding:12px;border:1px solid #e7eaf1;border-radius:12px;background:#fff}.permission-row label{display:flex;align-items:center;justify-content:center;gap:5px;font-size:12px}.permission-actions{position:sticky;bottom:12px;z-index:5;display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:12px;background:#ffffffed;backdrop-filter:blur(8px);border:1px solid #e7eaf1;border-radius:13px;box-shadow:0 8px 25px #1b294a18}.permission-state{margin-right:auto;color:#667187}.permission-dirty .permission-state{color:#b16c08}@media(max-width:850px){.permission-head{display:none}.permission-row{grid-template-columns:1fr 1fr}.permission-row>b{grid-column:1/-1}.permission-row label{justify-content:flex-start}.permission-actions{flex-wrap:wrap}}

/* RC10 system settings visibility and scan task actions */
.setting-page{display:grid;gap:18px}.setting-page .setting-group{display:block!important}.setting-empty{padding:30px;text-align:center;color:#778196;background:#fff;border-radius:14px}.scan-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:14px 0}.scan-metric{padding:12px;background:#f6f7fb;border-radius:10px}.scan-metric b,.scan-metric span{display:block}.scan-metric span{font-size:12px;color:#778196;margin-top:4px}.scan-danger{background:#fff0f3!important;color:#bf3650!important}.scan-error{padding:12px;background:#fff0f3;color:#a73349;border-radius:10px;white-space:pre-wrap}.scan-status{font-weight:700}.scan-status.paused{color:#a36909}.scan-status.failed,.scan-status.cancelled,.scan-status.interrupted{color:#b53149}


/* RC12 scan mode descriptions and scan history */
.scan-mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px;margin-bottom:18px}
.scan-mode-card{display:flex;flex-direction:column;gap:12px;padding:18px;border:1px solid #e5e9f1;border-radius:16px;background:#fff;box-shadow:0 5px 18px #2735570a}
.scan-mode-card h3{margin:0;font-size:19px}.scan-mode-card p{margin:0;color:#697487;line-height:1.65}.scan-mode-card ul{margin:0;padding-left:20px;color:#697487;line-height:1.7}.scan-mode-card .mode-note{padding:9px 11px;border-radius:9px;background:#f3f5fa;color:#536075;font-size:12px}.scan-mode-card.quick{border-top:4px solid #4a9d78}.scan-mode-card.full{border-top:4px solid #686ff5}.scan-mode-card button{margin-top:auto;align-self:flex-start}
.scan-current{margin-top:18px}.scan-current-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.scan-current-head h3{margin:0}.scan-phase-description{padding:10px 12px;border-left:4px solid #686ff5;background:#f4f5ff;color:#576078;border-radius:0 8px 8px 0;margin:12px 0}
.scan-history{display:grid;gap:9px}.scan-history-row{display:grid;grid-template-columns:80px 120px 1fr 150px;gap:12px;align-items:center;padding:10px 12px;border:1px solid #e8ebf2;border-radius:10px;background:#fff;font-size:13px}.scan-history-row .history-type{font-weight:700}.scan-history-row .history-time{color:#788294}.scan-help{font-size:12px;color:#7b8596;margin-top:8px}
@media(max-width:650px){.scan-mode-grid{grid-template-columns:1fr}.scan-history-row{grid-template-columns:1fr 1fr}.scan-history-row .history-time{grid-column:1/-1}}

/* RC14 settings save feedback */
.settings-feedback{min-height:22px;margin-right:auto;font-size:13px;color:#667187}.settings-feedback.saving{color:#765cc7}.settings-feedback.success{color:#16805c}.settings-feedback.error{color:#bd3852}.settings-savebar button:disabled{opacity:.55;cursor:not-allowed}

/* RC18 preview navigation and download */
#viewerPosition{min-width:70px;text-align:center;color:#d4dae5;font-size:12px;font-variant-numeric:tabular-nums}
#previewPrev,#previewNext{background:#303a4f!important}#previewDownload{background:#5260df!important}#previewPrev:disabled,#previewNext:disabled,#previewDownload:disabled{opacity:.45;cursor:not-allowed}
.preview-stage:before,.preview-stage:after{position:absolute;top:50%;transform:translateY(-50%);z-index:3;color:#fff9;font-size:46px;pointer-events:none;text-shadow:0 2px 7px #000}.preview-stage{position:relative}.preview-stage.switching img{opacity:.55}.preview-stage img{transition:opacity .12s ease}
@media(max-width:650px){#previewPrev,#previewNext{order:-1}.preview-toolbar{overflow:auto;align-content:center}}

/* RC19 side navigation overlays and pagination-aware viewer */
.preview-side{position:absolute;top:50%;z-index:8;width:54px;height:84px;transform:translateY(-50%);border:0;border-radius:14px;background:#11182799;color:#fff;font-size:44px;line-height:1;display:grid;place-items:center;cursor:pointer;opacity:.72;transition:opacity .16s ease,background .16s ease}.preview-side:hover{opacity:1;background:#111827d9}.preview-side:disabled{opacity:.18;cursor:not-allowed}.preview-side-prev{left:14px}.preview-side-next{right:14px}.preview-stage.dragging .preview-side{pointer-events:none}.preview-loading-more{position:absolute;left:50%;bottom:18px;z-index:9;transform:translateX(-50%);padding:8px 12px;border-radius:999px;background:#111827d9;color:#fff;font-size:12px}
@media(max-width:650px){.preview-side{width:44px;height:68px;font-size:36px}.preview-side-prev{left:7px}.preview-side-next{right:7px}}

/* RC20 mobile swipe, pinch zoom and unobstructed controls */
@media(max-width:650px){
 #preview{box-sizing:border-box;width:100vw;height:100dvh;max-width:100vw;max-height:100dvh;margin:0;padding:0;border-radius:0;display:grid;grid-template-rows:minmax(0,1fr) auto auto;overflow:hidden}
 #preview[open]{display:grid}
 #preview .preview-stage{grid-row:1;height:auto!important;min-height:0;overflow:hidden;touch-action:none}
 #preview .preview-toolbar{grid-row:2;box-sizing:border-box;height:auto!important;min-height:58px;max-height:30dvh;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;justify-content:flex-start;padding:8px max(8px,env(safe-area-inset-right)) 8px max(8px,env(safe-area-inset-left));scrollbar-width:thin;-webkit-overflow-scrolling:touch}
 #preview .preview-toolbar button,#preview .preview-toolbar span{flex:0 0 auto}
 #preview .preview-help{grid-row:3;box-sizing:border-box;height:auto!important;min-height:32px;padding:7px max(8px,env(safe-area-inset-right)) max(7px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));line-height:18px}
 #previewImg{user-select:none;-webkit-user-select:none;-webkit-user-drag:none}
 .preview-side{display:none!important}
}

/* RC21 stable mobile gestures, visible side arrows and responsive toolbar */
@media(max-width:650px){
 #preview{grid-template-rows:minmax(0,1fr) auto auto!important}
 #preview .preview-stage{isolation:isolate;contain:layout paint;overscroll-behavior:none}
 #preview .preview-stage img{backface-visibility:hidden;-webkit-backface-visibility:hidden;transform-style:preserve-3d;transition:none!important}
 #preview .preview-side{display:grid!important;position:absolute!important;top:50%!important;width:42px;height:68px;z-index:20;opacity:.68;background:#111827a8!important;touch-action:manipulation}
 #preview .preview-side-prev{left:max(6px,env(safe-area-inset-left))}.preview-side-next{right:max(6px,env(safe-area-inset-right))}
 #preview .preview-toolbar{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;width:100%;max-height:none!important;overflow:visible!important;padding:8px max(8px,env(safe-area-inset-right)) 8px max(8px,env(safe-area-inset-left))!important}
 #preview .preview-toolbar button,#preview .preview-toolbar span{box-sizing:border-box;width:100%;min-width:0;min-height:40px;padding:7px 5px!important;display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;white-space:normal}
 #preview #viewerPosition,#preview #viewerSource{border:1px solid #ffffff18;border-radius:8px;background:#202737}
 #preview .preview-help{font-size:11px}
}
@media(max-width:390px) and (orientation:portrait){#preview .preview-toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(min-width:391px) and (max-width:650px) and (orientation:portrait){#preview .preview-toolbar{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:900px) and (orientation:landscape){
 #preview .preview-toolbar{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px;padding-top:6px!important;padding-bottom:6px!important}
 #preview .preview-toolbar button,#preview .preview-toolbar span{min-height:36px;font-size:11px}
 #preview .preview-help{display:none}
}

/* RC22 working mobile side arrows and toolbar capped at three rows */
@media(max-width:650px){
 #previewPrev,#previewNext{display:none!important}
 #preview .preview-side{display:grid!important;pointer-events:auto!important;z-index:40!important;touch-action:manipulation!important;-webkit-tap-highlight-color:transparent}
 #preview .preview-toolbar{grid-template-columns:repeat(4,minmax(0,1fr))!important;grid-auto-rows:minmax(38px,auto);max-height:none!important;overflow:visible!important}
 #preview .preview-toolbar button,#preview .preview-toolbar span{min-height:38px!important;font-size:11px!important;padding:6px 4px!important}
}
@media(max-width:390px) and (orientation:portrait){
 #preview .preview-toolbar{grid-template-columns:repeat(4,minmax(0,1fr))!important}
 #preview .preview-toolbar button,#preview .preview-toolbar span{font-size:10px!important;padding-left:2px!important;padding-right:2px!important}
}
@media(max-width:900px) and (orientation:landscape){
 #preview .preview-toolbar{grid-template-columns:repeat(6,minmax(0,1fr))!important}
}

/* RC23 desktop side arrows remain above a transformed original image */
#preview .preview-stage{position:relative;isolation:isolate}
#preview .preview-stage img{position:relative;z-index:1}
#preview .preview-side{position:absolute;z-index:100!important;pointer-events:auto!important;transform:translateY(-50%) translateZ(0);will-change:auto}
#preview .preview-side:disabled{pointer-events:none!important}
