        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box
        }

        * {
            -webkit-tap-highlight-color: transparent;
            -webkit-focus-ring-color: transparent
        }

        button,
        a,
        input,
        select,
        textarea {
            outline: none
        }

        button:focus,
        a:focus,
        input:focus,
        select:focus,
        textarea:focus {
            outline: none
        }

        button::-moz-focus-inner {
            border: 0
        }

        :root {
            --bg: #000;
            --bg2: #141414;
            --bg3: #1a1a1a;
            --bg4: #222;
            --border: #333;
            --border2: #4a4a4a;
            --t1: #ededed;
            --t2: #a1a1a1;
            --t3: #666;
            --t4: #444;
            --r1: 6px;
            --r2: 8px;
            --r3: 12px;
            --r4: 16px;
            --font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica Neue, sans-serif;
            --mono: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
            --tr: 150ms ease
        }

        ::selection {
            background: #fff;
            color: #000
        }

        ::-webkit-scrollbar {
            width: 0;
            height: 5px
        }

        ::-webkit-scrollbar-track {
            background: transparent
        }

        ::-webkit-scrollbar-thumb {
            background: #333;
            border-radius: 3px
        }

        html {
            scroll-behavior: smooth;
            scrollbar-width: none;
            -ms-overflow-style: none
        }

        body {
            font-family: var(--font);
            background: var(--bg);
            color: var(--t1);
            font-size: 14px;
            -webkit-font-smoothing: antialiased;
            overflow-y: scroll
        }

        /* 顶栏固定 */
        .header {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 0 20px;
            height: 52px;
            border-bottom: 1px solid var(--border);
            position: fixed;
            top: 0;
            left: 0;
            right: 0;
            z-index: 100;
            background: rgba(0, 0, 0, .8);
            backdrop-filter: blur(20px) saturate(1.5);
            -webkit-backdrop-filter: blur(20px) saturate(1.5)
        }

        .logo {
            font-size: 16px;
            font-weight: 700;
            letter-spacing: -.5px;
            user-select: none
        }

        .logo .dim {
            color: var(--t3);
            font-weight: 400
        }

        .header-right {
            display: flex;
            align-items: center;
            gap: 2px
        }

        .hdr-btn {
            background: none;
            border: none;
            color: var(--t3);
            height: 34px;
            border-radius: var(--r1);
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all var(--tr);
            padding: 0 10px;
            gap: 5px;
            font-size: 12px;
            font-weight: 500;
            font-family: var(--font);
            text-decoration: none
        }

        .hdr-btn:hover {
            color: var(--t1);
            background: var(--bg4)
        }

        .hdr-btn.primary {
            background: var(--t1);
            color: var(--bg)
        }

        .hdr-btn.primary:hover {
            opacity: .85
        }

        .hdr-sep {
            width: 1px;
            height: 18px;
            background: var(--border);
            margin: 0 4px
        }

        .toggle-switch {
            width: 32px;
            height: 18px;
            background: var(--border);
            border-radius: 9px;
            position: relative;
            transition: background var(--tr);
            flex-shrink: 0
        }

        .toggle-switch.on {
            background: var(--t1)
        }

        .toggle-dot {
            width: 14px;
            height: 14px;
            background: var(--t3);
            border-radius: 50%;
            position: absolute;
            top: 2px;
            left: 2px;
            transition: all var(--tr)
        }

        .toggle-switch.on .toggle-dot {
            left: 16px;
            background: var(--bg)
        }

        /* 内容区域：扣除顶栏后垂直居中 */
        .content-area {
            min-height: 100vh;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: flex-start;
            padding: 52px 0 0;
            opacity: 0;
            transition: opacity .6s cubic-bezier(.4, 0, .2, 1)
        }

        .content-area.show {
            opacity: 1
        }

        .main {
            max-width: 960px;
            width: 100%;
            margin: 0 auto;
            padding: 20px 20px 60px
        }

        /* 卡片 */
        .card {
            background: var(--bg2);
            border: 1px solid var(--border);
            border-radius: var(--r3);
            overflow: hidden;
            margin-bottom: 16px
        }

        .card-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 14px 16px;
            border-bottom: 1px solid var(--border);
            gap: 12px
        }

        .card-row:last-child {
            border-bottom: none
        }

        .card-label {
            font-size: 13px;
            color: var(--t2)
        }

        .card-value {
            font-family: var(--mono);
            font-size: 13px;
            color: var(--t1)
        }

        /* 状态指示 */
        .badge {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 3px 8px;
            border-radius: var(--r1);
            font-size: 11px;
            font-weight: 500
        }

        .badge.green {
            background: rgba(0, 200, 83, .12);
            color: #00c853
        }

        .badge.white {
            background: rgba(255, 255, 255, .08);
            color: var(--t2)
        }

        /* 按钮 */
        .btn-primary {
            background: var(--t1);
            color: var(--bg);
            border: none;
            border-radius: var(--r2);
            padding: 10px 24px;
            font-size: 13px;
            font-weight: 500;
            cursor: pointer;
            transition: opacity 150ms ease;
            font-family: var(--font)
        }

        .btn-primary:hover {
            opacity: .85
        }

        .btn-primary:disabled {
            opacity: .5;
            cursor: not-allowed
        }

        .btn-secondary {
            background: transparent;
            color: var(--t2);
            border: 1px solid var(--border);
            border-radius: var(--r2);
            padding: 8px 18px;
            font-size: 13px;
            cursor: pointer;
            transition: border-color 150ms ease;
            font-family: var(--font)
        }

        .btn-secondary:hover {
            border-color: var(--border2)
        }

        .btn-group {
            display: flex;
            gap: 8px;
            flex-wrap: wrap
        }

        /* 数据网格 - CLS优化: 固定数值宽度 */
        .data-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 12px;
            margin-bottom: 24px
        }

        .data-cell {
            background: var(--bg2);
            border: 1px solid rgba(255, 255, 255, .06);
            border-radius: var(--r3);
            padding: 16px 12px;
            text-align: center;
            opacity: 0;
            transform: translateY(12px);
            transition: all .4s cubic-bezier(.4, 0, .2, 1)
        }

        .data-cell.revealed {
            opacity: 1;
            transform: translateY(0)
        }

        .data-cell:nth-child(2) {
            transition-delay: .08s
        }

        .data-cell:nth-child(3) {
            transition-delay: .16s
        }

        .data-cell .label {
            font-size: 10px;
            font-weight: 600;
            color: var(--t3);
            text-transform: uppercase;
            letter-spacing: .08em;
            margin-bottom: 4px
        }

        .data-cell .value {
            font-family: var(--mono);
            font-size: 22px;
            font-weight: 600;
            color: var(--t1);
            min-width: 60px;
            display: inline-block;
            text-align: center;
            transition: all .3s ease
        }

        .data-cell-clickable {
            cursor: pointer;
            transition: all var(--tr);
            position: relative;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center
        }

        .data-cell-clickable:hover {
            background: var(--bg4)
        }

        .page-quick-nav {
            position: absolute;
            bottom: 6px;
            right: 6px;
            display: flex;
            gap: 4px;
            opacity: 0;
            transform: translateY(4px);
            transition: all .2s ease;
            pointer-events: none
        }

        .data-cell-clickable:hover .page-quick-nav {
            opacity: 1;
            transform: translateY(0);
            pointer-events: auto
        }

        .page-quick-btn {
            width: 24px;
            height: 24px;
            background: none;
            border: 1px solid var(--border2);
            border-radius: var(--r2);
            color: var(--t2);
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all var(--tr)
        }

        .page-quick-btn:hover {
            color: var(--t1);
            background: var(--bg3)
        }

        .page-quick-btn:disabled {
            opacity: .3;
            cursor: not-allowed
        }

        /* 页面管理器 */
        .page-mgr-current {
            display: flex;
            align-items: baseline;
            justify-content: center;
            gap: 6px;
            margin-bottom: 20px
        }

        .page-mgr-label {
            font-size: 12px;
            color: var(--t3)
        }

        .page-mgr-num {
            font-family: var(--mono);
            font-size: 28px;
            font-weight: 700;
            color: var(--t1)
        }

        .page-mgr-nav {
            display: flex;
            gap: 8px;
            margin-bottom: 16px
        }

        .page-mgr-btn {
            flex: 1;
            background: none;
            border: 1px solid var(--border);
            border-radius: var(--r1);
            color: var(--t2);
            padding: 8px;
            font-size: 12px;
            cursor: pointer;
            transition: all var(--tr)
        }

        .page-mgr-btn:hover {
            color: var(--t1);
            border-color: var(--border2)
        }

        .page-mgr-btn:disabled {
            opacity: .3;
            cursor: not-allowed
        }

        .page-mgr-jump {
            display: flex;
            align-items: center;
            gap: 8px;
            margin-bottom: 16px
        }

        .page-mgr-input {
            flex: 1;
            background: var(--bg);
            border: 1px solid var(--border);
            border-radius: var(--r1);
            color: var(--t1);
            font-family: var(--mono);
            font-size: 14px;
            padding: 6px 10px
        }

        .page-mgr-pages {
            display: flex;
            flex-wrap: wrap;
            gap: 6px
        }

        .page-mgr-page {
            width: 36px;
            height: 36px;
            background: none;
            border: 1px solid var(--border);
            border-radius: var(--r1);
            color: var(--t3);
            font-size: 12px;
            font-family: var(--mono);
            cursor: pointer;
            transition: all var(--tr);
            display: flex;
            align-items: center;
            justify-content: center
        }

        .page-mgr-page:hover {
            color: var(--t1);
            border-color: var(--border2)
        }

        .page-mgr-page.active {
            background: var(--t1);
            color: var(--bg);
            border-color: var(--t1)
        }

        .pm-error {
            background: rgba(255, 82, 82, .1);
            border: 1px solid rgba(255, 82, 82, .2);
            color: #ff5252;
            padding: 8px 12px;
            border-radius: var(--r1);
            font-size: 12px;
            margin-bottom: 12px
        }

        /* 照片网格 - CLS优化: 最小高度 */
        .photo-grid {
            display: grid;
            grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
            gap: 12px;
            margin-bottom: 24px;
            min-height: 240px
        }

        /* 瀑布流布局 */
        .photo-grid.waterfall {
            display: block;
            column-count: 4;
            column-gap: 12px
        }

        .photo-grid.waterfall .photo-card {
            break-inside: avoid;
            margin-bottom: 12px
        }

        .photo-grid.waterfall .photo-image {
            height: auto;
            min-height: 80px
        }

        .photo-card {
            background: var(--bg2);
            border: 1px solid var(--border);
            border-radius: var(--r3);
            overflow: hidden;
            transition: all .35s cubic-bezier(.4, 0, .2, 1);
            opacity: 0;
            transform: translateY(16px) scale(.97)
        }

        .photo-card.revealed {
            opacity: 1;
            transform: translateY(0) scale(1)
        }

        .photo-card:hover {
            border-color: var(--border2);
            transform: translateY(-4px) scale(1.02);
            box-shadow: 0 8px 32px rgba(0, 0, 0, .3)
        }

        .photo-image {
            width: 100%;
            height: 120px;
            object-fit: cover;
            background: var(--bg3);
            display: block;
            cursor: pointer;
            contain-intrinsic-size: 160px 120px;
            content-visibility: auto
        }

        .photo-loading {
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            background: var(--bg3);
            z-index: 1;
        }

        .photo-loading .spinner {
            width: 24px;
            height: 24px;
            border: 2px solid var(--border);
            border-top-color: var(--t1);
            border-radius: 50%;
            animation: spin .8s linear infinite
        }

        .photo-img-wrap {
            position: relative
        }

        .photo-actions {
            position: absolute;
            bottom: 6px;
            right: 6px;
            display: flex;
            gap: 4px;
            opacity: 0;
            pointer-events: none;
            transition: opacity var(--tr)
        }

        .photo-card:hover .photo-actions,
        .photo-card.show-actions .photo-actions {
            opacity: 1;
            pointer-events: auto
        }

        .photo-action-btn {
            width: 28px;
            height: 28px;
            background: rgba(0, 0, 0, .7);
            border: 1px solid rgba(255, 255, 255, .15);
            border-radius: var(--r1);
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            color: var(--t2);
            transition: all var(--tr);
            backdrop-filter: blur(4px)
        }

        .photo-action-btn:hover {
            background: rgba(0, 0, 0, .9);
            color: var(--t1);
            border-color: rgba(255, 255, 255, .3)
        }

        .photo-info {
            padding: 10px 12px
        }

        .photo-uid {
            font-size: 10px;
            color: var(--t3);
            font-family: var(--mono);
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap
        }

        .photo-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-top: 4px
        }

        .photo-dimensions {
            font-size: 11px;
            color: var(--t2)
        }

        .info-btn {
            background: none;
            border: 1px solid var(--border);
            border-radius: var(--r1);
            color: var(--t3);
            font-size: 10px;
            padding: 2px 8px;
            cursor: pointer;
            font-family: var(--font);
            transition: all var(--tr)
        }

        .info-btn:hover {
            color: var(--t1);
            border-color: var(--border2)
        }

        /* 浏览模式覆盖层 */
        .photo-overlay {
            position: absolute;
            inset: 0;
            pointer-events: none;
            opacity: 0;
            transition: opacity var(--tr)
        }

        .photo-card:hover .photo-overlay,
        .photo-card.show-actions .photo-overlay {
            opacity: 1
        }

        .photo-overlay .overlay-preview {
            position: absolute;
            top: 6px;
            right: 6px;
            pointer-events: auto
        }

        .photo-overlay .overlay-info {
            position: absolute;
            top: 6px;
            left: 6px;
            display: flex;
            flex-direction: column;
            gap: 2px;
            pointer-events: none
        }

        .photo-overlay .overlay-dims {
            font-size: 10px;
            font-family: var(--mono);
            color: #fff;
            text-shadow: 0 1px 3px rgba(0, 0, 0, .8);
            pointer-events: none
        }

        .photo-overlay .overlay-index {
            font-size: 10px;
            font-family: var(--mono);
            font-weight: 600;
            color: rgba(255, 255, 255, .9);
            text-shadow: 0 1px 3px rgba(0, 0, 0, .8);
            pointer-events: none
        }

        /* 浏览模式：隐藏底部信息卡片 */
        .photo-grid.browse-mode .photo-info {
            display: none
        }

        /* 浏览模式瀑布流：图片高度自适应 */
        .photo-grid.browse-mode.waterfall .photo-image {
            height: auto;
            min-height: 80px
        }

        /* 非浏览模式：隐藏覆盖层 */
        .photo-grid:not(.browse-mode) .photo-overlay {
            display: none
        }

        /* 信息弹窗 */
        .info-items {
            display: flex;
            flex-direction: column;
            gap: 1px;
            background: var(--border);
            border-radius: var(--r2);
            overflow: hidden;
            margin-bottom: 16px
        }

        .info-item {
            display: flex;
            justify-content: space-between;
            padding: 10px 14px;
            background: var(--bg2);
            font-size: 12px
        }

        .info-item-label {
            color: var(--t3)
        }

        .info-item-value {
            color: var(--t1);
            font-family: var(--mono);
            text-align: right;
            word-break: break-all;
            max-width: 60%;
            display: -webkit-box;
            overflow: hidden;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2;
        }

        /* 标签/信息多行显示：标签独占一行，值占满整行 */
        .info-item.multi-line {
            flex-direction: column;
            gap: 4px
        }

        .info-item.multi-line .info-item-value {
            max-width: 100%;
            width: 100%;
            display: block;
            overflow: visible;
            -webkit-line-clamp: unset;
            -webkit-box-orient: unset;
            white-space: pre-wrap;
            line-height: 1.6;
            text-align: left
        }

        .info-link-group {
            display: flex;
            gap: 8px;
            flex-wrap: wrap
        }

        .info-url-row {
            display: flex;
            align-items: center;
            gap: 8px;
            padding: 6px 0;
            font-size: 11px
        }

        .info-url-row:has(.segment-group) {
            flex-wrap: nowrap;
            overflow-x: auto
        }

        .info-url-row:has(.segment-group)::-webkit-scrollbar {
            display: none
        }

        .info-url-row:has(.segment-group)>* {
            flex-shrink: 0;
            white-space: nowrap
        }

        .info-url-label {
            flex-shrink: 0;
            color: var(--t3);
            font-weight: 500;
            min-width: 28px
        }

        .info-url-value {
            color: var(--t2);
            font-family: var(--mono);
            word-break: break-all;
            line-height: 1.5;
            user-select: all;
            display: -webkit-box;
            overflow: hidden;
            cursor: pointer;
            -webkit-tap-highlight-color: transparent;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2;
        }

        .info-url-value:active {
            background: transparent;
        }

        /* 短链有效期选择器 */
        .info-time-select {
            background: var(--bg);
            border: 1px solid var(--border);
            border-radius: var(--r1);
            color: var(--t1);
            font-family: var(--mono);
            font-size: 11px;
            padding: 4px 6px;
            outline: none;
            cursor: pointer;
            transition: border-color var(--tr)
        }

        .info-time-select:focus {
            border-color: var(--t1)
        }

        .info-time-select::-webkit-calendar-picker-indicator {
            filter: invert(.7);
            cursor: pointer
        }

        /* 分页 - CLS优化: 最小高度 */
        .pagination {
            display: flex;
            justify-content: center;
            align-items: center;
            gap: 10px;
            padding: 20px 0;
            min-height: 52px
        }

        .page-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 32px;
            height: 32px;
            padding: 0 10px;
            font-size: 13px;
            border: 1px solid var(--border);
            border-radius: var(--r1);
            background: transparent;
            color: var(--t2);
            cursor: pointer;
            transition: all var(--tr);
            font-family: var(--font)
        }

        .page-btn:hover {
            border-color: var(--border2);
            color: var(--t1)
        }

        .page-btn:disabled {
            opacity: .4;
            cursor: not-allowed
        }

        .page-input {
            width: 40px;
            height: 32px;
            text-align: center;
            font-family: var(--mono);
            font-size: 13px;
            color: var(--t1);
            background: var(--bg);
            border: 1px solid var(--border);
            border-radius: var(--r1);
            outline: none;
            transition: border-color var(--tr);
            -moz-appearance: textfield
        }

        .page-input::-webkit-outer-spin-button,
        .page-input::-webkit-inner-spin-button {
            -webkit-appearance: none;
            margin: 0
        }

        .page-input:focus {
            border-color: var(--t1)
        }

        .page-total {
            font-size: 12px;
            color: var(--t3)
        }

        /* 加载状态 */
        .loading {
            display: none;
            justify-content: center;
            align-items: center;
            padding: 40px;
            gap: 10px;
            position: fixed;
            top: 50%;
            left: 50%;
            transform: translate(-50%, -50%);
            z-index: 150
        }

        .loading.show {
            display: flex
        }

        .spinner {
            width: 16px;
            height: 16px;
            border: 2px solid var(--border);
            border-top-color: var(--t1);
            border-radius: 50%;
            animation: spin .8s linear infinite
        }

        @keyframes spin {
            to {
                transform: rotate(360deg)
            }
        }

        /* 空状态 */
        .empty {
            display: none;
            text-align: center;
            padding: 60px 20px;
            color: var(--t3)
        }

        .empty.show {
            display: block
        }

        .empty-icon {
            margin-bottom: 12px;
            opacity: .5
        }

        .empty-text {
            font-size: 13px;
            margin-top: 8px
        }

        /* 消息提示 - CLS优化: 预留空间 */
        .message {
            padding: 12px 16px;
            border-radius: var(--r1);
            margin-bottom: 16px;
            font-size: 13px;
            min-height: 0;
            transition: all .3s cubic-bezier(.4, 0, .2, 1);
            transform: translateY(-8px);
            opacity: 0
        }

        .message:not(:empty) {
            transform: translateY(0);
            opacity: 1
        }

        .message:empty {
            padding: 0;
            margin: 0
        }

        .message.success {
            background: rgba(0, 200, 83, .1);
            border: 1px solid rgba(0, 200, 83, .2);
            color: #00c853
        }

        .message.error {
            background: rgba(255, 82, 82, .1);
            border: 1px solid rgba(255, 82, 82, .2);
            color: #ff5252
        }

        .message.info {
            background: rgba(255, 255, 255, .06);
            border: 1px solid var(--border);
            color: var(--t2)
        }

        /* 设置项 */
        .setting-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 14px 0;
            border-bottom: 1px solid var(--border);
            gap: 12px
        }

        .setting-row:first-child {
            padding-top: 4px
        }

        .setting-row:last-child {
            border-bottom: none;
            padding-bottom: 4px
        }

        .setting-row.stack-mobile {
            flex-wrap: wrap
        }

        .setting-row.stack-mobile .setting-right {
            flex: 1 1 200px;
            min-width: 180px;
            justify-content: flex-start
        }

        .setting-label {
            font-size: 13px;
            color: var(--t2)
        }

        .setting-desc {
            font-size: 11px;
            color: var(--t3);
            margin-top: 2px
        }

        .setting-right {
            flex-shrink: 0;
            display: flex;
            align-items: center;
            gap: 8px;
            min-width: 120px;
            justify-content: flex-end
        }

        .setting-btn {
            background: none;
            border: 1px solid var(--border);
            border-radius: var(--r1);
            color: var(--t2);
            padding: 6px 14px;
            font-size: 12px;
            cursor: pointer;
            transition: all var(--tr);
            white-space: nowrap
        }

        .setting-btn:hover {
            color: var(--t1);
            border-color: var(--border2)
        }

        .setting-btn.danger {
            border-color: rgba(255, 82, 82, .3);
            color: #ff5252
        }

        .setting-btn.danger:hover {
            border-color: #ff5252
        }

        .page-size-input {
            width: 100%;
            background: var(--bg);
            border: 1px solid var(--border);
            border-radius: var(--r1);
            color: var(--t1);
            font-family: var(--mono);
            font-size: 12px;
            padding: 6px 10px;
            outline: none;
            transition: border-color var(--tr)
        }

        .page-size-input:focus {
            border-color: var(--t1);
            box-shadow: 0 0 0 2px rgba(237, 237, 237, .08)
        }

        .page-size-input::placeholder {
            color: var(--t4)
        }

        /* 分段切换 */
        .segment-group {
            display: inline-flex;
            background: var(--bg);
            border: 1px solid var(--border);
            border-radius: var(--r1);
            overflow: hidden
        }

        .segment-btn {
            padding: 5px 12px;
            font-size: 12px;
            font-weight: 500;
            color: var(--t3);
            background: none;
            border: none;
            cursor: pointer;
            transition: all var(--tr)
        }

        .segment-btn.active {
            background: var(--t1);
            color: var(--bg)
        }

        /* 弹窗 */
        .modal-bg {
            position: fixed;
            inset: 0;
            background: rgba(0, 0, 0, .35);
            backdrop-filter: blur(40px);
            -webkit-backdrop-filter: blur(40px);
            z-index: 200;
            display: none;
            align-items: center;
            justify-content: center;
            padding: 20px
        }

        .modal-bg.open {
            display: flex
        }

        .modal {
            background: rgba(17, 17, 17, .92);
            border: 1px solid var(--border);
            border-radius: var(--r4);
            max-width: 520px;
            width: 100%;
            max-height: calc(100vh - 80px);
            overflow: hidden;
            box-shadow: 0 16px 64px rgba(0, 0, 0, .6);
            display: flex;
            flex-direction: column;
            animation: modalIn .25s ease;
            backdrop-filter: blur(32px) saturate(1.2);
            -webkit-backdrop-filter: blur(32px) saturate(1.2)
        }

        @keyframes modalIn {
            from {
                opacity: 0;
                transform: scale(.96) translateY(8px)
            }

            to {
                opacity: 1;
                transform: none
            }
        }

        .modal-head {
            padding: 16px 20px;
            border-bottom: 1px solid var(--border);
            display: flex;
            align-items: center;
            justify-content: space-between
        }

        .modal-head .m-title {
            font-size: 15px;
            font-weight: 600
        }

        .modal-close {
            background: none;
            border: none;
            color: var(--t3);
            cursor: pointer;
            padding: 4px;
            border-radius: var(--r1);
            transition: all var(--tr);
            display: flex;
            align-items: center;
            justify-content: center
        }

        .modal-close:hover {
            color: var(--t1);
            background: var(--bg4)
        }

        .modal-body {
            flex: 1;
            overflow-y: auto;
            padding: 20px
        }

        .modal-body::-webkit-scrollbar {
            width: 6px
        }

        .modal-body::-webkit-scrollbar-track {
            background: transparent
        }

        .modal-body::-webkit-scrollbar-thumb {
            background: var(--border2);
            border-radius: 3px
        }

        .modal-body::-webkit-scrollbar-thumb:hover {
            background: var(--t3)
        }

        .modal-body p {
            font-size: 13px;
            color: var(--t2);
            line-height: 1.8;
            margin-bottom: 12px
        }

        .modal-body p:last-child {
            margin-bottom: 0
        }

        .modal-body .m-label {
            font-size: 11px;
            font-weight: 600;
            color: var(--t3);
            text-transform: uppercase;
            letter-spacing: .08em;
            margin-bottom: 8px;
            margin-top: 20px
        }

        .modal-body .m-label:first-child {
            margin-top: 0
        }

        .modal-body .m-tag {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 3px 8px;
            border-radius: var(--r1);
            font-size: 11px;
            font-weight: 500;
            background: rgba(255, 255, 255, .06);
            color: var(--t2);
            margin: 2px 4px 2px 0
        }

        .modal-foot {
            padding: 12px 20px;
            border-top: 1px solid var(--border);
            display: flex;
            justify-content: flex-end;
            gap: 8px
        }

        .btn-close-modal {
            background: transparent;
            color: var(--t3);
            border: 1px solid var(--border);
            border-radius: var(--r2);
            padding: 7px 18px;
            font-size: 12px;
            cursor: pointer;
            font-family: var(--font);
            transition: all var(--tr)
        }

        .btn-close-modal:hover {
            color: var(--t1);
            border-color: var(--border2)
        }

        /* 预览弹窗 */
        .preview-wrap {
            position: relative;
            min-height: 120px;
            display: flex;
            align-items: center;
            justify-content: center
        }

        .preview-image {
            width: 100%;
            max-height: 50vh;
            object-fit: contain;
            background: var(--bg3);
            border-radius: var(--r1);
            display: none
        }

        .preview-image.loaded {
            display: block
        }

        .preview-loading {
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 10px;
            padding: 40px 0;
            color: var(--t3);
            font-size: 13px
        }

        .preview-loading .spinner {
            width: 20px;
            height: 20px;
            border: 2px solid var(--border);
            border-top-color: var(--t1);
            border-radius: 50%;
            animation: spin .8s linear infinite
        }

        .preview-loading.hide {
            display: none
        }

        .preview-info {
            margin-top: 16px;
            padding-top: 16px;
            border-top: 1px solid var(--border)
        }

        .preview-info-item {
            display: flex;
            justify-content: space-between;
            padding: 8px 0;
            font-size: 12px
        }

        .preview-info-label {
            color: var(--t3)
        }

        .preview-info-value {
            color: var(--t1);
            font-family: var(--mono)
        }

        .preview-info-value a {
            color: var(--t2);
            text-decoration: none
        }

        .preview-info-value a:hover {
            color: var(--t1)
        }

        /* 认证界面 */
        .auth-overlay {
            position: fixed;
            inset: 0;
            z-index: 300;
            background: var(--bg);
            display: none;
            align-items: center;
            justify-content: center;
            opacity: 0;
            transition: opacity .4s cubic-bezier(.4, 0, .2, 1)
        }

        .auth-overlay.show {
            display: flex;
            opacity: 1
        }

        .auth-overlay.hiding {
            opacity: 0
        }

        .auth-box {
            text-align: center;
            max-width: 340px;
            width: 100%;
            padding: 32px 20px;
            transform: translateY(20px);
            opacity: 0;
            transition: all .5s cubic-bezier(.4, 0, .2, 1) .15s
        }

        .auth-overlay.show .auth-box {
            transform: translateY(0);
            opacity: 1
        }

        .auth-box h2 {
            font-size: 18px;
            font-weight: 700;
            margin-bottom: 6px
        }

        .auth-box p {
            font-size: 13px;
            color: var(--t3);
            margin-bottom: 24px
        }

        .auth-box .input {
            width: 100%;
            background: var(--bg2);
            border: 1px solid var(--border);
            border-radius: var(--r1);
            color: var(--t1);
            font-family: var(--mono);
            font-size: 14px;
            padding: 10px 12px;
            outline: none;
            text-align: center;
            margin-bottom: 10px;
            transition: all var(--tr)
        }

        .auth-box .input:focus {
            border-color: var(--t1);
            box-shadow: 0 0 0 3px rgba(237, 237, 237, .08)
        }

        .admin-input {
            width: 100%;
            background: var(--bg2);
            border: 1px solid var(--border);
            border-radius: var(--r1);
            color: var(--t1);
            font-family: var(--mono);
            font-size: 14px;
            padding: 10px 12px;
            outline: none;
            text-align: left;
            margin-bottom: 10px;
            transition: all var(--tr)
        }

        .admin-input:focus {
            border-color: var(--t1);
            box-shadow: 0 0 0 3px rgba(237, 237, 237, .08)
        }

        .auth-error {
            font-size: 12px;
            color: #ff5252;
            margin-bottom: 10px;
            display: none;
            animation: shakeX .4s ease
        }

        @keyframes shakeX {

            0%,
            100% {
                transform: translateX(0)
            }

            20%,
            60% {
                transform: translateX(-6px)
            }

            40%,
            80% {
                transform: translateX(6px)
            }
        }

        .auth-btn {
            width: 100%;
            background: var(--t1);
            color: var(--bg);
            border: none;
            border-radius: var(--r2);
            padding: 10px;
            font-size: 13px;
            font-weight: 600;
            cursor: pointer;
            font-family: var(--font);
            transition: all var(--tr);
            position: relative;
            overflow: hidden
        }

        .auth-btn:hover {
            opacity: .85;
            transform: translateY(-1px)
        }

        .auth-btn:active {
            transform: translateY(0)
        }

        .auth-btn:disabled {
            opacity: .4;
            cursor: not-allowed;
            transform: none
        }

        .auth-btn .btn-loading {
            position: absolute;
            inset: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            background: inherit
        }

        .auth-btn .btn-loading .spinner {
            width: 16px;
            height: 16px;
            border: 2px solid rgba(0, 0, 0, .2);
            border-top-color: var(--bg);
            border-radius: 50%;
            animation: spin .6s linear infinite
        }

        /* Footer */
        footer {
            text-align: center;
            padding: 24px 20px;
            border-top: 1px solid var(--border);
            color: var(--t3);
            font-size: 12px;
            line-height: 2;
            margin-top: auto;
            min-height: 104px;
            width: 100%
        }

        footer a,
        footer button {
            color: var(--t3);
            background: none;
            border: 1px solid var(--border);
            border-radius: var(--r1);
            font-size: 12px;
            cursor: pointer;
            font-family: var(--font);
            text-decoration: none;
            padding: 4px 12px;
            transition: all var(--tr);
            display: inline-flex;
            align-items: center;
            gap: 4px
        }

        footer a:hover,
        footer button:hover {
            color: var(--t1);
            border-color: var(--border2)
        }

        /* 滚动按钮 */
        .scroll-btn {
            position: fixed;
            bottom: 24px;
            right: 24px;
            z-index: 90;
            width: 40px;
            height: 40px;
            background: rgba(13, 13, 13, .85);
            border: 1px solid var(--border);
            border-radius: var(--r2);
            color: var(--t2);
            cursor: pointer;
            display: flex;
            align-items: center;
            justify-content: center;
            transition: all var(--tr);
            opacity: 0;
            transform: translateY(10px);
            pointer-events: none;
            backdrop-filter: blur(16px);
            -webkit-backdrop-filter: blur(16px)
        }

        .scroll-btn.show {
            opacity: 1;
            transform: translateY(0);
            pointer-events: auto
        }

        .scroll-btn:hover {
            color: var(--t1);
            border-color: var(--border2);
            background: rgba(26, 26, 26, .9)
        }

        /* 响应式 */
        @media(max-width:640px) {
            .header {
                padding: 0 12px;
                height: 48px
            }

            .logo {
                font-size: 14px
            }

            .header-right {
                gap: 0
            }

            .hdr-btn {
                padding: 0 6px;
                height: 30px;
                font-size: 11px
            }

            .hdr-sep {
                margin: 0 2px;
                height: 14px
            }

            .toggle-switch {
                width: 28px;
                height: 16px
            }

            .toggle-dot {
                width: 12px;
                height: 12px
            }

            .toggle-switch.on .toggle-dot {
                left: 14px
            }

            .main {
                padding: 8px 12px 48px;
                overflow-x: hidden
            }

            .pagination {
                gap: 8px;
                padding: 16px 4px
            }

            .page-btn {
                min-width: 32px;
                height: 32px;
                padding: 0 8px;
                font-size: 12px
            }

            .page-input {
                width: 36px;
                height: 32px;
                font-size: 12px
            }

            .data-grid {
                grid-template-columns: repeat(3, 1fr);
                margin-bottom: 16px
            }

            .data-cell {
                padding: 10px 6px
            }

            .page-quick-nav {
                bottom: 2px;
                right: 2px;
                gap: 2px
            }

            .page-quick-btn {
                width: 18px;
                height: 18px
            }

            .page-quick-btn svg {
                width: 7px;
                height: 7px
            }

            .data-cell .value {
                font-size: 16px
            }

            .data-cell .label {
                font-size: 9px
            }

            .photo-grid {
                grid-template-columns: repeat(2, 1fr);
                gap: 8px
            }

            .photo-grid.waterfall {
                column-count: 2;
                column-gap: 8px
            }

            .photo-image {
                height: 90px
            }

            .photo-info {
                padding: 8px 10px
            }

            .photo-uid {
                font-size: 9px
            }

            .info-btn {
                font-size: 9px;
                padding: 1px 6px
            }

            .modal {
                max-width: 100%;
                margin: 0 8px 0;
                border-radius: var(--r2)
            }

            .modal-bg {
                margin-top: 40px;
                padding: 12px
            }

            .preview-image {
                max-height: 40vh
            }

            .content-area {
                padding-top: max(48px, calc(env(safe-area-inset-top) + 48px))
            }
        }

        @supports(padding:max(0px)) {
            .content-area {
                padding-top: max(52px, calc(env(safe-area-inset-top) + 52px))
            }

            footer {
                padding-bottom: max(16px, env(safe-area-inset-bottom))
            }
        }

        /* Viewer.js 暗色主题覆盖 */
        .viewer-toolbar>ul>li {
            background: rgba(0, 0, 0, .6) !important
        }

        .viewer-toolbar>ul>li:hover {
            background: rgba(0, 0, 0, .8) !important
        }

        .viewer-navbar {
            background: rgba(0, 0, 0, .85) !important
        }

        .viewer-title {
            color: var(--t2) !important
        }

        .viewer-tooltip {
            background: rgba(0, 0, 0, .8) !important;
            color: var(--t1) !important
        }