/* 48 — 공용 디자인 시스템 v2 (리디자인: Pretendard · oklch 종이톤 · 다크 지원)
   하이라키: 48워드마크/내비 → H1 → 서브 → 기준칩 → 해석 → KPI → 시그널 → 리스트 → 푸터
   색 규칙: 매수(+)=빨강(--buy) · 매도(−)=파랑(--sell). 색은 데이터에만, UI 크롬은 중립 잉크. */
@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/variable/pretendardvariable.min.css");


:root{
  --font:"Pretendard Variable",Pretendard,system-ui,-apple-system,"Apple SD Gothic Neo",sans-serif;
  --fs-mega:2.55rem; --fs-display:1.9rem; --fs-h1:1.55rem; --fs-h2:1.12rem;
  --fs-body:.95rem; --fs-sm:.82rem; --fs-xs:.72rem;
  --sp-1:4px; --sp-2:8px; --sp-3:12px; --sp-4:16px; --sp-5:20px; --sp-6:24px; --sp-7:32px; --sp-8:44px;
  --r-sm:8px; --r:12px; --r-lg:18px; --r-pill:999px; --r2:12px;
  --ease:cubic-bezier(.2,.8,.2,1);

  /* 기본: 딥네이비 라이트 (고정 톤) */
  --paper:oklch(.975 .006 255); --surface:oklch(.995 .004 255); --surface-2:oklch(.955 .008 255);
  --ink:oklch(.24 .030 260); --ink-2:oklch(.46 .028 260); --ink-3:oklch(.63 .020 260);
  --line:oklch(.90 .012 258); --line-2:oklch(.82 .016 258);
  --header-bg:oklch(.245 .055 262); --header-ink:oklch(.96 .010 258); --header-ink-2:oklch(.74 .028 260);
  --buy:oklch(.545 .205 26); --buy-soft:oklch(.955 .030 30);
  --sell:oklch(.515 .150 253); --sell-soft:oklch(.955 .028 255);
  --grant:oklch(.53 .15 300); --grant-soft:oklch(.955 .022 300);   /* 화제(TALK) 중립색 — 방향 아님(보라) */
  --brand:oklch(.575 .215 26); --focus:oklch(.55 .14 253);
  --sh:0 1px 2px oklch(.24 .03 260 / .05); --sh2:0 8px 24px -12px oklch(.24 .03 260 / .18);

  /* 하위호환 별칭 (기존 페이지·JS 참조. 값 기준 매핑) */
  --bg:var(--paper); --card:var(--surface); --track:var(--surface-2);
  --muted:var(--ink-2); --hint:var(--ink-3);
  --green:var(--buy); --greenbg:var(--buy-soft);
  --red:var(--sell); --redbg:var(--sell-soft);
  --blue:var(--ink); --bluebg:var(--surface-2);
  --buybg:var(--buy-soft); --sellbg:var(--sell-soft);
}
/* 라이트(네이비) 고정 — OS 다크 자동적용 비활성. 되살리려면 아래 블록 주석 해제
@media (prefers-color-scheme: dark){ :root{ --paper:oklch(.165 .020 262); } }
*/

*{box-sizing:border-box}
.hidden{ display:none !important; }
html{-webkit-text-size-adjust:100%}
body{ margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--font); font-size:15px; line-height:1.5; letter-spacing:-.006em;
  -webkit-font-smoothing:antialiased; transition:background .3s var(--ease),color .3s var(--ease); }
.num,.v,.kpi .v,.amt,.q,.tr-ret{ font-variant-numeric:tabular-nums; font-feature-settings:"tnum" 1,"ss01" 1; }
.wrap{ max-width:600px; margin:0 auto; padding:0 var(--sp-4) var(--sp-8); }

/* 화면 제목 */
.head{ padding:var(--sp-6) 0 var(--sp-3); }
.head h1{ font-size:var(--fs-h1); font-weight:800; margin:0; letter-spacing:-.02em; line-height:1.22; color:var(--ink); }
.head .sub{ color:var(--ink-2); font-size:var(--fs-body); margin-top:var(--sp-2); line-height:1.5; }

/* 해석 박스 (심장) */
.insight{ margin-top:var(--sp-5); background:var(--surface); border:1px solid var(--line-2);
  border-radius:var(--r-lg); padding:var(--sp-5); position:relative; overflow:hidden; }
