:root{--ink:#182c2c;--muted:#758383;--green:#137f70;--green-dark:#096253;--line:#e4ebea;--bg:#f5f7f7;--white:#fff;--radius:14px}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:14px/1.65 "Segoe UI","Microsoft YaHei",system-ui,sans-serif}a{color:var(--green);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,a,input{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}h1,h2,p{margin-top:0}h1{font-size:29px;letter-spacing:-.8px;line-height:1.4;margin-bottom:8px}h2{font-size:18px;margin-bottom:14px}p{margin-bottom:14px}small{font-size:12px;color:var(--muted)}[hidden]{display:none!important}.sidebar{position:fixed;inset:0 auto 0 0;width:228px;padding:34px 20px 24px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;color:var(--ink);font-size:16px;font-weight:700;white-space:nowrap}.brand:hover{text-decoration:none}.brand small{display:block;font-size:9px;letter-spacing:1.8px;margin-top:2px;font-weight:500}.brand-mark{display:inline-flex;align-items:center;justify-content:center;background:var(--green);color:#fff;width:38px;height:38px;border-radius:11px;font-size:24px;font-weight:700;flex-shrink:0}.nav-caption{font-size:11px;color:#96a2a1;padding:42px 14px 12px;letter-spacing:1px}.sidebar nav{display:grid;gap:7px}.sidebar nav a{padding:12px 16px;color:#647371;border-radius:9px;display:flex;gap:13px;align-items:center;font-weight:500}.sidebar nav a span{font-size:19px;width:22px;text-align:center}.sidebar nav a:hover,.sidebar nav a.active{background:#eaf5f1;color:var(--green);text-decoration:none}.sidebar nav a.active{font-weight:700}.sidebar-bottom{margin-top:auto;font-size:12px;color:var(--muted);padding:14px 12px}.status-dot{display:inline-block;background:#38a785;width:7px;height:7px;border-radius:100%;margin-right:6px}.workspace{margin-left:228px}.topbar{height:74px;background:#fff;border-bottom:1px solid var(--line);padding:0 42px;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted)}.account{display:flex;gap:22px;align-items:center}.account a{color:var(--ink)}main{max-width:1560px;padding:38px 42px 28px;margin:auto}footer{font-size:11px;color:#92a09e;padding:25px 42px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:22px;margin-bottom:28px}.page-heading p{color:var(--muted);margin-bottom:0}.eyebrow{display:block;font-size:10px;letter-spacing:2px;font-weight:700;color:var(--green);margin-bottom:10px}.button{background:var(--green);color:#fff;border:1px solid var(--green);padding:10px 19px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-weight:600;white-space:nowrap;gap:8px}.button:hover{background:var(--green-dark);color:#fff;text-decoration:none}.button.secondary{background:#fff;border-color:var(--line);color:var(--ink)}.button.secondary:hover{background:#edf4f1}.text-button{border:0;background:none;color:var(--green);padding:0;font-size:13px}.text-button:hover{text-decoration:underline}.danger{color:#b54d48}.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:26px;box-shadow:0 3px 12px #163b2d02}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}.stat{display:flex;flex-direction:column;color:var(--ink)}.stat:hover{text-decoration:none;border-color:#a9cdc2}.stat>span{color:var(--muted);font-size:12px}.stat strong{font-size:36px;font-weight:600;letter-spacing:-1px;margin:7px 0}.stat small{font-size:11px}.delivery-banner{background:#e9f2ef;border:1px solid #d6e6e0;border-radius:var(--radius);padding:28px 30px;display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:28px}.delivery-banner h2{font-size:21px;margin-bottom:7px}.delivery-banner p{color:#6d8980;font-size:12px;margin:0}.steps{display:flex;gap:10px;flex-wrap:wrap}.steps span{background:#fff9;padding:10px 14px;border-radius:7px;font-size:12px;color:#356f61}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.section-heading h2{margin:0}.section-heading a{font-size:12px}.activity{display:flex;align-items:center;gap:15px;border-bottom:1px solid #f0f3f2;padding:17px 0}.activity:last-child{border:0}.activity-dot{width:8px;height:8px;background:#b4d7cc;border-radius:100%;flex-shrink:0}.activity strong{font-size:13px;font-weight:600}.activity p{font-size:12px;color:var(--muted);margin:3px 0 0}.activity-meta{text-align:right;color:var(--muted);font-size:11px;margin-left:auto;flex-shrink:0}.product-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}.product-icon{display:flex;align-items:center;justify-content:center;width:45px;height:45px;border-radius:12px;color:var(--green);background:#ecf5f1;font-size:21px;font-weight:600}.product-card h2{margin:20px 0 4px}.product-card code{font-size:12px;color:#81948c}.description{font-size:13px;color:var(--muted);margin-top:17px;min-height:48px;white-space:pre-wrap;overflow-wrap:anywhere}.product-bottom{border-top:1px solid var(--line);padding-top:18px;display:flex;justify-content:space-between;font-size:12px}.product-bottom>span{color:var(--muted)}.product-bottom a{margin-left:15px}.badge{display:inline-block;padding:3px 9px;border-radius:5px;font-size:11px;white-space:nowrap;font-weight:500}.green{background:#e8f5ee;color:#25856a}.gray{background:#eff1f2;color:#778382}.blue{background:#ebf2ff;color:#5079b0}.purple{background:#f1edfc;color:#8a65ad}.table-card{padding:0;overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:13px}th{background:#fbfcfc;color:#8a9794;font-size:11px;font-weight:500;padding:15px 22px;white-space:nowrap}td{border-top:1px solid var(--line);padding:19px 22px;vertical-align:middle}td strong{font-weight:600}.sub{color:var(--muted);font-size:11px;margin-top:4px}.filename{display:block;max-width:300px;overflow-wrap:anywhere}.row-actions{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;min-width:90px}.row-actions a{font-size:13px}.empty{text-align:center;padding:55px 25px;color:var(--muted)}.empty h2{color:var(--ink)}.filter-bar{display:flex;gap:12px;align-items:center;margin:0 0 20px}.filter-bar select{width:230px}.filter-bar label{color:var(--muted);font-size:12px}input:not([type=radio]):not([type=checkbox]),select,textarea{display:block;width:100%;padding:10px 12px;border:1px solid #dbe4e1;border-radius:7px;background:#fff;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #137f7012}input[readonly]{background:#f5f7f7!important;color:var(--muted)!important}textarea{resize:vertical}.stack{display:grid;gap:22px}.stack label:not(.check):not(.mode-option){display:grid;gap:8px;font-size:13px;font-weight:500}.stack small{font-weight:400}.stack h1,.stack h2,.stack p{margin:0}.narrow{max-width:780px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.check{display:flex;gap:9px;align-items:center;font-size:13px}input[type=checkbox],input[type=radio]{accent-color:var(--green);width:16px;height:16px;flex-shrink:0}.form-actions{display:flex;gap:20px;align-items:center}.muted{color:var(--muted);font-weight:400}.notice{background:#eef5f5;border:1px solid #dae8e4;border-radius:8px;padding:13px 17px;font-size:13px;color:#4d7770}.notice.success{background:#eaf6ef;color:#26734f;margin-bottom:24px}.notice.error{background:#fff0ee;border-color:#f1d7d3;color:#ac4c42;margin-bottom:20px}.upload-zone{border:1px dashed #afc9bf;padding:22px;border-radius:10px;background:#f8fbf9}fieldset{padding:0;margin:0;border:0}legend{font-size:13px;margin-bottom:12px}.mode-options{display:grid;grid-template-columns:1fr 1fr;gap:16px}.mode-option{display:flex;align-items:center;gap:12px;padding:19px;border:1px solid var(--line);border-radius:9px;cursor:pointer}.mode-option:has(input:checked){border-color:var(--green);background:#f1f9f5}.mode-option strong{display:block;font-size:14px}.mode-option small{display:block;margin-top:5px}.spaced{margin-top:25px}.prewrap{white-space:pre-wrap;overflow-wrap:anywhere}details{margin-top:10px;font-size:12px}summary{color:var(--muted);cursor:pointer}details p{margin:12px 0}.hash{display:block;overflow-wrap:anywhere;margin-top:10px;font-size:11px;color:var(--muted);max-width:580px}.pagination{display:flex;justify-content:center;gap:24px;margin-top:24px;font-size:12px}.public-header{max-width:1100px;margin:auto;padding:32px;display:flex;align-items:center;gap:13px}.public-main{max-width:800px;padding:35px 24px}.public-footer{text-align:center}.auth-card{max-width:440px;margin:25px auto;padding:34px}.auth-card>p{font-size:13px;margin:14px 0 28px}.auth-card h1{font-size:27px}.download-card{padding:40px}.download-card>h1{font-size:32px;margin-top:20px}.download-file{background:#f5f8f7;border:1px solid var(--line);border-radius:10px;padding:22px;display:flex;gap:18px;align-items:center;margin:28px 0 18px;overflow-wrap:anywhere}.download-file p{font-size:12px;color:var(--muted);margin:5px 0 0}.file-icon{font-size:28px;color:var(--green)}.download-limit{font-size:13px;margin:18px 0}.download-button{width:100%;padding:13px}.download-help{font-size:11px;color:var(--muted);margin:12px 0 28px}.download-card hr{border:0;border-top:1px solid var(--line);margin:25px 0}.download-card .prewrap{font-size:13px}.problem p{margin:18px 0 25px;color:var(--muted)}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:#163d34;color:#fff;border-radius:8px;padding:12px 25px;box-shadow:0 6px 20px #0002}.clipboard-helper{position:fixed;left:-9999px;top:0}code{font-family:Consolas,monospace}:focus-visible{outline:2px solid var(--green);outline-offset:3px}@media(min-width:1600px){main{padding-top:48px}}@media(max-width:1200px){.product-grid{grid-template-columns:repeat(2,1fr)}.stats{gap:12px}.stat{padding:20px}.delivery-banner{align-items:flex-start;flex-direction:column}main{padding:28px}.topbar{padding:0 28px}.sidebar{width:210px;padding:30px 15px}.workspace{margin-left:210px}}@media(max-width:800px){.sidebar{position:static;width:auto;padding:18px}.brand{font-size:15px}.nav-caption,.sidebar-bottom{display:none}.sidebar nav{display:flex;overflow-x:auto;gap:5px;margin-top:18px}.sidebar nav a{white-space:nowrap;padding:8px 11px;font-size:12px}.sidebar nav a span{display:none}.workspace{margin:0}.topbar{height:54px;padding:0 20px}main{padding:25px 18px}.page-heading{align-items:flex-start;gap:18px;flex-direction:column}h1{font-size:25px}.stats{grid-template-columns:repeat(2,1fr)}.product-grid{grid-template-columns:1fr}.card{padding:21px}.table-card{padding:0}.form-grid,.mode-options{grid-template-columns:1fr}.activity-meta{font-size:10px}.activity p{max-width:180px;overflow-wrap:anywhere}.download-card{padding:25px}.public-main{padding:18px}.public-header{padding:24px}.filter-bar{flex-wrap:wrap}.steps{gap:6px}.steps span{font-size:11px;padding:8px}.download-file{padding:15px}.auth-card{padding:26px;margin:0 auto}.form-actions{flex-wrap:wrap}}

/* 紧凑产品表减少行高，便于同时浏览更多产品，复制按钮始终位于右侧。 */
.compact-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.compact-heading h1{margin:0;font-size:25px}.compact-heading>a{font-size:13px}.compact-filter{margin-bottom:14px}.compact-filter input{max-width:300px}.compact-filter .button{padding:7px 16px}.compact-filter .muted{font-size:12px;margin-left:auto}.compact-table th{padding:11px 15px}.compact-table td{padding:8px 15px;line-height:1.5}.compact-table td code{font-size:12px;color:var(--muted)}.compact-table td time{font-size:12px;white-space:nowrap;color:var(--muted)}.compact-table tbody tr:hover{background:#f7faf9}.compact-table .copy-column{text-align:right;width:125px}.compact-table .compact-button{padding:5px 14px;font-size:12px;border-radius:5px}.compact-table button:disabled{cursor:not-allowed;background:#eff2f1;border-color:#e1e7e5;color:#96a39e;opacity:1}.single-line{display:block;max-width:320px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-table .badge{margin-left:8px}
/* 授权弹窗仅设置当前产品的限制，成功复制后关闭。 */
#grant-dialog{width:min(480px,calc(100vw - 32px));max-height:90vh;overflow:auto;padding:26px;border:1px solid var(--line);border-radius:12px;color:var(--ink);box-shadow:0 20px 70px #12352d30}#grant-dialog::backdrop{background:#16302b55}#grant-dialog .section-heading{margin:0}#grant-dialog .section-heading h2{font-size:20px}#grant-dialog .stack{gap:18px}#grant-product-name{font-weight:600}#grant-dialog .mode-option{padding:14px}#grant-dialog .mode-options{gap:10px}#grant-result .text-button{margin-top:8px}
@media(max-width:800px){.compact-table table{min-width:660px}.compact-table .copy-column{position:sticky;right:0;background:#fff;box-shadow:-3px 0 4px #00000005}.compact-heading{gap:12px}.compact-filter .muted{margin-left:0}#grant-dialog .mode-options{grid-template-columns:1fr 1fr}}
.file-picker{position:relative;display:flex;align-items:center;gap:10px;min-width:0;min-height:40px;padding:5px 10px;border:1px solid #d7e1de;border-radius:6px;background:#fff;font-weight:400}
.file-picker input.file-picker-input{position:absolute;inset:0;width:100%;height:100%;opacity:0;margin:0;padding:0;cursor:pointer}
.file-picker-trigger{flex-shrink:0;padding:3px 9px;border:1px solid #d7e1de;border-radius:4px;background:#f5f8f7;color:var(--ink);font-size:13px}
.file-picker-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:13px}
.file-picker:focus-within{outline:2px solid var(--green);outline-offset:2px}
.sidebar .brand small.company-name{font-size:10px;letter-spacing:0;white-space:normal;line-height:1.4}
.public-brand{min-width:0;line-height:1.5;overflow-wrap:anywhere}
.public-brand small{display:block;margin-top:2px}
.public-header .brand-mark{flex-shrink:0}

.login-captcha-row{display:flex;align-items:center;gap:12px;margin-top:-10px}.login-captcha-row>span{white-space:nowrap;font-weight:600}.login-captcha-row>input{min-width:0;flex:1;width:0}.login-captcha-row>button{white-space:nowrap}
.upload-progress{display:grid;gap:6px;min-width:0}
.upload-progress progress{display:block;width:100%;height:8px;border:0;border-radius:4px;overflow:hidden;accent-color:var(--green)}
.upload-progress progress::-webkit-progress-bar{background:var(--line);border-radius:4px}
.upload-progress progress::-webkit-progress-value{background:var(--green);border-radius:4px}
.upload-progress progress::-moz-progress-bar{background:var(--green);border-radius:4px}
.upload-progress [data-upload-status]{font-size:12px;overflow-wrap:anywhere;line-height:1.5}
.upload-progress.has-error [data-upload-status]{color:#ac4c42}
.workspace>main{max-width:none;min-width:0;width:100%;margin:0}
.public-header{padding-bottom:10px}
.public-main{padding-top:12px;padding-bottom:16px}
.public-footer{padding-top:12px;padding-bottom:16px}
.grant-time-field{display:grid;gap:8px}
.grant-time-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.grant-expiry-options{display:flex;gap:4px}
.grant-expiry-options button{border:1px solid var(--line);border-radius:5px;background:#fff;color:var(--green);padding:3px 10px;font-size:12px;min-height:32px}
.grant-expiry-options button:hover,.grant-expiry-options button[aria-pressed=true]{background:#eaf5f1;border-color:var(--green)}
