:root{
  --bg:#0e1116;--bg2:#151a22;--card:#1a2029;--line:#242c38;--txt:#e8edf4;
  --muted:#9aa7b8;--brand:#c8102e;--brand2:#e63950;--accent:#d4af37;--radius:12px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:"Segoe UI",system-ui,"PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--txt);line-height:1.6}
a{color:var(--accent);text-decoration:none}
button{font-family:inherit}
.btn{background:var(--brand);color:#fff;border:none;padding:10px 18px;border-radius:8px;font-weight:600;cursor:pointer;transition:.2s;font-size:14px}
.btn:hover{background:var(--brand2)}
.btn.ghost{background:transparent;border:1px solid var(--line);color:var(--txt)}
.btn.ghost:hover{border-color:var(--accent)}
.btn.sm{padding:6px 12px;font-size:13px}
.btn.danger{background:#7a1020}.btn.danger:hover{background:#a01530}

/* ---- login ---- */
#login{position:fixed;inset:0;display:grid;place-items:center;padding:20px;background:radial-gradient(1000px 600px at 70% -10%,rgba(200,16,46,.18),transparent),var(--bg)}
.login-card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:38px;width:100%;max-width:400px}
.login-card .mark{width:52px;height:52px;border-radius:12px;background:linear-gradient(135deg,var(--brand),var(--accent));display:grid;place-items:center;font-weight:900;font-size:20px;color:#fff;margin-bottom:18px}
.login-card h1{font-size:22px;margin-bottom:4px}
.login-card p{color:var(--muted);font-size:14px;margin-bottom:22px}
.login-card label{display:block;font-size:13px;color:var(--muted);margin:14px 0 6px}
.login-card input{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:12px;color:var(--txt);font-size:15px}
.login-card input:focus{outline:none;border-color:var(--brand)}
.login-card .btn{width:100%;margin-top:22px;padding:13px}
.login-err{color:var(--brand2);font-size:13px;margin-top:12px;min-height:18px}

/* ---- app shell ---- */
#app{display:none;min-height:100vh;grid-template-columns:260px 1fr}
#app.show{display:grid}
.side{background:var(--bg2);border-right:1px solid var(--line);padding:22px 16px;position:sticky;top:0;height:100vh;overflow-y:auto}
.side .brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:17px;margin-bottom:6px;padding:0 8px}
.side .brand .mark{width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,var(--brand),var(--accent));display:grid;place-items:center;font-weight:900;color:#fff;font-size:15px}
.side .sub{color:var(--muted);font-size:12px;padding:0 8px;margin-bottom:22px}
.navsec{display:block;width:100%;text-align:left;background:none;border:none;color:var(--muted);padding:11px 12px;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;display:flex;align-items:center;gap:10px;transition:.15s}
.navsec:hover{background:var(--card);color:var(--txt)}
.navsec.active{background:var(--brand);color:#fff}
.navsec .em{width:20px;text-align:center}
.side-foot{margin-top:18px;padding-top:18px;border-top:1px solid var(--line);display:grid;gap:8px}

.main{padding:0 0 80px}
.topbar{position:sticky;top:0;z-index:10;background:rgba(14,17,22,.9);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);
  padding:16px 32px;display:flex;align-items:center;justify-content:space-between}
.topbar h2{font-size:19px}
.topbar .actions{display:flex;gap:10px;align-items:center}
.content{padding:28px 32px;max-width:900px}
.hint{color:var(--muted);font-size:13px;margin-bottom:22px}

.field{margin-bottom:20px}
.field>label{display:block;font-size:13px;font-weight:600;color:var(--txt);margin-bottom:8px}
.bi{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
@media(max-width:1100px){.bi{grid-template-columns:1fr}}

/* ---- module visibility toggles ---- */
.togglerow{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--card);margin-bottom:10px}
.togglerow .tname{font-weight:700;flex:1;font-size:15px}
.togglerow .tstate{font-size:13px;color:var(--muted);min-width:52px;text-align:right}
.switch{position:relative;width:52px;height:30px;border-radius:20px;background:#3a3f47;border:none;cursor:pointer;transition:background .2s;padding:0;flex:none}
.switch.on{background:var(--brand)}
.switch .knob{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:left .2s}
.switch.on .knob{left:25px}

/* ---- gallery country cards ---- */
.country-card{border-left:3px solid var(--brand)}
.country-card .imgarr{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.country-card .imgarr .addbtn{grid-column:1/-1}
@media(max-width:820px){.country-card .imgarr{grid-template-columns:1fr}}
.bi .col{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:10px}
.bi .col .tag{font-size:11px;color:var(--accent);font-weight:700;letter-spacing:.05em;margin-bottom:6px;display:block}
input.t,textarea.t{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:7px;padding:10px;color:var(--txt);font-size:14px;font-family:inherit}
input.t:focus,textarea.t:focus{outline:none;border-color:var(--brand)}
textarea.t{min-height:80px;resize:vertical}

.imgfield{display:flex;gap:16px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px}
.imgfield .preview{width:120px;height:80px;border-radius:8px;overflow:hidden;background:var(--bg);flex:0 0 auto;border:1px solid var(--line)}
.imgfield .preview img{width:100%;height:100%;object-fit:cover}
.imgfield .meta{flex:1}
.imgfield .meta .n{font-size:13px;color:var(--muted);margin-bottom:8px;word-break:break-all}

.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:16px;position:relative}
.card .card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.card .card-head .idx{font-weight:700;color:var(--accent);font-size:13px}
.card .card-head .ctrls{display:flex;gap:6px}
.iconbtn{background:var(--bg);border:1px solid var(--line);color:var(--muted);width:30px;height:30px;border-radius:7px;cursor:pointer;font-size:14px}
.iconbtn:hover{color:var(--txt);border-color:var(--accent)}
.addbtn{width:100%;background:var(--bg);border:1px dashed var(--line);color:var(--muted);padding:14px;border-radius:10px;cursor:pointer;font-size:14px;font-weight:600;transition:.2s}
.addbtn:hover{border-color:var(--accent);color:var(--accent)}

.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.simplelist .row{display:flex;gap:8px;margin-bottom:8px}
.simplelist .row input{flex:1}

.msg{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:16px;margin-bottom:12px}
.msg .h{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);margin-bottom:6px}
.msg .h b{color:var(--txt);font-size:15px}
.msg .body{font-size:14px;white-space:pre-wrap}
.empty{color:var(--muted);text-align:center;padding:50px 0}

.saving{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--accent);color:#0a0d11;padding:11px 22px;border-radius:999px;font-weight:700;z-index:100;opacity:0;transition:.25s;pointer-events:none}
.saving.show{opacity:1}
.pill{display:inline-block;background:var(--bg);border:1px solid var(--line);color:var(--muted);font-size:12px;padding:3px 10px;border-radius:999px}

@media(max-width:820px){
  #app.show{grid-template-columns:1fr}
  .side{position:fixed;z-index:50;left:0;top:0;transform:translateX(-100%);transition:.25s;width:250px}
  .side.open{transform:none}
  .bi,.grid2{grid-template-columns:1fr}
  .menu-toggle{display:inline-block!important}
}
.menu-toggle{display:none;background:none;border:none;color:var(--txt);font-size:22px;cursor:pointer;margin-right:8px}
