*{box-sizing:border-box;margin:0;padding:0;}
:root{--accent:#3182f6;--accent-weak:#e8f0fe;--ink:#1f2329;--muted:#8b95a1;
 --line:#eef1f5;--line2:#e3e8ee;--bg:#f2f4f6;--up:#f04452;--appw:480px;}
body{font-family:-apple-system,'Segoe UI','Apple SD Gothic Neo','Malgun Gothic',Roboto,sans-serif;
 background:var(--bg);color:var(--ink);line-height:1.5;-webkit-font-smoothing:antialiased;}
@media (max-width:360px){.content{padding-left:8px;padding-right:8px;} table{font-size:12.5px;}
 th,td{padding:8px 4px;}}
@media (min-width:481px){.content{box-shadow:0 0 0 1px var(--line);}}
/* 앱 셸: 폰 폭 중앙 정렬 */
.topbar,.content,.vtabs{max-width:var(--appw);margin-left:auto;margin-right:auto;}
.topbar{position:sticky;top:0;z-index:20;background:#fff;border-bottom:1px solid var(--line);
 display:flex;align-items:center;justify-content:space-between;padding:13px 16px;}
.brand{font-size:18px;font-weight:800;letter-spacing:-0.4px;color:var(--ink);}
.brand .dot{color:var(--accent);}
.topmeta{font-size:12px;color:var(--muted);}
.content{background:var(--bg);padding:8px 12px 84px;min-height:70vh;}
.intro-note{font-size:12px;color:var(--muted);padding:6px 4px 4px;line-height:1.5;}
.hd{margin:8px 4px 10px;} .hd .t{font-size:16px;font-weight:700;}
.hd .s{font-size:12px;color:var(--muted);margin-left:8px;font-weight:400;}
/* 섹션 카드 */
.card{background:#fff;border-radius:16px;padding:14px 16px;margin-bottom:12px;
 box-shadow:0 1px 3px rgba(20,30,50,.05);}
/* 표(카드 내부, 리스트형) */
.tblwrap{overflow-x:auto;}
table{width:100%;border-collapse:collapse;font-size:13.5px;}
th,td{padding:9px 6px;text-align:left;border-bottom:1px solid var(--line);}
th{color:var(--muted);font-weight:500;font-size:11px;border-bottom:1px solid var(--line2);}
tr:last-child td{border-bottom:none;}
.num{text-align:right;font-variant-numeric:tabular-nums;}
.code{color:var(--muted);font-size:11px;}
.none{color:var(--muted);text-align:center;padding:20px;}
.ad-slot{display:none;}
.footer{margin:18px 4px 0;font-size:11px;color:var(--muted);line-height:1.7;}
.footer-biz{margin-top:8px;}
.footer a{color:var(--muted);text-decoration:underline;}
/* 하단 고정 탭바 */
.vtabs{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;background:#fff;
 border-top:1px solid var(--line);box-shadow:0 -1px 6px rgba(20,30,50,.04);}
.vtab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;
 padding:8px 0 calc(8px + env(safe-area-inset-bottom));text-decoration:none;
 color:var(--muted);font-size:11px;font-weight:500;}
