:root{
    --theme:#12b981;
    --theme-dark:#059669;
    --text:#10201a;
    --muted:#66736f;
    --bg:#f6fbf8;
    --card:#ffffff;
    --line:#e7eee9;
    --danger:#ef4444;
    --warning:#f59e0b;
    --home-bg-pc:none;
    --home-bg-mobile:none;
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",Arial,sans-serif;background:linear-gradient(180deg,#f4fff9 0%,var(--bg) 55%,#fff 100%);color:var(--text)}
a{text-decoration:none;color:inherit}.container{width:min(1180px,92vw);margin:0 auto}
.home-body{min-height:100vh;background-image:linear-gradient(180deg,rgba(246,251,248,.92) 0%,rgba(246,251,248,.86) 56%,rgba(255,255,255,.94) 100%),var(--home-bg-pc);background-size:cover;background-position:center;background-attachment:fixed;background-repeat:no-repeat}
.site-hero{padding:54px 0 28px;text-align:center;position:relative;overflow:hidden}.site-hero:before{content:"";position:absolute;inset:-120px auto auto 50%;width:520px;height:520px;transform:translateX(-50%);background:radial-gradient(circle,rgba(18,185,129,.18),transparent 65%);z-index:-1}
.logo-badge{display:inline-flex;align-items:center;gap:10px;background:rgba(255,255,255,.88);border:1px solid var(--line);box-shadow:0 10px 30px rgba(16,32,26,.06);border-radius:999px;padding:10px 18px;color:var(--theme-dark);font-weight:700;backdrop-filter:blur(10px)}.logo-dot{width:10px;height:10px;border-radius:999px;background:var(--theme);box-shadow:0 0 0 6px rgba(18,185,129,.12)}
h1{font-size:42px;line-height:1.15;margin:22px 0 12px;letter-spacing:-.8px}.subtitle{font-size:17px;color:var(--muted);margin:0 auto;max-width:720px;line-height:1.8}.top-actions{display:flex;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:28px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:14px;padding:13px 20px;cursor:pointer;font-size:15px;font-weight:700;transition:.2s;min-height:46px}.btn-primary{background:var(--theme);color:#fff;box-shadow:0 10px 24px rgba(18,185,129,.24)}.btn-primary:hover{background:var(--theme-dark);transform:translateY(-2px)}.btn-light{background:#fff;border:1px solid var(--line);color:var(--text)}.btn-light:hover{border-color:var(--theme);color:var(--theme-dark);transform:translateY(-2px)}
.section-title{display:flex;align-items:end;justify-content:space-between;margin:28px 0 16px;gap:16px}.section-title h2{font-size:24px;margin:0}.section-title p{margin:6px 0 0;color:var(--muted);line-height:1.7}.nav-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:42px}.nav-card{display:flex;flex-direction:column;min-height:176px;background:rgba(255,255,255,.9);border:1px solid var(--line);border-radius:22px;padding:22px;box-shadow:0 14px 36px rgba(16,32,26,.06);transition:.22s;position:relative;overflow:hidden;backdrop-filter:blur(10px)}.nav-card:after{content:"";position:absolute;right:-46px;top:-46px;width:110px;height:110px;background:rgba(18,185,129,.09);border-radius:999px;transition:.22s}.nav-card:hover{transform:translateY(-4px);border-color:rgba(18,185,129,.45);box-shadow:0 18px 42px rgba(16,32,26,.1)}.nav-card:hover:after{transform:scale(1.2)}.nav-icon{width:54px;height:54px;border-radius:16px;background:rgba(18,185,129,.1);display:flex;align-items:center;justify-content:center;color:var(--theme-dark);font-size:26px;font-weight:800;margin-bottom:16px;overflow:hidden}.nav-icon img{width:100%;height:100%;object-fit:cover;border-radius:16px}.nav-card h3{font-size:19px;margin:0 0 10px;position:relative;z-index:1}.nav-card p{margin:0;color:var(--muted);line-height:1.65;font-size:14px;position:relative;z-index:1;flex:1}.nav-enter{margin-top:18px;color:var(--theme-dark);font-weight:800;position:relative;z-index:1}.empty{background:#fff;border:1px dashed var(--line);border-radius:18px;padding:32px;text-align:center;color:var(--muted)}.footer{border-top:1px solid var(--line);padding:24px 0 32px;text-align:center;color:var(--muted);font-size:14px;line-height:1.9;background:rgba(255,255,255,.62);backdrop-filter:blur(10px)}.footer a{color:var(--theme-dark)}

/* Admin */
.admin-body{background:#f7faf8;min-height:100vh}.admin-layout{display:flex;min-height:100vh}.sidebar{width:238px;background:#10201a;color:#d7ede4;padding:22px;position:fixed;inset:0 auto 0 0;overflow:auto}.sidebar-brand{font-size:20px;font-weight:900;margin-bottom:28px;color:#fff}.sidebar a{display:flex;padding:12px 14px;border-radius:12px;color:#d7ede4;margin-bottom:6px;font-weight:700}.sidebar a:hover,.sidebar a.active{background:rgba(18,185,129,.18);color:#fff}.main{margin-left:238px;width:calc(100% - 238px);padding:28px}.admin-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:16px}.admin-top h1{font-size:26px;margin:0}.admin-top p{margin:6px 0 0;color:var(--muted)}.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:0 12px 28px rgba(16,32,26,.04);margin-bottom:18px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.form-full{grid-column:1/-1}label{display:block;font-weight:800;margin-bottom:8px;color:#21322d}.help{font-size:13px;color:var(--muted);margin-top:6px;line-height:1.6}input,textarea,select{width:100%;border:1px solid #dfe8e3;background:#fff;border-radius:12px;padding:12px 13px;font-size:15px;outline:none;transition:.2s;font-family:inherit}textarea{min-height:100px;resize:vertical}input:focus,textarea:focus,select:focus{border-color:var(--theme);box-shadow:0 0 0 4px rgba(18,185,129,.1)}.table-wrap{overflow:auto}.table{width:100%;border-collapse:collapse;font-size:14px}.table th,.table td{border-bottom:1px solid var(--line);padding:12px;text-align:left;vertical-align:middle}.table th{color:#31443d;background:#f8fbf9}.table tr:hover td{background:#fcfefd}.badge{display:inline-flex;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:800}.badge-ok{background:rgba(18,185,129,.12);color:var(--theme-dark)}.badge-off{background:#f1f5f3;color:#64736d}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn-sm{min-height:auto;padding:8px 12px;border-radius:10px;font-size:13px}.btn-danger{background:var(--danger);color:#fff}.btn-warning{background:var(--warning);color:#fff}.alert{border-radius:14px;padding:13px 15px;margin-bottom:16px;font-weight:700}.alert-ok{background:rgba(18,185,129,.12);color:var(--theme-dark)}.alert-error{background:rgba(239,68,68,.1);color:#b91c1c}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#f4fff9,#fff)}.login-box{width:min(420px,92vw);background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:0 20px 60px rgba(16,32,26,.1)}.login-box h1{font-size:26px;margin:0 0 18px;text-align:center}.login-box .btn{width:100%}.install-page{min-height:100vh;background:linear-gradient(135deg,#f4fff9,#fff);padding:40px 0}.install-box{width:min(760px,92vw);margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:24px;padding:28px;box-shadow:0 20px 60px rgba(16,32,26,.08)}.install-box h1{font-size:30px;margin:0 0 8px}.install-box .subtitle{text-align:left;margin:0 0 24px}.step-title{font-size:17px;font-weight:900;margin:18px 0 12px;color:var(--theme-dark)}
.thumb{width:44px;height:44px;border-radius:12px;object-fit:cover;background:#eef7f2;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;font-size:24px;overflow:hidden}.thumb img{width:100%;height:100%;object-fit:cover}.preview-img{max-width:180px;max-height:90px;border-radius:12px;border:1px solid var(--line);background:#f8fbf9;object-fit:cover}.modal-mask{position:fixed;inset:0;background:rgba(16,32,26,.45);display:none;align-items:center;justify-content:center;z-index:100;padding:18px}.modal-mask.show{display:flex}.modal{width:min(760px,96vw);max-height:92vh;overflow:auto;background:#fff;border-radius:22px;border:1px solid var(--line);box-shadow:0 24px 80px rgba(16,32,26,.22);padding:22px}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.modal-head h2{margin:0;font-size:22px}.modal-close{width:38px;height:38px;border-radius:12px;border:1px solid var(--line);background:#fff;font-size:22px;line-height:1;cursor:pointer}.split-title{font-size:16px;font-weight:900;color:var(--theme-dark);margin:6px 0 12px}.color-row{display:flex;gap:10px;align-items:center}.color-row input[type="color"]{width:64px;padding:4px;height:46px}.file-row{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:center}.current-file{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.nowrap{white-space:nowrap}.muted{color:var(--muted)}
@media(max-width:980px){.nav-grid{grid-template-columns:repeat(2,1fr)}.sidebar{position:static;width:100%;height:auto}.admin-layout{display:block}.main{margin-left:0;width:100%;padding:18px}.form-grid{grid-template-columns:1fr}.home-body{background-image:linear-gradient(180deg,rgba(246,251,248,.9) 0%,rgba(246,251,248,.86) 56%,rgba(255,255,255,.94) 100%),var(--home-bg-mobile);background-attachment:scroll}}
@media(max-width:560px){h1{font-size:32px}.nav-grid{grid-template-columns:1fr}.top-actions .btn{width:100%}.section-title{display:block}.admin-top{align-items:flex-start;flex-direction:column}.panel{padding:16px}.modal{padding:16px}.file-row{grid-template-columns:1fr}}
.install-log{margin:0;padding:14px;border-radius:12px;background:#0f172a;color:#e5e7eb;line-height:1.7;white-space:pre-wrap;word-break:break-all;font-size:13px}.check-line{display:flex;gap:8px;align-items:center}
.status-toggle{display:inline-flex;text-decoration:none}.status-toggle .badge{cursor:pointer;transition:.18s}.status-toggle:hover .badge{transform:translateY(-1px);box-shadow:0 6px 14px rgba(16,32,26,.08)}


/* Liquid glass home theme */
.home-body{
    position:relative;
    isolation:isolate;
    min-height:100vh;
    background-image:
        linear-gradient(180deg,rgba(255,255,255,.22) 0%,rgba(255,255,255,.13) 48%,rgba(255,255,255,.26) 100%),
        var(--home-bg-pc);
    background-size:cover;
    background-position:center;
    background-attachment:fixed;
    background-repeat:no-repeat;
}
.home-body::before{
    content:"";
    position:fixed;
    inset:0;
    z-index:-1;
    pointer-events:none;
    background:
        radial-gradient(circle at 18% 16%,rgba(255,255,255,.52),transparent 28%),
        radial-gradient(circle at 82% 12%,rgba(18,185,129,.20),transparent 30%),
        radial-gradient(circle at 50% 88%,rgba(255,255,255,.36),transparent 35%);
}
.home-body::after{
    content:"";
    position:fixed;
    inset:0;
    z-index:-1;
    pointer-events:none;
    background:rgba(255,255,255,.08);
    backdrop-filter:saturate(1.12);
    -webkit-backdrop-filter:saturate(1.12);
}
.site-hero{
    margin-top:28px;
    padding:42px 26px 32px;
    border:1px solid rgba(255,255,255,.58);
    border-radius:34px;
    background:linear-gradient(135deg,rgba(255,255,255,.44),rgba(255,255,255,.18));
    box-shadow:0 24px 80px rgba(16,32,26,.16), inset 0 1px 0 rgba(255,255,255,.76);
    backdrop-filter:blur(22px) saturate(1.35);
    -webkit-backdrop-filter:blur(22px) saturate(1.35);
}
.site-hero::before{
    content:"";
    position:absolute;
    inset:-2px;
    border-radius:inherit;
    background:
        radial-gradient(circle at 26% 0%,rgba(255,255,255,.68),transparent 28%),
        radial-gradient(circle at 82% 18%,rgba(18,185,129,.20),transparent 32%),
        linear-gradient(120deg,transparent 0%,rgba(255,255,255,.28) 44%,transparent 62%);
    z-index:-1;
}
.logo-badge,
.btn-light,
.empty,
.footer{
    background:linear-gradient(135deg,rgba(255,255,255,.54),rgba(255,255,255,.22));
    border-color:rgba(255,255,255,.58);
    box-shadow:0 14px 38px rgba(16,32,26,.12), inset 0 1px 0 rgba(255,255,255,.70);
    backdrop-filter:blur(18px) saturate(1.3);
    -webkit-backdrop-filter:blur(18px) saturate(1.3);
}
.btn-primary{
    background:linear-gradient(135deg,var(--theme),var(--theme-dark));
    box-shadow:0 16px 34px rgba(18,185,129,.26), inset 0 1px 0 rgba(255,255,255,.36);
}
.section-title{
    padding:18px 20px;
    border:1px solid rgba(255,255,255,.52);
    border-radius:24px;
    background:linear-gradient(135deg,rgba(255,255,255,.42),rgba(255,255,255,.16));
    box-shadow:0 16px 42px rgba(16,32,26,.10), inset 0 1px 0 rgba(255,255,255,.70);
    backdrop-filter:blur(16px) saturate(1.24);
    -webkit-backdrop-filter:blur(16px) saturate(1.24);
}
.nav-card{
    background:linear-gradient(145deg,rgba(255,255,255,.50),rgba(255,255,255,.18) 58%,rgba(255,255,255,.34));
    border:1px solid rgba(255,255,255,.60);
    box-shadow:0 22px 60px rgba(16,32,26,.16), inset 0 1px 0 rgba(255,255,255,.76), inset 0 -1px 0 rgba(255,255,255,.18);
    backdrop-filter:blur(20px) saturate(1.35);
    -webkit-backdrop-filter:blur(20px) saturate(1.35);
}
.nav-card::before{
    content:"";
    position:absolute;
    inset:0;
    border-radius:inherit;
    pointer-events:none;
    background:
        radial-gradient(circle at 18% 0%,rgba(255,255,255,.66),transparent 26%),
        linear-gradient(120deg,transparent 10%,rgba(255,255,255,.24) 42%,transparent 62%);
    opacity:.86;
}
.nav-card::after{
    background:radial-gradient(circle,rgba(18,185,129,.16),transparent 68%);
}
.nav-card:hover{
    transform:translateY(-6px) scale(1.01);
    border-color:rgba(255,255,255,.80);
    box-shadow:0 30px 78px rgba(16,32,26,.22), inset 0 1px 0 rgba(255,255,255,.88);
}
.nav-icon{
    position:relative;
    z-index:1;
    background:linear-gradient(135deg,rgba(255,255,255,.58),rgba(18,185,129,.14));
    border:1px solid rgba(255,255,255,.66);
    box-shadow:0 12px 26px rgba(16,32,26,.12), inset 0 1px 0 rgba(255,255,255,.70);
    backdrop-filter:blur(12px);
    -webkit-backdrop-filter:blur(12px);
}
.nav-enter{
    display:inline-flex;
    width:max-content;
    padding:8px 12px;
    border-radius:999px;
    background:rgba(255,255,255,.34);
    border:1px solid rgba(255,255,255,.58);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.70);
}
.site-hero h1,
.site-hero .subtitle,
.section-title h2,
.section-title p,
.nav-card h3,
.nav-card p,
.nav-enter{
    text-shadow:0 1px 8px rgba(255,255,255,.48);
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
    .site-hero,.nav-card,.section-title,.logo-badge,.btn-light,.empty,.footer{background:rgba(255,255,255,.82)}
}
@media(max-width:980px){
    .home-body{
        background-image:
            linear-gradient(180deg,rgba(255,255,255,.24) 0%,rgba(255,255,255,.14) 48%,rgba(255,255,255,.28) 100%),
            var(--home-bg-mobile);
        background-attachment:scroll;
    }
}
@media(max-width:560px){
    .site-hero{margin-top:18px;border-radius:26px;padding:32px 18px 26px}
    .section-title{padding:16px;border-radius:20px}
}

/* 首页按钮图片图标：和项目导航一致，文字图标作为备用 */
.quick-icon{
    width:24px;
    height:24px;
    border-radius:8px;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    flex:0 0 24px;
    overflow:hidden;
    font-size:18px;
    line-height:1;
}
.quick-icon img{
    width:100%;
    height:100%;
    object-fit:cover;
    border-radius:8px;
    display:block;
}
.top-actions .btn{
    gap:9px;
}
@media(max-width:560px){
    .quick-icon{width:26px;height:26px;border-radius:9px}
}
