:root{--bg: #f4f6f2;--bg-soft: #eef3ee;--surface: #ffffff;--surface-muted: #f8faf6;--surface-strong: #eef4ee;--ink: #16201d;--ink-soft: #35433e;--muted: #68746f;--muted-2: #8a958f;--line: #dde6dd;--line-strong: #c7d5cb;--accent: #276f5b;--accent-strong: #195241;--accent-soft: #e3f0e9;--accent-wash: #f1f7f3;--amber: #a8642a;--amber-soft: #fbefe2;--danger: #b33b2e;--danger-soft: #fff0ed;--folder: #5f8fd8;--shadow-soft: 0 18px 50px rgba(32, 50, 42, .08);--shadow-tight: 0 10px 26px rgba(31, 48, 42, .08);--radius-lg: 14px;--radius-md: 10px;--radius-sm: 7px}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:linear-gradient(180deg,#ffffffb3,#f4f6f2fa 34%,#edf3ee);color:var(--ink);font-family:Avenir Next,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;margin:0;min-height:100vh;text-rendering:optimizeLegibility}body:before{background-image:radial-gradient(rgba(22,32,29,.18) .5px,transparent .5px);background-size:18px 18px;content:"";top:0;right:0;bottom:0;left:0;opacity:.09;pointer-events:none;position:fixed;z-index:-1}button,input,select,textarea{font:inherit}button{align-items:center;background:#ffffffc7;border:1px solid var(--line-strong);border-radius:var(--radius-sm);color:var(--ink);cursor:pointer;display:inline-flex;font-weight:650;gap:7px;justify-content:center;min-height:38px;padding:0 13px;transition:background .18s ease,border-color .18s ease,box-shadow .18s ease,color .18s ease,transform .18s ease;white-space:nowrap}button svg{flex:0 0 auto;stroke-width:2.15}button:hover:not(:disabled){background:var(--surface);border-color:#9fb2a7;box-shadow:0 8px 20px #1f302a14;transform:translateY(-1px)}button:active:not(:disabled){box-shadow:none;transform:translateY(0)}button:disabled{cursor:not-allowed;opacity:.58}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid rgba(39,111,91,.2);outline-offset:2px}input,select,textarea{background:#ffffffeb;border:1px solid var(--line-strong);border-radius:var(--radius-sm);color:var(--ink);min-height:38px;min-width:0;padding:0 11px;transition:background .18s ease,border-color .18s ease,box-shadow .18s ease;width:100%}input:hover,select:hover,textarea:hover{border-color:#a9baaf}input::placeholder,textarea::placeholder{color:var(--muted-2)}textarea{line-height:1.55;resize:vertical}.shell{margin:0 auto;max-width:1180px;padding:30px clamp(16px,3vw,36px) 52px}.topbar{align-items:center;border-bottom:1px solid rgba(199,213,203,.72);display:flex;gap:18px;justify-content:space-between;margin-bottom:22px;padding:4px 0 20px}.simple-topbar{min-height:220px}.brand-block{align-items:center;display:flex;gap:14px;min-width:0}.brand-mark{align-items:center;background:var(--ink);border-radius:10px;box-shadow:inset 0 0 0 1px #ffffff14,0 12px 26px #16201d24;color:#f6f8f2;display:inline-flex;flex:0 0 auto;font-size:13px;font-weight:800;height:42px;justify-content:center;letter-spacing:0;width:42px}.topbar h1{color:var(--ink);font-size:36px;letter-spacing:0;line-height:1.05;margin:3px 0 0}.topbar p{color:var(--muted);line-height:1.5;margin:6px 0 0;overflow-wrap:anywhere}.eyebrow,.topbar-kicker{color:var(--accent);font-size:12px;font-weight:800;letter-spacing:0;text-transform:uppercase}.topbar-kicker{background:var(--accent-soft);border:1px solid #c5ded0;border-radius:999px;color:var(--accent-strong);padding:7px 11px;white-space:nowrap}.expiry{background:#ffffffb8;border:1px solid var(--line);border-radius:999px;color:var(--ink-soft);font-variant-numeric:tabular-nums;font-weight:650;padding:8px 12px;white-space:nowrap}.toolbar{align-items:center;background:#ffffffb8;border:1px solid rgba(199,213,203,.82);border-radius:var(--radius-lg);box-shadow:var(--shadow-tight);display:flex;flex-wrap:wrap;gap:9px;justify-content:flex-end;margin-bottom:12px;padding:10px}.target-path-control{display:flex;flex:1 1 420px;gap:8px;margin-right:auto;min-width:280px}.target-path-control input{flex:1}.target-path-control button{flex:0 0 auto}.primary{background:var(--accent);border-color:var(--accent);color:#fff}.primary:hover:not(:disabled){background:var(--accent-strong);border-color:var(--accent-strong);box-shadow:0 10px 24px #276f5b33}.danger{background:var(--danger);border-color:var(--danger);color:#fff}.danger:hover:not(:disabled){background:#9e3026;border-color:#9e3026}.danger-outline{background:var(--danger-soft);border-color:#efb5ac;color:var(--danger)}.danger-outline:hover:not(:disabled){background:#ffe7e1;border-color:#d7796c;color:#8e2b22}.notice{background:var(--amber-soft);border:1px solid #e7c29e;border-left:4px solid var(--amber);border-radius:var(--radius-md);color:#714117;line-height:1.5;margin-bottom:14px;overflow-wrap:anywhere;padding:11px 13px}.upload-target{background:var(--accent-wash);border:1px solid #cde3d6;border-left:4px solid var(--accent);border-radius:var(--radius-md);color:var(--ink-soft);font-weight:650;line-height:1.5;margin:0 0 16px;overflow-wrap:anywhere;padding:10px 13px}.load-address-panel{background:#ffffffc2;border:1px solid rgba(199,213,203,.82);border-radius:var(--radius-md);box-shadow:var(--shadow-tight);display:grid;gap:11px;margin:0 0 16px;padding:12px}.load-address-heading{align-items:center;display:flex;gap:10px;min-width:0}.load-address-heading svg{color:var(--accent);flex:0 0 auto}.load-address-heading span{color:var(--muted);display:block;font-size:12px;font-weight:800;line-height:1.35}.load-address-heading strong{color:var(--ink);display:block;line-height:1.45;overflow-wrap:anywhere}.load-address-list{display:grid;gap:8px}.load-address-row{align-items:center;display:grid;gap:8px;grid-template-columns:72px minmax(0,1fr) auto}.load-address-row>span{color:var(--muted);font-size:12px;font-weight:800}.load-address-row code{background:var(--surface);border:1px solid #e4ece4;border-radius:var(--radius-sm);color:var(--ink-soft);display:block;font-family:inherit;font-size:13px;line-height:1.45;overflow-wrap:anywhere;padding:8px 10px}.load-address-row button{min-width:38px;padding:0 10px}.success-notice{background:var(--accent-wash);border-color:#cde3d6;border-left-color:var(--accent);color:var(--accent-strong)}.upload-queue{background:#ffffffc7;border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-tight);display:grid;gap:10px;margin-bottom:16px;padding:12px}.upload-task{align-items:center;background:var(--surface);border:1px solid #edf2ed;border-radius:var(--radius-md);display:grid;gap:14px;grid-template-columns:minmax(0,1fr) 190px;min-height:64px;padding:12px}.upload-task strong,.upload-task span{display:block;min-width:0;overflow-wrap:anywhere}.upload-task span{color:var(--muted);font-size:13px;line-height:1.45;margin-top:4px}.upload-task.success{border-color:#c9e4d3}.upload-task.success span{color:#237548}.upload-task.failed{border-color:#efb5ac}.upload-task.failed span,.upload-error{color:var(--danger)}.upload-target-path{font-size:13px}.upload-task-side{display:grid;gap:8px}.upload-progress{align-items:center;display:grid;gap:7px}.upload-progress>span{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-weight:750;text-align:right}.upload-progress div{background:#e9eee9;border-radius:999px;height:8px;overflow:hidden}.upload-progress i{background:linear-gradient(90deg,var(--accent),#6b8f3c);display:block;height:100%}.breadcrumb{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}.breadcrumb button{background:#ffffffa8;font-weight:650;min-height:34px}.breadcrumb button:after{color:var(--muted-2);content:"/";margin-left:6px}.file-list{background:#ffffffe0;border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);overflow:hidden}.file-row{align-items:center;display:grid;gap:18px;grid-template-columns:minmax(0,1fr) auto;min-height:78px;padding:0 24px;transition:background .16s ease}.file-row:hover{background:var(--surface-muted)}.file-row+.file-row{border-top:1px solid #e8eee8}.file-main{min-width:0}.file-main strong,.file-main span{overflow-wrap:anywhere}.file-main strong{align-items:center;color:var(--ink);display:flex;font-size:15px;font-weight:750;gap:12px;line-height:1.35}.file-main span{color:var(--muted);display:block;font-size:13px;line-height:1.5;margin-top:5px}.folder-row .file-main strong{font-size:14px}.folder-row .file-main span{display:none}.folder-icon{color:var(--folder);fill:#8bb5ec;flex:0 0 auto;stroke:var(--folder)}.row-actions,.dialog-actions{display:flex;flex-wrap:wrap;gap:8px}.row-actions{justify-content:flex-end}.row-actions button{min-width:38px}.empty{color:var(--muted);line-height:1.6;padding:32px 18px;text-align:center}.modal{align-items:center;background:#16201d75;display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;padding:18px;position:fixed;z-index:40}.dialog{background:var(--surface);border:1px solid rgba(255,255,255,.72);border-radius:var(--radius-lg);box-shadow:0 24px 80px #16201d3d;max-width:400px;padding:22px;width:calc(100vw - 48px)}.dialog h2{font-size:20px;letter-spacing:0;line-height:1.3;margin:0 0 8px}.dialog p{color:var(--muted);line-height:1.55}.dialog-actions{justify-content:flex-end}.upload-dialog{display:grid;gap:16px;max-height:calc(100vh - 64px);max-width:740px;overflow:auto;padding:0}.upload-dialog-header{align-items:center;background:var(--surface-muted);border-bottom:1px solid var(--line);display:flex;gap:16px;justify-content:space-between;padding:19px 22px 15px}.upload-dialog-header h2{margin-bottom:4px}.upload-dialog-header p{color:var(--muted);margin:0;overflow-wrap:anywhere}.upload-dialog-header button{justify-content:center;min-width:38px;padding:0}.upload-dialog-steps{align-items:center;border-bottom:1px solid var(--line);color:var(--ink-soft);display:flex;gap:10px;margin:-16px 22px 2px;min-height:50px}.upload-dialog-steps span{align-items:center;background:var(--accent);border:1px solid var(--accent);border-radius:9px;color:#fff;display:inline-flex;font-weight:800;height:28px;justify-content:center;width:28px}.upload-picker-actions{display:flex;flex-wrap:wrap;gap:10px;padding:0 22px}.upload-dropzone{align-items:center;background:var(--surface-muted);border:1px dashed #aebfb3;border-radius:var(--radius-lg);color:var(--muted);display:grid;gap:9px;justify-items:center;margin:0 22px;min-height:180px;padding:24px;text-align:center;transition:background .18s ease,border-color .18s ease,color .18s ease,transform .18s ease}.upload-dropzone.dragging{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-strong);transform:translateY(-1px)}.upload-dropzone strong{color:var(--ink)}.upload-dropzone span{line-height:1.5}.upload-dialog-notice{margin:0 22px}.pending-upload-list{border:1px solid var(--line);border-radius:var(--radius-md);display:grid;margin:0 22px;min-height:116px;overflow:hidden}.pending-upload-empty{align-items:center;color:var(--muted);display:grid;min-height:116px;text-align:center}.pending-upload-row{align-items:center;background:var(--surface);display:grid;gap:12px;grid-template-columns:minmax(0,1fr) 92px 38px;min-height:46px;padding:0 12px}.pending-upload-row+.pending-upload-row{border-top:1px solid #e9eee9}.pending-upload-row span{min-width:0;overflow-wrap:anywhere}.pending-upload-row small{color:var(--muted);font-variant-numeric:tabular-nums;text-align:right}.pending-upload-row button{justify-content:center;min-width:36px;padding:0}.upload-dialog-actions{background:var(--surface-muted);border-top:1px solid var(--line);padding:14px 22px 18px}.hidden-file{display:none}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.auth-shell{align-items:center;display:grid;max-width:500px;min-height:100vh}.auth-card{background:#ffffffe6;border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-soft);display:grid;gap:16px;padding:26px}.auth-card h1{font-size:28px;letter-spacing:0;line-height:1.1;margin:0}.auth-card p{color:var(--muted);line-height:1.5;margin:7px 0 0}.auth-card .primary{justify-content:center}.admin-session-bar{display:flex;justify-content:flex-end;margin:12px auto -14px;max-width:1420px;padding:0 clamp(16px,3vw,36px)}.admin-session-bar button{background:transparent}.admin-shell{max-width:1420px}.panel{background:#ffffffdb;border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:0 12px 34px #20322a0e;display:grid;gap:13px;padding:17px}.panel h2{align-items:center;color:var(--ink);display:flex;font-size:18px;gap:8px;letter-spacing:0;line-height:1.2;margin:0}.panel textarea{min-height:98px;padding:10px}.share-result{display:grid;gap:8px}.field{display:grid;gap:7px}.field span{color:var(--ink-soft);font-size:14px;font-weight:750}.field small{color:var(--muted);line-height:1.5}.prefix-preview{background:var(--surface-muted);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--ink-soft);line-height:1.5;min-height:38px;overflow-wrap:anywhere;padding:8px 11px}.prefix-row{display:grid;gap:8px;grid-template-columns:132px minmax(0,1fr)}.search-field{align-items:center;background:#ffffffe0;border:1px solid var(--line-strong);border-radius:var(--radius-sm);display:flex;gap:8px;min-height:40px;padding:0 11px}.search-field input{background:transparent;border:0;flex:1;min-width:0;outline:0;padding:0}.cp-summary{background:var(--accent-wash);border:1px solid #cde3d6;border-radius:var(--radius-sm);display:grid;gap:2px;line-height:1.5;padding:10px 12px}.cp-summary span,.section-title p,.auth-row small,.list-item span{color:var(--muted)}.admin-layout{align-items:start;display:grid;gap:20px;grid-template-columns:372px minmax(0,1fr)}.admin-sidebar{display:grid;gap:16px;position:sticky;top:16px}.section-title{align-items:center;display:flex;gap:12px;justify-content:space-between}.section-title p{margin:6px 0 0}.compact-title{gap:8px}.compact-title h2{margin-right:auto}.compact-title button{justify-content:center;min-width:38px;padding:0}.compact-fields{display:grid;gap:9px;grid-template-columns:repeat(2,minmax(0,1fr))}.cp-create-panel{gap:11px}.cp-create-panel .field small{display:none}.cp-list{display:grid;gap:8px;max-height:440px;overflow:auto;padding-right:2px}.cp-list-item{align-items:flex-start;background:var(--surface-muted);display:flex;flex-direction:column;gap:8px;justify-content:center;min-height:78px;padding:11px 12px;text-align:left;width:100%}.cp-list-item.selected{background:var(--accent-soft);border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.cp-list-main,.cp-list-main strong,.cp-list-main small{display:block;min-width:0}.cp-list-main strong{overflow-wrap:anywhere}.cp-list-main small,.cp-list-meta{color:var(--muted);font-size:13px}.cp-list-meta{background:#ffffffb8;border:1px solid rgba(199,213,203,.76);border-radius:6px;max-width:100%;overflow-wrap:anywhere;padding:3px 7px}.admin-workbench{display:grid;gap:16px;min-width:0}.cp-hero{align-items:center;background:linear-gradient(135deg,#16201dfa,#23362ffa),linear-gradient(90deg,rgba(255,255,255,.08),transparent);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);box-shadow:0 18px 46px #16201d2e;color:#fff;display:flex;gap:18px;justify-content:space-between;min-height:128px;padding:24px}.cp-hero-main{min-width:0}.cp-hero h2{color:#fff;font-size:32px;letter-spacing:0;line-height:1.08;margin:6px 0 8px;overflow-wrap:anywhere}.cp-hero p,.cp-hero .eyebrow{color:#cbd8cf;margin:0}.cp-hero-actions{flex:0 0 auto}.cp-hero .danger-outline{background:#ffffff14;border-color:#f6baa5b3;color:#ffd2c5}.metric-grid{display:grid;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr))}.metric-card{background:#ffffffd1;border:1px solid var(--line);border-radius:var(--radius-lg);display:grid;gap:8px;min-height:88px;padding:15px}.metric-card span{color:var(--muted);font-size:13px;font-weight:650}.metric-card strong{color:var(--ink);font-size:25px;font-variant-numeric:tabular-nums;line-height:1.1;overflow-wrap:anywhere}.workbench-grid{display:grid;gap:16px;grid-template-columns:1fr}.authorization-panel{align-content:start;align-items:end;grid-template-columns:minmax(180px,250px) 170px minmax(0,1fr)}.authorization-panel h2,.authorization-panel .share-result{grid-column:1 / -1}.authorization-panel .primary{justify-content:center}.authorization-records{min-width:0}.authorization-records>.section-title{align-items:center}.authorization-records .search-field{max-width:340px;width:100%}.empty-workbench{align-items:center;background:#ffffffc7;border:1px dashed #b9c9bd;border-radius:var(--radius-lg);color:var(--muted);display:grid;justify-items:center;min-height:360px;padding:32px;text-align:center}.empty-workbench h2{color:var(--ink);margin:8px 0 0}.empty-workbench p{margin:4px 0 0}.auth-table{border:1px solid var(--line);border-radius:var(--radius-lg);overflow:hidden}.auth-row{align-items:center;background:#ffffffb8;display:grid;gap:12px;grid-template-columns:minmax(150px,1.05fr) minmax(140px,1.15fr) 112px 86px minmax(310px,1.7fr);min-height:64px;padding:11px 13px}.auth-row+.auth-row{border-top:1px solid #e8eee8}.auth-row.header{background:var(--surface-muted);color:var(--muted);font-size:13px;font-weight:800;min-height:44px}.auth-row span{min-width:0;overflow-wrap:anywhere}.auth-row strong,.auth-row small{display:block}.auth-row strong{color:var(--ink)}.status{background:#e2f4e9;border-radius:999px;color:#226b43;display:inline-flex;font-size:13px;font-weight:750;padding:4px 9px}.status.expired{background:var(--amber-soft);color:#8a4f1d}.status.disabled{background:#eef1ee;color:var(--muted)}@media(max-width:1040px){.admin-layout{grid-template-columns:1fr}.admin-sidebar{position:static}.cp-list{grid-template-columns:repeat(2,minmax(0,1fr));max-height:none}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.authorization-panel{grid-template-columns:minmax(180px,1fr) 170px}.authorization-panel .primary{grid-column:1 / -1}.auth-row{grid-template-columns:minmax(150px,1.1fr) minmax(140px,1fr) 112px 86px}.auth-row>span:last-child{grid-column:1 / -1}}@media(max-width:720px){.shell{padding:18px 14px 36px}.topbar{align-items:flex-start;flex-direction:column;gap:13px;margin-bottom:18px;padding-bottom:17px}.brand-block{align-items:flex-start}.brand-mark{height:38px;width:38px}.topbar h1{font-size:30px}.cp-hero h2{font-size:27px}.expiry,.topbar-kicker{white-space:normal}.toolbar{align-items:stretch;display:grid;grid-template-columns:1fr 1fr}.target-path-control{display:grid;flex:none;grid-column:1 / -1;grid-template-columns:minmax(0,1fr) auto;margin-right:0;min-width:0;width:100%}.toolbar>button{width:100%}.target-path-control button{min-width:78px}.upload-target{font-size:14px}.load-address-row{grid-template-columns:minmax(0,1fr) auto}.load-address-row>span{grid-column:1 / -1}.file-row{align-items:flex-start;gap:13px;grid-template-columns:1fr;padding:15px 16px}.row-actions{justify-content:flex-start;width:100%}.row-actions button{min-width:40px}.prefix-row,.compact-fields,.metric-grid,.workbench-grid,.authorization-panel,.cp-list{grid-template-columns:1fr}.cp-hero{align-items:flex-start;flex-direction:column;min-height:0;padding:20px}.cp-hero-actions,.cp-hero-actions button{width:100%}.authorization-records>.section-title{align-items:stretch;flex-direction:column}.authorization-records .search-field{max-width:none}.auth-row{align-items:start;gap:8px;grid-template-columns:1fr;padding:13px}.auth-row.header{display:none}.auth-row>span:last-child{grid-column:auto}.upload-task{grid-template-columns:1fr}.upload-progress>span{text-align:left}.upload-dialog{max-height:calc(100vh - 32px);width:calc(100vw - 24px)}.upload-dialog-header{align-items:flex-start}.upload-dialog-header,.upload-dialog-actions{padding-left:16px;padding-right:16px}.upload-dialog-steps,.upload-dropzone,.pending-upload-list,.upload-dialog-notice{margin-left:16px;margin-right:16px}.upload-picker-actions{padding-left:16px;padding-right:16px}.pending-upload-row{grid-template-columns:minmax(0,1fr) 72px 36px}}@media(max-width:420px){.toolbar,.target-path-control{grid-template-columns:1fr}.target-path-control button{width:100%}.dialog-actions,.upload-picker-actions{flex-direction:column}.dialog-actions button,.upload-picker-actions button{width:100%}}
