:root{--c-red: #e63e0a;--c-red-deep: #c4320a;--c-red-dark: #2a0e06;--c-red-darker: #170805;--c-blue: #0a6abe;--c-blue-soft: #4fa3e0;--c-gold: #fa8c0a;--c-gold-soft: #ffc266;--c-ink: #1a120e;--c-paper: #fbf7f2;--c-white: #ffffff;--c-muted: #917f78;--c-line: #efe3d6;--font-serif: "Noto Serif SC", "Songti SC", serif;--font-sans: "Noto Sans SC", -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;--radius: 12px;--shadow: 0 18px 40px -26px rgba(26, 5, 9, .4)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);color:var(--c-ink);background:var(--c-paper);line-height:1.6}a{color:inherit;text-decoration:none}button{font-family:inherit}.login-page{min-height:100vh;display:grid;place-items:center;background:radial-gradient(900px 500px at 80% 0%,rgba(200,16,46,.25),transparent 60%),linear-gradient(160deg,var(--c-red-darker),#3a1208 70%,var(--c-red-dark));padding:24px}.login-card{width:100%;max-width:400px;background:#fffffff5;border-radius:16px;padding:40px 34px;box-shadow:var(--shadow)}.login-card h1{font-family:var(--font-serif);font-size:22px;text-align:center;color:var(--c-red-deep)}.login-card .sub{text-align:center;color:var(--c-muted);font-size:14px;margin:8px 0 26px}.login-card .hint{margin-top:16px;font-size:12px;color:var(--c-muted);text-align:center}.admin{display:flex;min-height:100vh}.sidebar{width:240px;flex-shrink:0;background:linear-gradient(180deg,var(--c-red-darker),var(--c-red-dark));color:#fff;padding:26px 18px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column}.sidebar .brand{display:flex;align-items:center;gap:10px;font-family:var(--font-serif);font-weight:700;font-size:17px;padding:0 8px 20px;border-bottom:1px solid rgba(255,255,255,.1)}.sidebar .brand img{width:30px;height:30px}.sidebar nav{margin-top:18px;display:flex;flex-direction:column;gap:4px;flex:1}.sidebar nav a{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;color:#ffffffc7;font-size:15px;transition:background .25s,color .25s}.sidebar nav a:hover{background:#ffffff12;color:#fff}.sidebar nav a.router-link-active{background:#c8102e73;color:#fff}.sidebar .logout{margin-top:auto;background:#ffffff14;border:1px solid rgba(255,255,255,.16);color:#fff;padding:10px;border-radius:10px;cursor:pointer;font-size:14px}.sidebar .logout:hover{background:#c8102e80}.content{flex:1;padding:36px 44px;overflow:auto}.page-head{margin-bottom:26px}.page-head h2{font-family:var(--font-serif);font-size:26px;color:var(--c-ink)}.page-head p{color:var(--c-muted);font-size:14px;margin-top:4px}.card{background:#fff;border:1px solid var(--c-line);border-radius:var(--radius);padding:24px 26px;box-shadow:var(--shadow);margin-bottom:22px}.card h3{font-size:16px;margin-bottom:16px;color:var(--c-red-deep)}.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px}.dash-card{background:#fff;border:1px solid var(--c-line);border-radius:var(--radius);padding:24px;box-shadow:var(--shadow)}.dash-card .v{font-family:var(--font-serif);font-size:30px;color:var(--c-red);font-weight:700}.dash-card .k{color:var(--c-muted);font-size:14px;margin-top:6px}.dash-card .link{display:inline-block;margin-top:14px;color:var(--c-gold);font-size:13px}.field{margin-bottom:16px}.field label{display:block;font-size:13px;font-weight:500;margin-bottom:6px;color:#4a403c}.field input,.field textarea{width:100%;padding:11px 14px;border:1px solid var(--c-line);border-radius:9px;font-family:inherit;font-size:14px;background:#fbf9f7;color:var(--c-ink);transition:border-color .25s,box-shadow .25s}.field input:focus,.field textarea:focus{outline:none;border-color:var(--c-red);box-shadow:0 0 0 3px #c8102e1f}.field textarea{min-height:90px;resize:vertical}.field .help{font-size:12px;color:var(--c-muted);margin-top:4px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width: 720px){.grid-2{grid-template-columns:1fr}.content{padding:24px 18px}.sidebar{display:none}}.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:999px;font-size:14px;font-weight:500;border:1px solid transparent;cursor:pointer;transition:transform .3s,box-shadow .3s,background .3s}.btn-primary{background:linear-gradient(135deg,var(--c-red),var(--c-red-deep));color:#fff;box-shadow:0 14px 30px -16px #c8102eb3}.btn-primary:hover{transform:translateY(-2px)}.btn-ghost{border-color:var(--c-line);background:#fff;color:var(--c-ink)}.btn-ghost:hover{border-color:var(--c-red);color:var(--c-red)}.btn-danger{background:#fff;border-color:#c8102e66;color:var(--c-red)}.btn-danger:hover{background:#c8102e14}.btn:disabled{opacity:.6;cursor:not-allowed;transform:none}.msg{margin-top:14px;padding:11px 16px;border-radius:9px;font-size:14px}.msg.ok{background:#1478461a;color:#157a47}.msg.err{background:#c8102e14;color:var(--c-red-deep)}.list{display:flex;flex-direction:column;gap:12px}.row{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#fff;border:1px solid var(--c-line);border-radius:10px;padding:16px 18px}.row .title{font-weight:600}.row .meta{color:var(--c-muted);font-size:13px;margin-top:3px}.row .tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.row .tags span{font-size:11px;padding:3px 9px;border-radius:999px;background:#c8102e12;color:var(--c-red-deep)}.row .actions{display:flex;gap:8px;flex-shrink:0}.empty{text-align:center;color:var(--c-muted);padding:40px 0}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#19050980;display:grid;place-items:center;z-index:100;padding:20px}.modal{background:#fff;border-radius:14px;padding:28px 30px;width:100%;max-width:560px;max-height:88vh;overflow:auto;box-shadow:var(--shadow)}.modal h3{font-family:var(--font-serif);color:var(--c-red-deep);margin-bottom:18px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.json{width:100%;min-height:140px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:13px;padding:12px;border:1px solid var(--c-line);border-radius:9px;background:#fbf9f7;color:var(--c-ink);resize:vertical}.json-err{color:var(--c-red);font-size:12px;margin-top:6px}
