:root {
    font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
    color:#243331;
    background:#f5f7f7;
    font-synthesis:none;
    --green:#206b54;
    --border:#e5eae8;
    --muted:#78847f;
    --danger:#b34439
}

* {
    box-sizing:border-box
}

body {
    margin:0;
    font-size:14px
}

button,input,select,textarea {
    font:inherit
}

button,a,input,textarea,select {
    outline-offset:4px
}

button {
    cursor:pointer
}

button:disabled {
    cursor:not-allowed;
    opacity:.45
}

[hidden] {
    display:none!important
}

a {
    color:inherit;
    text-decoration:none
}

.workspace {
    display:flex;
    min-height:100vh
}

.sidebar {
    background:#192e2b;
    color:#d4e1dc;
    position:fixed;
    inset:0 auto 0 0;
    width:224px;
    display:flex;
    flex-direction:column;
    padding:30px 16px 16px
}

.brand {
    display:flex;
    align-items:center;
    gap:11px;
    padding:0 12px 43px;
    font-size:21px;
    font-weight:650;
    letter-spacing:-.6px
}

.brand small {
    display:block;
    color:#9fb8ae;
    font-size:10px;
    font-weight:450;
    letter-spacing:1px;
    margin-top:5px
}

.nav-caption {
    color:#8da99d;
    font-size:11px;
    letter-spacing:1px;
    padding:0 14px 13px
}

nav {
    display:grid;
    gap:7px
}

.nav-item {
    border:0;
    background:none;
    display:flex;
    align-items:center;
    gap:12px;
    text-align:left;
    color:#a9c0b6;
    padding:13px 14px;
    border-radius:8px;
    font-weight:500
}

.nav-item.active {
    background:#304840;
    color:#c1f2df
}

.nav-item:hover {
    background:#263f37
}

.nav-icon {
    font-size:21px;
    line-height:16px;
    width:19px
}

.nav-count {
    margin-left:auto;
    background:#4a6156;
    padding:2px 6px;
    font-size:11px;
    border-radius:4px
}

.sidebar-note {
    margin:auto 10px 26px;
    border-top:1px solid #3b5148;
    padding-top:23px;
    font-size:12px;
    line-height:1.8;
    color:#9ab6a8
}

.sidebar-note strong {
    color:#c7dcd1;
    margin-left:7px;
    font-weight:500
}

.status-dot,.mini-dot {
    display:inline-block;
    width:6px;
    height:6px;
    background:#9edabc;
    border-radius:100%
}

.sidebar-note p {
    margin:9px 0 0
}

.account {
    border-top:1px solid #3b5148;
    display:flex;
    align-items:center;
    gap:11px;
    padding:19px 10px 2px
}

.avatar {
    background:#405b50;
    display:grid;
    place-items:center;
    width:34px;
    height:34px;
    border-radius:50%;
    color:#cfe7d9;
    font-size:13px
}

.account strong {
    font-size:12px;
    display:block
}

.account small {
    display:block;
    margin-top:5px;
    color:#9ab6a8;
    font-size:10px
}

.logout {
    border:0;
    color:#9ab6a8;
    background:none;
    font-size:23px;
    margin-left:auto
}

.main-shell {
    margin-left:224px;
    width:calc(100% - 224px)
}

.topbar {
    height:72px;
    background:#fff;
    border-bottom:1px solid var(--border);
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:0 42px;
    font-size:12px
}

.breadcrumb {
    color:var(--muted)
}

.breadcrumb span {
    padding:0 12px;
    color:#bdc6c0
}

.breadcrumb strong {
    color:#44544c;
    font-weight:500
}

.environment {
    display:flex;
    align-items:center;
    gap:7px;
    color:#718176
}

.environment i {
    width:6px;
    height:6px;
    background:#63ac81;
    border-radius:50%
}

main {
    max-width:1550px;
    margin:auto;
    padding:38px 42px 30px
}

.page-heading {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:20px;
    margin-bottom:28px
}

.eyebrow {
    font-size:10px;
    letter-spacing:1.9px;
    font-weight:650;
    color:#618373;
    margin:0 0 10px
}

h1 {
    margin:0;
    font-size:28px;
    font-weight:650;
    letter-spacing:-1px
}

h2 {
    margin:0;
    font-size:17px;
    font-weight:600;
    letter-spacing:-.3px
}

