:root{
  --purple:#6c3bff;--purple-d:#5525e7;--ink:#11182f;--muted:#5b6178;--line:#e7e0ff;
  --soft:#f7f3ff;--bg:#faf7ff;--ok:#1d9e75;--err:#c0392b
}
*{box-sizing:border-box}
body{margin:0;font-family:Inter,Pretendard,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans KR",sans-serif;
  color:var(--ink);background:linear-gradient(180deg,#fff,var(--bg) 60%,#fff);letter-spacing:-.01em;line-height:1.6}
a{color:inherit;text-decoration:none}
.wrap{max-width:1120px;margin:0 auto;padding:0 22px}
.site-top{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line)}
.site-top .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}
.brand{font-size:20px;font-weight:900;color:var(--purple);display:flex;align-items:center;gap:8px}
.brand small{color:var(--ink);font-weight:800;font-size:15px}
.nav-mini a{font-size:14px;font-weight:700;color:var(--muted);margin-left:18px}
.nav-mini a:hover{color:var(--purple)}
.hero{padding:48px 0 22px}
.hero h1{font-size:30px;font-weight:900;margin:0 0 8px}
.hero p{margin:0;color:var(--muted)}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:22px 0}
.cats{display:flex;gap:8px;flex-wrap:wrap}
.chip{font-size:13px;font-weight:800;padding:8px 14px;border-radius:999px;border:1.5px solid var(--line);
  background:#fff;color:var(--muted)}
.chip.active,.chip:hover{border-color:var(--purple);color:var(--purple);background:var(--soft)}
form.search{margin-left:auto;display:flex;gap:8px}
input,textarea,select{font-family:inherit;font-size:14px;color:var(--ink);border:1.5px solid var(--line);
  border-radius:10px;padding:10px 12px;background:#fff}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--purple)}
.btn{display:inline-flex;align-items:center;gap:6px;font-weight:800;font-size:14px;padding:10px 16px;border-radius:11px;
  border:1.5px solid var(--line);background:#fff;color:var(--ink);cursor:pointer}
.btn:hover{border-color:#b9a3ff}
.btn.primary{background:var(--purple);border-color:var(--purple);color:#fff}
.btn.primary:hover{background:var(--purple-d)}
.btn.danger{color:var(--err);border-color:#f0c4be}
.btn.sm{padding:7px 12px;font-size:12.5px}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:8px 0 36px}
.card{display:flex;flex-direction:column;background:#fff;border:1px solid #ece6ff;border-radius:16px;overflow:hidden;
  box-shadow:0 6px 22px rgba(28,18,80,.06);transition:transform .15s,box-shadow .15s}
.card:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(108,59,255,.16)}
.card .thumb{aspect-ratio:16/9;background:#efeaff center/cover no-repeat;display:block}
.card .body{padding:18px;display:flex;flex-direction:column;gap:8px;flex:1}
.meta{display:flex;align-items:center;gap:8px;font-size:12px}
.tag{color:var(--purple);font-weight:800;background:var(--soft);border-radius:999px;padding:3px 10px}
.date{color:#8a90a6;font-weight:700}
.views{color:#a7adbe;margin-left:auto}
.card h3{font-size:16px;font-weight:800;margin:0;line-height:1.45}
.card .sum{font-size:13.5px;color:var(--muted);flex:1}
.pager{display:flex;justify-content:center;gap:6px;margin:10px 0 60px}
.pager a,.pager span{min-width:38px;text-align:center;padding:8px 10px;border-radius:10px;border:1.5px solid var(--line);
  font-weight:800;font-size:14px;color:var(--muted);background:#fff}
.pager .on{background:var(--purple);border-color:var(--purple);color:#fff}
.empty{text-align:center;color:#8a90a6;padding:60px 0}
/* 상세 */
.detail{background:#fff;border:1px solid var(--line);border-radius:18px;padding:34px;margin:26px 0 50px;
  box-shadow:0 10px 30px rgba(28,18,80,.06)}
.detail h1{font-size:26px;font-weight:900;margin:10px 0 14px;line-height:1.35}
.detail .thumb{width:100%;border-radius:14px;margin:18px 0}
.detail .content{font-size:15.5px;line-height:1.85;white-space:pre-wrap;word-break:keep-all}
/* 어드민 */
.admin-head{display:flex;align-items:center;justify-content:space-between;margin:30px 0 18px;gap:12px;flex-wrap:wrap}
.admin-head h1{font-size:22px;margin:0;font-weight:900}
table.tb{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}
table.tb th,table.tb td{padding:12px 14px;text-align:left;font-size:14px;border-bottom:1px solid #f0ecff}
table.tb th{background:var(--soft);font-size:12.5px;color:var(--muted);font-weight:800}
table.tb tr:last-child td{border-bottom:0}
.badge{font-size:11.5px;font-weight:800;padding:3px 9px;border-radius:999px;background:var(--soft);color:var(--purple)}
.badge.off{background:#f1efe8;color:#888780}
.formcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:26px;margin:18px 0 60px;max-width:760px}
.formcard label{display:block;font-size:12px;font-weight:800;color:var(--muted);margin:14px 0 5px}
.formcard input[type=text],.formcard textarea,.formcard select,.formcard input[type=url]{width:100%}
.formcard textarea{min-height:150px;resize:vertical}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.login-box{max-width:380px;margin:80px auto;background:#fff;border:1px solid var(--line);border-radius:18px;padding:34px;
  box-shadow:0 12px 40px rgba(28,18,80,.1)}
.login-box h1{font-size:22px;margin:0 0 18px;font-weight:900;text-align:center}
.login-box input{width:100%;margin-bottom:12px}
.flash{padding:12px 16px;border-radius:11px;font-size:14px;font-weight:700;margin:14px 0}
.flash.ok{background:#e1f5ee;color:var(--ok)}
.flash.error{background:#fcebeb;color:var(--err)}
.foot{border-top:1px solid var(--line);padding:26px 0;color:#9aa0b2;font-size:13px;text-align:center}
.inline{display:inline}
@media(max-width:860px){.grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.grid{grid-template-columns:1fr}.row2{grid-template-columns:1fr}.hero h1{font-size:24px}}