.insight::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--ink); }
.insight .it::before{ content:"48의 해석"; display:block; font-size:var(--fs-xs); font-weight:800;
  letter-spacing:.10em; color:var(--ink-3); margin-bottom:var(--sp-2); }
.insight .it{ font-size:1.1rem; font-weight:800; letter-spacing:-.015em; color:var(--ink); }
.insight .ib{ margin-top:var(--sp-3); font-size:1.0rem; line-height:1.7; color:var(--ink-2); text-wrap:pretty; }
.insight .ib b{ color:var(--ink); font-weight:700; }
.insight .id{ margin-top:var(--sp-4); padding-top:var(--sp-3); border-top:1px solid var(--line);
  font-size:var(--fs-xs); color:var(--ink-3); font-weight:600; }

/* KPI */
.kpis{ display:grid; grid-template-columns:repeat(3,1fr); gap:var(--sp-2); margin:var(--sp-5) 0 0; }
.kpi{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:var(--sp-5) var(--sp-4); }
.kpi .k{ font-size:var(--fs-xs); color:var(--ink-2); font-weight:700; order:2; margin-top:6px; letter-spacing:.01em; }
.kpi .v{ font-size:2.15rem; font-weight:800; letter-spacing:-.04em; line-height:.98; color:var(--ink); }
.kpi{ display:flex; flex-direction:column; }
.v.g{ color:var(--buy); } .v.r{ color:var(--sell); }

/* 섹션 라벨 */
.sech{ font-size:var(--fs-h2); font-weight:800; margin:var(--sp-8) 0 var(--sp-4); letter-spacing:-.015em;
  display:flex; align-items:center; gap:var(--sp-3); }
.sech::after{ content:""; flex:1; height:1px; background:var(--line); }
.dot{ width:8px; height:8px; border-radius:50%; flex:none; } .dot.g{ background:var(--buy);} .dot.r{ background:var(--sell);}

/* 시그널 카드 */
.sig{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  padding:var(--sp-4); margin-bottom:var(--sp-2); transition:border-color .2s,transform .2s; }
.sig:hover{ border-color:var(--line-2); box-shadow:var(--sh2); transform:translateY(-1px); }
.sig .top{ display:flex; align-items:flex-start; justify-content:space-between; gap:var(--sp-3); }
.sig .nm{ font-weight:800; font-size:var(--fs-body); letter-spacing:-.01em; line-height:1.35; min-width:0; }
.sig .nm a{ color:inherit; text-decoration:none; border-bottom:1px solid var(--line); }
.sig .nm .tk{ color:var(--ink-3); font-weight:600; font-size:var(--fs-xs); }
.sig .ev{ font-size:var(--fs-sm); color:var(--ink-2); margin-top:6px; line-height:1.6; }
.badge{ font-size:var(--fs-xs); font-weight:800; line-height:1; padding:4px 9px; border-radius:var(--r-pill);
  white-space:nowrap; display:inline-flex; letter-spacing:.02em; }
.b-buy{ background:var(--buy); color:var(--paper); } .b-sell{ background:var(--sell); color:var(--paper); }
.b-info{ background:var(--ink); color:var(--paper); }
.b-score{ background:var(--surface-2); color:var(--ink-2); border:1px solid var(--line); margin-left:6px; }

/* 리스트 행 */
.row{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  padding:var(--sp-4); margin-bottom:6px; display:flex; align-items:center;
  justify-content:space-between; gap:var(--sp-4); transition:background .18s; }
.row:hover{ background:var(--surface-2); }
.row .nm{ font-weight:800; font-size:var(--fs-body); letter-spacing:-.01em; }
.row .nm a{ color:var(--ink); text-decoration:none; border-bottom:1px solid var(--line); }
.row .nm .tk{ color:var(--ink-3); font-weight:600; font-size:var(--fs-xs); }
.row .sub2{ font-size:var(--fs-sm); color:var(--ink-2); margin-top:3px; }
.row .rt{ text-align:right; flex:none; }
.row .amt{ font-weight:800; font-size:1.12rem; letter-spacing:-.02em; white-space:nowrap; }
.amt.g{ color:var(--buy); } .amt.r{ color:var(--sell); } .amt.m{ color:var(--ink-2); font-weight:800; }
.row .pctc{ font-size:var(--fs-xs); color:var(--ink-3); font-weight:700; margin-top:2px; white-space:nowrap; }
.tag{ font-size:var(--fs-xs); font-weight:700; padding:2px 7px; border-radius:6px; background:var(--surface-2);
  color:var(--ink-2); border:1px solid var(--line); margin-left:6px; white-space:nowrap; }
