:root{--bg:#f7fafc;--card:#fff;--line:#e5e7eb;--text:#0f172a;--muted:#64748b;--accent:#2563eb;--thead:#f8fafc;--hover:#f1f5f9;--shadow:0 6px 20px #0f172a14}*{box-sizing:border-box}html,body{height:100%}body{color:var(--text);background:linear-gradient(#fbfdff 0%,#f7fafc 100%);margin:0;font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial}.wrap{max-width:1000px;margin:40px auto;padding:0 16px}.topbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.crumbs{flex:auto;font-size:13px}.crumbs a{color:var(--muted);text-decoration:none}.crumbs a:hover{color:var(--text);text-decoration:underline}.searchbar{align-items:center;gap:8px;display:flex}.searchwrap{align-items:center;display:flex;position:relative}.searchwrap input[type=text]{border:1px solid var(--line);min-width:220px;height:34px;box-shadow:var(--shadow);background:#fff;border-radius:10px;outline:none;padding:0 36px 0 12px}.searchwrap input[type=text]:focus{border-color:var(--accent)}.clearbtn{cursor:pointer;color:#94a3b8;background:0 0;border:0;padding:0 4px;font-size:18px;line-height:1;position:absolute;top:50%;right:8px;transform:translateY(-50%)}.clearbtn:hover{color:#0f172a}.btn{border:1px solid var(--line);color:var(--text);box-shadow:var(--shadow);font:inherit;cursor:pointer;background:#fff;border-radius:10px;padding:7px 12px;text-decoration:none;display:inline-block}.btn:hover{border-color:var(--accent);color:#0b1b4e}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{color:#fff;background:#1d4ed8;border-color:#1d4ed8}.btn-danger{color:#b91c1c}.btn-danger:hover{color:#991b1b;border-color:#dc2626}.panel{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;overflow:auto}table{border-collapse:separate;border-spacing:0;width:100%}th,td{border-bottom:1px solid var(--line);padding:14px 16px}thead th{z-index:1;background:linear-gradient(180deg,var(--thead),#eef2f7);color:#0b1b4e;text-align:left;border-bottom:1px solid var(--line);font-weight:700;position:sticky;top:0}tbody tr:hover td{background:var(--hover)}.namecell{align-items:center;gap:10px;display:flex}.icon{text-align:center;width:26px}.icon i{font-size:1.2em;line-height:1}.fa-fw{width:1.25em}.sort{color:inherit;text-decoration:none}.sort:hover{color:var(--accent);text-decoration:underline}.dlbtn{border:1px solid var(--line);width:32px;height:32px;color:var(--muted);background:#fff;border-radius:9px;justify-content:center;align-items:center;text-decoration:none;transition:border-color .12s,color .12s,background .12s;display:inline-flex}.dlbtn:hover{border-color:var(--accent);color:var(--accent);background:#eff6ff}.dlbtn:active{background:#dbeafe}.dlbtn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.type-folder{color:#7c3aed}.type-pdf{color:#dc2626}.type-word{color:#2563eb}.type-excel{color:#16a34a}.type-ppt{color:#d97706}.type-image{color:#059669}.type-video{color:#ea580c}.type-audio{color:#4f46e5}.type-archive{color:#db2777}.type-code{color:#0284c7}.type-text{color:#475569}.type-bin{color:#8b5cf6}.type-app{color:#0ea5e9}.type-vector{color:#ea580c}.type-cad{color:#06b6d4}.pagehead{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.pagehead h1{color:#0b1b4e;margin:0;font-size:20px}.actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;padding:20px}.card+.card{margin-top:16px}.card h2{color:#0b1b4e;margin:0 0 12px;font-size:16px}.muted{color:var(--muted)}.field{margin-bottom:12px}.field label{color:#0b1b4e;margin-bottom:6px;font-weight:600;display:block}.field input[type=text],.field input[type=password],.field select{border:1px solid var(--line);width:100%;height:38px;font:inherit;color:var(--text);background:#fff;border-radius:10px;outline:none;padding:0 12px}.field input:focus,.field select:focus{border-color:var(--accent)}.hint{color:var(--muted);margin-top:4px;font-size:12px}.alert{border-radius:10px;margin-bottom:12px;padding:10px 12px;font-size:13px}.alert-error{color:#991b1b;background:#fef2f2;border:1px solid #fecaca}.alert-ok{color:#166534;background:#f0fdf4;border:1px solid #bbf7d0}.dropzone{text-align:center;cursor:pointer;background:#fbfdff;border:2px dashed #cbd5e1;border-radius:14px;padding:36px 20px;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.drag{border-color:var(--accent);background:#eff6ff}.dropzone i{color:var(--accent);margin-bottom:10px;font-size:32px;display:block}.dropzone strong{margin-bottom:4px;font-size:15px;display:block}.filelist{margin:16px 0 0;padding:0;list-style:none}.filerow{border:1px solid var(--line);background:#fff;border-radius:12px;margin-bottom:10px;padding:12px 14px}.filerow-top{justify-content:space-between;align-items:center;gap:10px;display:flex}.filerow-name{align-items:center;gap:10px;min-width:0;display:flex}.filerow-name span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.filerow-meta{color:var(--muted);white-space:nowrap;font-size:12px}.bar{background:#e2e8f0;border-radius:999px;height:8px;margin-top:10px;overflow:hidden}.bar>div{background:var(--accent);width:0;height:100%;transition:width .15s linear}.bar.done>div{background:#16a34a}.bar.err>div{background:#dc2626}.status{margin-top:6px;font-size:12px}.status.ok{color:#166534}.status.err{color:#b91c1c}.loginwrap{max-width:400px;margin:80px auto;padding:0 16px}.logintitle{text-align:center;margin-bottom:18px}.logintitle h1{color:#0b1b4e;margin:0 0 4px;font-size:20px}.adminlist{border-collapse:separate;border-spacing:0;width:100%}.adminlist th,.adminlist td{border-bottom:1px solid var(--line);text-align:left;padding:10px 12px}.adminlist th{color:#0b1b4e;font-size:13px;font-weight:700}.adminlist tr:last-child td{border-bottom:0}.you{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;margin-left:6px;padding:1px 8px;font-size:11px}@media (max-width:640px){.wrap{margin:20px auto}th,td{padding:12px}.searchwrap input[type=text]{min-width:160px}.loginwrap{margin:40px auto}.panel thead th:nth-child(3),.panel tbody td:nth-child(3){display:none}.panel th:first-child,.panel td:first-child{padding-right:8px}.dlbtn{width:30px;height:30px}}
