:root{
  --blue:#1f6feb; --ink:#111827; --slate:#4b5563; --muted:#6b7280;
  --line:#e5e7eb; --bg:#f7f8fa; --card:#fff; --danger:#d62828; --ok:#15803d;
  --radius:10px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.6 "Pretendard","Malgun Gothic",system-ui,-apple-system,sans-serif}
h1,h2,h3{margin:0;font-weight:650;letter-spacing:-.01em}
button{font:inherit;cursor:pointer;border-radius:8px;border:1px solid var(--line);
  background:#fff;padding:8px 14px;transition:background .15s,border-color .15s}
button:hover{background:#f3f4f6}
button:disabled{opacity:.5;cursor:default}
button.primary{background:var(--blue);border-color:var(--blue);color:#fff}
button.primary:hover{background:#1a5fd0}
button.danger{color:var(--danger);border-color:#f3c4c4}
button.danger:hover{background:#fdf0f0}
button.ghost{background:transparent}
input,select,textarea{font:inherit;width:100%;padding:9px 12px;border:1px solid var(--line);
  border-radius:8px;background:#fff;color:var(--ink)}
input:focus,select:focus,textarea:focus,.editor:focus{outline:2px solid #bcd3fb;outline-offset:1px;border-color:var(--blue)}
label{display:block;margin:18px 0 6px;font-weight:600;font-size:.92rem}
.hint{font-weight:400;color:var(--muted);font-size:.85rem}
.spacer{flex:1}
.hidden{display:none !important}

/* ---- 로그인 ---- */
.login-body{display:grid;place-items:center;min-height:100vh}
.login-box{width:min(380px,92vw);background:var(--card);padding:34px 30px 30px;
  border:1px solid var(--line);border-radius:14px}
.login-box h1{font-size:1.3rem}
.login-box .sub{margin:4px 0 22px;color:var(--muted);font-size:.9rem}
.login-box button{width:100%;margin-top:22px;background:var(--blue);border-color:var(--blue);color:#fff;padding:11px}
.err{color:var(--danger);font-size:.88rem;margin:14px 0 0;min-height:1.2em}

/* ---- 상단바 ---- */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:14px;
  padding:12px 22px;background:#fff;border-bottom:1px solid var(--line)}
.tabs{display:flex;gap:4px}
.tab{border:0;background:transparent;padding:7px 13px;color:var(--slate)}
.tab.active{background:#eef4ff;color:var(--blue);font-weight:600}
.who{color:var(--muted);font-size:.88rem}

/* ---- 화면 공통 ---- */
.view{max-width:1080px;margin:0 auto;padding:26px 22px 90px}
.bar{display:flex;align-items:center;gap:10px;margin-bottom:18px;flex-wrap:wrap}
.bar h2{font-size:1.12rem}
.count{color:var(--muted);font-weight:400;font-size:.9rem}
#postSearch{width:200px}

/* ---- 목록 ---- */
.list{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.list th,.list td{padding:11px 14px;text-align:left;border-bottom:1px solid var(--line);vertical-align:top}
.list th{background:#fafbfc;font-size:.85rem;color:var(--slate);font-weight:600}
.list tr:last-child td{border-bottom:0}
.list tr:hover td{background:#fafbfc}
.list .date{white-space:nowrap;color:var(--muted);font-size:.9rem}
.list .title{cursor:pointer}
.list .title:hover{color:var(--blue);text-decoration:underline}
.list.edit td{padding:6px 8px}
.list.edit input,.list.edit select{padding:6px 8px;font-size:.9rem}
.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.78rem;background:#eef4ff;color:var(--blue)}
.badge.notice{background:#eef4ff;color:#1f6feb}
.badge.media{background:#f0fdf4;color:#15803d}
.badge.event{background:#fff7ed;color:#c2410c}

/* ---- 폼 ---- */
.form{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:8px 24px 26px}
.row{display:flex;gap:14px;align-items:flex-end}
.row>div{flex:1}
.thumbrow input{flex:1}
.thumbrow button{white-space:nowrap}
.thumb-preview{margin-top:10px}
.thumb-preview img{max-height:120px;border-radius:8px;border:1px solid var(--line)}

/* ---- 본문 편집기 ---- */
.toolbar{display:flex;gap:5px;flex-wrap:wrap;padding:8px;border:1px solid var(--line);
  border-bottom:0;border-radius:8px 8px 0 0;background:#fafbfc}
.toolbar button{padding:5px 11px;font-size:.88rem}
.editor{min-height:320px;max-height:60vh;overflow:auto;padding:16px 18px;border:1px solid var(--line);
  border-radius:0 0 8px 8px;background:#fff}
.editor img{max-width:100%;height:auto}
.editor figure{margin:18px 0}
.editor.html{font:13px/1.65 "Cascadia Mono",Consolas,monospace;white-space:pre-wrap;resize:vertical}

/* ---- 구성원 / 명예의전당 카드 ---- */
.group{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 20px 22px;margin-bottom:16px}
.group .ghead{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}
.group .ghead>div{flex:1;min-width:150px}
.people{margin-top:14px;display:grid;gap:8px}
.person{display:grid;grid-template-columns:1.1fr 1.1fr 1.4fr 1.6fr auto;gap:8px;align-items:center}
.person input{padding:7px 10px;font-size:.9rem}
.hof-item{display:grid;grid-template-columns:88px 1fr auto;gap:14px;align-items:start;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px}
.hof-item img{width:88px;height:88px;object-fit:cover;border-radius:10px;border:1px solid var(--line);background:#eef}
.hof-item textarea{min-height:76px;resize:vertical}
.stack{display:grid;gap:7px}

/* ---- 이미지 고르기 ---- */
.modal{position:fixed;inset:0;background:rgba(17,24,39,.5);display:grid;place-items:center;z-index:50;padding:20px}
.modal-box{background:#fff;border-radius:14px;width:min(880px,96vw);max-height:86vh;
  display:flex;flex-direction:column;padding:16px 20px 20px}
.upload-btn{display:inline-block;padding:8px 14px;border:1px solid var(--blue);color:var(--blue);
  border-radius:8px;cursor:pointer;font-size:.92rem;width:auto;margin:0}
/* flex 안에서 목록이 눌리지 않도록: min-height:0 이 있어야 overflow 가 실제로 스크롤된다.
   행 높이를 명시하고 align-content:start 로 고정해 두면 장수가 많아도 칸이 찌그러지지 않는다. */
.picker-grid{flex:1;min-height:0;overflow:auto;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-auto-rows:96px;
  align-content:start;gap:10px;padding-top:8px}
.picker-grid button{padding:0;height:96px;border-radius:8px;overflow:hidden;line-height:0;border:1px solid var(--line)}
.picker-grid img{display:block;width:100%;height:100%;object-fit:cover;background:#f3f4f6}

/* ---- 알림 ---- */
.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%,80px);z-index:60;
  background:var(--ink);color:#fff;padding:11px 20px;border-radius:999px;font-size:.92rem;
  opacity:0;transition:transform .25s,opacity .25s;pointer-events:none;max-width:80vw}
.toast.show{transform:translate(-50%,0);opacity:1}
.toast.bad{background:var(--danger)}

/* 사이트 폴더가 끊겼을 때 화면 맨 위에 계속 떠 있는 경고 */
.sitewarn{display:flex;align-items:center;gap:12px;
  background:#fef2f2;border-bottom:2px solid var(--danger);color:#7f1d1d;
  padding:11px 20px;font-size:.92rem;line-height:1.5}
.sitewarn button{flex:none;border-color:#fca5a5;background:#fff}