.muted {
    color:var(--muted);
    line-height:1.7;
    font-size:12px;
    margin:10px 0 0
}

.heading-actions {
    display:flex;
    gap:9px
}

.button {
    background:#fff;
    border:1px solid #dbe3dd;
    border-radius:7px;
    padding:9px 15px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:8px;
    font-size:12px;
    font-weight:550;
    color:#47594d;
    white-space:nowrap;
    min-height:36px
}

.button:hover {
    background:#f4f7f4
}

.button.primary {
    background:var(--green);
    border-color:var(--green);
    color:#fff
}

.button.primary:hover {
    background:#195a45
}

.button.danger {
    background:#b34439;
    border-color:#b34439;
    color:#fff
}

.button span {
    font-size:17px;
    font-weight:400
}

.button.small {
    padding:5px 10px;
    min-height:28px;
    font-size:11px
}

.wide {
    width:100%
}

.stats {
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:16px;
    margin-bottom:22px
}

.stats article {
    background:#fff;
    border:1px solid var(--border);
    border-radius:9px;
    padding:20px 23px
}

.stats article>span {
    color:#79887c;
    font-size:11px;
    display:block
}

.stats strong {
    display:block;
    font-size:29px;
    font-weight:600;
    letter-spacing:-.8px;
    margin:14px 0 10px;
    line-height:1
}

.stats small {
    font-size:10px;
    color:#a0aaa1
}

.mini-dot {
    background:#6fbc93;
    width:5px;
    height:5px;
    vertical-align:middle;
    margin-right:5px
}

.catalog-strip {
    display:flex;
    align-items:center;
    gap:12px;
    padding:15px 19px;
    border:1px solid #dce9df;
    background:#f0f6f1;
    border-radius:8px;
    margin-bottom:25px;
    font-size:11px
}

.shield {
    font-size:14px;
    display:grid;
    place-items:center;
    width:29px;
    height:29px;
    border-radius:8px;
    background:#dfede0;
    color:#3b7d59
}

.catalog-strip strong {
    font-size:11px;
    font-weight:600;
    margin-right:15px;
    color:#467051
}

.catalog-strip div>span {
    color:#7b927d;
    font-size:10px
}

.text-button {
    background:none;
    border:0;
    color:#3c7852;
    font-size:11px;
    margin-left:auto;
    padding:6px;
    white-space:nowrap
}

.panel {
    background:#fff;
    border:1px solid var(--border);
    border-radius:10px;
    overflow:hidden
}

.list-toolbar {
    padding:20px 21px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:15px;
    border-bottom:1px solid var(--border)
}

.tabs {
    display:flex;
    gap:3px
}

.tab {
    padding:8px 10px;
    border:0;
    background:none;
    font-size:11px;
    color:#889287;
    border-radius:5px;
    white-space:nowrap
}

.tab.active {
    background:#eaf2ec;
    color:#3c7651;
    font-weight:600
}

.filters {
    display:flex;
    gap:9px
}

input,select,textarea {
    border:1px solid #dce4dc;
    background:#fff;
    border-radius:6px;
    padding:10px 12px;
    color:#374d3e;
    font-size:12px;
    width:100%
}

input::placeholder,textarea::placeholder {
    color:#a1aaa0
}

input:focus,select:focus,textarea:focus {
    outline:2px solid #a9d9be;
    outline-offset:1px
}

input[type=search] {
    width:220px;
    padding:9px 11px
}

select {
    width:116px;
    padding:8px
}

.table-scroll {
    overflow-x:auto
}

table {
    border-collapse:collapse;
    width:100%;
    text-align:left;
    white-space:nowrap
}

th {
    background:#fafbfa;
    color:#93a08f;
    font-size:10px;
    font-weight:500;
    padding:13px 22px;
    border-bottom:1px solid #edf0eb
}

td {
    padding:20px 22px;
    border-bottom:1px solid #eff2ed;
    font-size:11px;
    color:#75816f
}

tbody tr:last-child td {
    border-bottom:0
}

tbody tr:hover {
    background:#fcfdfb
}

.plugin-cell {
    display:flex;
    align-items:center;
    gap:13px
}

.plugin-icon {
    height:38px;
    width:38px;
    flex-shrink:0;
    display:grid;
    place-items:center;
    border:1px solid #e3ebe0;
    background:#f2f7ef;
    color:#6a8c60;
    border-radius:9px;
    font-size:19px;
    font-weight:500
}