.tag.warn{ background:var(--buy-soft); color:var(--buy); border-color:transparent; }

/* 보유 행 (버핏) */
.hrow{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:var(--sp-4); margin-bottom:6px; }
.hrow .l1{ display:flex; justify-content:space-between; align-items:baseline; gap:var(--sp-2); }
.hrow .nm{ font-weight:800; font-size:var(--fs-body); }
.hrow .nm .tk{ color:var(--ink-3); font-weight:600; font-size:var(--fs-xs); }
.hrow .pct{ font-weight:800; font-size:var(--fs-sm); color:var(--ink-2); white-space:nowrap; }
.hrow .sub2{ font-size:var(--fs-xs); color:var(--ink-3); margin-top:2px; }
.hbar{ height:6px; background:var(--surface-2); border-radius:99px; margin-top:8px; overflow:hidden; }
.hbar i{ display:block; height:100%; background:var(--ink); border-radius:99px; }

/* 그룹 카드 (투자자별 상세) */
.inv{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg); padding:var(--sp-5); margin-bottom:var(--sp-3); }
.inv .ih{ display:flex; justify-content:space-between; align-items:baseline; gap:var(--sp-3);
  border-bottom:1px solid var(--line); padding-bottom:var(--sp-3); flex-wrap:wrap; }
.inv .inm{ font-size:1.06rem; font-weight:800; letter-spacing:-.02em; }
.inv .imeta{ font-size:var(--fs-xs); color:var(--ink-3); white-space:nowrap; text-align:right; line-height:1.5; }
.inv .grp{ font-size:var(--fs-xs); font-weight:800; color:var(--ink-2); margin:var(--sp-4) 0 6px; letter-spacing:.02em; }
.line{ display:flex; justify-content:space-between; gap:var(--sp-3); padding:6px 0; font-size:var(--fs-sm); }
.line .n{ min-width:0; font-weight:600; }
.line .n .op{ font-size:var(--fs-xs); font-weight:700; color:var(--ink-3); }
.line .a{ white-space:nowrap; font-weight:800; }
.line .a.g{ color:var(--buy); } .line .a.r{ color:var(--sell); } .line .a.m{ color:var(--ink-2); font-weight:700; }

/* 비율 바 (합의와 논쟁) */
.vbar{ height:12px; border-radius:var(--r-pill); overflow:hidden; display:flex; margin-top:var(--sp-2); background:var(--surface-2); }
.vbar .vb{ background:var(--buy); } .vbar .vs{ background:var(--sell); }
.tb{ color:var(--buy); font-weight:800; } .ts{ color:var(--sell); font-weight:800; }

/* 안내·CTA·푸터 */
.note{ background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r);
  padding:var(--sp-3) var(--sp-4); font-size:var(--fs-sm); color:var(--ink-2); line-height:1.65; margin:var(--sp-3) 0 0; }
.sech + .note{ margin:0 0 var(--sp-3); }
.cta{ display:block; text-align:center; background:var(--ink); color:var(--paper); text-decoration:none;
  font-weight:800; padding:14px; border-radius:var(--r); margin:var(--sp-5) 0 var(--sp-1); letter-spacing:-.01em; }
.foot{ margin-top:var(--sp-8); padding-top:var(--sp-5); border-top:1px solid var(--line);
  font-size:var(--fs-xs); color:var(--ink-3); line-height:1.9; }
.foot a{ color:var(--ink-2); }
.empty{ color:var(--ink-3); font-size:var(--fs-sm); padding:var(--sp-4) 2px; }
.more{ width:100%; border:1px solid var(--line); background:var(--surface); color:var(--ink-2); font-weight:800;
  font-size:var(--fs-sm); padding:12px; border-radius:var(--r); cursor:pointer; margin-top:2px; }

