:root{--font-body:var(--font-inter,"Inter", "Segoe UI", sans-serif);--font-heading:var(--font-manrope,"Manrope", "Inter", sans-serif);--topbar-height:52px;--app-main-padding:24px;--bg:#f6f7fb;--bg-elev:#fff;--text:#131722;--muted:#60697b;--line:#d8dee9;--brand:#ff5f2d;--brand-2:#ff8d22;--ok:#0f8a63;--shadow:0 20px 50px #181d261f}:root[data-color-mode=dark]{--bg:#090d14;--bg-elev:#121927;--text:#f4f6fb;--muted:#9ea9bd;--line:#273247;--brand:#ffa43d;--brand-2:#ffcb56;--ok:#39c48f;--shadow:0 26px 56px #00000059}*{box-sizing:border-box}html,body{min-height:100%;margin:0;padding:0}body{font-family:var(--font-body);color:var(--text);background:radial-gradient(1200px 700px at 100% -10%, color-mix(in srgb, var(--brand) 18%, transparent), transparent), radial-gradient(1400px 800px at -10% 120%, color-mix(in srgb, var(--brand-2) 15%, transparent), transparent), var(--bg)}a{color:inherit;text-decoration:none}h1,h2,h3{font-family:var(--font-heading);letter-spacing:-.02em;margin:0}p{margin:0}input,button,select,textarea{font:inherit}input,select,textarea{border:1px solid var(--line);background:color-mix(in srgb, var(--bg-elev) 90%, transparent);width:100%;color:var(--text);border-radius:12px;outline:none;padding:10px 12px}input:focus,select:focus,textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 20%, transparent)}button{cursor:pointer;border:0;border-radius:12px;font-size:14px;transition:all .2s}button:disabled{opacity:.6;cursor:not-allowed}.small{font-size:.75rem}.centered-screen{place-items:center;min-height:100vh;padding:24px;display:grid}.panel,.login-form{background:color-mix(in srgb, var(--bg-elev) 94%, transparent);border:1px solid var(--line);width:min(430px,100%);box-shadow:var(--shadow);border-radius:22px;gap:14px;padding:28px;display:grid}.login-form h1{font-size:2rem}.login-form p{color:var(--muted);margin-bottom:8px}.turnstile-slot{place-items:start;min-height:64px;display:grid}.muted{color:var(--muted)}.form-error{color:#e64747;font-size:.93rem}.primary-button{background:var(--brand);color:#000;padding:10px 16px;font-weight:600}.primary-button:hover{filter:saturate(1.1)}.ghost-button{color:var(--text);background:color-mix(in srgb, var(--bg-elev) 88%, transparent);border:1px solid var(--line);justify-content:center;align-items:center;gap:6px;padding:10px 14px;transition:all .15s;display:inline-flex}.ghost-button.active{border-color:var(--brand);color:var(--brand)}.ghost-button.danger-outline{color:#e64747;border-color:#e64747;width:100%;margin-top:auto}.app-shell{grid-template-rows:auto 1fr;min-height:100vh;display:grid}.topbar{z-index:100;border-bottom:1px solid var(--line);background:color-mix(in srgb, var(--bg-elev) 70%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);justify-content:space-between;align-items:center;gap:16px;height:52px;padding:0 18px;display:flex;position:sticky;top:0}.topbar-left{align-items:center;gap:18px;display:flex}.topbar-right{align-items:center;gap:4px;display:flex}.topbar-search{align-items:center;gap:8px;display:inline-flex}.topbar-search-field{opacity:0;width:0;transition:width .18s,opacity .14s,transform .18s;overflow:hidden;transform:translate(10px)}.topbar-search--open .topbar-search-field{opacity:1;width:clamp(180px,28vw,320px);transform:translate(0)}.topbar-search-field input{height:36px;box-shadow:none;border-radius:10px;padding:8px 12px}.topbar-search-button{width:36px;height:36px;color:var(--text);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}.topbar-search-button:hover,.topbar-search-button--active{border-color:var(--line);background:color-mix(in srgb, var(--bg-elev) 88%, transparent)}.topbar-search-button--active:hover{border-color:var(--brand);color:var(--brand)}.mobile-search-overlay,.mobile-search-panel{display:none}.logo-link{letter-spacing:-.02em;align-items:center;gap:10px;font-weight:800;display:inline-flex}.logo-mark{background:linear-gradient(135deg, var(--brand), var(--brand-2));border-radius:999px;width:14px;height:14px;position:relative}.logo-mark:after{content:"";background:color-mix(in srgb, var(--brand) 22%, transparent);border-radius:999px;position:absolute;inset:-6px}.logo-link:hover span{color:var(--brand)}.logo-link:hover .logo-mark:after{animation:1.2s infinite logo-pulse}@keyframes logo-pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.2;transform:scale(1.7)}to{opacity:1;transform:scale(1)}}.nav-links{align-items:center;gap:2px;display:flex}.nav-link{color:var(--text);border:1px solid #0000;border-radius:10px;align-items:center;gap:6px;padding:7px 11px;font-size:.9rem;transition:all .15s;display:inline-flex}.nav-link:hover{border-color:var(--line);background:color-mix(in srgb, var(--bg-elev) 88%, transparent)}.nav-link.active{border-color:var(--brand);color:var(--brand)}.sort-button{border:1px solid var(--line);color:var(--text);background:color-mix(in srgb, var(--bg-elev) 88%, transparent);border-radius:10px;align-items:center;gap:6px;margin-right:6px;padding:7px 12px;font-size:.87rem;transition:all .15s;display:inline-flex}.sort-button:hover{border-color:var(--brand);color:var(--brand)}.sync-button.active:disabled{opacity:1;color:var(--brand)}.app-main{min-height:0;padding:0}.app-main:has(.viewer-shell){overflow:hidden}.app-main:has(.viewer-shell)>*{transition:none;animation:none;transform:none}.page-wrap{gap:10px;animation:.28s fade-slide;display:grid}.page-wrap-padded{padding-inline:10px;padding-top:10px}.page-wrap-padded .quick-filters{margin-top:0;padding:0}.page-wrap.with-bulk-panel{padding-right:376px}.page-header{gap:12px;display:grid}.page-header-main{justify-content:space-between;align-items:end;gap:12px;display:flex}.page-header h1{font-size:1.6rem}.page-header p{color:var(--muted);margin-top:6px}.page-header-inline{flex-wrap:wrap;align-items:center}.page-header-inline .header-actions{flex:auto}.page-toolbar{justify-content:space-between;align-items:center;gap:12px;display:flex}.page-toolbar-actions,.header-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.header-actions-standalone{width:100%}.quick-filters{gap:4px;min-width:0;max-width:100%;margin-top:10px;padding:0 10px;display:flex;overflow:hidden}.quick-filters>.chip-button{flex:none}.chip-button{border:1px solid var(--line);background:color-mix(in srgb, var(--bg-elev) 88%, transparent);color:var(--text);white-space:nowrap;border-radius:11px;padding:8px 12px;font-size:.86rem;transition:all .15s}.chip-button.active{border-color:color-mix(in srgb, var(--brand) 65%, var(--line));color:var(--brand)}.thumb-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:2px;display:grid}.thumb-grid-virtual{overflow-anchor:none;min-height:1px;position:relative}.thumb-grid-virtual.selection-mode{-webkit-user-select:none;user-select:none;cursor:crosshair}.thumb-card{background:color-mix(in srgb, var(--bg-elev) 92%, transparent);cursor:pointer;border:0;border-radius:3px;transition:all .2s;display:block;position:relative;overflow:hidden}.thumb-card-virtual{position:absolute;top:0;left:0}.thumb-card.selected{border:3px solid color-mix(in srgb, var(--brand) 60%, var(--line));box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--brand) 40%, transparent)}.thumb-card:hover{z-index:2}.thumb-image{object-fit:cover}.thumb-meta{pointer-events:none;justify-content:flex-start;align-items:center;gap:8px;display:flex;position:absolute;bottom:4px;left:4px}.thumb-like-button{color:#fff;opacity:0;pointer-events:auto;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:0 0;border:none;border-radius:999px;justify-content:center;align-items:center;width:28px;height:28px;padding:0;transition:opacity .14s,background .14s,border-color .14s,transform .14s;display:inline-flex}.thumb-like-button svg{stroke:currentColor;fill:none;width:15px;height:15px}.thumb-card:hover .thumb-like-button,.thumb-card:focus-within .thumb-like-button,.thumb-like-button.active{opacity:1}.thumb-like-button:hover:not(:disabled){background:0 0}.thumb-like-button.active{background:0 0;border:none}.thumb-like-button.active svg{fill:currentColor}.thumb-like-button:disabled{cursor:default}.sentinel{overflow-anchor:none;height:1px}.selection-rect{border:1px solid color-mix(in srgb, var(--brand) 75%, #fff);background:color-mix(in srgb, var(--brand) 20%, transparent);pointer-events:none;z-index:20;border-radius:8px;position:absolute}.title-row{align-items:center;gap:6px;display:flex}.title-input{border:none;border-bottom:2px solid var(--brand);min-width:0;font-family:var(--font-heading);letter-spacing:-.02em;color:var(--text);background:0 0;outline:none;flex:1;padding:0;font-size:2rem;font-weight:700;line-height:1.2}.tag-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px;display:grid}.tag-card{border:1px solid var(--line);background:color-mix(in srgb, var(--bg-elev) 88%, transparent);border-radius:14px;justify-content:space-between;align-items:center;height:50px;padding:16px;transition:all .15s;display:flex}.tag-card:hover{border-color:var(--brand)}.tag-card-title{align-items:center;gap:8px;line-height:1.5;display:inline-flex}.tag-card-title svg{flex-shrink:0}.tag-card-count{color:var(--muted);font-size:.85rem;font-weight:500}.tag-card-special{border-color:color-mix(in srgb, var(--brand) 26%, var(--line))}.tag-card--editing{cursor:default}.tag-card-input{border:none;border-bottom:1.5px solid var(--brand);min-width:0;font-family:var(--font-body);font-size:inherit;color:var(--text);line-height:inherit;background:0 0;outline:none;flex:1;padding:0}.viewer-shell{min-height:0;height:calc(100dvh - var(--topbar-height));max-height:calc(100dvh - var(--topbar-height));grid-template-rows:minmax(0,1fr);display:grid;position:relative;overflow:hidden}.viewer-toolbar{z-index:10;justify-content:space-between;align-items:center;gap:10px;margin:7px 12px;display:flex;position:absolute;top:0;left:0;right:0}.viewer-toolbar-side{flex:1 1 0;align-items:center;display:flex}.viewer-toolbar-side-end{justify-content:flex-end}.viewer-toolbar-actions{flex-wrap:wrap;flex:0 auto;justify-content:center;align-items:center;gap:8px;min-width:max-content;display:flex}.viewer-toolbar-button svg{stroke:currentColor}.viewer-toolbar .ghost-button,.viewer-toolbar .icon-button{background:color-mix(in srgb, var(--bg-elev) 70%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:color .15s,background-color .15s,border-color .15s,opacity .15s;transform:none}.viewer-toolbar .ghost-button:hover,.viewer-toolbar .ghost-button:active,.viewer-toolbar .icon-button:hover,.viewer-toolbar .icon-button:active{transform:none}.viewer-toolbar-actions-placeholder{visibility:hidden;pointer-events:none}@media (min-width:1121px){.viewer-shell:has(.viewer-content:not(.sidebar-hidden)) .viewer-toolbar{right:314px}.viewer-content:not(.sidebar-hidden) .nav-arrow.right{right:326px}}.spin-icon{animation:.9s linear infinite viewer-spin}.icon-button{width:34px;height:34px;color:var(--text);background:0 0;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;padding:0;transition:all .15s;display:inline-flex}.icon-button:hover{border-color:var(--line);background:color-mix(in srgb, var(--bg-elev) 88%, transparent)}.viewer-content{grid-template-columns:minmax(0,1fr);align-items:stretch;height:100%;min-height:0;display:grid;position:relative}.viewer-content.sidebar-hidden{grid-template-columns:minmax(0,1fr)}.viewer-stage{justify-content:center;align-items:center;height:100%;min-height:0;display:flex;position:relative;overflow:hidden}.viewer-media{width:100%;height:100%;position:relative}.viewer-media.is-pannable{cursor:grab;touch-action:none}.viewer-media.is-panning{cursor:grabbing}.viewer-media.is-cropping{cursor:crosshair}.viewer-media-pan{will-change:transform;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.viewer-image{transform-origin:50%;-webkit-user-select:none;user-select:none;opacity:0;width:auto;max-width:100%;height:100%;max-height:100%;transition:opacity .22s,transform .15s;display:block}.viewer-image.is-ready{opacity:1;animation:.3s both fade-in}.viewer-loading-overlay{background:color-mix(in srgb, var(--bg) 14%, transparent);pointer-events:none;position:absolute;inset:0}.viewer-image-error{z-index:2;color:var(--muted);background:color-mix(in srgb, var(--bg) 28%, transparent);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.viewer-image-error p{margin:0}.viewer-crop-layer{touch-action:none;cursor:crosshair;position:absolute;overflow:hidden}.viewer-crop-frame{border:1px solid color-mix(in srgb, var(--text) 28%, transparent);pointer-events:none;position:absolute;inset:0}.viewer-crop-selection{background:color-mix(in srgb, var(--brand) 18%, transparent);box-shadow:0 0 0 999px color-mix(in srgb, var(--bg) 52%, transparent);cursor:move;border:2px solid #ffffffe0;position:absolute}.viewer-crop-handle{background:#fff;border:1.5px solid #00000059;border-radius:2px;width:10px;height:10px;position:absolute;transform:translate(-50%,-50%)}.viewer-crop-handle-nw{cursor:nw-resize;top:0;left:0}.viewer-crop-handle-n{cursor:n-resize;top:0;left:50%}.viewer-crop-handle-ne{cursor:ne-resize;top:0;left:100%}.viewer-crop-handle-e{cursor:e-resize;top:50%;left:100%}.viewer-crop-handle-se{cursor:se-resize;top:100%;left:100%}.viewer-crop-handle-s{cursor:s-resize;top:100%;left:50%}.viewer-crop-handle-sw{cursor:sw-resize;top:100%;left:0}.viewer-crop-handle-w{cursor:w-resize;top:50%;left:0}.viewer-crop-hint{background:color-mix(in srgb, var(--bg-elev) 88%, transparent);border:1px solid color-mix(in srgb, var(--text) 14%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;border-radius:999px;padding:5px 9px;font-size:.8rem;position:absolute;top:12px;left:12px}.nav-edge-hint{background:color-mix(in srgb, var(--bg-elev) 92%, transparent);border:1px solid color-mix(in srgb, var(--text) 20%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);pointer-events:none;border-radius:999px;padding:8px 16px;font-size:.85rem;animation:2s both nav-hint-fade;position:absolute;bottom:20px;left:50%;transform:translate(-50%)}@keyframes nav-hint-fade{0%{opacity:1;transform:translate(-50%)translateY(0)}70%{opacity:1;transform:translate(-50%)translateY(-4px)}to{opacity:0;transform:translate(-50%)translateY(-8px)}}.nav-arrow{z-index:2;border:1px solid var(--line);background:color-mix(in srgb, var(--bg-elev) 70%, transparent);width:44px;height:44px;color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:999px;place-items:center;padding:0;transition:background-color .15s,border-color .15s,opacity .15s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.nav-arrow:hover:not(:disabled){border-color:color-mix(in srgb, var(--text) 28%, var(--line));background:color-mix(in srgb, var(--bg-elev) 70%, transparent)}.nav-arrow:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.nav-arrow:disabled{cursor:default;opacity:.28}.nav-arrow.left{left:12px}.nav-arrow.right{right:12px}.viewer-aside{z-index:5;border:1px solid var(--line);background:color-mix(in srgb, var(--bg-elev) 70%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:16px;flex-direction:column;gap:16px;width:300px;height:auto;min-height:0;padding:14px;animation:.22s both sidebar-in;display:flex;position:absolute;top:7px;bottom:7px;right:7px;overflow:auto}.viewer-aside:has(.viewer-edit){overflow:hidden}.viewer-aside>*{flex-shrink:0}.viewer-edit{flex-direction:column;flex:auto;gap:16px;min-height:0;display:flex}.viewer-edit-categories{flex:auto;grid-template-rows:minmax(0,1fr);min-height:0}.viewer-edit-categories .check-list{min-height:0}.viewer-edit-footer{justify-content:space-between;align-items:center;margin-top:auto;padding-top:4px;display:flex}.icon-button.danger{color:#e64747}.icon-button.danger:hover{background:#e647471a;border-color:#e6474780}.icon-button.active{border-color:var(--brand);color:var(--brand)}.icon-button:disabled{opacity:.5;pointer-events:none}.viewer-aside-skeleton{background:linear-gradient(110deg, color-mix(in srgb, var(--bg-elev) 84%, transparent) 8%, color-mix(in srgb, var(--bg-elev) 96%, transparent) 18%, color-mix(in srgb, var(--bg-elev) 84%, transparent) 33%);background-size:220% 100%;height:100%;min-height:0;animation:1.25s linear infinite skeleton-shimmer}.chip-input{border:1px solid var(--line);background:color-mix(in srgb, var(--bg-elev) 90%, transparent);cursor:text;border-radius:12px;flex-wrap:wrap;align-items:center;gap:6px;min-height:42px;padding:8px 10px;display:flex}.chip-input:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--brand) 20%, transparent)}.chip-input input{width:auto;min-width:80px;box-shadow:none;background:0 0;border:0;border-radius:0;outline:none;flex:1;padding:2px 0}.chip-input input:focus{box-shadow:none;border:0}.input-chip{background:color-mix(in srgb, var(--brand) 14%, transparent);border:1px solid var(--line);white-space:nowrap;border-radius:999px;align-items:center;gap:3px;padding:3px 6px 3px 9px;font-size:.84rem;display:inline-flex}.input-chip button{width:16px;height:16px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:all .12s;display:inline-flex}.input-chip button:hover{color:var(--text);background:color-mix(in srgb, var(--text) 10%, transparent)}.field-clearable{position:relative}.field-clearable input{padding-right:34px}.field-clear-btn{width:20px;height:20px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:999px;justify-content:center;align-items:center;padding:0;transition:all .12s;display:flex;position:absolute;top:50%;right:9px;transform:translateY(-50%)}.field-clear-btn:hover{color:var(--text);background:color-mix(in srgb, var(--text) 12%, transparent)}.field-group{gap:10px;display:grid}.field-group h3{font-size:1.02rem}.check-list{align-content:start;gap:2px;min-height:0;display:grid;overflow:auto}.check-list label{align-items:center;gap:5px;font-size:.85rem;display:inline-flex}.check-list input[type=checkbox]{width:16px;height:16px;padding:0}.row-actions{align-items:center;gap:8px;display:flex}.bulk-panel{z-index:60;border:1px solid var(--line);background:color-mix(in srgb, var(--bg-elev) 90%, transparent);width:352px;height:calc(100vh - 110px);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:16px;flex-direction:column;gap:12px;max-height:none;padding:14px;display:flex;position:fixed;top:94px;bottom:auto;right:24px;overflow:auto}.bulk-panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.sort-target-switch{border-bottom:1px solid var(--line);gap:7px;padding-bottom:12px;display:grid}.sort-target-options{grid-template-columns:1fr 1fr;gap:6px;display:grid}.sort-target-options .chip-button{justify-content:center}.bulk-grid{grid-template-columns:1fr;gap:12px;display:grid}.bulk-panel:has(.check-list){overflow:hidden}.bulk-panel:has(.check-list) .bulk-grid{flex-direction:column;flex:auto;min-height:0;display:flex}.bulk-col{gap:10px;display:grid}.bulk-col:has(.check-list){flex:auto;grid-template-rows:minmax(0,1fr) auto;min-height:0}.diagnostics-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;display:grid}.diagnostics-actions{flex-wrap:wrap;gap:10px;display:flex}.diagnostics-card{border:1px solid var(--line);background:color-mix(in srgb, var(--bg-elev) 90%, transparent);border-radius:16px;gap:10px;padding:14px;display:grid}.diagnostics-card.status-ok{border-color:color-mix(in srgb, var(--ok) 70%, var(--line))}.diagnostics-card.status-warning{border-color:color-mix(in srgb, #d68b00 70%, var(--line))}.diagnostics-card.status-error{border-color:color-mix(in srgb, #d64040 75%, var(--line))}.diagnostics-card-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.status-badge{text-transform:uppercase;letter-spacing:.08em;border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:4px 8px;font-size:.72rem}.diagnostics-meta{gap:6px;margin:0;padding:0;display:grid}.diagnostics-meta div{justify-content:space-between;gap:8px;font-size:.84rem;display:flex}.diagnostics-meta dt{color:var(--muted)}.diagnostics-meta dd{text-align:right;margin:0}.diagnostics-logs{border:1px solid var(--line);background:color-mix(in srgb, var(--bg-elev) 92%, transparent);border-radius:18px;gap:12px;margin-top:18px;padding:14px;display:grid}.diagnostics-log-list{gap:10px;display:grid}.diagnostics-log{border:1px solid var(--line);border-radius:14px;gap:8px;padding:12px;display:grid}.diagnostics-log.status-error{border-color:color-mix(in srgb, #d64040 75%, var(--line))}.diagnostics-log.status-warning{border-color:color-mix(in srgb, #d68b00 70%, var(--line))}.diagnostics-log.status-info{border-color:color-mix(in srgb, var(--line) 80%, transparent)}.diagnostics-log-head{justify-content:space-between;align-items:center;gap:10px;display:flex}.modal-overlay{z-index:300;background:color-mix(in srgb, var(--text) 30%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);place-items:center;padding:24px;animation:.15s fade-in;display:grid;position:fixed;inset:0}.modal-card{background:var(--bg-elev);border:1px solid var(--line);width:min(400px,100%);box-shadow:var(--shadow);border-radius:20px;gap:14px;padding:24px;animation:.18s fade-slide;display:grid}.hotkeys-modal{gap:0;width:min(640px,100%);max-height:min(82dvh,720px);padding:0;overflow:hidden}.hotkeys-modal-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:16px;padding:16px 18px;display:flex}.hotkeys-modal-title{align-items:center;gap:8px;margin:0;font-size:1rem;display:flex}.hotkeys-modal-body{min-height:0;padding:18px;overflow-y:auto}.modal-actions{justify-content:flex-end;gap:10px;display:flex}@keyframes fade-slide{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes sidebar-in{0%{opacity:0;transform:translate(14px)}to{opacity:1;transform:translate(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-20% 0}}@media (max-width:1120px){.app-shell{grid-template-columns:1fr}.sidebar{border-right:0;border-bottom:1px solid var(--line);height:auto;position:relative}.menu-group-list{max-height:140px}.viewer-content{grid-template-rows:minmax(0,1fr) auto;grid-template-columns:1fr}.viewer-stage{min-height:0;max-height:none}.viewer-image{max-height:100%}.viewer-aside{z-index:auto;width:auto;height:auto;max-height:min(40dvh,360px);position:relative;inset:auto}.viewer-aside-skeleton{height:auto;min-height:240px;max-height:min(40dvh,360px)}.page-wrap.with-bulk-panel{padding-right:0}.bulk-panel{width:auto;height:auto;max-height:min(72vh,620px);inset:auto 24px 16px}}.hamburger-btn{width:34px;height:34px;color:var(--text);background:0 0;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;padding:0;transition:all .15s;display:none}.hamburger-btn:hover{border-color:var(--line);background:color-mix(in srgb, var(--bg-elev) 88%, transparent)}.mobile-drawer-overlay,.mobile-drawer{display:none}@media (max-width:768px){.settings-page-grid{grid-template-columns:1fr}}@media (max-width:640px){:root{--app-main-padding:16px}.hamburger-btn{display:inline-flex}.nav-links,.sort-button{display:none}.topbar-search--open .topbar-search-field{width:min(52vw,240px)}.mobile-search-overlay{z-index:180;background:color-mix(in srgb, var(--text) 28%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:.15s fade-in;display:block;position:fixed;inset:0}.mobile-search-panel{z-index:181;background:var(--bg-elev);border-bottom:1px solid var(--line);box-shadow:var(--shadow);border-radius:0 0 20px 20px;flex-direction:column;transition:transform .24s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;left:0;right:0;transform:translateY(-100%)}.mobile-search-panel--open{transform:translateY(0)}.mobile-search-panel-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;min-height:52px;padding:0 18px;display:flex}.mobile-search-panel-title{font-family:var(--font-heading);letter-spacing:-.02em;font-size:1rem;font-weight:700}.mobile-search-panel-body{padding:14px 16px 18px}.app-main{padding:var(--app-main-padding)}.viewer-toolbar{align-items:flex-start}.viewer-toolbar-actions{order:3;justify-content:flex-start;width:100%}.page-header{gap:10px}.page-header-main{flex-direction:column;align-items:flex-start}.page-header-inline{flex-direction:row;align-items:center}.page-toolbar{flex-direction:column;align-items:flex-start;width:100%}.page-toolbar-actions{justify-content:flex-start;width:100%}.thumb-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.bulk-grid{grid-template-columns:1fr}.bulk-panel{width:auto;height:auto;max-height:min(78vh,620px);inset:auto 12px 12px}.row-actions{flex-wrap:wrap}.mobile-drawer-overlay{z-index:200;background:color-mix(in srgb, var(--text) 28%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:.15s fade-in;display:block;position:fixed;inset:0}.mobile-drawer{z-index:201;background:var(--bg-elev);flex-direction:column;width:100vw;transition:transform .28s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.mobile-drawer--open{transform:translate(0)}.mobile-drawer-header{border-bottom:1px solid var(--line);flex-shrink:0;justify-content:space-between;align-items:center;height:52px;padding:0 18px;display:flex}.mobile-drawer-nav{flex-direction:column;flex:1;gap:4px;padding:12px;display:flex;overflow-y:auto}.mobile-nav-link{color:var(--text);border:1px solid #0000;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;font-size:1.05rem;font-weight:500;transition:all .15s;display:flex}.mobile-nav-link:hover{background:color-mix(in srgb, var(--bg-elev) 80%, transparent);border-color:var(--line)}.mobile-nav-link.active{border-color:var(--brand);color:var(--brand);background:color-mix(in srgb, var(--brand) 8%, transparent)}.mobile-drawer-footer{border-top:1px solid var(--line);flex-shrink:0;align-items:center;gap:8px;padding:16px 18px;display:flex}}@keyframes viewer-spin{to{transform:rotate(360deg)}}.modal-card-narrow{max-width:360px}.modal-heading{align-items:center;gap:10px;margin:0;display:flex}.modal-form{gap:12px;display:grid}.seg-control{background:color-mix(in srgb, var(--bg) 80%, transparent);border:1px solid var(--line);border-radius:10px;grid-template-columns:1fr 1fr;gap:2px;padding:3px;display:grid}.seg-btn{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:5px 0;font-size:.83rem;font-weight:500;transition:color .15s,background .15s,box-shadow .15s}.seg-btn.active{background:var(--bg-elev);color:var(--text);box-shadow:0 1px 4px #0000001f}.seg-btn:not(.active):hover{color:var(--text)}.meta-panel,.meta-skeleton{gap:14px;display:grid}.meta-skel-head{background:linear-gradient(110deg, color-mix(in srgb, var(--bg-elev) 84%, transparent) 8%, color-mix(in srgb, var(--bg-elev) 96%, transparent) 18%, color-mix(in srgb, var(--bg-elev) 84%, transparent) 33%);background-size:220% 100%;border-radius:4px;width:52px;height:11px;animation:1.25s linear infinite skeleton-shimmer}.meta-skel-grid{border:1px solid var(--line);border-radius:9px;display:grid;overflow:hidden}.meta-skel-row{border-bottom:1px solid var(--line);background:linear-gradient(110deg, color-mix(in srgb, var(--bg-elev) 84%, transparent) 8%, color-mix(in srgb, var(--bg-elev) 96%, transparent) 18%, color-mix(in srgb, var(--bg-elev) 84%, transparent) 33%);background-size:220% 100%;height:30px;animation:1.25s linear infinite skeleton-shimmer}.meta-skel-row:last-child{border-bottom:none}.meta-skel-row--short{width:75%}.meta-no-exif{color:var(--muted);margin:0;padding:2px 0;font-size:.82rem}.meta-section{gap:6px;display:grid}.meta-section-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0;font-size:.75rem;font-weight:600}.meta-grid{border:1px solid var(--line);border-radius:9px;overflow:hidden}.meta-row{border-bottom:1px solid var(--line);grid-template-columns:90px 1fr;align-items:baseline;gap:8px;padding:6px 10px;font-size:.82rem;display:grid}.meta-row:last-child{border-bottom:none}.meta-label{color:var(--muted);flex-shrink:0}.meta-value{word-break:break-word;font-weight:500}.meta-link{color:var(--brand);text-underline-offset:2px;align-items:center;gap:4px;font-weight:500;text-decoration:underline;display:inline-flex}.meta-link-icon{flex-shrink:0;align-items:center;display:inline-flex}.settings-overlay{z-index:200;background:color-mix(in srgb, var(--text) 22%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:.15s fade-in;position:fixed;inset:0}.settings-drawer{z-index:201;background:var(--bg-elev);border-left:1px solid var(--line);flex-direction:column;width:min(380px,100vw);transition:transform .26s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(100%);box-shadow:-8px 0 48px #00000026}.settings-drawer--open{transform:translate(0)}.settings-drawer-header{border-bottom:1px solid var(--line);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.settings-drawer-title{font-size:.97rem;font-weight:700;font-family:var(--font-heading);align-items:center;gap:8px;display:flex}.settings-drawer-body{flex:1;overflow-y:auto}.settings-section{border-bottom:1px solid var(--line)}.settings-section-header{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:0;justify-content:space-between;align-items:center;padding:13px 16px;font-size:.9rem;transition:background .12s;display:flex}.settings-section-header:hover{background:color-mix(in srgb, var(--bg) 60%, transparent)}.settings-section-title{align-items:center;gap:8px;font-weight:600;display:flex}.settings-section-body{padding:6px 16px 20px}.settings-appearance{gap:4px;display:grid}.settings-field-group{gap:8px;margin-bottom:14px;display:grid}.settings-field-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;justify-content:space-between;align-items:center;margin:0;font-size:.75rem;font-weight:600;display:flex}.settings-field-value{color:var(--brand);text-transform:none;letter-spacing:0;font-size:.88rem;font-weight:600}.settings-field-hint{color:var(--muted);margin:0;font-size:.82rem;line-height:1.45}.settings-range{width:100%;accent-color:var(--brand);cursor:pointer;background:0 0;border:0;border-radius:0;height:4px;padding:0}.settings-range-labels{color:var(--muted);justify-content:space-between;font-size:.74rem;display:flex}.settings-color-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.settings-color-field{gap:5px;display:grid}.settings-color-label{color:var(--muted);font-size:.78rem}.settings-color-row{align-items:center;gap:7px;display:flex}.settings-choice-group{gap:8px;display:grid}.settings-choice{border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 80%, transparent);cursor:pointer;border-radius:12px;grid-template-columns:auto 1fr;align-items:start;gap:10px;padding:11px 12px;transition:border-color .15s,background-color .15s,transform .15s;display:grid}.settings-choice:hover{border-color:color-mix(in srgb, var(--brand) 36%, var(--line))}.settings-choice input{accent-color:var(--brand);margin:2px 0 0}.settings-choice--active{border-color:color-mix(in srgb, var(--brand) 58%, var(--line));background:color-mix(in srgb, var(--brand) 10%, var(--panel))}.settings-choice-copy{gap:2px;display:grid}.settings-choice-title{color:var(--text);font-size:.9rem;font-weight:600}.settings-choice-desc{color:var(--muted);font-size:.8rem;line-height:1.4}.settings-toggle-group{border:1px solid var(--line);border-radius:12px;display:grid;overflow:hidden}.settings-toggle-row{cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:11px 12px;display:flex}.settings-toggle-row+.settings-toggle-row{border-top:1px solid var(--line)}.settings-toggle-row>span{gap:2px;display:grid}.settings-toggle-title{color:var(--text);font-size:.9rem;font-weight:600}.settings-toggle-desc{color:var(--muted);font-size:.8rem;line-height:1.4}.settings-toggle-row input{width:18px;height:18px;accent-color:var(--brand);flex-shrink:0;margin:0}.settings-color-swatch{border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;flex-shrink:0;width:36px;height:36px;padding:2px}.settings-color-hex{padding:6px 8px;font-family:monospace;font-size:.8rem}.settings-reset-btn{color:var(--muted);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;flex-shrink:0;align-items:center;gap:6px;padding:6px 12px;font-size:.81rem;transition:all .15s;display:inline-flex}.settings-reset-btn:hover{color:var(--text);border-color:var(--brand)}.settings-form{gap:12px;display:grid}.settings-pw-field{gap:5px;display:grid}.settings-pw-field label{color:var(--muted);font-size:.81rem}.settings-pw-row{align-items:center;gap:6px;display:flex}.settings-pw-row input{flex:1}.settings-success{color:var(--ok);align-items:center;gap:6px;margin:0;font-size:.88rem;display:flex}.settings-hotkeys{gap:18px;display:grid}.settings-hotkeys-group{gap:8px;display:grid}.settings-hotkeys-group-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0;font-size:.73rem;font-weight:600}.settings-hotkeys-list{border:1px solid var(--line);border-radius:10px;overflow:hidden}.settings-hotkey-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:8px 12px;font-size:.83rem;display:flex}.settings-hotkey-row:last-child{border-bottom:none}.settings-hotkey-desc{color:var(--text);flex:1}.settings-hotkey-keys{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:4px;display:flex}.settings-hotkey-keys kbd{font-family:var(--font-body);background:color-mix(in srgb, var(--bg) 80%, transparent);border:1px solid var(--line);color:var(--muted);white-space:nowrap;border-radius:5px;padding:2px 6px;font-size:.73rem}@media (max-width:520px){.hotkeys-modal-overlay{padding:12px}.hotkeys-modal{max-height:90dvh}.hotkeys-modal-header,.hotkeys-modal-body{padding:14px}.hotkeys-modal .settings-hotkey-row{flex-direction:column;align-items:flex-start;gap:6px}.hotkeys-modal .settings-hotkey-keys{justify-content:flex-start}}.account-menu{position:relative}.account-dropdown{background:var(--bg-elev);border:1px solid var(--line);min-width:164px;box-shadow:0 8px 24px var(--shadow);z-index:200;border-radius:12px;padding:4px;animation:.12s both fade-slide;position:absolute;top:calc(100% + 6px);right:0}.account-dropdown-item{width:100%;color:var(--text);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:8px 10px;font-size:.875rem;text-decoration:none;transition:background .12s,color .12s;display:flex}.account-dropdown-item:hover{background:color-mix(in srgb, var(--brand) 12%, transparent);color:var(--brand)}.account-dropdown-item--danger:hover{color:#dc2626;background:#dc26261a}.account-dropdown-sep{background:var(--line);height:1px;margin:4px 2px}.settings-page{width:min(100%,1120px);margin-inline:auto}.settings-page-header{color:var(--text);align-items:center;gap:10px;margin-bottom:28px;display:flex}.settings-page-title{letter-spacing:-.02em;font-size:1.25rem;font-weight:700}.settings-page-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));align-items:start;gap:16px;display:grid}.settings-page-card{background:var(--bg-elev);border:1px solid var(--line);border-radius:14px;padding:20px}.settings-page-card-title{letter-spacing:-.01em;color:var(--text);align-items:center;gap:8px;margin-bottom:16px;font-size:1.125rem;font-weight:600;display:flex}.settings-page-card-header{justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px;display:flex}.settings-page-card-header .settings-page-card-title{margin:0}.chip-input-wrap{position:relative}.suggest-list{z-index:20;background:var(--bg-elev);border:1px solid var(--line);max-height:220px;box-shadow:var(--shadow);border-radius:12px;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto}.suggest-item{cursor:pointer;white-space:nowrap;text-overflow:ellipsis;border-radius:8px;padding:7px 10px;font-size:.9rem;overflow:hidden}.suggest-item.active{background:color-mix(in srgb, var(--brand) 14%, transparent)}