.plugin-name {
    color:#34472f;
    font-size:12px;
    font-weight:550;
    max-width:220px;
    overflow:hidden;
    text-overflow:ellipsis
}

.plugin-meta {
    display:flex;
    align-items:center;
    gap:7px;
    font-size:10px;
    color:#a2ac9a;
    margin-top:7px
}

.version-chip {
    background:#f0f3ed;
    color:#7e8c73;
    padding:2px 5px;
    border-radius:3px
}

.target-name {
    color:#576a4e;
    font-size:11px
}

.target-abi {
    margin-top:6px;
    color:#a1ac98;
    font-size:9px;
    max-width:170px;
    overflow:hidden;
    text-overflow:ellipsis
}

.badge {
    display:inline-block;
    border:1px solid transparent;
    padding:4px 8px;
    border-radius:4px;
    font-size:10px
}

.badge.published {
    background:#edf7ed;
    color:#51864b;
    border-color:#dfeede
}

.badge.draft {
    background:#faf4e8;
    color:#a38647;
    border-color:#f0e8d4
}

.badge.withdrawn {
    background:#f1f3f0;
    color:#9aa491;
    border-color:#e6eae1
}

.action-heading {
    text-align:right
}

td.actions {
    text-align:right
}

.row-actions {
    display:flex;
    justify-content:flex-end;
    gap:10px
}

.row-action {
    border:0;
    background:none;
    color:#648654;
    padding:6px 0;
    font-size:11px
}

.row-action.secondary {
    color:#9da890
}

.row-action.danger {
    color:#b57e66
}

.row-action:hover {
    text-decoration:underline
}

.list-footer {
    padding:15px 22px;
    border-top:1px solid var(--border);
    display:flex;
    align-items:center;
    justify-content:space-between;
    color:#a0aa96;
    font-size:10px
}

.list-footer>div {
    display:flex;
    align-items:center;
    gap:12px
}

.page-footnote {
    color:#99a38f;
    font-size:10px;
    margin:18px 0;
    line-height:1.7
}

.empty-state {
    padding:66px 20px 60px;
    text-align:center
}

.empty-icon {
    background:#f0f6ed;
    color:#7ea46c;
    display:grid;
    place-items:center;
    margin:0 auto 20px;
    width:58px;
    height:58px;
    border-radius:16px;
    font-size:30px
}

.empty-state h2 {
    font-size:16px;
    color:#567247
}

.empty-state p {
    font-size:12px;
    color:#9aa68f;
    margin:12px 0 24px
}

.settings-grid {
    display:grid;
    grid-template-columns:1.5fr 1fr;
    gap:22px;
    margin-bottom:22px
}

.settings-card {
    padding:26px
}

.section-label {
    display:flex;
    align-items:flex-start;
    gap:12px;
    margin-bottom:23px
}

.step {
    background:#edf4e9;
    color:#769262;
    border-radius:6px;
    padding:7px;
    font-size:11px
}

.settings-card h2 {
    font-size:15px
}

.settings-card label,.modal label:not(.dropzone),.login-card label {
    display:block;
    font-size:11px;
    color:#718260;
    margin:20px 0 9px
}

.copy-field {
    display:flex;
    align-items:center;
    gap:10px
}

.copy-field input,.copy-field textarea {
    font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
    background:#fafcf9;
    resize:none;
    line-height:1.6;
    font-size:11px
}

.field-note {
    font-size:10px;
    color:#9aa78c;
    line-height:1.8;
    margin:13px 0 0
}

.status-list {
    margin:25px 0 24px
}

.status-list>div {
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:12px;
    margin:20px 0
}

.status-list dt {
    color:#8b997c;
    font-size:11px
}

.status-list dd {
    margin:0;
    color:#647955;
    font-size:11px
}

pre {
    white-space:pre-wrap;
    overflow-wrap:anywhere;
    font-size:12px;
    line-height:1.9;
    background:#f6f9f2;
    border:1px solid #e6eddf;
    border-radius:7px;
    color:#687e56;
    padding:18px;
    margin:20px 0 0
}

.modal {
    border:1px solid #e0e8da;
    border-radius:13px;
    background:#fff;
    padding:28px;
    width:min(530px,calc(100vw - 32px));
    color:#364f2f;
    max-height:calc(100vh - 50px);
    overflow-y:auto;
    box-shadow:0 25px 90px #172f2033
}