/* 종목 디렉토리 */
.dir{ list-style:none; margin:var(--sp-3) 0 0; padding:0; columns:2; column-gap:18px; }
.dir li{ padding:7px 2px; font-size:var(--fs-body); break-inside:avoid; }
.dir a{ color:var(--ink); text-decoration:none; border-bottom:1px solid var(--line); }

@media (max-width:480px){
  .wrap{ padding:0 var(--sp-4) var(--sp-7); }
  .head h1{ font-size:1.4rem; }
  .kpi .v{ font-size:1.6rem; }
  .sech{ margin:var(--sp-6) 2px var(--sp-3); font-size:1.04rem; }
  .inv{ padding:var(--sp-4); } .inv .inm{ font-size:1rem; }
}

/* ── 그룹 리스트(opt-in): 컨테이너에 .listcard → 자식 .row/.sig를 헤어라인으로 묶음 ── */
.listcard{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; margin-top:var(--sp-3); }
.listcard > .row, .listcard > .sig, .listcard > .hrow{ background:transparent; border:0; border-bottom:1px solid var(--line); border-radius:0; margin:0; }
.listcard > .row:last-child, .listcard > .sig:last-child, .listcard > .hrow:last-child{ border-bottom:0; }
.listcard > .row:hover, .listcard > .sig:hover, .listcard > .hrow:hover{ transform:none; box-shadow:none; background:var(--surface-2); }
.listcard > .sig.hot{ background:var(--buy-soft); }
.listcard > .empty{ padding:var(--sp-4); }

/* ── 오늘의 48 브리프(홈 최상단) ── */
.brief48{ margin-top:var(--sp-5); }
.brief48 .bhead{ font-size:var(--fs-xs); font-weight:800; text-transform:uppercase; letter-spacing:.10em; color:var(--ink-3); }
.listcard > .brow{ display:flex; align-items:center; gap:11px; padding:13px 15px; border-bottom:1px solid var(--line); text-decoration:none; }
.listcard > .brow:last-child{ border-bottom:0; }
.listcard > .brow:hover{ background:var(--surface-2); }
.brow .bd{ flex-shrink:0; font-size:var(--fs-xs); font-weight:700; color:var(--ink-3); font-variant-numeric:tabular-nums; }
.brow .bl{ flex-shrink:0; font-size:.67rem; font-weight:800; letter-spacing:.01em; color:var(--buy);
  background:var(--buy-soft); border-radius:6px; padding:3px 8px; white-space:nowrap; }
.brow .bt{ font-size:.9rem; font-weight:650; color:var(--ink); line-height:1.5; word-break:keep-all; }
.brief48 .bnote{ margin-top:var(--sp-2); font-size:var(--fs-xs); color:var(--ink-3); font-weight:500; }

/* ── 홈(브리핑 페이지) ── */
.dayhead .kicker{ font-size:var(--fs-xs); font-weight:800; letter-spacing:.12em; color:var(--ink-3); margin-bottom:var(--sp-2); }
.seclab{ margin-top:var(--sp-6); font-size:var(--fs-xs); font-weight:800; text-transform:uppercase; letter-spacing:.10em; color:var(--ink-3); }
/* ── 히어로 v3: 네이비 에디토리얼 카드 (모바일 우선) ── */
.hero{ display:block; position:relative; overflow:hidden; text-decoration:none;
  background:linear-gradient(168deg, oklch(.305 .058 262) 0%, oklch(.215 .048 265) 100%);
  border:1px solid oklch(.36 .045 262); border-radius:var(--r-lg);
  padding:clamp(18px,4.5vw,26px); margin-top:var(--sp-4); box-shadow:var(--sh2); }
.hero::after{ content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(130% 95% at 100% 0%, oklch(.58 .17 27 / .16), transparent 55%); }
.hero > *{ position:relative; z-index:1; }
.hero .htop{ display:flex; align-items:center; gap:9px; flex-wrap:wrap; }
.hero .htag{ font-size:var(--fs-xs); font-weight:800; letter-spacing:.05em; color:#fff;
  background:var(--brand); border-radius:var(--r-pill); padding:4px 11px; }
