:root{font-family:system-ui,-apple-system,"Segoe UI","Microsoft YaHei",sans-serif;color:#1b2934;background:#f4f7fa;font-synthesis:none;line-height:1.6;color-scheme:light}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}a{color:#1669b0;text-decoration:none}a:hover{text-decoration:underline}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;padding:8px 16px;background:#1669b0;border:1px solid transparent;border-radius:8px;color:#fff;cursor:pointer;font-weight:600}button:hover,.button:hover{background:#10558f;text-decoration:none}button:disabled{opacity:.55;cursor:wait}.secondary{background:white;color:#245578;border-color:#cbd9e5}.secondary:hover{background:#eaf2f8}.danger{background:#a93838}.danger:hover{background:#832b2b}input,select{max-width:100%;width:100%;border:1px solid #bacad7;padding:10px 12px;border-radius:7px;background:white;color:inherit}input:focus,button:focus-visible,a:focus-visible,select:focus{outline:3px solid #9bc8ed;outline-offset:2px}input[type=checkbox]{width:20px;height:20px;accent-color:#1669b0}label{display:block;margin:16px 0 6px;font-weight:600}h1,h2,h3,p{overflow-wrap:anywhere}h1{font-size:26px;line-height:1.35;margin:0 0 10px}h2{font-size:21px;margin:0 0 12px}h3{margin:0;font-size:17px}header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:18px max(20px,calc((100vw - 1160px)/2));background:white;border-bottom:1px solid #e0e8ef}.brand{font-size:25px;font-weight:800;letter-spacing:.03em;color:#155a92;white-space:nowrap}nav,.actions,.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px}nav{font-size:14px}nav .username{max-width:170px;overflow-wrap:anywhere}nav button{padding:6px 12px;min-height:38px}main{max-width:1160px;padding:32px 20px 60px;margin:auto;min-width:0}.auth{max-width:420px;margin:5vh auto;background:white;border:1px solid #dfe7ee;border-radius:16px;padding:30px}.muted{color:#667889;font-size:14px}.auth button[type=submit]{width:100%;margin-top:24px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:18px;margin-top:24px}.card{padding:22px;background:white;border:1px solid #dfe7ee;border-radius:12px;min-width:0}.team-card{color:inherit;transition:box-shadow .15s}.team-card:hover{box-shadow:0 6px 22px #203d5212;text-decoration:none;border-color:#87b5d9}.team-icon{font-size:28px;margin-bottom:14px}.empty{padding:40px 16px;text-align:center;color:#667889;border:1px dashed #c7d4df;border-radius:12px;margin-top:24px}.toolbar{justify-content:space-between;margin-bottom:20px}.tabs{display:flex;gap:8px;margin:20px 0;flex-wrap:wrap}.tabs a{padding:9px 20px;background:white;border:1px solid #cfdae3;border-radius:8px}.tabs .selected{background:#1669b0;color:white;border-color:#1669b0}.breadcrumbs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:24px;overflow-wrap:anywhere}.files{background:white;border:1px solid #dfe7ee;border-radius:12px;overflow:hidden}.file-row{width:100%;display:grid;grid-template-columns:48px minmax(0,1fr) 95px 145px;gap:14px;align-items:center;text-align:left;padding:14px 18px;color:#1b2934;background:white;border:0;border-bottom:1px solid #e9eef3;border-radius:0;font-weight:400}.file-row:last-child{border-bottom:0}.file-row:hover{background:#edf5fb}.file-row .filename{overflow-wrap:anywhere}.file-icon{display:flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:7px;background:#eaf2f9;color:#386584;font-size:12px;font-weight:700;overflow:hidden}.file-icon img{width:100%;height:100%;object-fit:cover}.file-meta{font-size:13px;color:#6a7c8b}.list{display:grid;gap:12px}.record{display:flex;gap:20px;align-items:center;justify-content:space-between;padding:18px;background:white;border:1px solid #dfe7ee;border-radius:10px;min-width:0;flex-wrap:wrap}.record>div{min-width:0}.record p{margin:4px 0}.badge{font-size:12px;background:#e7f3eb;color:#326441;padding:3px 8px;border-radius:5px}.badge.off{background:#f4e8e8;color:#934343}.check{display:flex;gap:10px;align-items:flex-start;font-weight:400}.check input{flex:none;margin-top:3px}fieldset{border:1px solid #cbd8e2;border-radius:8px;margin:20px 0;padding:12px 16px}.error{color:#a32e32;margin:12px 0}.success{color:#247143}#notice{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);max-width:calc(100vw - 32px);background:#1c394f;color:white;padding:12px 20px;border-radius:10px;box-shadow:0 5px 30px #0002;z-index:5;overflow-wrap:anywhere}dialog{width:min(540px,calc(100vw - 24px));max-height:calc(100dvh - 32px);overflow:auto;border:1px solid #d1dce5;border-radius:14px;padding:24px;color:#1b2934}dialog::backdrop{background:#132c43a6}dialog.preview{width:min(1120px,calc(100vw - 24px))}dialog .modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}dialog .modal-head h2{min-width:0}dialog iframe{display:block;width:100%;height:65dvh;border:1px solid #dbe4ec;background:#fff;margin-top:16px;border-radius:6px}dialog .actions{margin-top:20px}.password-display{font-family:ui-monospace,monospace;font-size:28px;letter-spacing:5px;text-align:center;margin:24px 0}.log-detail{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;color:#627587}.log-filter{max-width:260px}.form-error:empty{display:none}
@media(max-width:600px){header{padding:14px 16px;gap:10px}nav{gap:6px}.brand{font-size:23px}main{padding:24px 16px 45px}h1{font-size:23px}.auth{padding:24px;margin:2vh auto}.file-row{grid-template-columns:40px minmax(0,1fr);gap:4px 12px;padding:13px 12px}.file-icon{grid-row:span 3;width:38px;height:38px}.file-row .file-meta{grid-column:2}.record{padding:16px;gap:12px}dialog{padding:18px}.card{padding:20px}.toolbar{align-items:flex-start}}
.file-entry { display: flex; align-items: center; min-width: 0; border-bottom: 1px solid #e9eef3; }
.file-entry:last-child { border-bottom: 0; }
.file-entry .file-row { min-width: 0; flex: 1; border-bottom: 0; }
.more-button { flex: none; margin-right: 12px; padding: 8px 10px; }
.drop-hint { border: 1px dashed #a9c4d8; border-radius: 8px; padding: 14px; color: #526f83; font-size: 14px; }
.drop-hint > p { margin: 0; }
#upload-slot { margin-top: 12px; max-height: 40vh; overflow-y: auto; color: #1b2934; }
#upload-slot h2 { font-size: 15px; margin: 0; }
.upload-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.upload-head button { min-height: 32px; padding: 4px 12px; font-size: 13px; }
#upload-slot .upload-job { padding: 10px 0; }
#upload-slot .upload-job:last-child { border-bottom: 0; }
.upload-panel { position: fixed; right: 16px; bottom: 16px; width: min(420px, calc(100vw - 32px)); max-height: 50vh; overflow-y: auto; z-index: 4; box-shadow: 0 6px 30px #0002; }
.upload-panel { max-width: 1120px; margin: 0 auto 40px; padding: 20px; background: white; border: 1px solid #dfe7ee; border-radius: 12px; }
.upload-job { display: flex; align-items: center; gap: 16px; padding: 14px 0; border-bottom: 1px solid #e9eef3; }
.upload-info { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.upload-info p { margin: 4px 0; }
progress { width: 100%; height: 12px; accent-color: #1669b0; }
.folder-picker { display: grid; gap: 8px; }
.folder-picker button { justify-content: flex-start; overflow-wrap: anywhere; text-align: left; }
.breadcrumbs > button { max-width: 100%; min-width: 0; overflow-wrap: anywhere; }
.site-version { padding: 12px 16px 24px; text-align: center; font-size: 12px; color: #667889; }
.selection-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; margin: 12px 0; }
.select-all, .file-select { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 0; min-width: 44px; min-height: 44px; cursor: pointer; flex: none; }
.file-select input, .select-all input { width: 22px; height: 22px; margin: 0; }
.row-download { flex: none; padding: 8px; margin-right: 8px; }
#download-selected[hidden] { display: none; }
@media(max-width:600px) { .file-entry { flex-wrap: wrap; } .file-entry .file-row { flex-basis: calc(100% - 44px); } .file-entry .row-download { margin-left: auto; } .file-entry .more-button { margin-left: auto; margin-bottom: 8px; } .file-entry .row-download + .more-button { margin-left: 0; } }
.sync-warning { padding: 14px; background: #fff4df; border-radius: 8px; margin: 16px 0; overflow-wrap: anywhere; }
@media(max-width:600px) { .upload-panel { padding: 16px; } .more-button { margin-right: 8px; padding: 8px; } }
