*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0a0a0a;--surface:#111;--surface2:#1a1a1a;--border:#2a2a2a;--border-hover:#444;--text:#e8e8e8;--text-muted:#666;--text-dim:#999;--accent:#e8c547;--accent-dim:#e8c5471f;--accent-hover:#e8c54733;--folder:#6b9adb;--folder-dim:#6b9adb1a;--danger:#e05252;--mono:"IBM Plex Mono",monospace;--sans:"IBM Plex Sans",sans-serif;--radius:4px}html,body{height:100%}body{font-family:var(--sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}a{color:inherit;text-decoration:none}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--border-hover)}.login-page{background:var(--bg);background-image:linear-gradient(#ffffff04 1px,#0000 1px),linear-gradient(90deg,#ffffff04 1px,#0000 1px);background-size:40px 40px;justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:var(--surface);border:1px solid var(--border);width:380px;padding:40px}.login-logo{align-items:center;gap:10px;margin-bottom:36px;display:flex}.login-logo-icon{background:var(--accent);width:32px;height:32px;font-family:var(--mono);color:#0a0a0a;justify-content:center;align-items:center;font-size:16px;font-weight:600;display:flex}.login-logo-text{font-family:var(--mono);color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:13px}.login-title{letter-spacing:-.02em;margin-bottom:6px;font-size:20px;font-weight:600}.login-subtitle{color:var(--text-muted);margin-bottom:32px;font-size:13px}.form-group{margin-bottom:16px}.form-label{font-family:var(--mono);color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;margin-bottom:8px;font-size:11px;display:block}.form-input{background:var(--surface2);border:1px solid var(--border);width:100%;color:var(--text);font-family:var(--mono);border-radius:var(--radius);outline:none;padding:10px 12px;font-size:13px;transition:border-color .15s}.form-input:focus{border-color:var(--accent)}.form-input::placeholder{color:var(--text-muted)}.btn-primary{background:var(--accent);color:#0a0a0a;width:100%;font-family:var(--mono);letter-spacing:.06em;cursor:pointer;border-radius:var(--radius);border:none;margin-top:8px;padding:12px;font-size:13px;font-weight:600;transition:opacity .15s,transform .1s}.btn-primary:hover{opacity:.9}.btn-primary:active{transform:scale(.99)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.error-msg{color:var(--danger);border-radius:var(--radius);background:#e052521a;border:1px solid #e052524d;margin-bottom:16px;padding:10px 12px;font-size:13px}.app-layout{flex-direction:column;min-height:100vh;display:flex}.topbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;align-items:center;gap:16px;height:52px;padding:0 24px;display:flex;position:sticky;top:0}.topbar-logo{flex-shrink:0;align-items:center;gap:8px;display:flex}.topbar-logo-icon{background:var(--accent);width:26px;height:26px;font-family:var(--mono);color:#0a0a0a;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:flex}.topbar-logo-text{font-family:var(--mono);color:var(--text-muted);letter-spacing:.08em;text-transform:uppercase;font-size:12px}.topbar-sep{background:var(--border);width:1px;height:20px}.breadcrumb{font-family:var(--mono);color:var(--text-muted);flex:1;align-items:center;gap:4px;font-size:12px;display:flex;overflow:hidden}.breadcrumb-item{cursor:pointer;color:var(--text-muted);white-space:nowrap;transition:color .15s}.breadcrumb-item:hover{color:var(--accent)}.breadcrumb-item.active{color:var(--text);cursor:default}.breadcrumb-sep{color:var(--border-hover);-webkit-user-select:none;user-select:none}.topbar-actions{align-items:center;gap:8px;margin-left:auto;display:flex}.btn-logout{border:1px solid var(--border);color:var(--text-muted);font-family:var(--mono);letter-spacing:.06em;cursor:pointer;border-radius:var(--radius);background:0 0;padding:6px 12px;font-size:11px;transition:all .15s}.btn-logout:hover{border-color:var(--danger);color:var(--danger)}.main-content{flex:1;width:100%;max-width:960px;margin:0 auto;padding:32px 24px}.section-header{align-items:baseline;gap:12px;margin-bottom:20px;display:flex}.section-path{font-family:var(--mono);color:var(--text);font-size:18px;font-weight:600}.section-count{font-family:var(--mono);color:var(--text-muted);font-size:12px}.file-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;margin-bottom:40px;display:grid}.file-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;flex-direction:column;gap:10px;padding:16px;transition:all .15s;display:flex;position:relative;overflow:hidden}.file-card:before{content:"";background:0 0;height:2px;transition:background .15s;position:absolute;top:0;left:0;right:0}.file-card.folder:before{background:var(--folder)}.file-card.file-item:before{background:0 0}.file-card:hover{border-color:var(--border-hover);background:var(--surface2);transform:translateY(-1px)}.file-card.folder:hover{background:var(--folder-dim);border-color:var(--folder)}.file-card.file-item:hover{background:var(--accent-dim);border-color:var(--accent)}.file-icon{font-size:28px;line-height:1}.file-name{word-break:break-word;font-size:13px;font-weight:500;line-height:1.3}.file-meta{font-family:var(--mono);color:var(--text-muted);margin-top:auto;font-size:11px}.back-btn{font-family:var(--mono);color:var(--text-muted);border:1px solid var(--border);cursor:pointer;border-radius:var(--radius);background:0 0;align-items:center;gap:8px;margin-bottom:24px;padding:7px 14px;font-size:12px;transition:all .15s;display:inline-flex}.back-btn:hover{border-color:var(--border-hover);color:var(--text)}.state-box{min-height:200px;color:var(--text-muted);font-family:var(--mono);flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:13px;display:flex}.spinner{border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.footer{border-top:1px solid var(--border);font-family:var(--mono);color:var(--text-muted);justify-content:center;align-items:center;gap:8px;padding:16px 24px;font-size:11px;display:flex}.footer-dot{background:var(--border-hover);border-radius:50%;width:3px;height:3px}.btn-upload{background:var(--accent);color:#0a0a0a;font-family:var(--mono);letter-spacing:.06em;cursor:pointer;border-radius:var(--radius);border:none;padding:6px 14px;font-size:11px;font-weight:600;transition:opacity .15s}.btn-upload:hover{opacity:.85}.modal-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background:#000000b3;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:20px;width:100%;max-width:520px;max-height:90vh;padding:28px;display:flex;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;display:flex}.modal-title{letter-spacing:-.01em;font-size:16px;font-weight:600}.modal-close{color:var(--text-muted);cursor:pointer;border-radius:var(--radius);background:0 0;border:none;padding:4px 8px;font-size:14px;transition:color .15s}.modal-close:hover{color:var(--text)}.dropzone{border:1px dashed var(--border);border-radius:var(--radius);cursor:pointer;text-align:center;color:var(--text-muted);flex-direction:column;align-items:center;gap:8px;padding:32px 20px;font-size:13px;transition:all .15s;display:flex}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:var(--accent-dim);color:var(--text)}.dropzone.has-files{border-color:var(--border-hover);background:var(--surface2);border-style:solid}.modal-section{flex-direction:column;gap:8px;display:flex}.modal-section-label{font-family:var(--mono);color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;font-size:11px}.folder-tree-box{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface2);max-height:180px;overflow-y:auto}.folder-tree-item{cursor:pointer;color:var(--text-dim);white-space:nowrap;align-items:center;padding:7px 12px;font-size:13px;transition:background .1s,color .1s;display:flex}.folder-tree-item:hover{background:var(--border);color:var(--text)}.folder-tree-item.active{background:var(--folder-dim);color:var(--folder);font-weight:500}.btn-new-folder{border:1px dashed var(--border);color:var(--text-muted);font-family:var(--mono);cursor:pointer;border-radius:var(--radius);text-align:left;background:0 0;padding:7px 12px;font-size:11px;transition:all .15s}.btn-new-folder:hover{border-color:var(--accent);color:var(--accent)}.new-folder-row{align-items:center;gap:8px;display:flex}.upload-result{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:8px 0;font-size:13px;display:flex}.upload-result:last-child{border-bottom:none}.upload-result.ok{color:var(--text)}.upload-result.error{color:var(--danger)}.storage-bar-wrap{flex-shrink:0;align-items:center;gap:8px;display:flex}.storage-bar-track{background:var(--border);border-radius:2px;width:120px;height:4px;overflow:hidden}.storage-bar-fill{border-radius:2px;height:100%;transition:width .4s}.storage-bar-label{font-family:var(--mono);color:var(--text-muted);white-space:nowrap;font-size:11px}.btn-tab{border:1px solid var(--border);color:var(--text-muted);font-family:var(--mono);letter-spacing:.04em;cursor:pointer;border-radius:var(--radius);background:0 0;padding:6px 12px;font-size:11px;transition:all .15s}.btn-tab:hover{border-color:var(--border-hover);color:var(--text)}.btn-tab.active{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}.file-list{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.file-list-header{background:var(--surface2);border-bottom:1px solid var(--border);font-family:var(--mono);color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:12px;padding:8px 16px;font-size:11px;display:flex}.file-list-row{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 16px;transition:background .1s;display:flex}.file-list-row:last-child{border-bottom:none}.file-list-row:hover{background:var(--surface2)}.file-list-row.deleting{opacity:.4;pointer-events:none}.file-list-icon{flex-shrink:0;font-size:16px}.file-list-key{font-family:var(--mono);color:var(--text-dim);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12px;transition:color .15s;overflow:hidden}.file-list-key:hover{color:var(--accent)}.file-list-size{text-align:right;width:90px;font-family:var(--mono);color:var(--text-muted);flex-shrink:0;font-size:11px}.file-list-confirm{flex-shrink:0;align-items:center;gap:6px;display:flex}.btn-delete{color:var(--text-muted);cursor:pointer;border-radius:var(--radius);text-align:right;background:0 0;border:1px solid #0000;flex-shrink:0;width:80px;padding:4px 8px;font-size:14px;transition:all .15s}.btn-delete:hover{color:var(--danger);background:#e052520f;border-color:#e052524d}.btn-delete-confirm{background:var(--danger);color:#fff;font-family:var(--mono);cursor:pointer;border-radius:var(--radius);border:none;padding:5px 10px;font-size:11px;font-weight:600;transition:opacity .15s}.btn-delete-confirm:hover{opacity:.85}.btn-cancel-delete{border:1px solid var(--border);color:var(--text-muted);font-family:var(--mono);cursor:pointer;border-radius:var(--radius);background:0 0;padding:5px 10px;font-size:11px;transition:all .15s}.btn-cancel-delete:hover{border-color:var(--border-hover);color:var(--text)}.btn-card-delete{color:#0000;cursor:pointer;border-radius:var(--radius);background:0 0;border:none;padding:2px 4px;font-size:13px;line-height:1;transition:all .15s}.file-card:hover .btn-card-delete{color:var(--text-muted)}.btn-card-delete:hover{background:#e0525214;color:var(--danger)!important}.deleting-card{opacity:.4;pointer-events:none}.nav-progress-bar{background:linear-gradient(90deg,var(--accent)0%,transparent 100%);z-index:9;height:2px;animation:.8s ease-in-out infinite alternate nav-progress;position:fixed;top:52px;left:0;right:0}@keyframes nav-progress{0%{opacity:.5;transform-origin:0;transform:scaleX(.3)}to{opacity:1;transform-origin:0;transform:scaleX(1)}}.btn-copy-link{border:1px solid var(--border,#333);color:var(--text-muted,#aaa);cursor:pointer;background:0 0;border-radius:6px;align-items:center;gap:.3rem;padding:.3rem .75rem;font-size:.8rem;transition:color .15s,border-color .15s;display:inline-flex}.btn-copy-link:hover{color:var(--text,#e5e5e5);border-color:var(--text-muted,#aaa)}.btn-copy-link:disabled,.btn-copy-link[data-copied=true]{color:#4ade80;cursor:default;border-color:#4ade80}