.hero .hdate{ font-size:var(--fs-xs); font-weight:700; color:oklch(.72 .026 260); letter-spacing:.03em; }
.hero .hco{ margin-top:13px; font-size:clamp(1.45rem,6.2vw,1.85rem); font-weight:800;
  letter-spacing:-.028em; color:#fff; line-height:1.14; word-break:keep-all; }
.hero .hgrid{ display:flex; gap:20px 26px; margin-top:18px; align-items:flex-end; flex-wrap:wrap; }
.hero .hnums{ display:flex; gap:26px; flex-shrink:0; }
.hero .hn .hv{ font-size:clamp(1.85rem,7.5vw,2.45rem); font-weight:800; letter-spacing:-.045em;
  line-height:.98; color:oklch(.79 .155 30); white-space:nowrap; }
.hero .hn .hv i{ font-style:normal; font-size:.52em; font-weight:800; margin-left:2px; letter-spacing:-.02em; }
.hero .hn .hk{ display:block; font-size:var(--fs-xs); font-weight:700; color:oklch(.68 .026 260); margin-top:7px; }
.hero .hspark{ flex:1 1 150px; min-width:140px; }
.hero .hspark svg{ width:100%; height:58px; display:block; color:oklch(.87 .015 260); }
.hero .hsk{ display:flex; justify-content:space-between; align-items:baseline;
  font-size:var(--fs-xs); font-weight:700; color:oklch(.68 .026 260); margin-top:7px; }
.hero .hsk b{ font-variant-numeric:tabular-nums; font-weight:800; }
.hero .hsk b.up{ color:oklch(.78 .15 27); } .hero .hsk b.dn{ color:oklch(.74 .10 253); }
.hero .hwhy{ margin-top:18px; font-size:var(--fs-sm); line-height:1.66; color:oklch(.845 .014 260); text-wrap:pretty; }
.hero .hstamp{ display:inline-block; margin-top:13px; padding:6px 12px; border:2px solid oklch(.68 .165 27);
  color:oklch(.80 .145 27); border-radius:9px; font-size:var(--fs-sm); font-weight:800;
  letter-spacing:.005em; transform:rotate(-1.2deg); background:oklch(.58 .17 27 / .08); }
.hero .hrec{ margin-top:10px; font-size:var(--fs-xs); font-weight:700; color:oklch(.66 .028 260); line-height:1.55; }
.hero .hgo{ margin-top:18px; padding-top:14px; border-top:1px solid oklch(1 0 0 / .12);
  font-size:var(--fs-sm); font-weight:800; color:#fff; display:flex; align-items:center; gap:6px; }
.hero .hgo .arr{ transition:transform .2s var(--ease); }
.hero:hover .hgo .arr{ transform:translateX(3px); }
.hero .cbtn{ color:oklch(.78 .02 260); border-color:oklch(.45 .04 262); }
.hero .cbtn:hover{ color:#fff; border-color:oklch(.60 .03 262); }
@media(max-width:480px){
  .hero .hgrid{ gap:16px; }
  .hero .hnums{ gap:22px; }
  .hero .hspark{ flex-basis:100%; min-width:0; }
}
.subgrid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:10px; }
@media(max-width:480px){ .subgrid{ grid-template-columns:1fr; } }
.scard{ display:block; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:14px 15px; text-decoration:none; }
.scard .t{ font-size:.68rem; font-weight:800; color:var(--buy); }
.scard .co{ font-size:1.0rem; font-weight:800; margin-top:4px; color:var(--ink); }
.scard .d{ font-size:.8rem; color:var(--ink-2); margin-top:4px; line-height:1.55; }
.panel{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:18px; margin-top:var(--sp-4); }
.panel .ph{ font-size:.72rem; font-weight:800; letter-spacing:.1em; color:var(--ink-3); }
.panel .pt{ font-size:1.05rem; font-weight:800; margin-top:6px; letter-spacing:-.015em; color:var(--ink); }
.panel .bar{ display:flex; height:14px; border-radius:7px; overflow:hidden; margin-top:12px; }
.panel .bar2{ margin-top:14px; }
.panel .bar .b{ background:var(--buy); } .panel .bar .s{ background:var(--sell); }
.panel .barlab{ display:flex; justify-content:space-between; font-size:.75rem; font-weight:700; margin-top:8px; }
.panel .barlab .lb{ color:var(--buy); } .panel .barlab .ls{ color:var(--sell); }
.snapgrid{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:var(--sp-3); }
@media(max-width:480px){ .snapgrid{ grid-template-columns:1fr; } }
.snap{ display:block; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:15px 16px; text-decoration:none; }
.snap .who{ font-size:.7rem; font-weight:800; letter-spacing:.08em; color:var(--ink-3); }
.snap .what{ font-size:.95rem; font-weight:800; margin-top:6px; line-height:1.45; color:var(--ink); }
.snap .dir-b{ color:var(--buy); } .snap .dir-s{ color:var(--sell); }
.snap .note{ font-size:.78rem; color:var(--ink-2); margin-top:6px; line-height:1.55; }
.snap .fresh{ display:inline-block; font-size:.66rem; font-weight:700; color:var(--ink-3); background:var(--surface-2); border:1px solid var(--line); border-radius:999px; padding:2px 8px; margin-top:9px; }
.snap .minibar{ display:flex; height:9px; border-radius:5px; overflow:hidden; margin-top:10px; }
.snap .minibar .b{ background:var(--buy); } .snap .minibar .s{ background:var(--sell); }
.snap .minilab{ font-size:.68rem; font-weight:700; color:var(--ink-2); margin-top:5px; }
.deep{ background:var(--surface); border:1px solid var(--line-2); border-radius:var(--r); overflow:hidden; margin-top:var(--sp-3); }
.deep .drow{ padding:15px 17px; border-bottom:1px solid var(--line); cursor:pointer; }
.deep .drow:last-child{ border-bottom:0; }
.deep .dk{ font-size:.68rem; font-weight:800; color:var(--ink-3); letter-spacing:.08em; }
.deep .dt{ font-size:1.0rem; font-weight:800; margin-top:5px; letter-spacing:-.015em; line-height:1.45; color:var(--ink); }
.deep .ds{ font-size:.82rem; color:var(--ink-2); margin-top:5px; line-height:1.6; }
.deep .dm{ font-size:.7rem; font-weight:700; color:var(--ink-3); margin-top:7px; }
.deep .dbody{ margin-top:12px; border-top:1px solid var(--line); padding-top:4px; font-size:.9rem; color:var(--ink-2); line-height:1.75; }
.deep .dbody h3{ font-size:.95rem; color:var(--ink); margin:16px 0 6px; }
.deep .dbody p{ margin:8px 0; }
.lgteaser{ display:flex; align-items:center; gap:16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:16px 18px; margin-top:var(--sp-3); text-decoration:none; }
.lgteaser .rank{ font-size:2rem; font-weight:800; color:var(--ink-3); letter-spacing:-.04em; }
.lgteaser .lw{ flex:1; }
.lgteaser .ln{ font-size:.98rem; font-weight:800; color:var(--ink); }
.lgteaser .ld{ font-size:.78rem; color:var(--ink-2); margin-top:3px; line-height:1.5; }
.lgteaser .lr{ font-size:1.3rem; font-weight:800; color:var(--buy); letter-spacing:-.02em; }
.homecta{ display:block; background:var(--header-bg); color:var(--header-ink); border-radius:var(--r); padding:20px; margin-top:var(--sp-6); text-align:center; text-decoration:none; }
.homecta .ct{ display:block; font-size:1.05rem; font-weight:800; }
.homecta .cs{ display:block; font-size:.8rem; color:var(--header-ink-2); margin-top:6px; }
.homecta .cbtn{ display:inline-block; background:var(--header-ink); color:var(--header-bg); font-size:.85rem; font-weight:800; border-radius:999px; padding:10px 22px; margin-top:14px; }
.homecta iframe{ display:block; width:100%; height:56px; border:0; border-radius:12px; margin-top:14px; background:transparent; }

/* ── 홈 v2: 모바일 타이틀 · 매거진 ── */
.dayhead h1{ word-break:keep-all; text-wrap:balance; }
@media(max-width:480px){ .dayhead h1{ font-size:1.34rem; } }
.mag{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; margin-top:var(--sp-3); }
.mag .feat{ padding:20px 18px; border-bottom:1px solid var(--line); }
.mag .feat .ft{ font-size:1.28rem; font-weight:800; letter-spacing:-.02em; line-height:1.4; color:var(--ink); margin-top:6px; word-break:keep-all; text-wrap:balance; }
.mag .srow{ padding:15px 17px; border-bottom:1px solid var(--line); }
.mag .drow{ cursor:pointer; }
.mag .dk{ font-size:.68rem; font-weight:800; color:var(--ink-3); letter-spacing:.08em; }
.mag .dt{ font-size:1.0rem; font-weight:800; margin-top:5px; letter-spacing:-.015em; line-height:1.45; color:var(--ink); word-break:keep-all; }
.mag .ds{ font-size:.84rem; color:var(--ink-2); margin-top:6px; line-height:1.6; }
.mag .dm{ font-size:.7rem; font-weight:700; color:var(--ink-3); margin-top:8px; }
.mag .dbody{ margin-top:12px; border-top:1px solid var(--line); padding-top:4px; font-size:.9rem; color:var(--ink-2); line-height:1.75; }
.mag .dbody h3{ font-size:.95rem; color:var(--ink); margin:16px 0 6px; }
.mag .dbody p{ margin:8px 0; }
.mag .fact{ display:block; background:var(--surface-2); border:1px solid var(--line); border-radius:10px; padding:10px 12px; margin-top:10px; text-decoration:none; }
.mag .fact .fw{ display:block; font-size:.64rem; font-weight:800; letter-spacing:.08em; color:var(--ink-3); }
.mag .fact .fx{ display:block; font-size:.82rem; font-weight:700; margin-top:3px; line-height:1.5; }
.mag .fact .fd{ display:block; font-size:.66rem; font-weight:600; color:var(--ink-3); margin-top:3px; }
.mag .dir-b{ color:var(--buy); } .mag .dir-s{ color:var(--sell); }
.mag .noterow{ display:block; padding:13px 17px; border-bottom:1px solid var(--line); text-decoration:none; }
.mag .noterow:last-child, .mag .srow:last-child{ border-bottom:0; }
.mag .noterow:hover{ background:var(--surface-2); }
.mag .noterow .fw{ display:block; font-size:.64rem; font-weight:800; letter-spacing:.08em; color:var(--ink-3); }
.mag .noterow .fx{ display:block; font-size:.86rem; font-weight:700; margin-top:3px; line-height:1.5; }
.mag .noterow .fd{ display:block; font-size:.66rem; font-weight:600; color:var(--ink-3); margin-top:3px; }


/* 시그널 카드 공유 버튼 (hub.js 자동 장착) */
.sig .cbtn{ display:inline-block; margin-top:10px; font-family:inherit; font-size:var(--fs-xs); font-weight:700;
  color:var(--ink-2); background:var(--surface-2); border:1px solid var(--line); border-radius:999px; padding:6px 13px; cursor:pointer; }
.sig .cbtn:hover{ background:var(--surface); color:var(--ink); border-color:var(--line-2); }
.hero .cbtn, .scard .cbtn{ display:inline-block; margin-top:12px; font-family:inherit; font-size:var(--fs-xs); font-weight:700;
  color:var(--ink-2); background:var(--surface); border:1px solid var(--line-2); border-radius:999px; padding:6px 13px; cursor:pointer; }
.hero .cbtn:hover, .scard .cbtn:hover{ color:var(--ink); border-color:var(--ink-3); }
.scard .cbtn{ margin-top:10px; }

/* ── Phase2: 관심종목 · 변동 배지 · 신호 성적표 · 딥다이브 페이지 ── */
a.row{ display:flex; text-decoration:none; color:var(--ink); }
.rankchg{ display:inline-block; font-size:var(--fs-xs); font-weight:800; border-radius:999px; padding:2px 8px; margin-left:6px; vertical-align:2px; }
.rankchg.up{ color:var(--buy); background:var(--buy-soft); }
.rankchg.down{ color:var(--sell); background:var(--sell-soft); }
.rankchg.new{ color:var(--ink-2); background:var(--surface-2); border:1px solid var(--line); }
.hero .rec, .scard .rec{ font-size:var(--fs-sm); font-weight:700; margin-top:8px; color:var(--buy); }
.hero .strk, .scard .strk{ font-size:var(--fs-xs); font-weight:700; margin-top:6px; color:var(--ink-3); }
.sincebar{ display:flex; align-items:center; gap:10px; background:var(--surface-2); border:1px solid var(--line-2); border-radius:var(--r); padding:10px 14px; margin-top:12px; }
.sincebar .sblab{ font-size:var(--fs-xs); font-weight:800; color:var(--ink-3); white-space:nowrap; }
.sincebar .sbtxt{ font-size:var(--fs-sm); font-weight:700; color:var(--ink); }
#mystocks .msrow{ display:flex; justify-content:space-between; gap:10px; align-items:baseline;
  padding:10px 0; border-bottom:1px solid var(--line); text-decoration:none; color:var(--ink); }
#mystocks .msrow:last-of-type{ border-bottom:0; }
#mystocks .msco{ font-weight:800; font-size:var(--fs-body); }
#mystocks .mssig{ font-size:var(--fs-sm); color:var(--ink-2); text-align:right; }
#mystocks .mssig b.g{ color:var(--buy); } #mystocks .mssig b.r{ color:var(--sell); }
#mystocks .mshint{ font-size:var(--fs-xs); color:var(--ink-3); margin-top:8px; }
.dbody-page{ background:var(--surface); border:1px solid var(--line); border-radius:var(--r-lg);
  padding:var(--sp-5) var(--sp-5) var(--sp-4); margin-top:var(--sp-4); font-size:.98rem; line-height:1.75; }
.dbody-page h3{ font-size:var(--fs-h2); margin:1.4em 0 .4em; letter-spacing:-.01em; }
.dbody-page p{ margin:.7em 0; color:var(--ink); }
.dbody-page p:last-child{ font-size:var(--fs-sm); color:var(--ink-3); border-top:1px solid var(--line); padding-top:12px; margin-top:1.4em; }

/* 이례성 엔진: 3년 히스토리 대비 드묾 표시 */
.hero .rare, .scard .rare{ display:inline-block; font-size:var(--fs-sm); font-weight:800; letter-spacing:-.01em;
  color:var(--buy); background:var(--buy-soft); border-radius:999px; padding:4px 12px; margin-top:10px; }

/* 브리핑 2.0: 오늘의 한 건 · 오늘 vs 평소 · 라벨 */
#pick .pickhead{ display:block; font-size:var(--fs-h2); font-weight:800; letter-spacing:-.015em; line-height:1.4;
  color:var(--ink); text-decoration:none; margin-top:6px; }
