/* ============================================================
   탑로더 TOPLOADER — 스포츠카드·TCG 통합 커뮤니티 데모
   디자인 시스템: Card Ladder(다크 프리미엄·시세) ×
                  KREAM(장터 그리드·뱃지) × ICU 너정다(커뮤니티 IA)
   ============================================================ */

:root{
  /* 컬러 — Card Ladder 다크 네이비 계열 실측 카피 */
  --bg:#0B0E14;
  --bg-soft:#0E1219;
  --surface:#121722;
  --surface-2:#1A2130;
  --surface-3:#222B3E;
  --line:#232B3D;
  --line-soft:#1C2333;
  --ink:#E8ECF4;
  --ink-sub:#9AA3B8;
  --ink-faint:#5F6980;
  --accent:#3E7BFF;
  --accent-soft:rgba(62,123,255,.14);
  --up:#2CE0A7;          /* 시세 상승 */
  --up-soft:rgba(44,224,167,.12);
  --down:#FF5A6E;        /* 시세 하락 */
  --down-soft:rgba(255,90,110,.12);
  --gold:#FFC24B;        /* 포일/프리미엄 */
  --gold-soft:rgba(255,194,75,.14);

  /* 주제 태그 컬러 */
  --t-sports:#3E7BFF;
  --t-onepiece:#FF5A6E;
  --t-pokemon:#FFC24B;
  --t-etc:#9AA3B8;

  --radius:14px;
  --radius-sm:9px;
  --shadow:0 18px 50px -18px rgba(0,0,0,.65);
  --header-h:60px;
  --filter-h:48px;
  --maxw:1200px;
  --font:'Pretendard Variable',Pretendard,-apple-system,BlinkMacSystemFont,'Apple SD Gothic Neo','Noto Sans KR',sans-serif;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:var(--font);
  background:var(--bg);
  color:var(--ink);
  font-size:15px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input,select,textarea{font-family:inherit;font-size:inherit;color:var(--ink)}
img{max-width:100%;display:block}
::selection{background:var(--accent);color:#fff}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--surface-3);border-radius:8px}
::-webkit-scrollbar-track{background:var(--bg)}

/* ---------- 공통 유틸 ---------- */
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
.hide{display:none!important}
.muted{color:var(--ink-sub)}
.faint{color:var(--ink-faint)}
.up{color:var(--up)}
.down{color:var(--down)}
.mono{font-variant-numeric:tabular-nums}

/* 스크롤 리빌 애니메이션 */
.reveal{opacity:0;transform:translateY(26px);transition:opacity .7s cubic-bezier(.2,.65,.3,1),transform .7s cubic-bezier(.2,.65,.3,1)}
.reveal.in{opacity:1;transform:none}
.reveal-d1{transition-delay:.08s}
.reveal-d2{transition-delay:.16s}
.reveal-d3{transition-delay:.24s}

/* ============================================================
   1. 시세 틱커 (Card Ladder 상단 마켓 틱커 카피)
   ============================================================ */
.ticker{
  background:#070A0F;
  border-bottom:1px solid var(--line-soft);
  height:34px;overflow:hidden;position:relative;
}
.ticker-track{
  display:flex;gap:34px;align-items:center;height:34px;
  width:max-content;
  animation:tickerMove 42s linear infinite;
  padding-left:100vw;
}
.ticker:hover .ticker-track{animation-play-state:paused}
@keyframes tickerMove{to{transform:translateX(-50%)}}
.tick{display:flex;gap:8px;align-items:center;font-size:12.5px;white-space:nowrap}
.tick b{font-weight:600;color:var(--ink-sub)}
.tick .price{color:var(--ink);font-weight:700}
.tick .chg{font-weight:700;font-size:12px}

/* ============================================================
   2. 헤더 + 전역 관심사 필터
   ============================================================ */
.header{
  position:sticky;top:0;z-index:90;
  background:rgba(11,14,20,.86);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line-soft);
}
.header-in{height:var(--header-h);display:flex;align-items:center;gap:26px}
.logo{display:flex;align-items:center;gap:9px;font-weight:800;font-size:19px;letter-spacing:-.4px;flex-shrink:0}
.logo-mark{
  width:30px;height:30px;border-radius:8px;flex-shrink:0;
  background:linear-gradient(135deg,var(--accent),#8A5CFF 55%,var(--gold));
  display:grid;place-items:center;font-size:15px;
  box-shadow:0 4px 16px -4px rgba(62,123,255,.55);
}
.logo small{font-size:10px;font-weight:600;color:var(--ink-faint);letter-spacing:.14em;display:block;line-height:1}

.gnb{display:flex;gap:2px;flex:1}
.gnb button{
  padding:8px 14px;border-radius:10px;font-size:14.5px;font-weight:600;color:var(--ink-sub);
  transition:.18s;position:relative;
}
.gnb button:hover{color:var(--ink);background:var(--surface-2)}
.gnb button.on{color:var(--ink)}
.gnb button.on::after{
  content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:2px;
  background:var(--accent);border-radius:2px;
}
.header-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}
.btn-search{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;color:var(--ink-sub);transition:.18s}
.btn-search:hover{background:var(--surface-2);color:var(--ink)}
.btn-login{
  padding:8px 16px;border-radius:10px;font-weight:700;font-size:13.5px;
  background:var(--surface-2);border:1px solid var(--line);transition:.18s;
}
.btn-login:hover{border-color:var(--accent);color:var(--accent)}
.btn-write{
  padding:8px 18px;border-radius:10px;font-weight:700;font-size:13.5px;color:#fff;
  background:linear-gradient(135deg,var(--accent),#6A4DFF);
  box-shadow:0 6px 18px -6px rgba(62,123,255,.6);transition:.18s;
}
.btn-write:hover{transform:translateY(-1px);box-shadow:0 10px 24px -6px rgba(62,123,255,.7)}
.avatar-mini{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#FFC24B,#FF5A6E);display:grid;place-items:center;font-weight:800;font-size:13px;color:#1a1205;cursor:pointer}

/* 전역 관심사 필터 바 */
.topic-bar{
  position:sticky;top:var(--header-h);z-index:85;
  background:rgba(14,18,25,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line-soft);
}
.topic-bar-in{height:var(--filter-h);display:flex;align-items:center;gap:8px;overflow-x:auto;scrollbar-width:none}
.topic-bar-in::-webkit-scrollbar{display:none}
.topic-label{font-size:11.5px;font-weight:700;color:var(--ink-faint);letter-spacing:.08em;margin-right:4px;flex-shrink:0;display:flex;align-items:center;gap:5px}
.chip{
  padding:6px 15px;border-radius:100px;font-size:13px;font-weight:600;color:var(--ink-sub);
  background:var(--surface);border:1px solid var(--line);transition:.18s;flex-shrink:0;
  display:flex;align-items:center;gap:6px;
}
.chip .dot{width:7px;height:7px;border-radius:50%}
.chip:hover{border-color:var(--ink-faint);color:var(--ink)}
.chip.on{color:#fff;border-color:transparent;font-weight:700}
.chip.on[data-topic="all"]{background:linear-gradient(135deg,var(--accent),#6A4DFF)}
.chip.on[data-topic="sports"]{background:var(--t-sports)}
.chip.on[data-topic="onepiece"]{background:var(--t-onepiece)}
.chip.on[data-topic="pokemon"]{background:var(--t-pokemon);color:#241a02}
.chip.on[data-topic="etc"]{background:#42506B}
.topic-hint{margin-left:auto;font-size:11.5px;color:var(--ink-faint);flex-shrink:0;display:flex;align-items:center;gap:5px}

/* ============================================================
   3. 히어로 (Card Ladder 스타일 + 패럴랙스)
   ============================================================ */
.hero{
  position:relative;overflow:hidden;
  border-bottom:1px solid var(--line-soft);
}
.hero-bg{
  position:absolute;inset:0;
  background-size:cover;background-position:center 30%;
  opacity:.42;transform:scale(1.08);
  will-change:transform;
}
.hero-bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(11,14,20,.3),rgba(11,14,20,.86) 72%,var(--bg));
}
.hero-in{position:relative;padding:72px 20px 60px;text-align:center}
.hero-badge{
  display:inline-flex;align-items:center;gap:8px;padding:7px 16px;border-radius:100px;
  background:var(--accent-soft);border:1px solid rgba(62,123,255,.35);
  font-size:12.5px;font-weight:700;color:#9DBCFF;margin-bottom:22px;
}
.hero-badge .pulse{width:7px;height:7px;border-radius:50%;background:var(--up);animation:pulse 1.6s infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 0 rgba(44,224,167,.5)}55%{box-shadow:0 0 0 7px rgba(44,224,167,0)}}
.hero h1{font-size:clamp(30px,5vw,50px);font-weight:800;letter-spacing:-.03em;line-height:1.22}
.hero h1 .grad{
  background:linear-gradient(100deg,#7FA8FF,#B79CFF 45%,var(--gold));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
}
.hero p{margin:18px auto 0;max-width:560px;color:var(--ink-sub);font-size:clamp(14px,1.8vw,16.5px)}
.hero-cta{margin-top:30px;display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.btn-hero{
  padding:13px 28px;border-radius:12px;font-weight:700;font-size:15px;color:#fff;
  background:linear-gradient(135deg,var(--accent),#6A4DFF);
  box-shadow:0 10px 30px -8px rgba(62,123,255,.65);transition:.2s;
}
.btn-hero:hover{transform:translateY(-2px)}
.btn-hero-ghost{
  padding:13px 28px;border-radius:12px;font-weight:700;font-size:15px;
  background:rgba(255,255,255,.05);border:1px solid var(--line);transition:.2s;
}
.btn-hero-ghost:hover{border-color:var(--ink-faint)}

/* 히어로 통계 (카운트업) */
.hero-stats{
  margin:52px auto 0;max-width:760px;
  display:grid;grid-template-columns:repeat(4,1fr);gap:12px;
}
.hstat{
  background:rgba(18,23,34,.72);border:1px solid var(--line);border-radius:var(--radius);
  padding:18px 10px 15px;backdrop-filter:blur(8px);
}
.hstat b{font-size:clamp(19px,2.6vw,26px);font-weight:800;letter-spacing:-.02em;display:block}
.hstat span{font-size:12px;color:var(--ink-sub);margin-top:3px;display:block}

/* ============================================================
   4. 레이아웃 (피드 + 사이드바)
   ============================================================ */
.layout{display:grid;grid-template-columns:1fr 320px;gap:26px;padding:28px 0 80px;align-items:start}
.main-col{min-width:0}
.side-col{position:sticky;top:calc(var(--header-h) + var(--filter-h) + 16px);display:flex;flex-direction:column;gap:16px}

.section-head{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.section-head h2{font-size:19px;font-weight:800;letter-spacing:-.02em}
.section-head .cnt{font-size:13px;color:var(--accent);font-weight:700}
.section-head .more{margin-left:auto;font-size:13px;color:var(--ink-sub);font-weight:600;transition:.15s;cursor:pointer}
.section-head .more:hover{color:var(--accent)}

/* 서브탭 (게시판 말머리) */
.subtabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}
.subtab{
  padding:7px 15px;border-radius:9px;font-size:13.5px;font-weight:600;color:var(--ink-sub);
  background:var(--surface);border:1px solid var(--line);transition:.16s;
}
.subtab:hover{color:var(--ink)}
.subtab.on{background:var(--ink);color:var(--bg);border-color:var(--ink);font-weight:700}

/* 검색바 */
.searchbar{
  display:flex;align-items:center;gap:10px;background:var(--surface);
  border:1px solid var(--line);border-radius:12px;padding:0 14px;height:44px;margin-bottom:16px;
  transition:.18s;
}
.searchbar:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.searchbar input{flex:1;background:none;border:none;outline:none;font-size:14px}
.searchbar input::placeholder{color:var(--ink-faint)}

/* ---------- 텍스트 리스트형 게시판 (ICU/아카라이브 계열 카피) ---------- */
.post-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.post-row{
  display:flex;align-items:center;gap:12px;padding:12px 18px;
  border-bottom:1px solid var(--line-soft);transition:.15s;cursor:pointer;position:relative;
}
.post-row:last-child{border-bottom:none}
.post-row:hover{background:var(--surface-2)}
.post-row.hot::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--gold)}
.flair{
  flex-shrink:0;font-size:11px;font-weight:700;padding:3px 9px;border-radius:6px;letter-spacing:-.01em;
}
.flair-free{background:var(--surface-3);color:var(--ink-sub)}
.flair-show{background:var(--gold-soft);color:var(--gold)}
.flair-qna{background:var(--accent-soft);color:#8FB2FF}
.flair-info{background:var(--up-soft);color:var(--up)}
.flair-sell{background:var(--down-soft);color:var(--down)}
.flair-buy{background:rgba(138,92,255,.14);color:#B79CFF}
.topic-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.topic-dot[data-t="sports"]{background:var(--t-sports)}
.topic-dot[data-t="onepiece"]{background:var(--t-onepiece)}
.topic-dot[data-t="pokemon"]{background:var(--t-pokemon)}
.topic-dot[data-t="etc"]{background:var(--t-etc)}
.post-title{
  flex:1;min-width:0;font-size:14.5px;font-weight:500;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  display:flex;align-items:center;gap:7px;
}
.post-title .cmt{color:var(--accent);font-weight:700;font-size:12.5px;flex-shrink:0}
.post-title .thumb-ico{color:var(--ink-faint);font-size:12px;flex-shrink:0}
.post-meta{flex-shrink:0;display:flex;gap:12px;font-size:12px;color:var(--ink-faint);align-items:center}
.post-meta .likes{color:var(--ink-faint)}
.post-meta .likes.hi{color:var(--down);font-weight:700}

/* ---------- 쇼케이스 갤러리 (매거진형) ---------- */
.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.gcard{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;cursor:pointer;transition:transform .25s,box-shadow .25s,border-color .25s;
  position:relative;
}
.gcard:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:var(--surface-3)}
.gcard-img{position:relative;aspect-ratio:4/3.4;overflow:hidden;background:var(--surface-2)}
.gcard-img img{width:100%;height:100%;object-fit:cover;transition:transform .5s cubic-bezier(.2,.65,.3,1)}
.gcard:hover .gcard-img img{transform:scale(1.06)}
/* 홀로포일 스윕 효과 */
.gcard-img::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(115deg,transparent 32%,rgba(140,180,255,.16) 44%,rgba(255,194,75,.2) 50%,rgba(255,120,220,.16) 56%,transparent 68%);
  transform:translateX(-120%);transition:transform .7s ease;
}
.gcard:hover .gcard-img::after{transform:translateX(120%)}
.gcard-body{padding:13px 15px 14px}
.gcard-body h3{font-size:14px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gcard-meta{display:flex;align-items:center;gap:10px;margin-top:7px;font-size:12px;color:var(--ink-faint)}
.gcard-meta .likes{color:var(--down);font-weight:600}

/* ---------- 장터 (KREAM 그리드 카피) ---------- */
.market-toolbar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap;align-items:center}
.mfilter{
  padding:7px 14px;border-radius:100px;font-size:13px;font-weight:600;color:var(--ink-sub);
  background:var(--surface);border:1px solid var(--line);transition:.16s;
}
.mfilter.on{background:var(--ink);color:var(--bg);border-color:var(--ink);font-weight:700}
.market-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.mcard{
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;cursor:pointer;transition:transform .22s,box-shadow .22s,border-color .22s;
}
.mcard:hover{transform:translateY(-4px);box-shadow:var(--shadow);border-color:var(--surface-3)}
.mcard-img{position:relative;aspect-ratio:1/1.05;overflow:hidden;background:linear-gradient(135deg,var(--surface-2),var(--surface-3))}
.mcard-img img{width:100%;height:100%;object-fit:cover;transition:transform .45s}
.mcard:hover .mcard-img img{transform:scale(1.05)}
.mstate{
  position:absolute;top:10px;left:10px;font-size:10.5px;font-weight:800;letter-spacing:.02em;
  padding:4px 9px;border-radius:6px;backdrop-filter:blur(6px);
}
.mstate-sale{background:rgba(44,224,167,.9);color:#04281B}
.mstate-hold{background:rgba(255,194,75,.92);color:#241A02}
.mstate-done{background:rgba(95,105,128,.88);color:#E8ECF4}
.mcard-img.done::after{content:"";position:absolute;inset:0;background:rgba(11,14,20,.55)}
.mgrade{
  position:absolute;top:10px;right:10px;font-size:10.5px;font-weight:800;
  padding:4px 8px;border-radius:6px;background:rgba(11,14,20,.72);color:var(--gold);
  border:1px solid rgba(255,194,75,.35);backdrop-filter:blur(6px);
}
.mcard-body{padding:12px 14px 14px}
.mcard-body .seller{font-size:11px;color:var(--ink-faint);display:flex;align-items:center;gap:5px}
.seller .trust{color:var(--up);font-weight:700}
.mcard-body h3{
  font-size:13.5px;font-weight:600;margin-top:5px;line-height:1.45;height:2.9em;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
}
.mprice{margin-top:9px;font-size:16px;font-weight:800;letter-spacing:-.02em}
.mprice small{font-size:11px;color:var(--ink-faint);font-weight:500;margin-left:5px}
.mtags{display:flex;gap:5px;margin-top:9px;flex-wrap:wrap}
.mtag{font-size:10.5px;font-weight:600;color:var(--ink-sub);background:var(--surface-2);padding:3px 8px;border-radius:5px}

/* ---------- 사이드바 위젯 ---------- */
.widget{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px}
.widget h3{font-size:14px;font-weight:800;margin-bottom:13px;display:flex;align-items:center;gap:7px}
.widget h3 .live{font-size:9.5px;font-weight:800;color:var(--up);background:var(--up-soft);padding:2px 7px;border-radius:5px;letter-spacing:.06em}
.rank-item{display:flex;align-items:center;gap:11px;padding:7px 0;cursor:pointer}
.rank-item:hover .rank-title{color:var(--accent)}
.rank-num{font-size:13px;font-weight:800;color:var(--ink-faint);width:16px;text-align:center;flex-shrink:0}
.rank-item:nth-child(-n+4) .rank-num{color:var(--gold)}
.rank-title{flex:1;font-size:13px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:.15s}
.rank-meta{font-size:11px;color:var(--ink-faint);flex-shrink:0}

/* 시세 위젯 (Card Ladder 인덱스 카피) */
.price-item{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--line-soft)}
.price-item:last-child{border:none}
.price-thumb{width:34px;height:46px;border-radius:5px;object-fit:cover;flex-shrink:0;background:var(--surface-3)}
.price-info{flex:1;min-width:0}
.price-info b{font-size:12.5px;font-weight:700;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.price-info span{font-size:11px;color:var(--ink-faint)}
.price-val{text-align:right;flex-shrink:0}
.price-val b{font-size:13px;font-weight:800;display:block}
.price-val span{font-size:11.5px;font-weight:700}
.spark{width:54px;height:22px;flex-shrink:0}

/* 광고 슬롯 */
.ad-slot{
  position:relative;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);
  background:linear-gradient(135deg,#182035,#241B3E);padding:20px;cursor:pointer;transition:.2s;
}
.ad-slot:hover{border-color:rgba(138,92,255,.5)}
.ad-slot .ad-tag{
  position:absolute;top:10px;right:10px;font-size:9px;font-weight:800;letter-spacing:.1em;
  color:var(--ink-faint);border:1px solid var(--line);padding:2px 6px;border-radius:4px;
}
.ad-slot b{font-size:14.5px;font-weight:800;display:block;line-height:1.4}
.ad-slot p{font-size:12px;color:var(--ink-sub);margin-top:6px}
.ad-slot .ad-cta{display:inline-block;margin-top:12px;font-size:12px;font-weight:700;color:#B79CFF}

/* 메인 배너 광고 슬롯 (가로형) */
.ad-banner{
  display:flex;align-items:center;gap:18px;margin:22px 0;
  border:1px dashed rgba(138,92,255,.4);border-radius:var(--radius);
  background:linear-gradient(100deg,rgba(62,123,255,.07),rgba(138,92,255,.09));
  padding:16px 22px;position:relative;overflow:hidden;cursor:pointer;transition:.2s;
}
.ad-banner:hover{border-color:rgba(138,92,255,.7)}
.ad-banner .ad-tag{position:absolute;top:8px;right:12px;font-size:9px;font-weight:800;letter-spacing:.1em;color:var(--ink-faint)}
.ad-banner-ico{width:44px;height:44px;border-radius:11px;background:linear-gradient(135deg,#8A5CFF,#3E7BFF);display:grid;place-items:center;font-size:20px;flex-shrink:0}
.ad-banner b{font-size:14.5px;display:block}
.ad-banner p{font-size:12.5px;color:var(--ink-sub)}

/* ============================================================
   5. 글 상세
   ============================================================ */
.detail{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:26px 28px}
.detail-head{border-bottom:1px solid var(--line-soft);padding-bottom:18px}
.detail-flair{display:flex;gap:8px;align-items:center;margin-bottom:12px}
.detail h1{font-size:22px;font-weight:800;letter-spacing:-.02em;line-height:1.4}
.detail-meta{display:flex;align-items:center;gap:14px;margin-top:12px;font-size:12.5px;color:var(--ink-faint)}
.detail-meta .author{display:flex;align-items:center;gap:8px;color:var(--ink-sub);font-weight:600}
.detail-meta .author .av{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:800;color:#1a1205;background:linear-gradient(135deg,#FFC24B,#FF5A6E)}
.detail-body{padding:22px 0;font-size:15px;line-height:1.85;color:#D5DAE6}
.detail-body img{border-radius:12px;margin:14px 0;max-height:480px;object-fit:cover}
.detail-actions{display:flex;gap:10px;padding-top:6px}
.btn-like{
  display:flex;align-items:center;gap:7px;padding:9px 20px;border-radius:10px;font-weight:700;font-size:14px;
  background:var(--surface-2);border:1px solid var(--line);transition:.18s;
}
.btn-like:hover{border-color:var(--down);color:var(--down)}
.btn-like.on{background:var(--down-soft);border-color:var(--down);color:var(--down)}
.btn-report{padding:9px 16px;border-radius:10px;font-size:13px;color:var(--ink-faint);border:1px solid transparent;transition:.15s}
.btn-report:hover{color:var(--down)}

/* 장터 거래 정보 패널 */
.trade-panel{
  margin:18px 0;border:1px solid var(--line);border-radius:var(--radius);
  background:var(--bg-soft);padding:20px 22px;
  display:grid;grid-template-columns:repeat(3,1fr);gap:14px;
}
.trade-cell b{font-size:11.5px;color:var(--ink-faint);font-weight:600;display:block;margin-bottom:4px}
.trade-cell span{font-size:15px;font-weight:800}
.trade-cell .price-big{font-size:20px;color:var(--up)}
.btn-openchat{
  grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:9px;
  padding:14px;border-radius:12px;font-weight:800;font-size:15px;color:#1A1205;
  background:#FEE500;transition:.2s;
}
.btn-openchat:hover{transform:translateY(-1px);box-shadow:0 10px 24px -8px rgba(254,229,0,.4)}
.trade-safety{grid-column:1/-1;display:flex;gap:8px;align-items:center;font-size:12px;color:var(--ink-faint)}
.trade-safety a{color:var(--accent);font-weight:600}

/* 댓글 */
.comments{margin-top:16px}
.comment{display:flex;gap:12px;padding:15px 0;border-bottom:1px solid var(--line-soft)}
.comment.reply{margin-left:38px;position:relative}
.comment.reply::before{content:"↳";position:absolute;left:-24px;top:16px;color:var(--ink-faint)}
.comment .av{width:34px;height:34px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-weight:800;font-size:12px;color:#0d1a12}
.comment-body{flex:1;min-width:0}
.comment-body .who{font-size:13px;font-weight:700;display:flex;gap:8px;align-items:center}
.comment-body .who span{font-size:11px;color:var(--ink-faint);font-weight:400}
.comment-body p{font-size:14px;margin-top:4px;color:#C9CFDD}
.comment-body .c-actions{margin-top:6px;display:flex;gap:12px;font-size:11.5px;color:var(--ink-faint)}
.comment-body .c-actions button:hover{color:var(--accent)}
.comment-write{display:flex;gap:10px;margin-top:16px}
.comment-write input{
  flex:1;background:var(--surface-2);border:1px solid var(--line);border-radius:11px;
  padding:12px 16px;outline:none;font-size:14px;transition:.18s;
}
.comment-write input:focus{border-color:var(--accent)}
.comment-write button{
  padding:0 22px;border-radius:11px;font-weight:700;background:var(--accent);color:#fff;transition:.18s;
}
.comment-write button:hover{filter:brightness(1.1)}

.back-btn{display:inline-flex;align-items:center;gap:7px;margin-bottom:14px;font-size:13.5px;font-weight:600;color:var(--ink-sub);cursor:pointer;transition:.15s}
.back-btn:hover{color:var(--ink)}

/* ============================================================
   6. 시세 페이지 (Card Ladder 카피)
   ============================================================ */
.index-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:26px}
.icard{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;position:relative;overflow:hidden}
.icard::after{content:"";position:absolute;left:0;top:0;bottom:0;width:3px}
.icard.i-up::after{background:var(--up)}
.icard.i-down::after{background:var(--down)}
.icard .iname{font-size:12.5px;font-weight:700;color:var(--ink-sub)}
.icard .ival{font-size:24px;font-weight:800;letter-spacing:-.02em;margin-top:4px}
.icard .ichg{font-size:13px;font-weight:700;margin-top:2px}
.icard canvas{position:absolute;right:12px;bottom:12px;opacity:.9}

.price-table{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.pt-head,.pt-row{display:grid;grid-template-columns:44px 1fr 110px 110px 90px 70px;gap:10px;align-items:center;padding:12px 18px}
.pt-head{font-size:11.5px;font-weight:700;color:var(--ink-faint);border-bottom:1px solid var(--line);background:var(--bg-soft);letter-spacing:.03em}
.pt-row{border-bottom:1px solid var(--line-soft);transition:.14s;cursor:pointer;font-size:13.5px}
.pt-row:last-child{border:none}
.pt-row:hover{background:var(--surface-2)}
.pt-row .rank{font-weight:800;color:var(--ink-faint);text-align:center}
.pt-card{display:flex;align-items:center;gap:11px;min-width:0}
.pt-card img{width:32px;height:44px;border-radius:4px;object-fit:cover;flex-shrink:0}
.pt-card b{font-size:13.5px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pt-card span{font-size:11px;color:var(--ink-faint)}
.pt-price{font-weight:800;text-align:right}
.pt-chg{font-weight:700;text-align:right;font-size:13px}

/* ============================================================
   7. 모달 공통 + 로그인 + 글쓰기
   ============================================================ */
.modal-back{
  position:fixed;inset:0;background:rgba(5,7,12,.78);backdrop-filter:blur(6px);
  z-index:200;display:grid;place-items:center;padding:20px;
  opacity:0;pointer-events:none;transition:.25s;
}
.modal-back.show{opacity:1;pointer-events:auto}
.modal{
  background:var(--surface);border:1px solid var(--line);border-radius:20px;
  width:100%;max-width:420px;padding:32px;position:relative;
  transform:translateY(24px) scale(.97);transition:.3s cubic-bezier(.2,.65,.3,1);
  max-height:calc(100vh - 40px);overflow-y:auto;
}
.modal-back.show .modal{transform:none}
.modal-lg{max-width:640px}
.modal-x{position:absolute;top:16px;right:16px;width:34px;height:34px;border-radius:9px;display:grid;place-items:center;color:var(--ink-faint);font-size:17px;transition:.15s}
.modal-x:hover{background:var(--surface-2);color:var(--ink)}
.modal h2{font-size:21px;font-weight:800;letter-spacing:-.02em}
.modal .sub{font-size:13.5px;color:var(--ink-sub);margin-top:7px}

.social-btns{display:flex;flex-direction:column;gap:10px;margin-top:26px}
.btn-social{
  display:flex;align-items:center;justify-content:center;gap:10px;height:50px;border-radius:12px;
  font-weight:700;font-size:14.5px;transition:.18s;position:relative;
}
.btn-social:hover{transform:translateY(-1px);filter:brightness(1.05)}
.btn-kakao{background:#FEE500;color:#1A1205}
.btn-naver{background:#03C75A;color:#fff}
.btn-google{background:#fff;color:#1F2937}
.login-note{margin-top:18px;font-size:11.5px;color:var(--ink-faint);text-align:center;line-height:1.7}

/* 글쓰기 폼 */
.wform{display:flex;flex-direction:column;gap:18px;margin-top:22px}
.wform label{font-size:12.5px;font-weight:700;color:var(--ink-sub);display:block;margin-bottom:8px}
.wform label .req{color:var(--down)}
.flair-pick,.topic-pick{display:flex;gap:7px;flex-wrap:wrap}
.pick{
  padding:8px 16px;border-radius:10px;font-size:13px;font-weight:600;color:var(--ink-sub);
  background:var(--surface-2);border:1px solid var(--line);transition:.16s;
}
.pick:hover{color:var(--ink)}
.pick.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
.topic-pick .pick.on[data-v="pokemon"]{background:var(--t-pokemon);border-color:var(--t-pokemon);color:#241A02}
.topic-pick .pick.on[data-v="onepiece"]{background:var(--t-onepiece);border-color:var(--t-onepiece)}
.topic-pick .pick.on[data-v="etc"]{background:#42506B;border-color:#42506B}
.wform input[type=text],.wform input[type=number],.wform input[type=url],.wform textarea,.wform select{
  width:100%;background:var(--surface-2);border:1px solid var(--line);border-radius:11px;
  padding:12px 15px;outline:none;font-size:14px;transition:.18s;
}
.wform input:focus,.wform textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.wform textarea{min-height:130px;resize:vertical;line-height:1.7}
.trade-fields{
  display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px;border-radius:12px;
  background:var(--bg-soft);border:1px dashed var(--line);
}
.trade-fields .full{grid-column:1/-1}
.upload-zone{
  border:1.5px dashed var(--line);border-radius:12px;padding:22px;text-align:center;
  color:var(--ink-faint);font-size:13px;cursor:pointer;transition:.2s;
}
.upload-zone:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}
.ai-scan{
  display:flex;align-items:center;gap:12px;padding:13px 16px;border-radius:12px;
  background:linear-gradient(100deg,rgba(62,123,255,.1),rgba(138,92,255,.12));
  border:1px solid rgba(138,92,255,.3);font-size:12.5px;color:#C9CFDD;
}
.ai-scan .spin{
  width:16px;height:16px;border:2px solid rgba(138,92,255,.3);border-top-color:#B79CFF;
  border-radius:50%;animation:spin .8s linear infinite;flex-shrink:0;
}
@keyframes spin{to{transform:rotate(360deg)}}
.ai-scan b{color:#B79CFF}
.btn-submit{
  height:50px;border-radius:12px;font-weight:800;font-size:15px;color:#fff;
  background:linear-gradient(135deg,var(--accent),#6A4DFF);transition:.2s;
}
.btn-submit:hover{transform:translateY(-1px);box-shadow:0 10px 26px -8px rgba(62,123,255,.6)}

/* ============================================================
   8. 플로팅 글쓰기 버튼 + 토스트
   ============================================================ */
.fab{
  position:fixed;right:26px;bottom:26px;z-index:120;
  width:58px;height:58px;border-radius:18px;color:#fff;font-size:24px;
  background:linear-gradient(135deg,var(--accent),#6A4DFF);
  box-shadow:0 14px 34px -8px rgba(62,123,255,.7);
  display:grid;place-items:center;transition:.22s;
}
.fab:hover{transform:translateY(-3px) rotate(90deg)}
.toast-wrap{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);z-index:300;display:flex;flex-direction:column;gap:8px;align-items:center}
.toast{
  background:#1D2536;border:1px solid var(--surface-3);color:var(--ink);
  padding:12px 22px;border-radius:12px;font-size:13.5px;font-weight:600;
  box-shadow:var(--shadow);display:flex;gap:9px;align-items:center;
  animation:toastIn .35s cubic-bezier(.2,.65,.3,1);white-space:nowrap;
}
.toast.err{border-color:rgba(255,90,110,.5)}
.toast.ok{border-color:rgba(44,224,167,.4)}
@keyframes toastIn{from{opacity:0;transform:translateY(14px)}}

/* ============================================================
   9. 푸터
   ============================================================ */
.footer{border-top:1px solid var(--line-soft);padding:40px 0 90px;margin-top:20px}
.footer-in{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
.footer .f-brand b{font-size:16px;font-weight:800}
.footer .f-brand p{font-size:12px;color:var(--ink-faint);margin-top:8px;line-height:1.8}
.f-links{display:flex;gap:40px}
.f-links div b{font-size:12.5px;display:block;margin-bottom:10px}
.f-links a{display:block;font-size:12.5px;color:var(--ink-faint);padding:3px 0;transition:.15s}
.f-links a:hover{color:var(--ink)}

/* ============================================================
   10. 모바일 (모바일 우선 반응형 시연)
   ============================================================ */
.mobile-tabbar{display:none}
@media (max-width:1024px){
  .layout{grid-template-columns:1fr}
  .side-col{position:static;order:2}
  .gallery{grid-template-columns:repeat(2,1fr)}
  .market-grid{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:680px){
  body{font-size:14px}
  .gnb{display:none}
  .btn-write{display:none}
  .hero-in{padding:52px 18px 46px}
  .hero-stats{grid-template-columns:repeat(2,1fr)}
  .market-grid{grid-template-columns:repeat(2,1fr);gap:10px}
  .gallery{grid-template-columns:repeat(2,1fr);gap:10px}
  .post-meta .time-full{display:none}
  .detail{padding:20px 18px}
  .trade-panel{grid-template-columns:1fr 1fr}
  .pt-head,.pt-row{grid-template-columns:30px 1fr 90px 70px;gap:8px}
  .pt-head :nth-child(5),.pt-row :nth-child(5),.pt-head :nth-child(6),.pt-row :nth-child(6){display:none}
  .index-cards{grid-template-columns:1fr}
  .fab{bottom:84px;right:18px}
  .mobile-tabbar{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:110;
    background:rgba(14,18,25,.94);backdrop-filter:blur(16px);
    border-top:1px solid var(--line);height:62px;
    padding-bottom:env(safe-area-inset-bottom);
  }
  .mtab{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:10px;font-weight:600;color:var(--ink-faint);transition:.15s}
  .mtab .ico{font-size:19px}
  .mtab.on{color:var(--accent)}
  .footer{padding-bottom:110px}
}

/* ============================================================
   11. 관리자 페이지
   ============================================================ */
.admin-body{display:grid;grid-template-columns:230px 1fr;min-height:100vh}
.admin-side{
  background:var(--bg-soft);border-right:1px solid var(--line-soft);
  padding:22px 14px;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;
}
.admin-side .logo{padding:0 10px;margin-bottom:26px}
.anav{display:flex;flex-direction:column;gap:3px}
.anav button{
  display:flex;align-items:center;gap:11px;padding:11px 13px;border-radius:10px;
  font-size:13.5px;font-weight:600;color:var(--ink-sub);text-align:left;transition:.16s;
}
.anav button:hover{background:var(--surface-2);color:var(--ink)}
.anav button.on{background:var(--accent-soft);color:#9DBCFF;font-weight:700}
.anav .badge-n{margin-left:auto;font-size:10.5px;font-weight:800;background:var(--down);color:#fff;padding:1px 7px;border-radius:99px}
.admin-main{padding:30px 34px;min-width:0}
.admin-main h1{font-size:22px;font-weight:800;letter-spacing:-.02em;margin-bottom:22px}
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:26px}
.stat-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.stat-card .s-label{font-size:12px;color:var(--ink-sub);font-weight:600}
.stat-card .s-val{font-size:26px;font-weight:800;margin-top:6px;letter-spacing:-.02em}
.stat-card .s-chg{font-size:12px;font-weight:700;margin-top:3px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:22px;margin-bottom:20px}
.panel h2{font-size:15.5px;font-weight:800;margin-bottom:16px;display:flex;align-items:center;gap:8px}
.table{width:100%;border-collapse:collapse;font-size:13px}
.table th{
  text-align:left;padding:10px 12px;color:var(--ink-faint);font-weight:700;font-size:11.5px;
  border-bottom:1px solid var(--line);letter-spacing:.03em;
}
.table td{padding:12px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
.table tr:last-child td{border:none}
.table tr:hover td{background:var(--surface-2)}
.pill{font-size:11px;font-weight:700;padding:3px 10px;border-radius:99px;display:inline-block}
.pill-red{background:var(--down-soft);color:var(--down)}
.pill-green{background:var(--up-soft);color:var(--up)}
.pill-yellow{background:var(--gold-soft);color:var(--gold)}
.pill-gray{background:var(--surface-3);color:var(--ink-sub)}
.pill-blue{background:var(--accent-soft);color:#8FB2FF}
.btn-sm{
  padding:6px 13px;border-radius:8px;font-size:12px;font-weight:700;transition:.15s;
  background:var(--surface-2);border:1px solid var(--line);
}
.btn-sm:hover{border-color:var(--ink-faint)}
.btn-sm.danger{color:var(--down)}
.btn-sm.danger:hover{background:var(--down-soft);border-color:var(--down)}
.btn-sm.primary{background:var(--accent);border-color:var(--accent);color:#fff}
.btn-sm.primary:hover{filter:brightness(1.12)}
.adslot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.adslot-card{border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--bg-soft)}
.adslot-card .zone{font-size:11px;font-weight:800;color:var(--ink-faint);letter-spacing:.05em}
.adslot-card .zone-name{font-size:14.5px;font-weight:800;margin-top:4px}
.adslot-card .slot-meta{font-size:12px;color:var(--ink-sub);margin-top:8px;line-height:1.7}
.adslot-card .slot-state{margin-top:12px;display:flex;justify-content:space-between;align-items:center}
@media (max-width:900px){
  .admin-body{grid-template-columns:1fr}
  .admin-side{position:static;height:auto;flex-direction:row;align-items:center;overflow-x:auto}
  .anav{flex-direction:row}
  .anav .badge-n{display:none}
  .stat-grid{grid-template-columns:repeat(2,1fr)}
  .adslot-grid{grid-template-columns:1fr}
  .admin-main{padding:20px 16px}
}