.modal::backdrop {
    background:#182c2080;
    backdrop-filter:blur(3px)
}

.modal.large {
    width:min(760px,calc(100vw - 32px))
}

.modal.compact {
    width:min(460px,calc(100vw - 32px))
}

.modal.compact>p {
    color:#8b987c;
    font-size:12px;
    line-height:1.9;
    overflow-wrap:anywhere
}

.dialog-heading {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px
}

.dialog-heading .eyebrow {
    margin-bottom:8px
}

.icon-button {
    background:none;
    border:0;
    font-size:25px;
    color:#9eac8c;
    padding:1px 5px
}

.dialog-footer {
    display:flex;
    justify-content:flex-end;
    gap:9px;
    border-top:1px solid var(--border);
    margin-top:24px;
    padding-top:19px
}

.dropzone {
    margin-top:24px;
    padding:32px 18px;
    display:flex;
    flex-direction:column;
    align-items:center;
    text-align:center;
    border:1.5px dashed #bdceb0;
    border-radius:9px;
    background:#f9fcf5;
    cursor:pointer;
    gap:12px
}

.dropzone.dragging {
    background:#edf7e5;
    border-color:#739962
}

.dropzone strong {
    font-size:13px;
    font-weight:550;
    max-width:100%;
    overflow-wrap:anywhere
}

.dropzone>span:last-child {
    font-size:10px;
    color:#9ba88a
}

.upload-symbol {
    font-size:26px;
    color:#7f9c69;
    display:grid;
    place-items:center;
    width:45px;
    height:45px;
    border-radius:12px;
    background:#edf4e5
}

progress {
    width:100%;
    height:5px;
    accent-color:var(--green);
    margin-top:22px
}

.error {
    font-size:12px;
    color:var(--danger);
    line-height:1.7;
    margin:12px 0 0;
    overflow-wrap:anywhere
}

.error:empty {
    display:none
}

.upload-result {
    margin-top:15px;
    border-radius:7px;
    background:#f1f9ea;
    border:1px solid #dcecca;
    color:#628447;
    padding:15px;
    font-size:12px;
    line-height:1.8
}

.detail-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:19px 22px;
    margin:25px 0
}

.detail-field {
    min-width:0
}

.detail-field.wide-field {
    grid-column:1/-1
}

.detail-field span {
    display:block;
    color:#9aaa88;
    font-size:10px;
    margin-bottom:7px
}

.detail-field strong {
    display:block;
    color:#698152;
    font-size:12px;
    font-weight:500;
    overflow-wrap:anywhere
}

.detail-file-list {
    max-height:170px;
    overflow:auto;
    border:1px solid var(--border);
    border-radius:7px;
    font-family:ui-monospace,SFMono-Regular,Consolas,monospace;
    font-size:10px;
    margin:12px 0;
    color:#789160
}

.detail-file-list div {
    padding:9px 12px;
    display:flex;
    gap:20px;
    justify-content:space-between;
    border-bottom:1px solid #edf2e6
}

.detail-file-list div:last-child {
    border-bottom:0
}

.detail-file-list div>span:first-child {
    overflow-wrap:anywhere
}

.toast-region {
    position:fixed;
    bottom:26px;
    right:28px;
    z-index:100;
    display:grid;
    gap:9px;
    max-width:min(420px,calc(100vw - 32px))
}

.toast {
    padding:13px 18px;
    background:#fff;
    border:1px solid #dce8d2;
    border-radius:8px;
    box-shadow:0 8px 30px #31491a19;
    color:#69864e;
    font-size:12px;
    line-height:1.7
}

.toast.error-toast {
    color:#a46342;
    border-color:#ebdcca
}

.login-screen {
    min-height:100vh;
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:center;
    padding:25px;
    background:#f2f6ef
}

.login-brand {
    display:flex;
    align-items:center;
    gap:12px;
    font-size:23px;
    font-weight:650;
    color:#334f28;
    margin-bottom:32px
}

.login-brand small {
    display:block;
    font-size:9px;
    letter-spacing:2px;
    color:#95a480;
    margin-top:6px
}

.login-card {
    background:#fff;
    border:1px solid #e2ead9;
    padding:36px;
    border-radius:12px;
    width:min(420px,100%);
    box-shadow:0 15px 45px #3b4e2510
}

