:root{--bg: #ffffff;--surface: #f0f4f9;--surface-2: #e9eef6;--elevated: #ffffff;--text: #1f1f1f;--text-2: #5f6368;--text-3: #80868b;--border: rgba(0, 0, 0, .08);--accent: #0b57d0;--accent-soft: #d3e3fd;--danger: #d93025;--success: #188038;--shadow: 0 1px 3px rgba(60, 64, 67, .18), 0 4px 12px rgba(60, 64, 67, .12);--sheet-shadow: 0 -4px 24px rgba(0, 0, 0, .18);--overlay: rgba(0, 0, 0, .45)}[data-theme=dark]{--bg: #131314;--surface: #1e1f20;--surface-2: #28292a;--elevated: #1e1f20;--text: #e3e3e3;--text-2: #9aa0a6;--text-3: #757a80;--border: rgba(255, 255, 255, .09);--accent: #a8c7fa;--accent-soft: #0e2a52;--danger: #f28b82;--success: #81c995;--shadow: 0 1px 3px rgba(0, 0, 0, .5), 0 4px 12px rgba(0, 0, 0, .35);--sheet-shadow: 0 -4px 24px rgba(0, 0, 0, .55);--overlay: rgba(0, 0, 0, .6)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:15px;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}button{font-family:inherit;border:none;background:none;color:inherit;cursor:pointer;padding:0}input{font-family:inherit;color:inherit}.app{min-height:100dvh;display:flex;flex-direction:column;max-width:720px;margin:0 auto;padding-bottom:calc(72px + env(safe-area-inset-bottom))}.topbar{position:sticky;top:0;z-index:30;padding:calc(10px + env(safe-area-inset-top)) 16px 10px;background:var(--bg);display:flex;align-items:center;gap:10px}.search-pill{flex:1;display:flex;align-items:center;gap:10px;background:var(--surface);border-radius:24px;padding:0 16px;height:48px;color:var(--text-2)}.search-pill input{flex:1;border:none;background:transparent;outline:none;font-size:15px;color:var(--text);min-width:0}.avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#0b57d0,#6d28d9);color:#fff;font-weight:600;font-size:15px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.page{flex:1;padding:0 16px 24px}.section-title{font-size:16px;font-weight:600;margin:18px 0 10px}.toolbar{display:flex;align-items:center;justify-content:space-between;margin:8px 0 4px;min-height:40px;gap:8px}.crumbs{display:flex;align-items:center;gap:2px;overflow-x:auto;scrollbar-width:none;font-size:14px;color:var(--text-2);flex:1}.crumbs::-webkit-scrollbar{display:none}.crumb{padding:6px 8px;border-radius:8px;white-space:nowrap;font-weight:500}.crumb.current{color:var(--text);font-weight:600}.crumb:not(.current):active{background:var(--surface)}.crumb-sep{color:var(--text-3);flex-shrink:0}.icon-btn{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-2);flex-shrink:0;transition:background .15s}.icon-btn:active{background:var(--surface)}.file-list{display:flex;flex-direction:column}.file-row{display:flex;align-items:center;gap:14px;padding:9px 4px;border-radius:12px;cursor:pointer;transition:background .15s}.file-row:active{background:var(--surface)}.file-thumb{width:44px;height:44px;border-radius:10px;display:flex;align-items:center;justify-content:center;background:var(--surface);overflow:hidden;flex-shrink:0}.file-thumb img{width:100%;height:100%;object-fit:cover}.file-info{flex:1;min-width:0}.file-name{font-size:14.5px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-meta{font-size:12.5px;color:var(--text-2);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.grid-card{background:var(--elevated);border:1px solid var(--border);border-radius:14px;overflow:hidden;cursor:pointer}.grid-card:active{background:var(--surface)}.grid-thumb{height:110px;background:var(--surface);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-thumb img{width:100%;height:100%;object-fit:cover}.grid-foot{display:flex;align-items:center;gap:8px;padding:8px 6px 8px 10px}.grid-foot .file-name{flex:1;font-size:13px}.folder-row{display:flex;align-items:center;gap:14px;padding:11px 4px;border-radius:12px;cursor:pointer}.folder-row:active{background:var(--surface)}.fab{position:fixed;right:18px;bottom:calc(86px + env(safe-area-inset-bottom));width:58px;height:58px;border-radius:18px;background:var(--elevated);color:var(--accent);box-shadow:var(--shadow);display:flex;align-items:center;justify-content:center;z-index:40;border:1px solid var(--border);transition:transform .15s}.fab:active{transform:scale(.94)}.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;justify-content:space-around;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-top:1px solid var(--border);padding:6px 8px calc(8px + env(safe-area-inset-bottom))}.tab{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;font-weight:500;color:var(--text-2);padding:4px 18px;border-radius:14px}.tab.active{color:var(--accent)}.tab .tab-pill{padding:3px 16px;border-radius:14px}.tab.active .tab-pill{background:var(--accent-soft)}.sheet-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);z-index:90;animation:fade-in .2s ease}.sheet{position:fixed;left:0;right:0;bottom:0;z-index:100;background:var(--elevated);border-radius:22px 22px 0 0;box-shadow:var(--sheet-shadow);padding:8px 16px calc(20px + env(safe-area-inset-bottom));max-width:720px;margin:0 auto;animation:slide-up .25s cubic-bezier(.2,.9,.3,1);max-height:80dvh;overflow-y:auto}.sheet-handle{width:36px;height:4px;border-radius:2px;background:var(--text-3);opacity:.5;margin:6px auto 12px}.sheet-header{display:flex;align-items:center;gap:14px;padding:4px 4px 14px;border-bottom:1px solid var(--border);margin-bottom:8px}.sheet-item{display:flex;align-items:center;gap:16px;padding:13px 8px;border-radius:12px;font-size:15px;font-weight:500;width:100%;text-align:left}.sheet-item:active{background:var(--surface)}.sheet-item.danger{color:var(--danger)}.sheet-item svg{color:var(--text-2);flex-shrink:0}.sheet-item.danger svg{color:var(--danger)}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.upload-card{background:var(--elevated);border:1px solid var(--border);border-radius:14px;padding:12px 14px;margin-bottom:8px;box-shadow:var(--shadow)}.upload-name{font-size:13px;font-weight:500;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.progress-track{height:5px;border-radius:3px;background:var(--surface-2);overflow:hidden}.progress-bar{height:100%;background:var(--accent);border-radius:3px;transition:width .2s}.uploads-dock{position:fixed;left:16px;right:16px;bottom:calc(80px + env(safe-area-inset-bottom));z-index:60;max-width:480px;margin:0 auto}.toast{position:fixed;top:calc(14px + env(safe-area-inset-top));left:50%;transform:translate(-50%);background:#202124;color:#fff;padding:11px 20px;border-radius:24px;font-size:13.5px;font-weight:500;z-index:200;box-shadow:var(--shadow);animation:fade-in .2s ease;max-width:calc(100vw - 40px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.toast.err{background:var(--danger);color:#fff}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000f5;z-index:150;display:flex;flex-direction:column}.lightbox-top{display:flex;align-items:center;gap:8px;padding:calc(10px + env(safe-area-inset-top)) 12px 10px;color:#fff}.lightbox-title{flex:1;font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.lightbox-body{flex:1;display:flex;align-items:center;justify-content:center;padding:12px;min-height:0}.lightbox-body img,.lightbox-body video{max-width:100%;max-height:100%;border-radius:8px}.lightbox .icon-btn{color:#fff}.lightbox .icon-btn:active{background:#ffffff26}.lightbox-fallback{color:#bbb;text-align:center;font-size:14px}.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:380px;text-align:center}.login-logo{width:72px;height:72px;border-radius:22px;margin:0 auto 18px;background:linear-gradient(135deg,#0b57d0,#6d28d9);display:flex;align-items:center;justify-content:center;color:#fff}.login-card h1{font-size:22px;font-weight:700;margin:0 0 4px}.login-card .sub{color:var(--text-2);font-size:14px;margin:0 0 28px}.login-input{width:100%;height:50px;border-radius:14px;border:1px solid var(--border);background:var(--surface);padding:0 16px;font-size:15px;margin-bottom:12px;outline:none}.login-input:focus{border-color:var(--accent)}.login-btn{width:100%;height:50px;border-radius:14px;background:var(--accent);color:var(--bg);font-size:16px;font-weight:600;margin-top:6px}.login-btn:disabled{opacity:.6}.login-err{background:color-mix(in srgb,var(--danger) 12%,transparent);color:var(--danger);border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:12px}.google-btn{display:flex;justify-content:center;min-height:44px;margin-bottom:4px}.google-btn-placeholder{font-size:13px;color:var(--text-2);align-self:center}.divider{display:flex;align-items:center;gap:12px;margin:18px 0;color:var(--text-3);font-size:12.5px}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}.empty{text-align:center;padding:56px 20px;color:var(--text-2)}.empty svg{opacity:.4;margin-bottom:12px}.empty p{margin:0;font-weight:500}.empty span{font-size:13px;color:var(--text-3)}.skeleton-row{display:flex;align-items:center;gap:14px;padding:10px 4px}.sk{background:var(--surface);border-radius:8px;animation:pulse 1.4s ease-in-out infinite}.sk-thumb{width:44px;height:44px;border-radius:10px;flex-shrink:0}.sk-line{height:12px;flex:1;max-width:220px}@keyframes pulse{0%,to{opacity:1}50%{opacity:.45}}.dialog-input{width:100%;height:48px;border-radius:12px;border:1.5px solid var(--accent);background:var(--surface);padding:0 14px;font-size:15px;outline:none;margin:8px 0 16px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}.dialog-btn{padding:10px 18px;border-radius:20px;font-size:14px;font-weight:600}.dialog-btn.primary{background:var(--accent);color:var(--bg)}.dialog-btn.ghost{color:var(--accent)}.dialog-btn:disabled{opacity:.5}@media (min-width: 720px){.file-grid{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}}