#pick .pickhead.g{ color:var(--buy); } #pick .pickhead.r{ color:var(--sell); }
#pick .pickctx{ font-size:var(--fs-body); color:var(--ink-2); margin-top:6px; line-height:1.55; }
#pick .rare{ display:inline-block; font-size:var(--fs-sm); font-weight:800; color:var(--buy);
  background:var(--buy-soft); border-radius:999px; padding:4px 12px; margin-top:10px; }
#pick .rec{ font-size:var(--fs-sm); font-weight:700; color:var(--ink-2); margin-top:8px; }
.seclab-sub{ display:block; font-size:var(--fs-xs); font-weight:600; color:var(--ink-3); margin-top:4px; letter-spacing:0; }
.bar .bavg{ background:var(--line-2); }
.noterow.notefact .fx{ color:var(--ink); font-weight:700; }
/* 오늘의 브리핑 리스트(홈) — 신호·오늘의 한 건을 같은 행 형식으로 */
.brow .bl.s{ color:var(--sell); }
.brow .bl.grant{ color:var(--grant); background:var(--grant-soft); }
.hchip.grant{ display:inline-block; font-weight:800; font-size:.62rem; color:#fff; background:var(--grant); border-radius:5px; padding:2px 7px; margin-right:5px; letter-spacing:.02em; }
.hero .hstamp.grant{ border-color:oklch(.62 .16 300); color:oklch(.83 .12 300); background:oklch(.58 .17 300 / .10); }
.brow .brare{ display:inline-block; font-size:var(--fs-xs); font-weight:800; color:var(--buy); background:var(--buy-soft); border-radius:999px; padding:1px 8px; margin-left:6px; vertical-align:1px; }
@media(max-width:480px){ .listcard > .brow{ flex-wrap:wrap; } .brow .bt{ flex-basis:100%; } }
