:root{color-scheme:light;--bg:#f2f5fa;--surface:#fff;--ink:#14223a;--sub:#55657d;--muted:#65758b;--line:#dfe6ef;--blue:#255ac7;--blue-dark:#1d49aa;--soft:#eef4ff;--navy:#101c34;--lime:#dffa84;--radius:17px;font:14px/1.55 "Segoe UI","Microsoft YaHei","PingFang SC",system-ui,sans-serif}
*,*::before,*::after{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink)}
button,input,textarea{font:inherit}
button,a,input,textarea{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
button:disabled{cursor:not-allowed;opacity:.65}
a{color:inherit;text-decoration:none}
input,textarea{min-width:0}
:focus-visible{outline:3px solid #6199ff;outline-offset:3px}
h1,h2,h3,p{margin:0}
[hidden]{display:none!important}
.sprite{width:0;height:0;position:absolute;overflow:hidden}
.icon{display:block;flex:0 0 auto;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.boot{padding:18vh 20px;text-align:center;color:var(--sub)}
.topbar{background:var(--surface);border-bottom:1px solid var(--line)}
.top-inner,.shell{width:min(1260px,calc(100% - 72px));margin:auto}
.top-inner{height:66px;display:flex;align-items:center;justify-content:space-between;gap:24px}
.brand,.top-tools,.top-caption{display:flex;align-items:center;gap:12px}
.brand{font-size:18px;font-weight:800;white-space:nowrap;letter-spacing:-.3px}
.brand small{margin-left:6px;font:700 9px/1 ui-monospace,Consolas,monospace;letter-spacing:.06em;color:var(--muted)}
.brand-mark{width:36px;height:36px;border-radius:11px;background:#14243e;color:var(--lime);display:grid;place-items:center}
.brand-mark .icon{width:22px;height:22px}
.top-caption,.top-nav{color:var(--sub);font-weight:600}
.top-nav{padding:8px 12px}
.top-nav:hover{color:var(--blue)}
.top-caption .icon{width:17px;height:17px;color:var(--blue)}
.shell{padding-top:25px}
.breadcrumb{display:flex;align-items:center;gap:10px;min-height:28px;margin-bottom:15px;color:var(--sub);font-size:13px}
.breadcrumb .icon{width:16px;height:16px;color:var(--blue)}
.bread-sep{color:#8290a4}
.breadcrumb strong{color:var(--ink);font-weight:650}
.connection{margin-left:auto;display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;white-space:nowrap}
.connection i,.status i{width:7px;height:7px;border-radius:50%;background:#9ba7bb}
.connection.ok{color:#246949}
.connection.ok i,.status.live i{background:#2e9c69}
.hero,.public-hero{position:relative;display:flex;align-items:center;min-height:248px;overflow:hidden;border-radius:var(--radius);isolation:isolate;background:linear-gradient(104deg,#101b30 8%,#142641 70%,#1c3561);color:#fff;box-shadow:0 10px 25px #14284919}
.hero-text,.public-content{position:relative;z-index:1;padding:35px 40px;max-width:69%}
.eyebrow{display:inline-flex;align-items:center;gap:8px;color:#c0d1ec;font:650 11px/1.5 ui-monospace,Consolas,monospace;letter-spacing:.15em}
.eyebrow i{height:7px;width:7px;border-radius:2px;background:var(--lime);box-shadow:0 0 12px #e0fa8460}
.hero h1,.public-hero h1{margin:10px 0 9px;font-size:clamp(30px,4vw,49px);letter-spacing:-.045em;line-height:1.14;font-weight:810}
.hero p{color:#c8d6ed;font-size:15px}
.hero .hero-cta{margin-top:23px}
.hero-art{position:absolute;z-index:-1;right:0;bottom:-23px;height:calc(100% + 40px);max-width:56%;width:auto;opacity:.97}
.btn,.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;vertical-align:middle;border:1px solid transparent;background:none;color:inherit;white-space:nowrap;line-height:1.2;border-radius:9px;font-weight:700;transition:background-color .15s,border-color .15s;min-height:38px;padding:9px 14px}
.btn .icon{width:17px;height:17px}
.btn.primary{color:#fff;background:var(--blue);border-color:var(--blue)}
.btn.primary:hover:not(:disabled){background:var(--blue-dark)}
.btn.secondary{background:#fff;border-color:var(--line);color:#2f425d}
.btn.secondary:hover:not(:disabled){border-color:#a7bde1;background:#f7faff;color:var(--blue-dark)}
.btn.hero-cta{background:var(--lime);border-color:var(--lime);color:#132224;padding:12px 17px;min-height:43px}
.btn.hero-cta:hover{background:#efffae}
.btn.small{min-height:32px;padding:6px 9px;font-size:12px}
.icon-btn{min-width:32px;min-height:32px;padding:5px;color:var(--sub)}
.icon-btn:hover{background:#eaf1ff;color:var(--blue-dark)}
.icon-btn .icon{height:17px;width:17px}
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin:21px 0}
.stat-card{padding:17px 19px 15px;border:1px solid var(--line);border-radius:14px;background:var(--surface);box-shadow:0 3px 10px #15325a04}
.stat-heading{display:flex;align-items:center;gap:10px;font-weight:680;font-size:13px;color:#3b4e69}
.stat-icon,.tile,.mini-app{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;color:#285abc;background:#eaf1ff;flex:none}
.stat-icon .icon,.mini-app .icon{width:18px;height:18px}
.stat-icon.purple{color:#6544b3;background:#f1eaff}
.stat-icon.mint{color:#257b58;background:#e8f7f0}
.stat-icon.amber{color:#90651d;background:#fdf3dc}
.stat-card>strong{display:block;margin-top:7px;font-size:30px;letter-spacing:-.05em;line-height:1.2;font-variant-numeric:tabular-nums}
.stat-card p{margin-top:4px;color:var(--muted);font-size:12px}
.workspace-panel{border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);overflow:hidden;box-shadow:0 3px 12px #15325a05}
.panel-title{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:20px 23px 14px}
.section-code{display:flex;align-items:center;gap:6px;font:700 10px/1.3 ui-monospace,Consolas,monospace;letter-spacing:.15em;color:#536b93;margin-bottom:5px}
.section-code>span{width:11px;height:2px;background:#3e73df;border-radius:2px}
h2{font-size:22px;line-height:1.25;letter-spacing:-.02em;font-weight:790}
.subtle{color:var(--sub)}
.panel-title .subtle{margin-top:4px;font-size:13px}
.table-tools{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:0 23px 14px}
.segmented{display:flex;gap:2px;padding:3px;border:1px solid #e4eaf3;background:#f4f6fb;border-radius:9px;white-space:nowrap}
.segmented button{padding:6px 12px;border:1px solid transparent;border-radius:6px;color:var(--sub);background:transparent;font-weight:650;font-size:12px}
.segmented button:hover{color:var(--blue-dark)}
.segmented button[aria-pressed=true]{color:var(--blue-dark);background:#fff;border-color:#e2e9f4;box-shadow:0 1px 3px #0e244f0e}
.search{height:36px;border:1px solid var(--line);border-radius:8px;display:flex;align-items:center;gap:8px;padding:0 9px;color:#667992;min-width:0}
.search:focus-within{outline:2px solid #74a0f1;outline-offset:1px}
.search .icon{width:16px;height:16px}
.search input{width:182px;border:0;background:transparent;outline:none;color:var(--ink);font-size:12px}
.empty{border-top:1px solid #e9edf5;display:grid;justify-items:center;text-align:center;padding:25px 15px 24px;gap:7px;min-height:180px;align-content:center;background:linear-gradient(#fff,#fafcff)}
.empty-icon{display:grid;place-items:center;width:45px;height:45px;background:#edf3ff;color:var(--blue);border-radius:14px;margin-bottom:3px}
.empty-icon .icon{width:23px;height:23px}
.empty h3{font-size:16px}
.empty p{font-size:13px;color:var(--sub)}
.empty .btn{margin-top:6px}
.table-scroll{overflow:auto;border-top:1px solid var(--line)}
table{width:100%;border-collapse:collapse;text-align:left;min-width:820px;font-size:13px}
th,td{padding:11px 12px;border-bottom:1px solid #e9eef6}
th{font-weight:700;background:#f6f8fc;color:#445773;font-size:12px;white-space:nowrap}
th:first-child,td:first-child{padding-left:23px}
th:last-child,td:last-child{padding-right:23px}
tr:last-child td{border-bottom:0}
tbody tr:hover{background:#fbfdff}
td small,.history small{display:block;color:var(--sub);font-size:11px;margin-top:2px}
.table-app,.row-actions{display:flex;align-items:center;gap:8px}
.table-app strong,.table-app small{overflow-wrap:anywhere}
.row-actions{gap:4px}
.status{display:inline-flex;align-items:center;gap:5px;font-size:11px;padding:3px 8px;background:#eff2f7;color:#4c5c72;border-radius:999px;white-space:nowrap;vertical-align:middle;font-weight:750}
.status.live{background:#e7f6ee;color:#236746}
.table-note{padding:12px 23px;display:flex;align-items:flex-start;gap:8px;border-top:1px solid #e9edf5;color:var(--sub);font-size:12px}
.table-note .icon{width:16px;height:16px;color:#647b9e}
.flow{display:grid;grid-template-columns:1.15fr repeat(3,1fr);align-items:start;gap:12px;margin:23px 0 0;padding:17px 0}
.flow h2{font-size:16px}
.flow-step{display:flex;gap:9px}
.flow-step>span{font:700 11px/1.3 ui-monospace,Consolas,monospace;color:#2857a4;background:#e7eefb;border-radius:5px;padding:4px 5px;align-self:flex-start}
.flow-step strong{font-size:13px}
.flow-step p{margin-top:2px;font-size:12px;color:var(--sub)}
.footer{display:flex;justify-content:space-between;gap:12px;border-top:1px solid var(--line);margin-top:12px;padding:15px 0 24px;color:var(--muted);font-size:11px}
.footer-dot{padding:0 3px;color:#8193af}
dialog{width:min(560px,calc(100vw - 26px));max-height:calc(100dvh - 26px);padding:0;overflow:auto;border:1px solid #cfd9e8;border-radius:17px;background:var(--surface);color:var(--ink);box-shadow:0 28px 70px #12264840}
dialog::backdrop{background:#101a2a78;backdrop-filter:blur(2px)}
#key-dialog,#copy-dialog{width:min(410px,calc(100vw - 26px))}
.dialog-inner{padding:22px}
.dialog-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.dialog-inner>.subtle{margin:7px 0 15px;font-size:13px}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 12px;margin-top:13px}
.field{display:block;font-size:12px;color:#2f425e;font-weight:700}
.field>span{color:var(--muted);font-size:11px;font-weight:500}
.field.full{grid-column:1 / -1}
.field input,.field textarea,.copy-value{display:block;width:100%;margin-top:4px;padding:8px 9px;min-height:36px;border-radius:7px;border:1px solid #d5e0ee;background:#fff;color:var(--ink);font-weight:500}
.field textarea{resize:vertical}
.drop-zone{position:relative;display:grid;justify-items:center;text-align:center;gap:3px;padding:13px 8px;border:1px dashed #8fabd8;background:#f5f8ff;border-radius:10px;color:#335485;cursor:pointer;overflow-wrap:anywhere}
.drop-zone:hover,.drop-zone.dragging{background:#e9f0ff;border-color:var(--blue)}
.drop-zone:focus-within{outline:2px solid #6199ff;outline-offset:2px}
.drop-zone.has-file{background:#eef8f2;border-color:#74a88b;color:#28604a}
.drop-zone span{color:var(--sub);font-size:11px}
.drop-zone .icon{width:22px;height:22px}
.drop-zone input{width:1px;height:1px;position:absolute;opacity:0}
.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}
.form-error{color:#942840;background:#fff0f3;border:1px solid #f5d1db;padding:8px;border-radius:6px;margin-top:10px;font-size:12px}
.release-fields{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:7px 12px;padding:12px;margin:0 0 10px;border:1px solid var(--line);border-radius:9px;background:#f7faff}
.release-fields dt{color:var(--sub);font-size:12px;font-weight:750}
.release-fields dd{margin:0;overflow-wrap:anywhere;white-space:pre-wrap;font-size:12px}
.toast{position:fixed;right:max(15px,calc((100vw - 1260px) / 2));bottom:18px;z-index:5;max-width:calc(100vw - 30px);display:block;padding:11px 16px;border-radius:9px;color:#fff;background:#1f4d3c;box-shadow:0 5px 17px #11244035}
.toast.error{background:#852f42}
.public-shell{width:min(950px,calc(100% - 48px))}
.public-hero{min-height:290px;margin-bottom:17px}
.public-content{max-width:78%}
.public-title{display:flex;gap:14px;align-items:center;margin:12px 0 11px}
.public-title h1{overflow-wrap:anywhere;margin:0}
.app-art{display:grid;place-items:center;flex:none;width:62px;height:62px;border-radius:16px;background:#dfeaff;color:#285ab9}
.app-art .icon{width:32px;height:32px}
.package{color:#bed0ed;font-family:ui-monospace,Consolas,monospace;overflow-wrap:anywhere}
.release-meta{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;color:#d1ddf2;font-size:13px}
.public-version{border-radius:999px;padding:1px 8px;color:#e3f4ff;border:1px solid #6e89b4;background:#25436c;font-weight:700}
.public-download{margin-top:15px}
.public-hint{font-size:12px;color:#becce1;margin-top:7px}
.public-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-bottom:13px}
.public-section{margin-bottom:13px}
.release-notes{padding:0 23px 20px;white-space:pre-wrap;overflow-wrap:anywhere;color:#384b65}
.checksum-card{padding-bottom:15px}
.checksum-card>.subtle,.checksum-card>code,.checksum-card>.btn,.checksum-label{margin:0 23px}
.checksum-label{font-size:11px;font-weight:800;color:var(--sub)}
.checksum-card>code{display:block;overflow-wrap:anywhere;max-width:100%;font:12px/1.5 ui-monospace,Consolas,monospace;color:#294778;padding:6px 8px;margin-top:4px;margin-bottom:9px;background:#edf3fc;border-radius:6px}
.checksum-card>.subtle{font-size:11px;margin-top:7px}
.install-steps{margin:0 23px 17px;padding-left:18px;color:var(--sub)}
.install-steps li{padding:4px 0 4px 4px}
.install-steps strong{display:block;color:var(--ink)}
.install-steps span{font-size:13px}
.history{padding:0 23px 13px}
.history article{display:flex;gap:10px;align-items:center;padding:10px 0;border-top:1px solid var(--line)}
.history article .btn{margin-left:auto}
.public-empty{min-height:300px;border:1px solid var(--line);border-radius:var(--radius);margin-top:8px}
.public-empty h1{font-size:24px}
@media(max-width:900px){.top-inner,.shell{width:calc(100% - 42px)}.hero-art{right:-31px;max-width:61%}.stats{gap:10px}.stat-card{padding:13px 12px}.flow{grid-template-columns:repeat(3,1fr)}.flow-intro{grid-column:1/-1}.hero-text,.public-content{padding-left:25px}}
@media(max-width:620px){.top-inner,.shell{width:calc(100% - 26px)}.top-inner{height:56px;gap:8px}.brand{font-size:16px;gap:7px}.brand-mark{height:31px;width:31px;border-radius:9px}.brand small,.top-nav{display:none}.top-key{font-size:12px;min-height:33px;padding:6px 8px}.top-caption{gap:5px;font-size:12px}.shell{padding-top:13px}.breadcrumb{margin-bottom:9px}.hero{min-height:220px}.hero-text,.public-content{padding:21px 16px;max-width:100%}.hero h1,.public-hero h1{font-size:clamp(24px,7.2vw,37px)}.hero p{font-size:13px;max-width:88%}.hero-art{right:-98px;bottom:-38px;max-width:none;opacity:.37}.hero .hero-cta{margin-top:16px}.stats{grid-template-columns:repeat(2,1fr);margin:12px 0}.stat-card>strong{font-size:25px}.stat-icon{width:28px;height:28px}.stat-icon .icon{width:15px;height:15px}.stat-heading{font-size:12px;gap:7px}.stat-card p{font-size:11px}.panel-title{padding:14px 12px 10px}.panel-title h2{font-size:19px}.panel-title>.btn{padding:7px 8px;min-height:33px;font-size:12px}.table-tools{padding:0 12px 10px;gap:5px;flex-wrap:wrap}.segmented button{padding:5px 7px}.search{flex:1;min-width:118px}.search input{width:100%}.table-note{padding:9px 12px}.flow{grid-template-columns:1fr;gap:9px;margin-top:10px}.flow-intro{grid-column:auto}.public-grid{grid-template-columns:1fr}.public-title{gap:9px}.app-art{height:47px;width:47px;border-radius:12px}.app-art .icon{width:24px;height:24px}.public-hero{min-height:235px}.release-notes,.history{padding-left:12px;padding-right:12px}.checksum-card>.subtle,.checksum-card>code,.checksum-card>.btn,.checksum-label{margin-left:12px;margin-right:12px}.install-steps{margin-left:12px;margin-right:12px}.footer{flex-wrap:wrap}.dialog-inner{padding:14px}.form-grid{gap:8px}}
@media(max-width:390px){.brand-mark{width:29px;height:29px}.brand small{display:none}.connection{font-size:11px}.stat-card{padding:11px 9px}.form-grid{grid-template-columns:1fr}}
@media(max-width:750px){.table-scroll{overflow:visible}table,tbody{display:block;min-width:0}thead{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}tbody tr{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px 8px;border-bottom:1px solid var(--line);padding:10px 12px}tbody tr:last-child{border-bottom:0}tbody td,tbody td:first-child,tbody td:last-child{padding:0;border:0;min-width:0;overflow-wrap:anywhere}tbody td:first-child,tbody td:last-child{grid-column:1/-1}tbody td[data-label]::before{content:attr(data-label);display:block;font-size:10px;color:var(--muted);margin-bottom:1px}.row-actions{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
