:root{font:15px/1.65 system-ui,"Microsoft YaHei",sans-serif;color:#20353b;background:linear-gradient(135deg,#f5faf9 0%,#f4f7fb 55%,#eef5f3 100%);--accent:#116b61;--accent-2:#1d8b78;--muted:#6b7e86;--border:#dce7e5;--surface:rgba(255,255,255,.92);--shadow:0 12px 32px rgba(35,71,74,.08)}
*{box-sizing:border-box}body{margin:0}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,a,input,select,textarea{outline-offset:4px}button:focus-visible,a:focus-visible{outline:3px solid #e7ab51}button{cursor:pointer;border:1px solid var(--border);background:#fff;border-radius:9px;padding:9px 17px;color:#253a43}button:hover{border-color:var(--accent);color:var(--accent)}button.primary,.button{background:linear-gradient(135deg,var(--accent),var(--accent-2));border:1px solid var(--accent);color:white;padding:10px 19px;border-radius:9px}button:disabled{opacity:.5;cursor:not-allowed}.danger{color:#a13b32}.skip{position:absolute;top:-80px;left:20px;padding:12px;background:white;z-index:2}.skip:focus{top:10px}.header{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.9);backdrop-filter:blur(16px);box-shadow:0 1px 0 rgba(20,70,65,.06);border-bottom:1px solid var(--border);padding:16px max(5vw,24px);display:flex;align-items:center;gap:35px;justify-content:space-between}.brand{display:flex;align-items:center;gap:12px;font-size:21px;font-weight:750;letter-spacing:-.5px;color:#25473f}.brand small{display:block;color:var(--muted);font-size:11px;font-weight:400;letter-spacing:.5px}.brand-mark{display:grid;place-items:center;background:var(--accent);color:white;width:42px;height:42px;border-radius:12px;font-size:23px}.header nav{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.header nav a{padding:7px 12px;color:var(--muted);font-size:14px}.header nav a[aria-current]{background:#e9f3f0;border-radius:8px;color:var(--accent);font-weight:650}main{max-width:1240px;margin:auto;padding:48px 30px 82px;min-height:80vh}.page-heading{margin-bottom:30px;max-width:850px}.eyebrow{font-size:11px;font-weight:750;letter-spacing:2px;color:var(--accent)}h1{font-size:34px;line-height:1.25;letter-spacing:-.8px;margin:13px 0}h2{font-size:19px;line-height:1.45}h3{font-size:15px}p{color:var(--muted);margin:10px 0}.muted{color:var(--muted);font-size:13px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:18px}.card,.panel{background:var(--surface);border:1px solid rgba(220,231,229,.9);border-radius:18px;padding:24px;box-shadow:var(--shadow)}.card{display:flex;flex-direction:column;gap:12px;overflow-wrap:anywhere}.card h2{margin:0;font-size:17px}.card .actions{margin-top:auto}.card-icon{height:42px;width:42px;background:#edf4f2;border-radius:11px;color:var(--accent);display:grid;place-items:center;font-size:12px;font-weight:750}.panel{margin-bottom:20px}.panel h2{margin-top:0}.search{display:flex;gap:12px;align-items:stretch;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:12px;margin-bottom:22px;box-shadow:var(--shadow)}.search input{border:0;flex:1;min-width:0}.toolbar,.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.toolbar{justify-content:flex-start;margin:20px 0}.form{display:grid;gap:16px;max-width:680px}.form label{display:grid;gap:6px;font-size:13px;font-weight:650}.form input,.form select,.form textarea,input,select{border:1px solid #cddadd;border-radius:8px;padding:10px 12px;background:white;color:inherit}.form textarea{min-height:160px;resize:vertical}.form button{justify-self:start}.columns{display:grid;grid-template-columns:1fr 1fr;gap:20px}.metric{font-size:32px;line-height:1.2;font-weight:700;letter-spacing:-1px;color:#24453d}.badge{font-size:11px;padding:3px 8px;border-radius:6px;background:#edf4f2;color:var(--accent);display:inline-block;align-self:flex-start}.badge.warn{background:#fff3e0;color:#986626}.badge.bad{background:#fcece9;color:#9b4238}.table-wrap{overflow:auto;border:1px solid var(--border);border-radius:12px;background:white;margin-bottom:20px}table{width:100%;border-collapse:collapse;text-align:left;font-size:13px}th{background:#f0f4f4;color:#6a7e83;font-size:12px;font-weight:600}th,td{padding:14px 18px;border-bottom:1px solid #e8eeee;max-width:420px;overflow-wrap:anywhere}tr:last-child td{border-bottom:0}#notice{padding:13px 18px;border-radius:10px;background:#eef5f2;color:#276453;margin-bottom:20px;white-space:pre-wrap}#notice.error{background:#fceeea;color:#9b4238}.empty{text-align:center;padding:55px 20px;background:white;border:1px dashed var(--border);border-radius:14px;color:var(--muted)}.pager{display:flex;gap:16px;justify-content:center;align-items:center;margin-top:28px}.list-row{padding:14px 0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;gap:20px}footer{border-top:1px solid var(--border);padding:22px max(5vw,24px);font-size:12px;color:var(--muted);display:flex;gap:18px;flex-wrap:wrap}footer span{font-weight:750;color:var(--accent)}footer a{margin-left:auto}video{width:100%;max-height:520px;background:#111;border-radius:16px;box-shadow:var(--shadow)}.details{font-size:12px;word-break:break-word}body[data-mode=admin] .header{align-items:flex-start}body[data-mode=admin] h1{font-size:29px}
@media(max-width:820px){.header{flex-direction:column;align-items:flex-start;gap:18px;padding:18px 22px}.header nav{gap:2px}.header nav a{padding:6px 8px}main{padding:30px 20px 50px}.columns{grid-template-columns:1fr}h1{font-size:29px}.grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr))}.search{flex-wrap:wrap}.search input{min-width:160px}th,td{padding:11px}}@media(prefers-reduced-motion:no-preference){button,.card{transition:border-color .15s,background .15s}.card:hover{border-color:#b1c9c1}}
.card h2{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.card p.muted{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* 1.0.2 layout polish */
.header nav a{border:1px solid transparent;transition:.18s ease}
.header nav a:hover{background:#f0f7f5;border-color:#d6e8e3;text-decoration:none;transform:translateY(-1px)}
.card .actions{display:flex;gap:8px;flex-wrap:wrap}
.card .actions .button{display:inline-flex;align-items:center}
.table-wrap{box-shadow:var(--shadow)}
.form input:focus,.form select:focus,.form textarea:focus,.search:focus-within{border-color:var(--accent-2);box-shadow:0 0 0 4px rgba(29,139,120,.12);outline:0}
#notice{box-shadow:var(--shadow)}
@media(max-width:560px){main{padding:28px 15px 56px}.header{padding:13px 15px}.brand{font-size:18px}.brand-mark{width:36px;height:36px}.header nav{width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:3px}.header nav a{white-space:nowrap}.card,.panel{padding:18px;border-radius:15px}.toolbar{align-items:stretch}.toolbar>*{max-width:100%}.search{padding:9px;gap:8px}.search button{padding:8px 11px}}
/* Clear action hierarchy and responsive forms. */
.resource-actions{display:flex;flex-wrap:wrap;gap:12px;margin:18px 0 10px;padding:20px;background:var(--surface);border:1px solid var(--border);border-radius:16px;align-items:center}
.resource-actions button{min-height:44px}.action-help{font-size:13px;line-height:1.8;margin:12px 0 24px}.back-link{display:inline-block;margin-bottom:6px}
body:has(.form) .page-heading{max-width:760px}#intro{line-height:1.9;overflow-wrap:anywhere}
.card h2{min-height:50px}.card .actions a{font-weight:600;padding:8px 0}button:focus-visible,input:focus-visible{outline:3px solid #73bbae}
@media(max-width:560px){.resource-actions{display:grid;grid-template-columns:1fr;padding:14px;gap:10px}.resource-actions button{width:100%}.form{max-width:100%}.form button{width:100%;justify-self:stretch}h1{overflow-wrap:anywhere;font-size:26px}.table-wrap table{min-width:480px}.header{position:relative}.grid{grid-template-columns:1fr}}

/* Authentication: one primary submit, secondary navigation below the form. */
.auth-card{max-width:560px;margin:0 auto 28px;padding:32px}
.auth-card h2{margin:0 0 10px}.auth-card .auth-description{margin:0 0 24px}
.auth-card .form{max-width:none;gap:20px;margin-top:24px}
.auth-card .form label{gap:8px}.auth-card .form input{min-height:46px}
.auth-card .form button{width:100%;justify-self:stretch;min-height:46px;margin-top:4px}
.auth-footer{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px;margin-top:24px;padding-top:20px;border-top:1px solid var(--border);font-size:14px;color:var(--muted)}
.auth-footer a{font-weight:650;display:inline-flex;align-items:center;min-height:32px}
.button{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle}
@media(max-width:560px){.auth-card{padding:22px 18px}.auth-footer{margin-top:20px;padding-top:16px}}

.site-footer{display:grid;grid-template-columns:1fr auto;gap:16px 28px;align-items:start;background:rgba(255,255,255,.75)}
.footer-brand strong{font-size:16px;color:var(--accent)}.footer-brand small{font-size:12px;font-weight:500;margin-left:6px}.footer-brand p{margin:4px 0;font-size:12px}
.site-footer nav{display:flex;flex-wrap:wrap;gap:12px 20px}.site-footer a{margin:0;min-height:28px;display:inline-flex;align-items:center}
.site-footer .footer-warning{grid-column:1/-1;margin:0;padding-top:14px;border-top:1px solid var(--border);font-size:12px;line-height:1.9}.panel li{margin:10px 0}
@media(max-width:650px){.site-footer{grid-template-columns:1fr;padding:24px 18px}.site-footer nav{gap:8px 16px}}

.log-line{white-space:pre-wrap;word-break:break-word;font-size:12px;line-height:1.8}

/* Align import forms without changing resource identities or bucket layout. */
.import-columns{align-items:stretch}.import-columns>.panel{display:flex;flex-direction:column;margin-bottom:0}.import-columns .form{max-width:none;flex:1;display:flex;flex-direction:column;gap:18px}.import-columns .form button{margin-top:auto;align-self:stretch;width:100%;min-height:46px}.import-columns input[type=file]{width:100%;box-sizing:border-box;margin:0 0 18px;min-height:46px}.import-columns .form input{min-height:46px}.import-columns p{line-height:1.7}.import-columns textarea{min-height:150px}

/* Resource detail: expose file actions without horizontal scrolling on phones. */
.resource-file-list td:first-child{overflow-wrap:anywhere;word-break:break-word}
.resource-file-list td:last-child button{white-space:nowrap;min-height:44px}
@media(max-width:820px){
 .resource-file-list{overflow:visible;border:0;background:transparent}
 .resource-file-list table{display:block;min-width:0!important;width:100%}
 .resource-file-list thead{display:none}
 .resource-file-list tbody{display:grid;gap:14px}
 .resource-file-list tr{display:grid;min-width:0;padding:18px;background:var(--surface);border:1px solid var(--border);border-radius:14px}
 .resource-file-list td{display:block;max-width:none;min-width:0;padding:0;border:0}
 .resource-file-list td:first-child{font-size:15px;line-height:1.65}
 .resource-file-list td:nth-child(2){margin:10px 0 14px;color:var(--muted);font-size:13px}
 .resource-file-list td:nth-child(2)::before{content:attr(data-label) '：'}
 .resource-file-list td:last-child button{width:100%;min-height:46px;border-color:var(--accent);color:var(--accent);font-weight:650}
}

/* Release notes reflect the backend manifest, with a readable mobile layout. */
.release-card{max-width:1040px}.release-changes{padding-left:22px;line-height:1.9}
.release-changes li{margin:12px 0}.release-limitations{margin:24px 0;padding:18px 22px;background:#fff7ea;border:1px solid #eedfc3;border-radius:12px}
.release-limitations h3{margin:0 0 12px}.release-limitations ul{padding-left:20px;line-height:1.85}
@media(max-width:650px){.release-card{padding:20px}.release-limitations{padding:16px}.release-changes li{margin:14px 0}}