.login-card h1 {
    font-size:26px
}

.login-card .button {
    margin-top:26px;
    justify-content:space-between
}

.login-footer {
    margin-top:26px;
    color:#a1ac91;
    font-size:10px
}

@media(min-width:1450px) {
    main {
        padding-top:46px
    }
    .stats article {
        padding:24px 27px
    }
    .list-toolbar {
        padding:24px
    }
    .plugin-name {
        max-width:280px
    }
    td {
        padding-top:24px;
        padding-bottom:24px
    }
}

.mobile-target {
    display:none
}

@media(max-width:760px) {
    #page-releases th:nth-child(2),#page-releases th:nth-child(3),#page-releases th:nth-child(4),#page-releases td:nth-child(2),#page-releases td:nth-child(3),#page-releases td:nth-child(4) {
        display:none
    }
    #page-releases th,#page-releases td {
        padding-left:12px;
        padding-right:12px
    }
    .plugin-name {
        max-width:118px;
        font-size:11px
    }
    .plugin-cell {
        gap:8px
    }
    .plugin-icon {
        width:30px;
        height:30px;
        font-size:15px
    }
    .plugin-meta {
        max-width:125px;
        flex-wrap:wrap;
        gap:4px;
        font-size:9px
    }
    .mobile-target {
        display:block;
        flex-basis:100%;
        margin-top:3px
    }
    .row-actions {
        gap:9px
    }
    .row-action {
        font-size:10px
    }
    .badge {
        font-size:9px;
        padding:4px 6px
    }
}

@media(max-width:1180px) {
    main {
        padding:28px 24px
    }
    .topbar {
        padding:0 24px
    }
    .sidebar {
        width:200px
    }
    .main-shell {
        margin-left:200px;
        width:calc(100% - 200px)
    }
    .list-toolbar {
        flex-wrap:wrap
    }
    .filters {
        flex:1
    }
    .filters input {
        flex:1
    }
    .catalog-strip div>span {
        display:block;
        margin-top:5px
    }
    .stats article {
        padding:18px
    }
    .stats strong {
        font-size:25px
    }
    .settings-grid {
        grid-template-columns:1fr
    }
}

@media(max-width:760px) {
    .sidebar {
        position:static;
        width:100%;
        padding:15px 18px
    }
    .workspace {
        display:block
    }
    .brand {
        padding:0;
        font-size:18px
    }
    .brand small {
        font-size:9px
    }
    .nav-caption,.sidebar-note,.account,.nav-count {
        display:none
    }
    nav {
        display:flex;
        margin-top:18px;
        gap:8px
    }
    .nav-item {
        padding:10px;
        font-size:11px;
        gap:7px
    }
    .nav-icon {
        font-size:17px
    }
    .main-shell {
        margin:0;
        width:100%
    }
    .topbar {
        height:52px;
        padding:0 20px
    }
    .environment {
        font-size:10px
    }
    main {
        padding:25px 16px
    }
    .page-heading {
        align-items:flex-start;
        flex-wrap:wrap;
        margin-bottom:22px
    }
    h1 {
        font-size:25px
    }
    .heading-actions {
        width:100%;
        justify-content:flex-end
    }
    .stats {
        grid-template-columns:1fr 1fr;
        gap:10px
    }
    .stats article {
        padding:18px
    }
    .catalog-strip {
        padding:13px;
        gap:8px
    }
    .catalog-strip .text-button {
        font-size:10px
    }
    .catalog-strip div>span {
        font-size:9px
    }
    .list-toolbar {
        padding:15px
    }
    .filters {
        width:100%;
        flex-basis:100%
    }
    .filters input {
        width:100%;
        min-width:0
    }
    .tab {
        font-size:10px;
        padding:7px 8px
    }
    td,th {
        padding-left:16px;
        padding-right:16px
    }
    .settings-card {
        padding:21px
    }
    .copy-field {
        align-items:stretch
    }
    .copy-field button {
        padding:8px
    }
    .status-list>div {
        flex-wrap:wrap
    }
    .detail-grid {
        grid-template-columns:1fr
    }
    .detail-field.wide-field {
        grid-column:1
    }
    .modal {
        padding:23px
    }
    .toast-region {
        right:16px;
        bottom:16px
    }
}
