/* Build 1538: Chinese font metrics and control alignment */
:root {
    --site-font-sans: "Microsoft YaHei", "PingFang SC", "Noto Sans CJK SC", "Source Han Sans SC", "Helvetica Neue", Arial, sans-serif;
}
html,
body,
button,
input,
optgroup,
select,
textarea,
.tooltip,
.popover,
.dropdown-menu,
.layui-layer,
.layui-layer-content,
.layui-layer-btn {
    font-family: var(--site-font-sans);
}
.form-control,
.form-select,
.input-group-text,
.btn,
.form-label,
.control-label,
.dropdown-item {
    font-family: inherit;
}
.form-control:not(textarea),
.form-select {
    min-height: 38px;
    line-height: 1.25;
    padding-top: .5rem;
    padding-bottom: .5rem;
}
.form-control-sm:not(textarea),
.form-select-sm {
    min-height: 31px;
    padding-top: .25rem;
    padding-bottom: .25rem;
}
.form-control-lg:not(textarea),
.form-select-lg {
    min-height: 48px;
    padding-top: .7rem;
    padding-bottom: .7rem;
}
.input-group-text {
    min-height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
    padding-top: 0;
    padding-bottom: 0;
    white-space: nowrap;
}
.input-group > .form-control,
.input-group > .form-select,
.input-group > .input-group-text,
.input-group > .btn {
    align-self: stretch;
}
.btn {
    line-height: 1.25;
}
.btn > i,
.input-group-text > i {
    line-height: 1;
}
@media (max-width: 575.98px) {
    .form-control:not(textarea),
    .form-select,
    .input-group-text {
        font-size: 16px;
    }
}

/* Build 1543: compact frontend, responsive admin tables and centered loading indicators */
.site-front {
    --site-front-font-size: 14px;
    font-size: var(--site-front-font-size);
    line-height: 1.45;
}
.site-front .content { padding-top: 1rem; padding-bottom: 1rem; }
.site-front .content-full { padding-top: 1rem; padding-bottom: 1rem; }
.site-front .content-header { min-height: 3.5rem; }
.site-front .block { margin-bottom: 1rem; }
.site-front .block-header { min-height: 2.8rem; padding: .65rem 1rem; }
.site-front .block-content { padding: 1rem; }
.site-front .block-content-full { padding-bottom: 1rem; }
.site-front .h1, .site-front h1 { font-size: 1.75rem; }
.site-front .h2, .site-front h2 { font-size: 1.5rem; }
.site-front .h3, .site-front h3 { font-size: 1.25rem; }
.site-front .h4, .site-front h4 { font-size: 1.1rem; }
.site-front .fs-5 { font-size: 1rem !important; }
.site-front .fs-sm, .site-front small, .site-front .form-text { font-size: .78rem !important; }
.site-front .btn { font-size: .875rem; padding-top: .45rem; padding-bottom: .45rem; }
.site-front .btn-sm { font-size: .78rem; padding-top: .3rem; padding-bottom: .3rem; }
.site-front .form-label { margin-bottom: .35rem; font-size: .875rem; }
.site-front .form-control:not(textarea),
.site-front .form-select,
.site-front .input-group-text { min-height: 36px; font-size: .875rem; padding-top: .42rem; padding-bottom: .42rem; }
.site-front .table { font-size: .85rem; }
.site-front .table > :not(caption) > * > * { padding: .55rem .65rem; }
.site-front .nav-main-link { min-height: 2.4rem; padding-top: .45rem; padding-bottom: .45rem; font-size: .84rem; }
.site-front .site-brand-logo { width: 28px; height: 28px; }
.site-front .site-brand { gap: .5rem; }