.vtab .ic{font-size:19px;line-height:1;filter:grayscale(1);opacity:.55;}
.vtab.active{color:var(--accent);font-weight:700;}
.vtab.active .ic{filter:none;opacity:1;}
.slink{color:inherit;text-decoration:none;}
.slink:hover{color:var(--accent);}
.spark{display:block;margin:6px 0;}
.hamburger{font-size:22px;cursor:pointer;color:var(--ink);line-height:1;user-select:none;padding:0 8px 0 0;}
.navtoggle{position:absolute;opacity:0;pointer-events:none;}
.drawer{position:fixed;top:0;left:0;bottom:0;width:80%;max-width:300px;background:#fff;z-index:50;
 transform:translateX(-100%);transition:transform .22s ease;padding:16px 0 24px;overflow-y:auto;
 box-shadow:2px 0 16px rgba(0,0,0,.12);}
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:40;opacity:0;visibility:hidden;transition:opacity .2s;}
.navtoggle:checked ~ .drawer{transform:translateX(0);}
.navtoggle:checked ~ .scrim{opacity:1;visibility:visible;}
.drawer-brand{font-size:18px;font-weight:800;letter-spacing:-.4px;padding:6px 20px 14px;border-bottom:1px solid var(--line);}
.drawer-brand .dot{color:var(--accent);}
.menu-group{font-size:11px;color:var(--muted);font-weight:600;padding:16px 20px 4px;}
.menu-item{display:block;padding:11px 20px;text-decoration:none;color:var(--ink);font-size:14px;font-weight:500;}
.menu-item.sub{padding-left:30px;}
.menu-item:hover{background:var(--bg);}
.menu-item.active{color:var(--accent);font-weight:700;}
.datebar{display:flex;align-items:center;gap:8px;margin:10px 4px 14px;}
.datelbl{font-size:12px;color:var(--muted);font-weight:500;}
.datepick{padding:7px 10px;border:1px solid var(--line);border-radius:10px;font-size:14px;color:var(--ink);background:#fff;font-family:inherit;}
.soon{font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:6px;padding:1px 5px;margin-left:4px;}
/* ── summary card ── */
.card-sc{padding:12px 16px 10px;}
.sc-hd{font-size:11px;color:var(--muted);margin-bottom:8px;}
.sc-status-on{color:var(--accent);}
.sc-status-off{color:var(--muted);}
.sc-chips{display:flex;gap:12px;flex-wrap:wrap;}
.stat{text-align:center;min-width:56px;}
.stat-num{font-size:18px;font-weight:700;color:var(--ink);}
.stat-lbl{font-size:11px;color:var(--muted);}
/* ── glossary ── */
.card-gl{padding:12px 16px;}
.gl-item{margin-bottom:10px;}
.gl-badge{font-size:12px;color:var(--accent);background:var(--accent-weak);border-radius:6px;padding:2px 8px;font-weight:600;}
.gl-name{font-size:13px;}
.gl-desc{font-size:12px;color:var(--muted);margin:3px 0 0 0;}
.terms{margin-top:12px;border-top:1px solid var(--line);padding-top:10px;}
.terms-hd{font-size:12px;font-weight:600;color:var(--ink);margin-bottom:6px;}
.terms dl{font-size:12px;color:var(--muted);line-height:1.7;}
.terms dt{font-weight:500;color:var(--ink);}
.terms dd{margin-left:12px;}
.gl-summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--accent);padding:2px 0 8px;}
/* ── market card ── */
.mkt-title{font-size:13px;font-weight:600;color:var(--muted);margin-bottom:8px;}
.mkt-sec-t{font-size:12px;font-weight:600;margin-bottom:4px;}
.mkt-sec-t2{font-size:12px;font-weight:600;margin:10px 0 4px;}
.mkt-row{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--line);font-size:13px;}
.mkt-val{font-variant-numeric:tabular-nums;}
.mkt-up{color:var(--up);}
.mkt-note{font-size:11px;color:var(--muted);margin-top:8px;}
.mkt-empty{font-size:12px;}
/* ── score card ── */
.score-title{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:8px;}
.score-row{display:flex;justify-content:space-between;padding:5px 0;border-bottom:1px solid var(--line);font-size:13px;}
.score-concept{color:var(--accent);font-weight:600;}
.score-val{font-variant-numeric:tabular-nums;}
.score-dt{font-size:11px;color:var(--muted);}
/* ── risk card ── */
.risk-title{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:8px;}
.risk-ul{list-style:none;padding:0;margin:0;font-size:13px;}
.risk-li{padding:5px 0;border-bottom:1px solid var(--line);}
.risk-li-last{padding:5px 0;}
.risk-halt{color:var(--up);}
/* ── top card ── */
.top-title{font-size:13px;font-weight:600;color:var(--muted);margin-bottom:8px;}
.top-badge{font-size:11px;color:var(--accent);background:var(--accent-weak);border-radius:5px;padding:1px 6px;margin-right:3px;}
.top-multi{font-size:11px;color:var(--up);}
/* ── card section heading (shared) ── */
.card-hd{font-size:12px;font-weight:600;color:var(--muted);margin-bottom:8px;}
.card-hd-14{font-size:14px;font-weight:600;margin-bottom:8px;}
.lbl{font-size:12px;color:var(--muted);margin:14px 0 6px;font-weight:500;}
.pills{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;}
.pill{padding:6px 12px;border-radius:999px;font-size:13px;text-decoration:none;border:1px solid var(--line);color:var(--muted);background:#fff;}
.pill.active{background:var(--accent-weak);color:var(--accent);border-color:var(--accent);font-weight:600;}
.summ{font-size:13px;color:var(--muted);margin-bottom:16px;} .summ b{color:var(--ink);}
.chead{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;margin-bottom:10px;}
.badge{font-size:12px;color:var(--accent);background:var(--accent-weak);border:none;border-radius:6px;padding:3px 8px;font-weight:600;}
.cnt{font-size:12px;color:var(--muted);font-weight:400;}
td.sub{color:var(--muted);} td.up{color:var(--accent);font-weight:600;}
.all{margin-top:10px;font-size:13px;color:var(--muted);}
.all select{padding:5px 9px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--ink);}
.rep{margin:10px 0 2px;border:1px solid var(--accent-weak);border-radius:10px;background:#fafcff;padding:2px 14px;}
.rep summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--accent);padding:8px 0;}
.report{font-size:13px;color:#333;line-height:1.6;}
.report h4{font-size:14px;font-weight:600;margin:10px 0 4px;}
.report h5{font-size:13px;font-weight:600;margin:10px 0 3px;color:var(--accent);}
.report ul{margin:3px 0 8px;padding-left:18px;} .report li{margin:3px 0;}
.report p{margin:4px 0;} .report strong{color:#111;}
.norep{font-size:12px;color:var(--muted);margin:6px 0;}
.norep code{background:#f1f3f6;padding:2px 6px;border-radius:4px;}
/* ── 대시보드 랜딩 (api.py _HOME_CSS 1044-1077) ── */
.hero{background:linear-gradient(135deg,#3182f6,#1b64da);color:#fff;}
.hero-t{font-size:18px;font-weight:700;margin:0;line-height:1.3;}
.hero-d{font-size:13px;line-height:1.65;opacity:.96;}
.qsec-t{font-size:13px;font-weight:700;color:var(--ink);margin:18px 4px 8px;}
.qsec{display:flex;flex-direction:column;gap:10px;}
.qcard{display:flex;align-items:center;gap:12px;background:#fff;border-radius:14px;padding:14px 16px;
 text-decoration:none;color:var(--ink);box-shadow:0 1px 3px rgba(20,30,50,.05);}
.qic{font-size:24px;line-height:1;}
.qbody{flex:1;display:flex;flex-direction:column;}
.qt{font-size:15px;font-weight:700;} .qd{font-size:12px;color:var(--muted);margin-top:2px;}
.qarrow{font-size:22px;color:var(--muted);}
.hmore{display:flex;gap:16px;flex-wrap:wrap;margin:18px 4px 0;font-size:13px;}
.hmore a{color:var(--accent);text-decoration:none;font-weight:500;}
.hero-head{display:flex;align-items:center;gap:12px;margin-bottom:8px;}
.hero-mark{flex:none;width:44px;height:44px;}
.top-sub{font-size:11px;font-weight:500;color:var(--muted);margin-left:2px;}
.srow{padding:10px 2px;border-bottom:1px solid var(--line);}
.srow:last-child{border-bottom:none;}
.srow-top{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.srow-badges{display:flex;gap:4px;flex-wrap:wrap;align-items:center;flex:none;}
.srow-bot{display:flex;align-items:center;gap:8px;margin-top:7px;}
.srow-spark{flex:1;min-width:36px;max-width:110px;line-height:0;}
.srow-spark .spark{margin:0;height:26px;}
.srow-price{margin-left:auto;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;}
.srow-chg{font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;}
.srow-na{color:var(--muted);}
.srow-quote{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:1px;}
.srow-cur{display:flex;align-items:baseline;gap:8px;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;}
.srow-prev{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;}
.sc-pulse{font-size:13px;color:var(--ink);line-height:1.6;margin:2px 0 8px;}
.pl-up{color:var(--up);font-weight:700;} .pl-down{color:var(--accent);font-weight:700;}
.sc-idx{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted);align-items:center;}
.sc-idx b{color:var(--ink);font-weight:600;} .sc-idx .up{color:var(--up);} .sc-idx .down{color:var(--accent);}
.sc-idxd{color:var(--muted);font-size:11px;}
.soon-card{opacity:.85;}
/* ── 모멘텀 페이지(장중·장시작전) 스코프 오버라이드 (api.py _MOMENTUM_PAGE_CSS 1650-1655) ──
   원본은 페이지별 extra_css로 td.up=빨강을 주입 — 단일 파일에서는 .pg-mom 래퍼로 스코프 분리 */
.pg-mom td.up{color:var(--up);}
/* ── 마크다운 리포트 h3 (api.py _MOMENTUM_PAGE_CSS .rep h3 대응) ── */
.report h3{font-size:15px;font-weight:600;margin:10px 0 6px;}
/* ── CI4 뷰 자체 클래스(원본에 없는 마크업 보조) ── */
.hd-date{font-size:12px;color:var(--muted);margin-left:8px;font-weight:400;}
/* ── 종목 미니 상세 (api.py _STOCK_PAGE_CSS 386-398) ── */
.stock-hd{margin-bottom:12px;}
.stock-name{font-size:20px;font-weight:800;}
.stock-meta{font-size:12px;color:var(--muted);margin-top:2px;}
.stock-price{font-size:22px;font-weight:700;margin-top:6px;}
.mini-tbl th{font-size:11px;}
.mini-tbl td{font-size:12px;}
.sig-list{list-style:none;padding:0;margin:0;}
.sig-list li{padding:7px 0;border-bottom:1px solid var(--line);font-size:13px;}
.sig-list li:last-child{border-bottom:none;}
.sig-kind{font-size:11px;color:var(--accent);font-weight:600;margin-right:6px;}
.back-link{display:inline-block;font-size:13px;color:var(--muted);text-decoration:none;
 padding:8px 0;margin-top:4px;}
.back-link:hover{color:var(--accent);}
.note{font-size:12px;color:var(--muted);margin-top:10px;}
/* ── 종목 검색 (api.py _SEARCH_CSS 1862-1870; 원본 .srow는 대시보드 .srow와 충돌해 .search-row로 개명) ── */
.searchform{display:flex;gap:8px;margin-bottom:12px;}
.searchform input{flex:1;padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;}
.searchform button{padding:10px 16px;border:none;border-radius:10px;background:var(--accent);color:#fff;font-weight:600;cursor:pointer;}
.search-row{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:12px 6px;border-bottom:1px solid var(--line);text-decoration:none;color:var(--ink);font-size:14px;}
.search-row .slink{flex:1;}

/* ── 카카오 로그인 버튼 (api.py 938-940) ── */
.kakao-btn{display:block;text-align:center;margin-top:12px;padding:13px;background:#FEE500;color:#191600;font-weight:700;border-radius:10px;text-decoration:none;font-size:15px;}

/* ── 관심종목 (api.py render_watchlist_page 2021-2029) ── */
.wl-row{padding:10px 2px;border-bottom:1px solid var(--line);}
.wl-top{display:flex;justify-content:space-between;align-items:center;}
.wl-bot{font-size:13px;color:var(--muted);margin-top:5px;line-height:1.7;}
.wl-cur,.wl-pp{font-weight:600;} .wl-lv{margin-left:6px;font-size:12px;}
.wl-del{border:none;background:none;color:var(--muted);cursor:pointer;font-size:14px;}
.wl-stop{background:#fff2f3;} .wl-target{background:#f0fbf3;}
.wl-add{display:flex;flex-direction:column;gap:8px;margin-top:16px;}
.af-in{padding:10px 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;}
.af-btn{padding:11px;border:none;border-radius:10px;background:var(--accent);color:#fff;font-weight:700;cursor:pointer;}

/* ── 드로어 로그인 상태 ── */
.drawer-user{font-size:13px;font-weight:600;color:var(--accent);padding:10px 20px 4px;}
.drawer-logout{margin:0;}
.menu-item-btn{width:100%;text-align:left;border:none;background:none;cursor:pointer;font-family:inherit;line-height:inherit;}

/* ── 포트폴리오 합계 ── */
.pf-sum{display:flex;gap:14px;flex-wrap:wrap;}
.pf-note{font-size:11px;color:var(--muted);font-weight:400;}

/* ── 원클릭 관심종목 모달 ── */
.wl-star{border:none;background:none;cursor:pointer;font-size:15px;color:var(--muted);padding:2px 4px;line-height:1;}
.wl-star:hover{color:var(--up);}
.wlm-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:60;display:flex;align-items:center;justify-content:center;padding:16px;}
.wlm-overlay[hidden]{display:none;}   /* display:flex가 hidden 속성(UA display:none)을 덮어쓰는 것 방지 */
.wlm{background:#fff;border-radius:16px;max-width:340px;width:100%;padding:16px;box-shadow:0 8px 30px rgba(0,0,0,.18);}
.wlm-hd{display:flex;justify-content:space-between;align-items:center;font-size:15px;font-weight:700;margin-bottom:10px;}
.wlm-x{border:none;background:none;cursor:pointer;font-size:14px;color:var(--muted);}
.wlm-name{font-size:14px;font-weight:600;margin-bottom:10px;}
.wlm-lb{display:block;font-size:12px;color:var(--muted);margin-bottom:8px;}
.wlm-lb .af-in{width:100%;margin-top:4px;display:block;}
.wlm .af-btn{width:100%;margin-top:4px;}

/* ── 마이페이지 ── */
.mp-ul{list-style:none;padding:0;margin:0;font-size:13px;}
.mp-ul li{padding:6px 0;border-bottom:1px solid var(--line);}
.mp-ul li:last-child{border-bottom:none;}
.mp-withdraw{margin-top:8px;padding:10px 16px;border:1px solid var(--up);border-radius:10px;background:#fff;color:var(--up);font-weight:600;cursor:pointer;font-size:13px;}
.mp-withdraw:hover{background:#fff2f3;}
.drawer-user{display:block;text-decoration:none;}

/* ── 관심종목 카드 ── */
.wl-cards{display:flex;flex-direction:column;gap:12px;}
.wl-card{background:#fff;border-radius:16px;padding:14px 16px;box-shadow:0 1px 3px rgba(20,30,50,.05);border-bottom:none;}
.wl-card-hd{display:flex;justify-content:space-between;align-items:center;}
.wl-card-btns{display:flex;gap:2px;align-items:center;}
.wl-edit{border:none;background:none;cursor:pointer;font-size:13px;padding:2px 4px;}
.wl-card-spark{margin:8px 0 2px;line-height:0;}
.wl-card-price{display:flex;gap:14px;align-items:baseline;font-size:13px;color:var(--muted);margin-top:8px;}
.wl-card-price b{color:var(--ink);}
.wl-card-pp{margin-left:auto;font-size:15px;}
.wl-card-meta{display:flex;justify-content:space-between;font-size:12px;color:var(--muted);margin-top:6px;}
.eod-tag{font-size:11px;color:var(--muted);font-weight:400;margin-left:8px;}
