:root{
  --wall:#1a1626;
  --wall-2:#241b33;
  --frame-gold:#8d7ab8;
  --frame-gold-dark:#5c4a85;
  --glass:rgba(255,255,255,.07);
  --glass-border:rgba(255,255,255,.15);
  --glass-chip:rgba(255,255,255,.12);
  --ink:#efeaff;
  --ink-sub:#a89ac9;
  --text:#efeaff;
  --text-dim:#a89ac9;
  --accent:#b9a5ec;
  --heart:#f08ca0;
  --star:#c3b3ee;
}

*{box-sizing:border-box}
[hidden]{display:none !important}
html,body{margin:0;padding:0}
body{
  font-family:"Noto Sans KR",system-ui,sans-serif;
  color:var(--text);
  background:
    radial-gradient(1200px 600px at 50% -10%, #322a4a 0%, transparent 60%),
    linear-gradient(135deg,var(--wall) 0%,var(--wall-2) 100%);
  background-attachment:fixed;
  min-height:100vh;
}

/* ---------- 벽 / 텍스처 ---------- */
.wall{
  min-height:100vh;
  background-image:linear-gradient(rgba(0,0,0,.15) 1px, transparent 1px);
  background-size:100% 3px;
}

/* ---------- 헤더 ---------- */
.hero{
  text-align:center;
  padding:72px 20px 40px;
  border-bottom:1px solid rgba(185,165,236,.22);
}
.eyebrow{
  letter-spacing:.32em;font-size:12px;color:var(--accent);
  margin:0 0 18px;font-weight:700;
}
.eyebrow .ti{font-size:15px;vertical-align:-2px;margin-right:6px}
.hero h1{
  font-family:"Nanum Myeongjo",serif;font-weight:800;
  font-size:clamp(28px,5vw,48px);margin:0;color:#fff;
  letter-spacing:.01em;
}
.subtitle{color:var(--text-dim);margin:14px 0 0;font-size:clamp(14px,2vw,17px)}
.status{color:var(--accent);margin:22px 0 0;font-size:13px;letter-spacing:.04em}

/* ---------- 갤러리 그리드 ---------- */
.gallery{
  max-width:1240px;margin:0 auto;padding:48px 24px 40px;
  display:grid;gap:52px 40px;
  grid-template-columns:repeat(auto-fill,minmax(280px,1fr));
  align-items:start;
}

/* ---------- 작품(액자) ---------- */
.artwork{display:flex;flex-direction:column;align-items:center}
.rank-badge{
  align-self:center;margin-bottom:12px;font-size:11px;letter-spacing:.18em;
  color:var(--accent);font-weight:700;text-transform:uppercase;
}
.frame{
  width:100%;aspect-ratio:4/3;position:relative;
  padding:14px;border-radius:3px;
  background:
    linear-gradient(135deg,var(--frame-gold) 0%,var(--frame-gold-dark) 45%,var(--frame-gold) 100%);
  box-shadow:0 18px 34px rgba(0,0,0,.5),inset 0 0 0 2px rgba(0,0,0,.25);
}
.frame::after{ /* 액자 안쪽 매트 여백 */
  content:"";position:absolute;inset:14px;border:1px solid rgba(0,0,0,.25);
  border-radius:2px;pointer-events:none;
}
.canvas{
  width:100%;height:100%;border-radius:2px;overflow:hidden;
  display:flex;align-items:center;justify-content:center;position:relative;
  background:#12101c;
}
.canvas img{width:100%;height:100%;object-fit:cover;display:block}
.placeholder{
  width:100%;height:100%;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:10px;text-align:center;padding:14px;
}
.placeholder .p-icon{font-size:46px;opacity:.92}
.placeholder .p-title{
  font-family:"Nanum Myeongjo",serif;font-size:16px;font-weight:700;
  line-height:1.35;color:#e6def7;
}

/* ---------- 명패: 글래스 카드 ---------- */
.plate{
  margin-top:18px;width:88%;
  background:var(--glass);color:var(--ink);
  border:1px solid var(--glass-border);
  border-radius:12px;padding:14px 16px 15px;
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  box-shadow:0 8px 24px rgba(0,0,0,.35);position:relative;
}
.plate h3{
  margin:2px 0 2px;font-family:"Nanum Myeongjo",serif;font-size:18px;font-weight:800;
  color:var(--ink);
}
.plate .artist{color:var(--ink-sub);font-size:13px;margin:0 0 10px}
.plate .desc{font-size:13px;line-height:1.6;color:#cfc6e8;margin:0 0 12px}

/* 별 (좋아요 환산) */
.stars{display:flex;align-items:center;gap:2px;margin-bottom:12px}
.stars .ti{font-size:19px;color:var(--star)}
.stars .empty{color:#8f80b5;opacity:.45}
.stars .lk-count{margin-left:8px;font-size:12px;color:var(--ink-sub)}

/* 액션 버튼: 글래스 칩 */
.plate-actions{display:flex;gap:8px}
.act{
  flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;
  border:1px solid transparent;background:var(--glass-chip);color:var(--ink);
  border-radius:9px;padding:8px 6px;font-size:13px;cursor:pointer;font-family:inherit;
  transition:transform .06s ease,background .15s ease;
}
.act:hover{background:rgba(255,255,255,.2)}
.act:active{transform:scale(.97)}
.act .ti{font-size:17px}
.act.visit{background:var(--accent);color:#1a1626}
.act.visit:hover{background:#cbbcf2}
.act.like.liked{background:rgba(240,140,160,.2);border-color:rgba(240,140,160,.4);color:var(--heart)}
.act.like.liked .ti{color:var(--heart)}
.act.visit-off{opacity:.45;cursor:not-allowed;background:var(--glass-chip);color:var(--ink)}

/* ---------- 푸터 ---------- */
.wall-footer{
  text-align:center;padding:34px 20px 60px;color:var(--text-dim);font-size:12px;
  border-top:1px solid rgba(185,165,236,.15);margin-top:20px;
}
.mode-note{color:var(--accent);margin:0 0 8px;font-size:12px}
.credit{margin:0}

/* ---------- 댓글 패널: 다크 글래스 ---------- */
.overlay{
  position:fixed;inset:0;background:rgba(12,9,20,.72);
  display:flex;align-items:center;justify-content:center;padding:20px;z-index:50;
}
.panel{
  width:100%;max-width:460px;max-height:82vh;overflow-y:auto;
  background:rgba(36,27,51,.92);color:var(--ink);border-radius:14px;
  border:1px solid var(--glass-border);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  padding:24px 22px;position:relative;box-shadow:0 30px 70px rgba(0,0,0,.6);
}
.panel-close{
  position:absolute;top:14px;right:14px;border:none;background:transparent;
  font-size:22px;cursor:pointer;color:var(--ink-sub);line-height:1;
}
.panel-title{font-family:"Nanum Myeongjo",serif;margin:2px 0 2px;font-size:22px;color:var(--ink)}
.panel-meta{color:var(--ink-sub);font-size:13px;margin:0 0 18px}
.comment-form{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}
.comment-form input{
  width:100%;border:1px solid var(--glass-border);border-radius:8px;padding:10px 12px;
  font-size:14px;font-family:inherit;background:rgba(255,255,255,.08);color:var(--ink);
}
.comment-form input::placeholder{color:#8f80b5}
.comment-row{display:flex;gap:8px}
.comment-row input{flex:1}
.btn-primary{
  border:none;background:var(--accent);color:#1a1626;border-radius:8px;
  padding:0 16px;font-size:14px;cursor:pointer;font-family:inherit;white-space:nowrap;font-weight:700;
}
.btn-primary:active{transform:scale(.98)}
.comment-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.comment-list li{border-top:1px solid var(--glass-border);padding-top:10px}
.comment-list .c-nick{font-weight:700;font-size:13px;color:var(--ink)}
.comment-list .c-time{color:#8f80b5;font-size:11px;margin-left:6px}
.comment-list .c-text{font-size:14px;line-height:1.55;margin:3px 0 0;color:#cfc6e8;word-break:break-word}
.comment-empty{color:#8f80b5;font-size:13px;text-align:center;padding:14px 0}

@media (max-width:520px){
  .hero{padding:48px 16px 30px}
  .gallery{gap:40px 20px;padding:32px 16px}
  .plate{width:94%}
}