.auth-page-shell { min-height: calc(100vh - 180px); display: flex; align-items: flex-start; justify-content: center; padding: 1.5rem 1rem; }
.auth-panel { width: 100%; max-width: 520px; overflow: hidden; }
.auth-panel-header { padding: .9rem 1.1rem; }
.auth-mode-switch { padding: .25rem; margin-bottom: 1rem; border-radius: .55rem; background: var(--bs-body-bg); }
.auth-mode-switch .nav-link { padding: .55rem .75rem; border-radius: .4rem; font-weight: 600; }
.auth-tab-content { min-height: 210px; }
.auth-form { margin: 0; }
.auth-divider { display: flex; align-items: center; gap: .75rem; margin: 1.1rem 0 .9rem; color: #7a8492; font-size: .78rem; }
.auth-divider::before, .auth-divider::after { content: ""; flex: 1; height: 1px; background: var(--bs-border-color); }

.admin-header-spinner,
.admin-table-spinner { display: inline-flex; align-items: center; justify-content: center; line-height: 1; flex: 0 0 auto; }
.admin-header-spinner { width: 32px; height: 32px; margin: auto; }
.admin-header-spinner > i,
.admin-table-spinner > i { display: block; line-height: 1; transform-origin: 50% 50%; }
#page-header-loader .content-header { min-height: 100%; height: 100%; padding: 0; display: flex; align-items: center; justify-content: center; }
#page-header-loader .content-header > .w-100 { display: flex; align-items: center; justify-content: center; }
.admin-table-loading { display: inline-flex; min-height: 38px; align-items: center; justify-content: center; gap: .45rem; line-height: 1; color: #687386; }
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap { align-items: center; }
.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text { display: flex; align-items: center; justify-content: center; margin: 0; }
.layui-layer-loading { width: 42px !important; height: 42px !important; margin: 0 !important; }
.layui-layer-loading .layui-layer-content { position: absolute !important; inset: 0; margin: auto !important; }

.site-admin #searchToolbar[data-admin-toolbar="1"] { margin-left: 0; margin-right: 0; }
.site-admin .bootstrap-table .fixed-table-toolbar { display: flow-root; }
.site-admin .bootstrap-table .fixed-table-toolbar .bs-bars,
.site-admin .bootstrap-table .fixed-table-toolbar .columns { margin-top: 0; margin-bottom: .65rem; }
.site-admin .bootstrap-table .fixed-table-container .fixed-table-body { overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; }
.site-admin .bootstrap-table .fixed-table-pagination { font-size: .82rem; }
.site-admin .bootstrap-table .fixed-table-pagination > .pagination-detail,
.site-admin .bootstrap-table .fixed-table-pagination > .pagination { margin-top: .65rem; margin-bottom: 0; }
.site-admin .table-action-group, .site-admin .btn-group { flex-wrap: wrap; gap: .25rem; }
.site-admin .table-action-group .btn, .site-admin .btn-group .btn { margin: 0 !important; }

@media (max-width: 767.98px) {
    .site-front .content { padding: .75rem; }
    .site-front .content-full { padding-top: .75rem; padding-bottom: .75rem; }
    .site-front .block-header { padding: .6rem .8rem; }
    .site-front .block-content { padding: .8rem; }
    .site-front .bg-body-light .content h1 { margin-bottom: 0 !important; font-size: 1.08rem; }
    .site-front .site-brand span { max-width: 140px; }
    .auth-page-shell { min-height: auto; padding: .75rem; }
    .auth-panel-header { padding: .75rem .85rem; }
    .auth-panel .block-content { padding: .85rem; }
    .auth-tab-content { min-height: 0; }

    .site-admin .content { padding: .85rem; }
    .site-admin .content-full { padding-top: .85rem; padding-bottom: .85rem; }
    .site-admin .block-content-full { padding: .85rem; }
    .site-admin #searchToolbar[data-admin-toolbar="1"] { display: grid !important; grid-template-columns: minmax(0, 1fr) !important; gap: .55rem !important; width: 100%; padding: .65rem !important; }
    .site-admin #searchToolbar[data-admin-toolbar="1"] > * { width: 100% !important; max-width: none !important; flex: 0 0 100% !important; margin: 0 !important; padding-left: 0; padding-right: 0; }
    .site-admin #searchToolbar[data-admin-toolbar="1"] .form-control,
    .site-admin #searchToolbar[data-admin-toolbar="1"] .form-select,
    .site-admin #searchToolbar[data-admin-toolbar="1"] .btn,
    .site-admin #searchToolbar[data-admin-toolbar="1"] .dropdown { width: 100% !important; min-width: 0; }
    .site-admin .bootstrap-table .fixed-table-toolbar .bs-bars,
    .site-admin .bootstrap-table .fixed-table-toolbar .columns { float: none !important; width: 100%; }
    .site-admin .bootstrap-table .fixed-table-toolbar .columns { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: .35rem; }
    .site-admin .bootstrap-table .fixed-table-toolbar .columns > .btn-group { margin: 0 !important; }
    .site-admin .bootstrap-table .fixed-table-body table { min-width: 860px; }
    .site-admin .bootstrap-table .fixed-table-pagination > .pagination-detail,
    .site-admin .bootstrap-table .fixed-table-pagination > .pagination { float: none !important; width: 100%; text-align: center; }
    .site-admin .bootstrap-table .fixed-table-pagination .pagination { justify-content: center; flex-wrap: wrap; }
    .site-admin .modal-dialog { margin: .6rem; }
}

@media (max-width: 575.98px) {
    .site-front .form-control:not(textarea), .site-front .form-select { font-size: 16px; }
    .auth-panel .row > [class*="col-"] + [class*="col-"] { margin-top: .65rem; }
    .site-admin #page-header-loader { left: 0 !important; right: 0 !important; width: 100% !important; }
}

/* 云盘式上传任务卡 */
.upload-task-area { min-height: 70px; }
.cloud-upload-task { display: grid; grid-template-columns: 46px minmax(0,1fr) auto; gap: .85rem; align-items: center; padding: .9rem; margin-bottom: 1rem; border: 1px solid var(--bs-border-color); border-radius: .75rem; background: rgba(255,255,255,.92); box-shadow: 0 6px 18px rgba(31,45,61,.06); text-align: left; }
.cloud-upload-file-icon { width: 46px; height: 46px; border-radius: .7rem; display: inline-flex; align-items: center; justify-content: center; background: rgba(var(--bs-primary-rgb),.1); color: var(--bs-primary); font-size: 1.2rem; }
.cloud-upload-main { min-width: 0; }
.cloud-upload-heading { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .45rem; }
.cloud-upload-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 600; color: #34415a; }
.cloud-upload-percent { flex: 0 0 auto; font-variant-numeric: tabular-nums; color: var(--bs-primary); font-weight: 700; }
.cloud-upload-progress { height: 9px; border-radius: 999px; overflow: hidden; background: #e9edf3; }
.cloud-upload-progress .progress-bar { border-radius: inherit; transition: width .18s linear; }
.cloud-upload-meta { display: flex; flex-wrap: wrap; gap: .45rem 1rem; margin-top: .5rem; color: #6b7585; font-size: .78rem; }
.cloud-upload-meta span { display: inline-flex; align-items: center; gap: .3rem; }
.cloud-upload-resume { margin-top: .38rem; color: #6c7a90; font-size: .76rem; }
.cloud-upload-actions { display: flex; align-items: center; gap: .4rem; }

/* 响应式内嵌视频 */
.native-video-shell { width: 100%; max-width: 1180px; margin: 0 auto; border-radius: .8rem; overflow: hidden; background: #000; box-shadow: 0 10px 28px rgba(0,0,0,.16); }
.native-video-shell video { display: block; width: 100%; max-height: min(72vh, 760px); aspect-ratio: 16 / 9; object-fit: contain; background: #000; }
.videoplayer { width: 100%; max-width: 1180px; min-height: 320px; aspect-ratio: 16 / 9; margin: 0 auto; overflow: hidden; border-radius: .8rem; background: #000; }
.videoplayer > div, .videoplayer .ckplayer-ckplayer, .videoplayer .ck-main { width: 100% !important; height: 100% !important; }
.video-player-page { min-height: 100vh; display: flex; align-items: center; justify-content: center; background: #000; }
.video-player-page .native-video-shell, .video-player-page .videoplayer { width: 100vw; max-width: none; max-height: 100vh; border-radius: 0; box-shadow: none; }
.video-player-page .native-video-shell video { width: 100vw; height: 100vh; max-height: 100vh; aspect-ratio: auto; }

@media (max-width: 767.98px) {
    .cloud-upload-task { grid-template-columns: 38px minmax(0,1fr); gap: .65rem; padding: .75rem; }
    .cloud-upload-file-icon { width: 38px; height: 38px; font-size: 1rem; }
    .cloud-upload-actions { grid-column: 1 / -1; justify-content: flex-end; }
    .cloud-upload-meta { gap: .35rem .7rem; font-size: .73rem; }
    .cloud-upload-resume { font-size: .72rem; }
    .videoplayer { min-height: 0; aspect-ratio: 16 / 9; border-radius: .55rem; }
    .native-video-shell { border-radius: .55rem; }
    .native-video-shell video { max-height: 62vh; }
}


/* 私人云盘、文件介绍与管理表单 */
.upload-option-static { cursor: default; }
.upload-description-card { grid-column: 1 / -1; }
.upload-description-card textarea { min-height: 96px; resize: vertical; }
.file-description-block { border-left: 3px solid rgba(var(--bs-primary-rgb), .7); }
.file-description-text { line-height: 1.75; overflow-wrap: anywhere; white-space: normal; }
.management-description-card { grid-column: 1 / -1; }
.management-description-card textarea { min-height: 118px; resize: vertical; }
.private-cloud-table { min-width: 900px; }
.private-cloud-table td { vertical-align: middle; }
.private-file-description { max-width: 420px; margin-top: .2rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.private-share-cell { min-width: 230px; }
.modal-action-bar { display: flex; align-items: center; justify-content: flex-end; gap: .5rem; flex-wrap: wrap; }
.table-action-group { display: inline-flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: .3rem; }
.table-action-group .btn { margin: 0 !important; white-space: nowrap; }

@media (max-width: 767.98px) {
    .management-description-card { grid-column: auto; }
    .private-cloud-table { min-width: 760px; }
    .private-file-description { max-width: 260px; }
    .modal-action-bar .btn { flex: 1 1 auto; }
}

/* 私人云盘多文件夹分享 */
.private-folder-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(290px,1fr)); gap:1rem; }
.private-folder-card { display:flex; gap:.9rem; min-width:0; padding:1rem; border:1px solid #e5e9f0; border-radius:.8rem; background:#fff; box-shadow:0 3px 12px rgba(30,45,70,.045); }
.private-folder-icon { flex:0 0 46px; width:46px; height:46px; display:flex; align-items:center; justify-content:center; border-radius:.75rem; background:#fff3cd; color:#d99b00; font-size:1.25rem; }
.private-folder-body { flex:1 1 auto; min-width:0; }
.private-folder-desc { margin-top:.55rem; color:#6c7585; font-size:.8rem; line-height:1.55; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; }
.private-folder-empty { border:1px dashed #d7dde7; border-radius:.75rem; }
.private-folder-pick-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:.75rem; }
.private-folder-pick { cursor:pointer; }
.private-folder-pick input { position:absolute; opacity:0; pointer-events:none; }
.private-folder-pick span { display:grid; grid-template-columns:auto 1fr; align-items:center; gap:.25rem .7rem; padding:.85rem; border:1px solid #dfe4ec; border-radius:.7rem; transition:.15s ease; }
.private-folder-pick span i { grid-row:1 / 3; font-size:1.2rem; }
.private-folder-pick span b { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.private-folder-pick span small { color:#748094; }
.private-folder-pick input:checked + span { border-color:var(--bs-primary); background:rgba(var(--bs-primary-rgb),.08); box-shadow:0 0 0 2px rgba(var(--bs-primary-rgb),.12); }
.private-resource-checklist { max-height:56vh; overflow:auto; display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:.6rem; padding:.1rem; }
.private-resource-check { cursor:pointer; min-width:0; }
.private-resource-check input { position:absolute; opacity:0; pointer-events:none; }
.private-resource-check span { display:grid; grid-template-columns:auto minmax(0,1fr); align-items:center; gap:.18rem .6rem; padding:.7rem; border:1px solid #dfe4ec; border-radius:.65rem; }
.private-resource-check span i { grid-row:1 / 3; }
.private-resource-check span b { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.private-resource-check span small { color:#748094; }
.private-resource-check input:checked + span { border-color:var(--bs-primary); background:rgba(var(--bs-primary-rgb),.08); }
.private-folder-file-list { display:flex; flex-direction:column; gap:.6rem; }
.private-folder-file { display:flex; align-items:center; justify-content:space-between; gap:1rem; padding:.75rem; border:1px solid #e4e8ef; border-radius:.65rem; }
.private-folder-file-main { display:flex; align-items:flex-start; gap:.7rem; min-width:0; }
.private-folder-file-main > i { margin-top:.18rem; }
.private-folder-share-icon { width:48px; height:48px; flex:0 0 48px; display:flex; align-items:center; justify-content:center; border-radius:.8rem; color:#d99b00; background:#fff3cd; font-size:1.3rem; }
.private-folder-share-description { padding:.9rem 1rem; border-left:3px solid rgba(var(--bs-primary-rgb),.75); background:#f7f9fc; border-radius:.25rem .65rem .65rem .25rem; line-height:1.7; overflow-wrap:anywhere; }
.shared-folder-file-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:.85rem; }
.shared-folder-file-card { display:flex; gap:.8rem; min-width:0; padding:.9rem; border:1px solid #e3e8f0; border-radius:.75rem; background:#fff; }
.shared-folder-file-icon { flex:0 0 40px; width:40px; height:40px; display:flex; align-items:center; justify-content:center; border-radius:.65rem; background:#f0f3f8; color:#556277; }
.shared-folder-file-body { flex:1 1 auto; }
.shared-folder-file-desc { margin:.45rem 0 0; color:#6f7989; font-size:.78rem; line-height:1.5; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; }

@media (max-width:767.98px){
    .private-folder-grid,.shared-folder-file-grid,.private-folder-pick-grid,.private-resource-checklist { grid-template-columns:1fr; }
    .private-folder-card { padding:.85rem; }
    .private-folder-file { align-items:flex-start; flex-direction:column; }
    .private-folder-file > .d-flex { align-self:flex-end; }
}
