:root{--bg:#f4f6fa;--panel:#fff;--text:#172033;--muted:#7d879a;--line:#e6eaf1;--blue:#174b91;--blue2:#1d5db5;--blue-soft:#eaf2ff;--shadow:0 18px 50px rgba(29,49,83,.08);--radius:18px;--sidebar:#f8f9fc}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;color:var(--text);background:var(--bg)}button,input{font:inherit}.app-shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:24px 18px;background:var(--sidebar);border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:40}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 24px}.brand-mark{width:42px;height:42px;border-radius:14px;background:linear-gradient(145deg,#183c73,#2b70c9);color:#fff;display:grid;place-items:center;font-family:Georgia,serif;font-size:23px;box-shadow:0 10px 22px rgba(24,72,138,.22)}.brand-copy{display:flex;flex-direction:column;gap:2px}.brand-copy strong{font-size:17px;letter-spacing:.08em}.brand-copy span{font-size:10px;color:#98a1b0;letter-spacing:.12em;text-transform:uppercase}.primary-action,.primary-btn,.login-submit{border:0;background:linear-gradient(135deg,var(--blue),var(--blue2));color:#fff;border-radius:12px;cursor:pointer;box-shadow:0 10px 20px rgba(27,78,148,.18)}.primary-action{height:48px;margin:0 4px 20px;font-weight:650;font-size:15px}.primary-action span{font-size:22px;vertical-align:-2px;margin-right:6px}.nav-group{display:flex;flex-direction:column;gap:4px}.nav-item{height:42px;border-radius:11px;padding:0 12px;display:flex;align-items:center;gap:12px;text-decoration:none;color:#596477;font-size:14px}.nav-item:hover,.nav-item.active{background:#eaf1fb;color:#174b91;font-weight:650}.nav-item .icon{width:18px;text-align:center;font-size:18px}.nav-item em{margin-left:auto;font-style:normal;font-size:11px;background:#dbe8fb;color:#174b91;padding:2px 7px;border-radius:20px}.nav-label{padding:24px 12px 8px;font-size:11px;color:#a2aaba;letter-spacing:.12em}.nav-group.compact .nav-item{height:35px}.dot{width:9px;height:9px;border-radius:3px}.dot.image{background:#5f8df7}.dot.video{background:#8d75e8}.dot.document{background:#e1a23b}.dot.audio{background:#48a77f}.dot.archive{background:#8792a3}.sidebar-spacer{flex:1}.storage-card{margin:16px 4px;padding:14px;border:1px solid #e2e8f2;background:#fff;border-radius:14px}.storage-title{display:flex;justify-content:space-between;font-size:12px}.storage-title strong{font-size:11px;color:#42516a}.progress{height:6px;margin:11px 0 7px;background:#edf1f6;border-radius:10px;overflow:hidden}.progress i{display:block;height:100%;background:linear-gradient(90deg,#174b91,#62a4ec);border-radius:10px}.storage-card p{margin:0;font-size:10px;color:#929cad}.main-panel{min-width:0}.topbar{height:72px;padding:0 28px;background:rgba(255,255,255,.88);backdrop-filter:blur(18px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:30}.search-box{width:min(560px,50vw);height:42px;border:1px solid #e1e6ef;background:#f7f9fc;border-radius:12px;display:flex;align-items:center;padding:0 13px;gap:9px;color:#8c97aa}.search-box input{flex:1;border:0;outline:0;background:transparent;color:var(--text);font-size:14px}.search-box kbd{font-size:10px;background:#fff;border:1px solid #e0e5ed;padding:3px 6px;border-radius:6px;color:#8a94a5}.top-actions{display:flex;align-items:center;gap:7px}.icon-btn{width:40px;height:40px;border:0;background:transparent;border-radius:11px;color:#5e6a7d;cursor:pointer;font-size:17px}.icon-btn:hover{background:#f0f3f8}.notification{position:relative}.notification i{position:absolute;width:6px;height:6px;background:#e66f69;border-radius:50%;right:9px;top:8px}.avatar-btn{height:42px;border:0;background:transparent;display:flex;align-items:center;gap:8px;color:#3d495c;cursor:pointer}.avatar-btn>span,.share-avatar{width:34px;height:34px;border-radius:11px;background:linear-gradient(145deg,#dbe8fb,#b8d2f6);display:grid;place-items:center;color:#174b91;font-weight:700}.avatar-btn b{font-size:13px}.avatar-btn small{color:#9aa3b1}.content{padding:30px clamp(24px,3.2vw,52px) 50px}.page-head{display:flex;justify-content:space-between;gap:24px;align-items:flex-end}.breadcrumbs{display:flex;gap:8px;align-items:center;color:#9aa4b5;font-size:12px;margin-bottom:10px}.breadcrumbs b{font-weight:400}.breadcrumbs strong{color:#59677c}.page-head h1{font-family:"Songti SC","STSong",serif;margin:0;font-size:31px;letter-spacing:.03em}.page-head p{margin:8px 0 0;color:var(--muted);font-size:13px}.head-actions{display:flex;gap:10px}.primary-btn,.secondary-btn{height:42px;padding:0 18px;border-radius:11px;font-weight:650;cursor:pointer}.secondary-btn{border:1px solid #dfe5ee;background:#fff;color:#46536a}.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:28px 0 24px}.quick-card{min-height:118px;padding:18px;border-radius:18px;background:#fff;border:1px solid var(--line);display:grid;grid-template-columns:44px 1fr;grid-template-rows:1fr auto;gap:4px 13px;box-shadow:0 8px 30px rgba(31,49,82,.035)}.quick-icon{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;font-weight:800}.quick-card div:nth-child(2){display:flex;justify-content:space-between;align-items:flex-start}.quick-card div span{font-size:13px;color:#7b8799}.quick-card div strong{font-size:21px}.quick-card small{grid-column:2;color:#9ba4b3;font-size:11px}.quick-card.blue .quick-icon{background:#eaf2ff;color:#3477d3}.quick-card.violet .quick-icon{background:#f0ecff;color:#7758d4}.quick-card.amber .quick-icon{background:#fff3de;color:#c88319}.quick-card.green .quick-icon{background:#e7f7f0;color:#2c9870}.toolbar{height:52px;border:1px solid var(--line);border-bottom:0;border-radius:16px 16px 0 0;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 14px}.toolbar-left,.toolbar-right{display:flex;gap:6px;align-items:center}.filter-chip,.text-btn,.view-btn{border:0;background:transparent;border-radius:8px;color:#6f7b8f;cursor:pointer}.filter-chip{height:30px;padding:0 12px;font-size:12px}.filter-chip.active{background:#edf3fb;color:#174b91;font-weight:650}.text-btn{font-size:12px;padding:8px}.view-btn{width:34px;height:34px;font-size:16px}.view-btn.active{background:#edf3fb;color:#174b91}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 0;transition:.25s;background:#fff;border:1px solid var(--line);border-radius:0 0 16px 16px;min-height:480px;overflow:hidden}.workspace:has(.details-panel.open){grid-template-columns:minmax(0,1fr) 310px}.files-panel{min-width:0}.file-list{padding-bottom:8px}.file-row{display:grid;grid-template-columns:38px minmax(240px,1.6fr) minmax(90px,.5fr) minmax(130px,.65fr) 42px;align-items:center;min-height:66px;padding:0 15px;border-bottom:1px solid #edf0f4;color:#657186;font-size:12px;transition:.15s}.file-row:not(.header-row):hover,.file-row.selected{background:#f7faff}.header-row{min-height:43px;color:#9ca5b4;font-size:11px;background:#fbfcfd}.check-cell{display:grid;place-items:center}.name-cell{display:flex;align-items:center;gap:12px;min-width:0}.name-cell div{min-width:0}.name-cell strong{display:block;color:#263248;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.name-cell small{font-size:10px;color:#9ca6b5}.file-icon{width:38px;height:38px;border-radius:11px;display:grid;place-items:center;font-size:9px;font-weight:800;flex:none}.file-icon.folder{background:#eaf2ff;color:#3977cb;font-size:17px}.file-icon.image{background:#e9f4ff;color:#3a83d0}.file-icon.video{background:#f0edff;color:#765ad2;font-size:15px}.file-icon.pdf{background:#fff0ed;color:#d95c50}.file-icon.sheet{background:#e8f7ef;color:#2e9667}.file-icon.archive{background:#eef1f5;color:#687589}.more{border:0;background:transparent;color:#94a0b2;font-weight:700;cursor:pointer;letter-spacing:2px}.grid-mode{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;padding:16px}.file-card{position:relative;min-height:176px;border:1px solid var(--line);border-radius:15px;padding:20px 14px 14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#fff;cursor:pointer}.file-card:hover,.file-card.selected{border-color:#bed2ee;background:#f8fbff;box-shadow:0 10px 24px rgba(31,73,131,.08)}.file-card-icon{width:58px;height:58px;border-radius:17px;display:grid;place-items:center;font-weight:800}.file-card-icon.folder{background:#eaf2ff;color:#3977cb;font-size:28px}.file-card-icon.image{background:#e9f4ff;color:#3a83d0}.file-card-icon.video{background:#f0edff;color:#765ad2}.file-card-icon.pdf{background:#fff0ed;color:#d95c50}.file-card-icon.sheet{background:#e8f7ef;color:#2e9667}.file-card-icon.archive{background:#eef1f5;color:#687589}.file-card strong{max-width:100%;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-card small{color:#9aa4b4;font-size:10px}.card-check{position:absolute;left:10px;top:10px}.file-card .more{position:absolute;right:8px;top:9px}.shared-badge{font-size:9px;background:#eaf2ff;color:#286dbd;padding:3px 7px;border-radius:10px}.details-panel{width:310px;border-left:1px solid var(--line);background:#fcfdff;padding:22px;overflow:auto;position:relative;transform:translateX(100%);opacity:0;transition:.25s}.details-panel.open{transform:none;opacity:1}.details-empty{text-align:center;color:#9ca6b5;padding-top:90px}.details-visual{width:62px;height:62px;margin:auto;background:#f0f3f8;border-radius:18px;display:grid;place-items:center;font-size:26px}.details-empty h3{color:#4b586d;margin:16px 0 7px}.details-empty p{font-size:12px;line-height:1.7}.details-close{position:absolute;right:12px;top:12px;border:0;background:transparent;color:#8b95a5;font-size:22px;cursor:pointer}.detail-preview{width:104px;height:104px;margin:25px auto 18px;border-radius:25px;display:grid;place-items:center;font-weight:800;font-size:20px}.detail-preview.folder{background:#eaf2ff;color:#3977cb;font-size:45px}.detail-preview.image{background:#e9f4ff;color:#3a83d0}.detail-preview.video{background:#f0edff;color:#765ad2}.detail-preview.pdf{background:#fff0ed;color:#d95c50}.detail-preview.sheet{background:#e8f7ef;color:#2e9667}.detail-preview.archive{background:#eef1f5;color:#687589}.details-panel h2{text-align:center;font-size:15px;margin:0 10px;word-break:break-all}.detail-type{text-align:center;color:#9aa5b4;font-size:11px}.detail-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:20px 0}.details-panel dl{margin:0;border-top:1px solid var(--line);padding-top:8px}.details-panel dl div{display:flex;justify-content:space-between;gap:20px;padding:10px 0;font-size:11px}.details-panel dt{color:#99a4b4}.details-panel dd{margin:0;color:#4e5b70;text-align:right}.empty-state{text-align:center;padding:100px 20px;color:#98a3b4}.empty-state div{font-size:42px}.empty-state h3{color:#4d5a70}.mobile-nav,.mobile-only{display:none}.modal-backdrop{position:fixed;inset:0;background:rgba(14,25,43,.38);backdrop-filter:blur(5px);z-index:100;display:grid;place-items:center;padding:20px;opacity:0;transition:.18s}.modal-backdrop.show{opacity:1}.modal{width:min(560px,100%);background:#fff;border-radius:22px;padding:25px;box-shadow:0 30px 90px rgba(16,32,58,.25);position:relative;transform:translateY(10px) scale(.98);transition:.18s}.modal-backdrop.show .modal{transform:none}.modal-close{position:absolute;right:18px;top:15px;border:0;background:transparent;font-size:24px;color:#8d97a8;cursor:pointer}.modal-heading{display:flex;gap:13px;align-items:center;margin-bottom:20px}.modal-icon{width:48px;height:48px;border-radius:15px;background:#eaf2ff;color:#225fae;display:grid;place-items:center;font-size:22px}.modal-heading h2{font-size:18px;margin:0}.modal-heading p{font-size:11px;color:#98a2b2;margin:4px 0 0}.dropzone{min-height:260px;border:1.5px dashed #bfd0e8;border-radius:18px;background:#f8fbff;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.drop-icon{font-size:42px;color:#4d83c7}.dropzone h3{margin:10px 0 5px}.dropzone p{font-size:11px;color:#98a2b2;margin:0 0 18px}.upload-note{margin-top:14px;font-size:10px;color:#7e8999}.upload-note span{color:#318b6d}.toast{position:fixed;left:50%;bottom:32px;transform:translate(-50%,20px);background:#17243a;color:#fff;padding:11px 18px;border-radius:10px;font-size:12px;opacity:0;pointer-events:none;transition:.2s;z-index:120}.toast.show{opacity:1;transform:translate(-50%,0)}
/* login */.login-page{background:#eef2f7}.login-shell{min-height:100vh;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(430px,.9fr)}.login-brand-panel{padding:46px clamp(40px,7vw,100px);background:radial-gradient(circle at 80% 10%,rgba(105,160,226,.25),transparent 32%),linear-gradient(145deg,#102e59,#173f76 58%,#245a9d);color:#fff;display:flex;flex-direction:column;justify-content:space-between;position:relative;overflow:hidden}.login-brand-panel:after{content:"";position:absolute;width:420px;height:420px;border:1px solid rgba(255,255,255,.08);border-radius:50%;right:-160px;bottom:-170px;box-shadow:0 0 0 70px rgba(255,255,255,.025),0 0 0 150px rgba(255,255,255,.018)}.login-brand{display:flex;align-items:center;gap:12px;position:relative;z-index:1}.login-brand .brand-mark{background:rgba(255,255,255,.14);box-shadow:none}.login-brand strong{font-size:18px;letter-spacing:.08em}.login-hero-copy{max-width:620px;position:relative;z-index:1}.login-hero-copy>span{font-size:11px;letter-spacing:.28em;color:#a8c6ee}.login-hero-copy h1{font-family:"Songti SC","STSong",serif;font-size:clamp(38px,4.2vw,64px);font-weight:500;line-height:1.2;margin:22px 0}.login-hero-copy p{font-size:15px;color:#bfd0e7;line-height:1.8}.login-trust{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;position:relative;z-index:1}.login-trust div{border-top:1px solid rgba(255,255,255,.18);padding-top:14px}.login-trust b,.login-trust small{display:block}.login-trust b{font-size:12px}.login-trust small{font-size:10px;color:#9eb9dc;margin-top:5px}.login-form-panel{display:grid;place-items:center;padding:40px;background:#f8fafc}.login-card{width:min(420px,100%);background:#fff;padding:42px;border-radius:24px;box-shadow:0 26px 70px rgba(37,54,84,.09)}.eyebrow{font-size:10px;letter-spacing:.2em;color:#3675c3}.login-card h2{font-family:"Songti SC","STSong",serif;font-size:28px;margin:10px 0 5px}.login-card>p{font-size:12px;color:#8f99aa;margin:0 0 28px}.login-card label{display:block;font-size:12px;color:#556278;margin:16px 0 7px}.login-card input[type=text],.login-card input[type=password]{width:100%;height:46px;border:1px solid #dfe5ee;border-radius:11px;padding:0 13px;outline:0;background:#fbfcfe}.login-card input:focus{border-color:#7da8dd;box-shadow:0 0 0 3px #edf4fd}.password-field{position:relative}.password-field button{position:absolute;right:8px;top:8px;height:30px;border:0;background:transparent;color:#6d7b91;font-size:11px}.form-options{display:flex;justify-content:space-between;align-items:center;margin:14px 0 24px;font-size:11px}.form-options .remember{margin:0;color:#748095}.form-options a{color:#2867b2;text-decoration:none}.login-submit{width:100%;height:48px;border:0;font-weight:700}.login-divider{height:42px;display:flex;align-items:center}.login-divider:before,.login-divider:after{content:"";height:1px;background:#ebedf2;flex:1}.login-divider span{padding:0 12px;font-size:9px;color:#a3abb8}.login-footnote{text-align:center!important;font-size:10px!important;line-height:1.6!important;margin:0!important}
/* share */.share-page{background:#f2f5f9}.share-header{height:68px;background:#fff;border-bottom:1px solid var(--line);padding:0 5vw;display:flex;align-items:center;justify-content:space-between}.share-header a{display:flex;align-items:center;gap:10px;color:var(--text);text-decoration:none}.share-header .brand-mark{width:36px;height:36px;border-radius:11px;font-size:18px}.share-header>span{font-size:11px;color:#98a2b1}.share-shell{width:min(900px,92vw);margin:42px auto}.share-card{background:#fff;border:1px solid var(--line);border-radius:24px;box-shadow:var(--shadow);overflow:hidden}.share-owner{padding:22px 26px;display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line)}.share-owner div{flex:1}.share-owner strong{font-size:13px}.share-owner p{margin:4px 0 0;font-size:10px;color:#9aa5b4}.share-owner button{border:0;background:transparent;color:#929cad}.share-hero{padding:34px 28px;display:flex;align-items:center;gap:20px;background:linear-gradient(120deg,#f7faff,#eef5ff)}.folder-preview{width:86px;height:86px;border-radius:24px;background:linear-gradient(145deg,#dcecff,#bcd7f7);display:grid;place-items:center;color:#2868b5;font-size:44px}.share-hero span{font-size:10px;color:#6d83a2}.share-hero h1{font-family:"Songti SC","STSong",serif;font-size:27px;margin:6px 0}.share-hero p{font-size:11px;color:#8793a4}.share-toolbar{padding:18px 26px;display:flex;gap:10px;border-bottom:1px solid var(--line)}.share-list{padding:0 26px 12px}.share-row{min-height:72px;display:flex;align-items:center;gap:13px;border-bottom:1px solid #edf0f4}.share-row>div{flex:1}.share-row strong,.share-row small{display:block}.share-row strong{font-size:12px}.share-row small{font-size:10px;color:#99a4b3;margin-top:4px}.share-row button{border:0;background:#f0f4f9;color:#55708f;border-radius:8px;padding:7px 12px;font-size:10px}.share-shell footer{text-align:center;font-size:10px;color:#a0a9b6;margin-top:22px}
/* admin */.admin-page{display:grid;grid-template-columns:220px 1fr;background:#f4f6fa;min-height:100vh}.admin-sidebar{background:#142b4d;color:#aebbd0;padding:24px 16px;display:flex;flex-direction:column;gap:4px}.admin-sidebar .brand{padding-left:8px}.admin-sidebar .brand-mark{width:38px;height:38px}.admin-sidebar .brand-copy strong{color:#fff}.admin-sidebar>a{height:42px;padding:0 14px;display:flex;align-items:center;border-radius:10px;color:#b7c3d5;text-decoration:none;font-size:12px}.admin-sidebar>a.active,.admin-sidebar>a:hover{background:#21446f;color:#fff}.admin-sidebar>div:nth-last-child(2){flex:1}.admin-main{padding:34px clamp(28px,4vw,60px)}.admin-main>header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:26px}.admin-main header span{font-size:10px;color:#8290a4;letter-spacing:.15em}.admin-main h1{font-family:"Songti SC","STSong",serif;margin:7px 0 0;font-size:30px}.admin-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.admin-stats article,.admin-card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px}.admin-stats span,.admin-stats strong,.admin-stats small{display:block}.admin-stats span{font-size:11px;color:#8490a3}.admin-stats strong{font-size:25px;margin:13px 0 7px}.admin-stats small{font-size:9px;color:#a4adba}.status-ok{color:#31916d}.admin-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:14px;margin:14px 0}.card-title{display:flex;justify-content:space-between;align-items:center}.card-title h2{font-size:14px;margin:0}.card-title span,.card-title a{font-size:10px;color:#8995a7}.chart-bars{height:220px;display:flex;align-items:flex-end;gap:10px;padding:28px 10px 4px}.chart-bars i{flex:1;background:linear-gradient(#7aa8df,#245f9f);border-radius:7px 7px 2px 2px;opacity:.88}.health-list{list-style:none;padding:8px 0 0;margin:0}.health-list li{display:flex;justify-content:space-between;padding:15px 0;border-bottom:1px solid #edf0f4;font-size:11px}.health-list li span{color:#7e899a}.health-list li b{color:#3b8d70;font-size:10px}.recent-card table{width:100%;border-collapse:collapse;margin-top:13px;font-size:10px}.recent-card th,.recent-card td{text-align:left;padding:13px 8px;border-top:1px solid #edf0f4}.recent-card th{color:#98a2b1;font-weight:500}.pill{padding:4px 8px;border-radius:10px}.pill.success{background:#e8f6ef;color:#2f8867}.pill.info{background:#eaf2ff;color:#2c6db8}
body.dark{--bg:#111722;--panel:#171f2d;--text:#edf2fa;--muted:#8f9bb0;--line:#283244;--sidebar:#151c27}.dark .topbar,.dark .toolbar,.dark .workspace,.dark .quick-card,.dark .storage-card,.dark .file-card,.dark .modal{background:#171f2d}.dark .search-box,.dark .header-row,.dark .details-panel{background:#131b27}.dark .secondary-btn{background:#1a2331;color:#dce4f0;border-color:#303b4e}.dark .name-cell strong,.dark .details-empty h3{color:#e6edf7}.dark .file-row:not(.header-row):hover,.dark .file-row.selected{background:#1c2737}
@media(max-width:1050px){.quick-grid{grid-template-columns:repeat(2,1fr)}.workspace:has(.details-panel.open){grid-template-columns:minmax(0,1fr) 280px}.details-panel{width:280px}.admin-stats{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.app-shell{display:block;padding-bottom:72px}.sidebar{position:fixed;left:0;top:0;transform:translateX(-102%);transition:.22s;box-shadow:20px 0 60px rgba(14,28,50,.2)}.sidebar.open{transform:none}.topbar{height:62px;padding:0 14px}.mobile-only{display:block}.search-box{width:auto;flex:1;margin:0 8px}.search-box kbd,.avatar-btn b,.avatar-btn small,.top-actions .notification{display:none}.avatar-btn{padding:0}.content{padding:22px 14px}.page-head{align-items:flex-start}.page-head h1{font-size:25px}.page-head p,.breadcrumbs{display:none}.head-actions .secondary-btn{display:none}.quick-grid{grid-template-columns:repeat(2,1fr);gap:9px;margin:20px 0}.quick-card{min-height:95px;padding:13px}.quick-card small{display:none}.toolbar{border-radius:13px 13px 0 0;overflow-x:auto}.toolbar-left .filter-chip:nth-child(n+3){display:none}.file-row{grid-template-columns:28px minmax(0,1fr) 34px;min-height:64px;padding:0 10px}.file-row>div:nth-child(3),.file-row>div:nth-child(4){display:none}.header-row{display:none!important}.name-cell strong{font-size:12px}.workspace:has(.details-panel.open){grid-template-columns:1fr}.details-panel{position:fixed;inset:auto 0 0;width:100%;height:72vh;border-radius:22px 22px 0 0;border:0;z-index:90;transform:translateY(105%);box-shadow:0 -20px 60px rgba(18,31,52,.22)}.details-panel.open{transform:none}.grid-mode{grid-template-columns:repeat(2,minmax(0,1fr));padding:10px;gap:8px}.file-card{min-height:154px}.mobile-nav{display:grid;position:fixed;left:0;right:0;bottom:0;height:68px;background:rgba(255,255,255,.94);backdrop-filter:blur(14px);border-top:1px solid var(--line);grid-template-columns:repeat(5,1fr);z-index:80;padding-bottom:env(safe-area-inset-bottom)}.mobile-nav a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#8b96a8;text-decoration:none;font-size:17px}.mobile-nav a b{font-size:9px}.mobile-nav a.active{color:#245f9f}.mobile-nav button{width:48px;height:48px;align-self:center;justify-self:center;border:0;border-radius:16px;background:linear-gradient(145deg,#174b91,#2b70c9);color:#fff;font-size:25px;box-shadow:0 10px 22px rgba(24,72,138,.25)}.login-shell{grid-template-columns:1fr}.login-brand-panel{display:none}.login-form-panel{padding:20px;min-height:100vh}.login-card{padding:30px 24px}.share-shell{width:94vw;margin:18px auto}.share-hero{padding:25px 20px}.folder-preview{width:66px;height:66px;border-radius:19px}.share-hero h1{font-size:21px}.share-toolbar{padding:14px;display:grid;grid-template-columns:1fr 1fr}.share-list{padding:0 14px}.admin-page{display:block}.admin-sidebar{display:none}.admin-main{padding:22px 14px}.admin-stats{grid-template-columns:repeat(2,1fr);gap:9px}.admin-grid{grid-template-columns:1fr}.recent-card{overflow-x:auto}.recent-card table{min-width:620px}}
/* V2 dynamic additions */
.primary-btn,.login-submit{background:linear-gradient(145deg,#174b91,#2b70c9);color:#fff;border:0;border-radius:10px;font-weight:700;cursor:pointer}.primary-btn:disabled{opacity:.55;cursor:not-allowed}.secondary-btn{cursor:pointer}.login-error{background:#fff0f0;color:#a13e3e;padding:11px 13px;border-radius:9px;font-size:11px;margin:12px 0}.breadcrumbs button{border:0;background:transparent;padding:0;color:inherit;cursor:pointer;font:inherit}.breadcrumbs button:hover{color:#2868b5}.sort-select{height:32px;border:0;background:transparent;color:#6c788a;font-size:10px;outline:0}.account-menu{position:absolute;right:22px;top:61px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:7px;min-width:130px;z-index:100}.account-menu a{display:block;padding:9px 11px;border-radius:8px;text-decoration:none;color:var(--text);font-size:11px}.account-menu a:hover{background:#edf4fd}.missing-badge{position:absolute;right:12px;bottom:12px;background:#fff1da;color:#9a661d;font-size:9px;padding:4px 7px;border-radius:10px}.detail-more-actions{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:10px 0 18px}.detail-more-actions button{border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:8px;padding:8px 5px;font-size:9px;cursor:pointer}.small-modal{width:min(440px,92vw)}.modal-input{width:100%;height:45px;border:1px solid var(--line);border-radius:10px;padding:0 12px;background:var(--panel);color:var(--text);outline:0}.modal-submit{width:100%;height:45px;margin-top:14px}.modal-label{display:block;font-size:11px;color:var(--muted);margin-top:13px}.modal-label .modal-input{display:block;margin-top:7px}.share-result{margin-top:10px}.upload-queue{max-height:230px;overflow:auto;margin-top:12px}.upload-item{display:grid;grid-template-columns:minmax(0,1fr) 150px 44px;align-items:center;gap:10px;border-top:1px solid var(--line);padding:11px 2px}.upload-item strong,.upload-item small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-item strong{font-size:11px}.upload-item small{font-size:9px;color:var(--muted);margin-top:3px}.upload-progress{height:6px;background:#e9edf3;border-radius:10px;overflow:hidden}.upload-progress i{display:block;width:0;height:100%;background:#2c72c8;transition:.15s}.upload-item>span{font-size:9px;color:var(--muted);text-align:right}.upload-item.done>span{color:#2d8c68}.upload-item.failed>span{color:#b94848}.dropzone.dragging{border-color:#2b70c9;background:#f1f7ff}.preview-overlay{position:fixed;inset:0;background:rgba(7,14,25,.92);z-index:300;display:grid;place-items:center;opacity:0;transition:.18s}.preview-overlay.visible{opacity:1}.preview-close{position:absolute;right:24px;top:20px;width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.08);color:#fff;font-size:26px;cursor:pointer}.preview-box{width:min(92vw,1300px);height:min(88vh,900px);display:grid;place-items:center}.preview-box img,.preview-box video{max-width:100%;max-height:100%;border-radius:8px}.preview-box iframe{width:100%;height:100%;border:0;background:#fff;border-radius:8px}.audio-preview{background:#fff;border-radius:22px;padding:40px;width:min(480px,90vw);text-align:center}.audio-preview>div{font-size:70px;color:#2d6fbe}.audio-preview audio{width:100%;margin-top:20px}.toast.bad{background:#a53e3e}.toast.show{opacity:1;transform:translateY(0)}.dark .account-menu a:hover{background:#202b3c}.dark .modal-input{background:#131b27}.dark .missing-badge{background:#4b3821;color:#ffd897}
@media(max-width:760px){.account-menu{right:10px;top:57px}.upload-item{grid-template-columns:minmax(0,1fr) 90px 35px}.preview-box{width:96vw;height:84vh}.detail-more-actions{grid-template-columns:1fr 1fr}.quick-grid{display:none}.page-head{margin-bottom:18px}}
.migration-summary{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:22px}.migration-summary div{border:1px solid var(--line);border-radius:12px;padding:15px}.migration-summary b,.migration-summary span{display:block}.migration-summary b{font-size:11px}.migration-summary span{font-size:9px;color:var(--muted);margin-top:6px}.storage-detail{margin-bottom:14px}.storage-detail dl{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:20px 0}.storage-detail dl div{background:#f7f9fc;border-radius:11px;padding:13px}.storage-detail dt{font-size:9px;color:#8a96a8}.storage-detail dd{font-size:11px;margin:6px 0 0;word-break:break-all}.storage-detail p{font-size:10px;color:#8a96a8;line-height:1.7}.dark .storage-detail dl div{background:#131b27}@media(max-width:900px){.storage-detail dl{grid-template-columns:1fr 1fr}}@media(max-width:600px){.migration-summary,.storage-detail dl{grid-template-columns:1fr}}
.share-loading,.share-error,.share-password{min-height:360px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:35px}.share-error>div{width:58px;height:58px;border-radius:18px;background:#fff0f0;color:#a13f3f;display:grid;place-items:center;font-size:30px}.share-error h2,.share-password h2{font-family:"Songti SC","STSong",serif;font-size:25px;margin:18px 0 7px}.share-error p,.share-password p{font-size:11px;color:#8b96a6}.share-password .brand-mark{width:58px;height:58px;font-size:27px}.share-password input{width:min(300px,90%);height:45px;border:1px solid var(--line);border-radius:10px;padding:0 12px;margin:12px 0}.share-password button{width:min(300px,90%);height:44px}.share-toolbar{align-items:center}.share-toolbar span{margin-left:auto;font-size:9px;color:#99a4b4}.share-row input{margin-left:5px}

/* V2.3 click-layer fix: hidden overlays must not intercept clicks. */
[hidden]{display:none!important}
.modal-backdrop.visible,.modal-backdrop.show{opacity:1}
.modal-backdrop.visible .modal,.modal-backdrop.show .modal{transform:none}

/* V2.4 enhanced online preview */
.preview-overlay{display:grid;grid-template-rows:64px minmax(0,1fr);place-items:stretch;background:rgba(7,14,25,.96)}
.preview-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:0 22px;border-bottom:1px solid rgba(255,255,255,.12);background:rgba(10,19,33,.9);color:#fff;z-index:2}
.preview-file-info{min-width:0;display:flex;flex-direction:column;gap:3px}
.preview-file-info strong{max-width:min(62vw,820px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px}
.preview-file-info span{font-size:10px;color:rgba(255,255,255,.58)}
.preview-toolbar{display:flex;align-items:center;gap:7px;flex:none}
.preview-toolbar button,.preview-toolbar a{height:34px;min-width:34px;padding:0 10px;border:1px solid rgba(255,255,255,.18);border-radius:9px;background:rgba(255,255,255,.07);color:#fff;text-decoration:none;display:inline-grid;place-items:center;cursor:pointer;font-size:11px}
.preview-toolbar button:hover,.preview-toolbar a:hover{background:rgba(255,255,255,.14)}
.preview-toolbar .preview-close{position:static;width:36px;height:36px;border-radius:10px;font-size:22px;padding:0;margin-left:5px}
.preview-stage{min-height:0;overflow:auto;padding:18px;display:grid;place-items:center}
.preview-box{width:min(96vw,1500px);height:min(calc(100vh - 100px),1000px);min-height:320px;display:grid;place-items:center;overflow:visible}
.preview-box>video{max-width:100%;max-height:100%;border-radius:10px;background:#000}
.preview-box>iframe{width:100%;height:100%;border:0;background:#fff;border-radius:10px}
.preview-status{width:min(460px,90vw);min-height:240px;border:1px solid rgba(255,255,255,.12);border-radius:20px;background:rgba(255,255,255,.06);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px}
.preview-status h3{margin:18px 0 7px;font-size:16px}
.preview-status p{margin:0;max-width:380px;color:rgba(255,255,255,.62);font-size:11px;line-height:1.7}
.preview-spinner{width:42px;height:42px;border-radius:50%;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;animation:mzPreviewSpin .8s linear infinite}
@keyframes mzPreviewSpin{to{transform:rotate(360deg)}}
.preview-error-icon{width:54px;height:54px;border-radius:17px;background:rgba(226,83,83,.18);color:#ffaaa6;display:grid;place-items:center;font-size:28px}
.preview-inline-download{margin-top:18px;height:38px;padding:0 18px;border-radius:10px;background:#fff;color:#183d72;text-decoration:none;display:inline-flex;align-items:center;font-size:11px;font-weight:700}
.image-preview-wrap{width:100%;height:100%;display:grid;place-items:center;overflow:auto}
.image-preview-main{max-width:100%;max-height:100%;object-fit:contain;border-radius:8px;transform-origin:center center;transition:transform .12s ease;box-shadow:0 18px 60px rgba(0,0,0,.28)}
.text-preview-shell,.sheet-preview-shell,.docx-preview{width:100%;height:100%;background:#fff;color:#172033;border-radius:12px;box-shadow:0 18px 60px rgba(0,0,0,.22);overflow:auto}
.text-preview-shell{display:grid;grid-template-rows:45px minmax(0,1fr)}
.text-preview-toolbar{display:flex;align-items:center;justify-content:space-between;padding:0 14px;border-bottom:1px solid #e6eaf1;background:#f7f9fc;color:#7d879a;font-size:10px;position:sticky;top:0;z-index:2}
.text-preview-toolbar button{height:28px;border:1px solid #dbe2ec;border-radius:8px;background:#fff;color:#536177;font-size:10px;cursor:pointer}
.text-preview-content{margin:0;padding:22px 25px;font:12px/1.75 ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace;white-space:pre;overflow:auto;tab-size:4;background:#fff;color:#1c2739}
.text-preview-content.wrap{white-space:pre-wrap;overflow-wrap:anywhere}
.docx-preview{max-width:980px;height:auto;min-height:100%;padding:56px 70px;line-height:1.85;overflow-wrap:anywhere}
.docx-preview h1,.docx-preview h2,.docx-preview h3,.docx-preview h4{font-family:"Songti SC","STSong",serif;line-height:1.35;color:#172033}
.docx-preview p{margin:.7em 0;text-indent:0}
.docx-preview img{max-width:100%;height:auto;display:block;margin:16px auto}
.docx-preview table{width:100%;border-collapse:collapse;margin:18px 0;font-size:12px}
.docx-preview th,.docx-preview td{border:1px solid #d8dee8;padding:8px 10px;vertical-align:top}
.docx-preview blockquote{margin:16px 0;padding:10px 16px;border-left:4px solid #8caed6;background:#f5f8fc;color:#526074}
.docx-preview pre{padding:14px;border-radius:8px;background:#f4f6f9;overflow:auto}
.preview-conversion-note{margin:-22px 0 28px;padding:10px 13px;border:1px solid #d9e7f7;border-radius:9px;background:#f5f9ff;color:#5d718b;font-size:10px;line-height:1.65}
.sheet-preview-shell{display:grid;grid-template-rows:46px minmax(0,1fr)}
.sheet-tabs{display:flex;align-items:end;gap:5px;padding:8px 10px 0;border-bottom:1px solid #dfe5ed;background:#f5f7fa;overflow-x:auto;white-space:nowrap}
.sheet-tabs button{height:31px;padding:0 14px;border:1px solid transparent;border-radius:8px 8px 0 0;background:transparent;color:#6d798b;font-size:10px;cursor:pointer}
.sheet-tabs button.active{border-color:#dfe5ed;border-bottom-color:#fff;background:#fff;color:#174b91;font-weight:700}
.sheet-content{min-height:0;overflow:hidden}
.sheet-table-scroll{width:100%;height:100%;overflow:auto;background:#fff;position:relative}
.sheet-preview-table{border-collapse:separate;border-spacing:0;min-width:100%;font-size:11px;color:#253146}
.sheet-preview-table th,.sheet-preview-table td{min-width:100px;max-width:360px;height:31px;padding:6px 9px;border-right:1px solid #e4e8ee;border-bottom:1px solid #e4e8ee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:#fff}
.sheet-preview-table tr:first-child th:not(.sheet-row-number){position:sticky;top:0;z-index:3;background:#f4f7fb;color:#3f4e65;font-weight:700}
.sheet-preview-table .sheet-row-number{position:sticky;left:0;z-index:2;min-width:48px;width:48px;max-width:48px;text-align:center;background:#f4f7fb;color:#8994a4;font-weight:500}
.sheet-preview-table tr:first-child .sheet-row-number{z-index:4;top:0}
.sheet-limit-note{position:sticky;left:0;bottom:0;padding:10px 14px;background:#fff8e8;color:#8a641f;font-size:10px;border-top:1px solid #efd9a6}

@media(max-width:760px){
  .preview-overlay{grid-template-rows:58px minmax(0,1fr)}
  .preview-header{padding:0 10px;gap:8px}
  .preview-file-info strong{max-width:40vw;font-size:12px}
  .preview-file-info span{font-size:9px}
  .preview-toolbar{gap:4px}
  .preview-toolbar button,.preview-toolbar a{height:32px;min-width:31px;padding:0 7px;font-size:10px}
  .preview-toolbar #previewFit{display:none!important}
  .preview-stage{padding:8px}
  .preview-box{width:100%;height:calc(100vh - 75px);min-height:260px}
  .docx-preview{padding:28px 20px;font-size:13px}
  .preview-conversion-note{margin:0 0 18px}
  .text-preview-content{padding:15px;font-size:11px}
  .sheet-preview-table th,.sheet-preview-table td{min-width:86px;height:29px;padding:5px 7px;font-size:10px}
}
