:root { --ink:#17251e; --muted:#66756b; --line:#dce4dd; --bg:#eef1ec; --card:#fff; --forest:#16634b; --forest-dark:#0d3328; --gold:#c9a45c; --danger:#ae3b35; --shadow:0 12px 30px rgba(23,37,30,.08); }
* { box-sizing: border-box; }
body { margin:0; background:var(--bg); color:var(--ink); font:15px/1.65 "Segoe UI","Microsoft YaHei","PingFang SC",sans-serif; }
a { color:inherit; }
button,input,textarea { font:inherit; }
[hidden] { display:none !important; }
.admin-shell { width:min(1180px,100%); margin:0 auto; padding:0 22px; }
.login-view { min-height:100vh; display:grid; place-items:center; padding:24px; background:radial-gradient(circle at 15% 15%,#255e49 0,transparent 34%),linear-gradient(135deg,#08140f,#123a2d 70%,#0d241d); }
.login-card { width:min(430px,100%); padding:34px; border-radius:12px; background:#fff; box-shadow:0 24px 80px rgba(0,0,0,.3); }
.admin-brand { display:flex; align-items:center; gap:11px; color:inherit; text-decoration:none; }
.admin-brand .brand-mark { display:grid; place-items:center; width:42px; height:42px; border-radius:9px; background:var(--forest); color:#fff; font-weight:800; }
.admin-brand strong,.admin-brand small { display:block; }
.admin-brand small { color:var(--muted); font-size:12px; }
.admin-brand.light { color:#fff; } .admin-brand.light .brand-mark { background:var(--gold); color:var(--forest-dark); } .admin-brand.light small { color:#aab9ae; }
.login-card h1 { margin:25px 0 4px; font-size:28px; } .muted { color:var(--muted); margin-top:0; }
label { display:block; margin-top:16px; color:#34443a; font-size:13px; font-weight:700; }
input,textarea { width:100%; margin-top:7px; padding:11px 12px; border:1px solid #cfd9d1; border-radius:7px; background:#fff; color:var(--ink); font-weight:400; }
textarea { resize:vertical; }
input:focus,textarea:focus { border-color:var(--forest); outline:3px solid rgba(22,99,75,.12); }
.btn { display:inline-flex; align-items:center; justify-content:center; min-height:40px; padding:8px 15px; border:1px solid #cdd7cf; border-radius:7px; background:#fff; color:var(--ink); font-weight:700; cursor:pointer; text-decoration:none; }
.btn:hover { border-color:var(--forest); }
.btn.primary { border-color:var(--forest); background:var(--forest); color:#fff; } .btn.primary:hover { background:#0f513d; }
.btn.ghost { border-color:rgba(255,255,255,.22); background:transparent; color:#fff; }
.btn.small { min-height:34px; padding:6px 11px; font-size:13px; } .wide { width:100%; margin-top:20px; }
.slider-captcha { margin-top:16px; }
.slider-track { position:relative; height:48px; overflow:hidden; border:1px solid #cfd9d1; border-radius:8px; background:linear-gradient(90deg,#edf3ef,#f8faf8); user-select:none; touch-action:none; }
.slider-target { position:absolute; top:7px; width:34px; height:34px; border:2px dashed rgba(22,99,75,.55); border-radius:8px; background:rgba(22,99,75,.08); }
.slider-fill { position:absolute; inset:0 auto 0 0; width:0; background:rgba(22,99,75,.16); }
.slider-handle { position:absolute; top:3px; left:3px; z-index:2; display:grid; place-items:center; width:42px; height:40px; border:0; border-radius:7px; background:var(--forest); color:#fff; font-size:24px; cursor:grab; touch-action:none; box-shadow:0 3px 10px rgba(22,99,75,.25); }
.slider-handle:active { cursor:grabbing; }
.slider-captcha.solved .slider-track { border-color:var(--forest); background:#e7f2eb; }
.slider-captcha.solved .slider-handle { background:#0f513d; }
.slider-captcha.error .slider-track { border-color:var(--danger); }
.slider-hint { margin-top:7px; color:var(--muted); font-size:12px; }
.slider-captcha.solved .slider-hint { color:var(--forest); }
.slider-captcha.error .slider-hint { color:var(--danger); }
.btn:disabled { opacity:.55; cursor:not-allowed; }
.form-error { min-height:22px; margin:12px 0 0; color:var(--danger); font-size:13px; }
.back-link { display:block; margin-top:17px; color:var(--muted); text-align:center; font-size:13px; }
.admin-header { position:sticky; top:0; z-index:20; background:rgba(13,36,29,.97); color:#fff; box-shadow:0 4px 18px rgba(0,0,0,.12); }
.header-inner { min-height:68px; display:flex; align-items:center; justify-content:space-between; gap:18px; }
.header-actions { display:flex; align-items:center; gap:12px; } .save-state { color:#aab9ae; font-size:13px; }
.admin-main { padding-top:30px; padding-bottom:70px; }
.page-intro { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; }
.eyebrow { color:var(--forest); font-size:12px; font-weight:800; letter-spacing:.13em; }
.page-intro h1 { margin:4px 0 0; font-size:32px; } .page-intro p { margin:5px 0 0; color:var(--muted); }
.notice { min-height:24px; margin:18px 0 0; color:var(--forest); font-weight:700; } .notice.error { color:var(--danger); }
.panel { margin-top:18px; padding:24px; border:1px solid var(--line); border-radius:10px; background:var(--card); box-shadow:var(--shadow); }
.panel-head { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:17px; }
.panel-head > div { display:flex; align-items:center; gap:11px; } .panel-head h2 { margin:0; font-size:20px; } .panel-head p { margin:0; color:var(--muted); font-size:13px; }
.step { display:grid; place-items:center; width:34px; height:34px; border-radius:8px; background:#e5efe8; color:var(--forest); font-size:12px; font-weight:800; }
.field-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:2px 16px; } .span-2 { grid-column:span 2; }
.switch-line { display:flex; align-items:center; gap:10px; margin-top:12px; } .switch-line input { width:auto; margin:0; } .switch-line span { font-weight:700; }
.repeater { display:grid; gap:12px; } .repeater:empty::after { content:"暂无内容"; padding:24px; border:1px dashed #c6d2c9; border-radius:8px; color:var(--muted); text-align:center; }
.repeat-card { padding:16px; border:1px solid var(--line); border-radius:8px; background:#fafcf9; }
.repeat-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:8px; }
.repeat-head strong { font-size:13px; } .remove { border:0; background:none; color:var(--danger); cursor:pointer; font-size:13px; }
.repeat-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 12px; } .repeat-grid label { margin-top:10px; } .repeat-grid .span-2 { grid-column:span 2; }
.password-form { display:grid; grid-template-columns:1fr 1fr auto; align-items:end; gap:14px; } .password-form label { margin:0; }
.bottom-save { display:flex; justify-content:flex-end; margin-top:22px; }
@media (max-width:760px) { .admin-shell { padding:0 14px; } .header-inner,.page-intro,.panel-head { align-items:flex-start; flex-direction:column; } .field-grid,.repeat-grid,.password-form { grid-template-columns:1fr; } .span-2,.repeat-grid .span-2 { grid-column:auto; } .panel { padding:18px; } .header-actions { width:100%; justify-content:space-between; } }