/* zoosikdesk client styles
 * This file was split out of index.html so the HTML shell stays readable.
 * Keep Excel-disguise layout rules here; put behavior in assets/app.js.
 */
:root{
  /* M365 Excel palette */
  --excel:#107c41; --excel-dark:#0e6b39; --excel-accent:#185c37;
  --titlebar-bg:var(--excel); --titlebar-fg:#fff; --titlebar-muted:rgba(255,255,255,.78);
  --titlebar-hover:rgba(255,255,255,.18); --titlebar-active:rgba(255,255,255,.28); --titlebar-sep:rgba(255,255,255,.32);
  --statusbar-bg:var(--excel); --statusbar-fg:#fff; --statusbar-button-bg:rgba(255,255,255,.12); --statusbar-button-border:rgba(255,255,255,.42);
  --hover:#f2f8f4; --hover-border:#cfe7d7; --pressed:#e2efe4;
  --grid:#d0d7de; --head:#f3f6f4; --bg:#fff; --txt:#252423; --muted:#605e5c;
  --up:#a34d4d; --down:#3f6f9f; --flat:#605e5c;
  --sep:#e1dfdd; --tab-bg:#f3f2f1; --top-tab-bg:#fbfbfb; --sheet-tab-bg:#f3f2f1; --ribbon-bg:#fff; --formula-bg:#fff;
  --panel-bg:#fff; --soft-bg:#f8f8f8; --control-bg:#fff; --control-border:#c8c6c4;
  --ribbon-border:#d9d5d0; --ribbon-shadow:0 2px 8px rgba(0,0,0,.12),0 1px 0 rgba(255,255,255,.9) inset;
  --chat-head-bg:var(--titlebar-bg);
  --ui-control-radius:3px; --ui-panel-radius:6px; --ui-pill-radius:999px;
  --ui-control-height:24px; --ui-control-height-mobile:26px;
  --ui-control-font-size:11px; --ui-control-font-weight:600;
  --mobile-form-font-size:12.5px; --mobile-form-placeholder-size:12px;
  --ui-control-caret:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath d='M1 1l3 3 3-3' fill='none' stroke='%23605e5c' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  /* === 단일 좌우 여백 변수 — 모든 가로 영역(titlebar/tabs/ribbon/formula/bar/sheets) 이 이 값을 공유 === */
  --gutter:12px;
  --safe-top:0px;
  --app-header-h:200px;
  --sheet-colhead-h:24px;
  --app-font-family:'Aptos','Segoe UI Variable','Segoe UI',-apple-system,BlinkMacSystemFont,system-ui,'Apple SD Gothic Neo','Noto Sans KR',Calibri,Arial,sans-serif;
}
body.excel-theme-silver{
  --titlebar-bg:#f3f2f1; --titlebar-fg:#242424; --titlebar-muted:#605e5c;
  --titlebar-hover:rgba(0,0,0,.075); --titlebar-active:rgba(0,0,0,.12); --titlebar-sep:rgba(0,0,0,.18);
  --statusbar-bg:#e7e9ed; --statusbar-fg:#242424; --statusbar-button-bg:rgba(0,0,0,.055); --statusbar-button-border:rgba(0,0,0,.16);
  --hover:#eef6f1; --hover-border:#bed9c9; --pressed:#dfeee5;
  --top-tab-bg:#fbfbfb; --sheet-tab-bg:#f3f2f1; --head:#f4f6f4; --soft-bg:#f7f8f7;
  --chat-head-bg:var(--titlebar-bg);
}
body.excel-theme-classic{
  --titlebar-bg:#107c41; --titlebar-fg:#fff; --titlebar-muted:rgba(255,255,255,.78);
  --titlebar-hover:rgba(255,255,255,.18); --titlebar-active:rgba(255,255,255,.28); --titlebar-sep:rgba(255,255,255,.32);
  --statusbar-bg:#107c41; --statusbar-fg:#fff; --statusbar-button-bg:rgba(255,255,255,.12); --statusbar-button-border:rgba(255,255,255,.42);
  --chat-head-bg:var(--titlebar-bg);
}
body.excel-theme-deep{
  --excel:#0f6b3f; --excel-dark:#0a4f2d; --excel-accent:#073d25;
  --titlebar-bg:#06452b; --titlebar-fg:#f7fff9; --titlebar-muted:rgba(247,255,249,.78);
  --titlebar-hover:rgba(247,255,249,.16); --titlebar-active:rgba(247,255,249,.24); --titlebar-sep:rgba(247,255,249,.28);
  --statusbar-bg:#06452b; --statusbar-fg:#f7fff9; --statusbar-button-bg:rgba(247,255,249,.12); --statusbar-button-border:rgba(247,255,249,.40);
  --hover:#edf7f0; --hover-border:#b8d8c4; --pressed:#d9ecdf;
  --chat-head-bg:var(--titlebar-bg);
}
body.excel-dark-mode{
  --excel:#21a366; --excel-dark:#7cd6a2; --excel-accent:#9de8bb;
  --titlebar-bg:#101418; --titlebar-fg:#f4f7f8; --titlebar-muted:#aeb7bf;
  --titlebar-hover:rgba(244,247,248,.12); --titlebar-active:rgba(244,247,248,.20); --titlebar-sep:rgba(244,247,248,.22);
  --statusbar-bg:#0b5a36; --statusbar-fg:#f8fff9; --statusbar-button-bg:rgba(248,255,249,.12); --statusbar-button-border:rgba(248,255,249,.38);
  --hover:#203329; --hover-border:#38664d; --pressed:#284536;
  --grid:#3a424a; --head:#20262c; --bg:#15191d; --txt:#eef2f4; --muted:#aab3bb;
  --up:#ffa0a0; --down:#a8caff; --flat:#aab3bb;
  --sep:#303840; --tab-bg:#1b2025; --ribbon-bg:#171b20; --formula-bg:#14181c;
  --top-tab-bg:#171b20; --sheet-tab-bg:#11161b;
  --panel-bg:#171b20; --soft-bg:#1d2328; --control-bg:#11161b; --control-border:#3a424a;
  --chat-head-bg:var(--titlebar-bg);
  --ui-control-caret:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5' viewBox='0 0 8 5'%3E%3Cpath d='M1 1l3 3 3-3' fill='none' stroke='%23aeb3bb' stroke-width='1.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  color-scheme:dark;
}
*{box-sizing:border-box}
html,body{width:100%;max-width:100%;overflow-x:clip}
body{margin:0;background:#e9edf2;color:var(--txt);font-family:var(--app-font-family);font-size:12px;-webkit-font-smoothing:antialiased;touch-action:pan-y}
body.excel-dark-mode{background:#0f1317}
html.platform-windows{--app-font-family:'Aptos','Segoe UI Variable','Segoe UI','Noto Sans KR',Calibri,Arial,sans-serif}
html.platform-windows body{font-family:var(--app-font-family)}
body.readability-mode{--txt:#060606;--muted:#343a40;--flat:#3e444a;--up:#d04444;--down:#1f6fd6;color:#060606;font-weight:450}
body.readability-mode th,
body.readability-mode td{font-size:13px;line-height:1.3;color:#070707}
body.readability-mode th{font-size:12.8px;color:#050505}
body.readability-mode .sub,
body.readability-mode .time,
body.readability-mode .news-desc,
body.readability-mode .sheet-title .hint{color:#3f4852}
body.readability-mode .news-title-link{color:#000;font-weight:600}
body.readability-mode .source-pill{color:#3f4852}
body.readability-mode .flow-cell,
body.readability-mode .flow-pill,
body.readability-mode .flow-pill .flow-label{color:#32383f}
body.readability-mode #cardsTable td{font-size:13.2px}
body.readability-mode #cardsTable .metric-label{font-size:13.2px}
body.readability-mode #cardsTable .up,
body.readability-mode .sheet.summary .up{color:#d04444;font-weight:600}
body.readability-mode .holding-line.up,
body.readability-mode .holding-meta-line .up,
body.readability-mode .holding-return-cell.up,
body.readability-mode .holding-summary-return-cell.up{color:#d04444;font-weight:400}
body.readability-mode #cardsTable .down,
body.readability-mode .sheet.summary .down{color:#1f6fd6;font-weight:600}
body.readability-mode .holding-line.down,
body.readability-mode .holding-meta-line .down,
body.readability-mode .holding-return-cell.down,
body.readability-mode .holding-summary-return-cell.down{color:#1f6fd6;font-weight:400}
body.excel-dark-mode.readability-mode{
  --txt:#f3f7f8; --muted:#c1cad2; --flat:#c1cad2; --up:#ffb0b0; --down:#bad6ff;
  color:#f3f7f8;font-weight:450;
}
body.excel-dark-mode.readability-mode th,
body.excel-dark-mode.readability-mode td{color:#f3f7f8}
body.excel-dark-mode.readability-mode #cardsTable .up,
body.excel-dark-mode.readability-mode .sheet.summary .up,
body.excel-dark-mode.readability-mode .holding-line.up,
body.excel-dark-mode.readability-mode .holding-meta-line .up,
body.excel-dark-mode.readability-mode .holding-return-cell.up,
body.excel-dark-mode.readability-mode .holding-summary-return-cell.up{color:#ffb0b0}
body.excel-dark-mode.readability-mode #cardsTable .down,
body.excel-dark-mode.readability-mode .sheet.summary .down,
body.excel-dark-mode.readability-mode .holding-line.down,
body.excel-dark-mode.readability-mode .holding-meta-line .down,
body.excel-dark-mode.readability-mode .holding-return-cell.down,
body.excel-dark-mode.readability-mode .holding-summary-return-cell.down{color:#bad6ff}
.app{min-height:100vh;padding-bottom:calc(64px + env(safe-area-inset-bottom));overflow-x:clip}
.outlook-app{display:none}
body.theme-outlook{background:#f3f2f1;overflow:hidden;touch-action:pan-y}
body.theme-outlook .app,
body.theme-outlook .statusbar{display:none}
body.theme-outlook .outlook-app{height:100vh;display:grid;grid-template-rows:54px 38px 122px minmax(0,1fr);background:#f3f2f1;color:#242424;font-family:var(--app-font-family)}
html.platform-windows body.theme-outlook .outlook-app{font-family:var(--app-font-family)}
.outlook-topbar{height:54px;background:#0f6cbd;color:#fff;display:grid;grid-template-columns:42px 140px minmax(260px,460px) 1fr auto;align-items:center;gap:8px;padding:0 10px 0 12px}
.outlook-waffle{width:28px;height:28px;border:0;border-radius:3px;background:transparent;display:grid;grid-template-columns:repeat(3,4px);grid-template-rows:repeat(3,4px);gap:4px;align-content:center;justify-content:center;cursor:pointer}
.outlook-waffle:hover{background:rgba(255,255,255,.16)}
.outlook-waffle span{width:4px;height:4px;background:#fff;border-radius:50%}
.outlook-brand{font-size:18px;font-weight:650;letter-spacing:-.2px}
.outlook-search{grid-column:3;display:flex;align-items:center;gap:8px;height:36px;background:#fff;border:1px solid rgba(0,0,0,.28);border-radius:4px;color:#616161;padding:0 12px;box-shadow:0 1px 2px rgba(0,0,0,.16)}
.outlook-search input{border:0;outline:0;font:inherit;font-size:15px;background:transparent;min-width:0;width:100%;color:#242424}
.outlook-top-actions{display:flex;align-items:center;gap:18px;font-size:18px;opacity:.96}
.outlook-profile{width:40px;height:40px;border-radius:50%;background:#dbeafe url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 80'%3E%3Cdefs%3E%3ClinearGradient id='g' x1='0' x2='1' y1='0' y2='1'%3E%3Cstop stop-color='%23f8fbff'/%3E%3Cstop offset='1' stop-color='%23b8d5f4'/%3E%3C/linearGradient%3E%3C/defs%3E%3Crect width='80' height='80' rx='40' fill='url(%23g)'/%3E%3Ccircle cx='40' cy='31' r='14' fill='%235b6f82'/%3E%3Cpath d='M17 70c4-17 17-25 23-25s19 8 23 25' fill='%235b6f82'/%3E%3C/svg%3E") center/cover no-repeat;box-shadow:inset 0 0 0 1px rgba(255,255,255,.65),0 0 0 1px rgba(0,0,0,.12)}
.outlook-tabbar{height:38px;background:#fff;border-bottom:1px solid #e1dfdd;display:flex;align-items:end;gap:3px;padding:0 18px}
.outlook-tabbar span,.outlook-hamburger{height:38px;padding:0 14px;border:0;background:transparent;color:#323130;font:inherit;font-size:14px;display:inline-flex;align-items:center;justify-content:center;position:relative}
.outlook-hamburger{font-size:20px;width:44px;cursor:pointer;color:#424242}
.outlook-tabbar span.active{font-weight:650;color:#0f6cbd}
.outlook-tabbar span.active::after{content:"";position:absolute;left:14px;right:14px;bottom:0;height:3px;background:#0f6cbd;border-radius:3px 3px 0 0}
.outlook-ribbon{height:122px;margin:0 20px 8px;background:#fff;border:1px solid #e1dfdd;border-radius:6px;box-shadow:0 2px 6px rgba(0,0,0,.12);display:flex;align-items:stretch;gap:0;overflow-x:auto;overflow-y:hidden;padding:8px 10px 6px;scrollbar-width:none}
.outlook-ribbon::-webkit-scrollbar{display:none}
.outlook-ribbon-group{min-width:114px;display:grid;grid-template-columns:repeat(3,auto);grid-template-rows:1fr 16px;align-items:start;justify-content:center;column-gap:4px;row-gap:3px;padding:0 12px;position:relative;flex:0 0 auto}
.outlook-ribbon-group:not(:last-child)::after{content:"";position:absolute;right:0;top:6px;bottom:18px;width:1px;background:#edebe9}
.outlook-ribbon-group strong{grid-column:1 / -1;align-self:end;text-align:center;font-size:11px;color:#605e5c;font-weight:500}
.outlook-command{min-width:42px;height:70px;border:1px solid transparent;background:transparent;border-radius:4px;color:#323130;font:inherit;font-size:12px;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;padding:5px 4px;cursor:pointer}
.outlook-command:hover{background:#f5f5f5;border-color:#edebe9}
.outlook-command span{font-family:'Segoe UI Symbol','Arial Unicode MS','Apple Symbols',sans-serif;font-size:25px;line-height:1;color:#424242;font-weight:400}
.outlook-command em{font-style:normal;line-height:1.15;text-align:center}
.outlook-command small{font-size:9px;color:#605e5c;margin-top:-3px}
.outlook-command-big{min-width:54px}
.outlook-main{min-height:0;display:grid;grid-template-columns:48px 320px 430px minmax(460px,1fr) 178px;gap:0;border-top:1px solid #edebe9;overflow:hidden}
.outlook-apprail{background:#f7f7f7;border-right:1px solid #e1dfdd;display:flex;flex-direction:column;align-items:center;gap:18px;padding:12px 0;color:#0f6cbd;font-size:18px}
.outlook-apprail span{width:32px;height:32px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center}
.outlook-apprail span.active{background:#e5f1fb;border-left:3px solid #0f6cbd}
.outlook-folders{min-width:0;background:#fafafa;border-right:1px solid #e1dfdd;overflow:auto;padding:14px 12px 24px}
.outlook-folder-title{font-size:13px;font-weight:750;margin:12px 0 8px;color:#323130}
.outlook-folder-account{font-size:16px;font-weight:750;margin:18px 4px 10px;color:#323130;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.outlook-folder{height:34px;border-radius:4px;display:flex;align-items:center;justify-content:space-between;padding:0 10px;color:#323130;font-size:14px}
.outlook-folder.selected{background:#cfe4fa;color:#0f4c81;font-weight:650}
.outlook-folder b{color:#0f6cbd;font-size:13px}
.outlook-status-card{border:1px solid #e1dfdd;background:#fff;border-radius:6px;padding:9px 10px;display:grid;gap:8px;color:#605e5c;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.outlook-status-card #statusLeft{color:#323130;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.outlook-status-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11.5px}
.outlook-status-row .presence-count{color:#0f6cbd;max-width:none}
.outlook-status-row .badge{background:#eef6fc;color:#0f6cbd;border-radius:999px;padding:2px 7px}
#outlookRestoreSlot .floating-restore{white-space:normal}
#outlookRestoreSlot .floating-restore button{border-color:#bad6ef;background:#eef6fc;color:#0f6cbd;height:22px;border-radius:4px}
.outlook-market-slot .floating-tabs{position:static;left:auto;right:auto;bottom:auto;background:transparent;border:0;padding:0;display:grid;gap:2px;z-index:auto}
.outlook-market-slot .tab{height:34px;border:0;border-radius:4px;padding:0 10px;text-align:left;display:flex;align-items:center;color:#323130;background:transparent;font-size:14px;box-shadow:none;top:0}
.outlook-market-slot .tab:hover{background:#f0f0f0}
.outlook-market-slot .tab.active{background:#cfe4fa;color:#0f4c81;font-weight:700;border:0;box-shadow:inset 3px 0 0 #0f6cbd}
.outlook-list{min-width:0;background:#fff;border-right:1px solid #e1dfdd;overflow:auto}
.outlook-list-head{height:54px;border-bottom:1px solid #e1dfdd;display:flex;align-items:end;justify-content:space-between;padding:0 18px 8px;background:#fff;position:sticky;top:0;z-index:3}
.outlook-focused{display:flex;gap:22px;font-size:15px;font-weight:650}
.outlook-focused span{position:relative;padding-bottom:8px;color:#424242}
.outlook-focused .active{color:#0f6cbd}
.outlook-focused .active::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:#0f6cbd;border-radius:3px}
.outlook-list-tools{font-size:16px;color:#605e5c;letter-spacing:9px;white-space:nowrap}
.outlook-avatar{width:42px;height:42px;border-radius:50%;background:#c7b0dc;color:#4e2b70;display:flex;align-items:center;justify-content:center;font-weight:750;flex:0 0 auto}
.outlook-list-section{padding:0}
.outlook-section-head{height:44px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 14px;border-bottom:1px solid #e1dfdd;background:#fff}
.outlook-section-head strong{font-size:15px}
.outlook-section-head .hint{font-size:11px;color:#605e5c;display:inline-flex;align-items:center;gap:5px;min-width:0}
.outlook-section-head .live-dot{width:7px;height:7px}
.outlook-list #watchlistPanel{padding:8px 10px;background:#fbfbfb;border-bottom:1px solid #edebe9;display:grid;grid-template-columns:minmax(0,1fr) 68px 64px 58px;gap:6px}
.outlook-list #watchlistPanel input{height:30px;border-radius:4px;font-size:12px}
.outlook-list #watchlistPanel select{height:30px;font-size:11.5px}
.outlook-list #watchlistPanel button{height:30px;background:#0f6cbd;border-radius:4px}
.outlook-change-slot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border-bottom:1px solid #edebe9;background:#fff}
.outlook-change-slot .change-toggle{height:24px;margin:0;border-color:#c7d8ea}
.outlook-change-slot .change-toggle button{height:24px;font-size:11px}
.outlook-change-slot .change-toggle button.active{background:#e5f1fb;color:#0f6cbd}
.outlook-change-slot .hidden-restore{height:24px;margin-left:auto;border-radius:4px}
.outlook-mail-table{background:#fff}
.outlook-mail-table table{min-width:0;width:100%;table-layout:fixed;border-collapse:separate;border-spacing:0}
.outlook-mail-table tr:first-child,
.outlook-mail-table tr:nth-child(2),
.outlook-mail-table tr.empty-row{display:none!important}
.outlook-mail-table tr:not(.holding-row){display:grid;grid-template-columns:minmax(0,1fr) 84px 68px;align-items:center;min-height:58px;border-bottom:1px solid #edebe9;background:#fff}
.outlook-mail-table tr:not(.holding-row):hover{background:#f5f8fb}
.outlook-mail-table td,.outlook-mail-table th{border:0;background:transparent!important;height:auto;padding:5px 8px;display:block;min-width:0}
.outlook-mail-table .rownum{display:none}
.outlook-mail-table .left{font-weight:650;color:#323130}
.outlook-mail-table .right{font-size:12px}
.outlook-mail-table .metric-cell{align-items:flex-start}
.outlook-mail-table .metric-label{display:flex;align-items:center;gap:4px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.outlook-mail-table .metric-trail{margin-left:5px}
.outlook-mail-table .source-pill{display:none}
.outlook-mail-table .market-state{margin-left:3px}
.outlook-mail-table tr.mood-row:not(.holding-row){background:#f8f8f8}
.outlook-mail-table tr.holding-row{display:block;border-bottom:1px solid #f0f0f0;background:#fff}
.outlook-mail-table tr.holding-row td{display:block;padding:4px 12px 7px;background:#fff!important;border:0}
.outlook-reading{min-width:0;background:#f3f2f1;overflow:auto;padding:0 16px 24px}
.outlook-subject{height:54px;margin:0 0 10px;background:#fff;border:1px solid #e1dfdd;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.12);display:flex;align-items:center;padding:0 14px;font-size:18px;font-weight:650;position:sticky;top:0;z-index:3}
.outlook-message{background:#fff;border:1px solid #e1dfdd;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.14);padding:18px 22px 28px;max-width:980px;margin:0 auto}
.outlook-message-head{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.outlook-message-head p{margin:4px 0 0;color:#605e5c;font-size:13px}
.outlook-message-actions{margin-left:auto;color:#0f6cbd;font-size:18px;letter-spacing:10px;white-space:nowrap}
.outlook-hero{height:84px;background:linear-gradient(90deg,#f7fbff,#e8f4ff);border:1px solid #d8ebfb;border-radius:3px;margin:6px auto 18px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 18px;color:#0f4c81}
.outlook-hero span{font-size:22px;font-weight:800;letter-spacing:-.5px}
.outlook-hero b{font-size:12px;font-weight:500;color:#605e5c}
.outlook-news-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:12px 0 8px}
.outlook-news-title strong{font-size:22px;letter-spacing:-.4px}
.outlook-news-title .hint{font-size:12px;color:#605e5c}
.outlook-news-table table{min-width:0;width:100%;border-collapse:separate;border-spacing:0}
.outlook-news-table tr:first-child,
.outlook-news-table tr:nth-child(2),
.outlook-news-table tr.empty-row{display:none!important}
.outlook-news-table tr.news-row{display:grid;grid-template-columns:68px 56px minmax(0,1fr) auto;gap:10px;align-items:start;border-top:1px solid #edebe9;padding:12px 0;background:#fff}
.outlook-news-table td,.outlook-news-table th{border:0;background:transparent!important;height:auto;padding:0;display:block;min-width:0}
.outlook-news-table .rownum{display:none}
.outlook-news-table td:nth-child(2){font-size:11px;color:#0f6cbd;font-weight:750;background:#eef6fc!important;border-radius:999px;text-align:center;padding:3px 7px}
.outlook-news-table td:nth-child(3){font-size:11px;color:#8a8886;text-align:left;padding-top:3px}
.outlook-news-table td:nth-child(4){font-size:14px;font-weight:650;line-height:1.35}
.outlook-news-table td:nth-child(5){grid-column:3 / 4;color:#605e5c;line-height:1.45;max-width:none}
.outlook-news-table td:nth-child(6){grid-column:4 / 5;grid-row:1 / span 2;align-self:center}
.outlook-news-table .link-pill{border-color:#c7d8ea;background:#eef6fc;color:#0f6cbd}
body.theme-outlook .floating-actions{right:18px;bottom:calc(24px + env(safe-area-inset-bottom));z-index:260}
/* Ootlook 모드에서는 채팅 위젯이 Teems 처럼 보이게 — 보라 톤. */
body.theme-outlook .chat-cta{background:linear-gradient(135deg,#6264a7,#464775);box-shadow:0 8px 22px rgba(98,100,167,.34),0 2px 6px rgba(0,0,0,.12)}
body.theme-outlook .chat-head{background:linear-gradient(135deg,#6264a7,#464775);color:#fff}
body.theme-outlook .chat-head .chat-title strong{color:#fff}
body.theme-outlook .chat-nick{color:#6264a7}
body.theme-outlook .chat-send{background:#6264a7}
body.theme-outlook .chat-send:hover:not(:disabled){background:#52548f}
body.theme-outlook .chat-bubble{background:#f1f1f4}
body.theme-outlook .chat-bubble strong{color:#464775}
body.theme-outlook .chat-cta.has-unread{background:linear-gradient(135deg,#c4314b,#a4262c)}
body.theme-outlook .chat-panel{bottom:calc(86px + env(safe-area-inset-bottom));border-radius:10px;border:1px solid #ddd8e6}
/* Teems-style header layout: app icon + title */
body.theme-outlook .chat-title{display:flex;align-items:center;gap:10px}
body.theme-outlook .chat-title::before{content:"";width:22px;height:22px;flex:0 0 auto;border-radius:4px;background:#fff;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='M14 4h6v6h-6zM4 4h6v6H4zM4 14h6v6H4zm10 0h6v6h-6z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='M14 4h6v6h-6zM4 4h6v6H4zM4 14h6v6H4zm10 0h6v6h-6z'/%3E%3C/svg%3E") center/contain no-repeat;background-color:#fff;opacity:.95}
body.theme-outlook .chat-title > span:first-child{font-weight:700;letter-spacing:-.1px}
body.theme-outlook .chat-title small{color:rgba(255,255,255,.78)}
body.theme-outlook .chat-close,
body.theme-outlook .chat-size-toggle{color:#fff;background:rgba(255,255,255,.14)}
body.theme-outlook .chat-close:hover,
body.theme-outlook .chat-size-toggle:hover{background:rgba(255,255,255,.24)}
body.theme-outlook .chat-system{background:#fafafa;color:#3b3a3f;border-radius:6px}
body.theme-outlook .chat-list-empty{color:#605e5c}
body.theme-outlook .chat-cta .lbl::before{content:none}
.updates-beta{margin:0 0 14px;padding:12px;border:1px solid #bad6ef;border-left:4px solid #0f6cbd;border-radius:8px;background:#f3f9ff;display:flex;align-items:center;justify-content:space-between;gap:12px}
/* Ootlook beta promo — sits directly under the server status card */
/* 옛 .outlook-beta-banner 스타일은 .notice-card 통합 카드로 대체됨.
 * data-accent="outlook" 으로 색만 따로 줌. 클래스 자체는 호환을 위해 남겨두지만
 * 별도 스타일은 더 이상 필요 없음. */
.updates-beta strong{display:block;color:#0f4c81;font-size:13px;margin-bottom:2px}
.updates-beta span{display:block;color:#4b5563;font-size:11.5px}
.updates-beta button{height:30px;border:0;border-radius:5px;background:#0f6cbd;color:#fff;font:inherit;font-weight:750;font-size:12px;padding:0 12px;cursor:pointer;white-space:nowrap}
.updates-beta button:hover{background:#0b5ca8}
@media(max-width:1180px){
  body.theme-outlook .outlook-main{grid-template-columns:44px 250px 390px minmax(430px,1fr);overflow-x:auto}
  body.theme-outlook .outlook-ribbon{margin-left:10px;margin-right:10px}
}
@media(max-width:760px){
  body.theme-outlook{overflow:hidden}
  body.theme-outlook .outlook-app{grid-template-rows:48px 38px 112px minmax(0,1fr)}
  .outlook-topbar{height:48px;grid-template-columns:32px 92px minmax(140px,1fr) auto;gap:6px;padding:0 8px}
  .outlook-brand{font-size:16px}
  .outlook-search{grid-column:3;height:32px;padding:0 8px}
  .outlook-top-actions span:not(.outlook-profile){display:none}
  .outlook-profile{width:32px;height:32px}
  .outlook-tabbar{padding:0 4px;overflow-x:auto;scrollbar-width:none}
  .outlook-tabbar::-webkit-scrollbar{display:none}
  .outlook-ribbon{height:104px;margin:0 6px 6px;padding:7px 6px 5px;border-radius:5px}
  .outlook-ribbon-group{min-width:98px;padding:0 8px}
  .outlook-command{height:62px;min-width:36px;font-size:11px}
  .outlook-command span{font-size:21px}
  .outlook-main{grid-template-columns:42px 250px minmax(380px,1fr);overflow-x:auto}
  .outlook-list{min-width:380px}
  .outlook-reading{min-width:420px;padding:0 10px 18px}
  .outlook-folders{min-width:250px}
  .outlook-apprail{position:sticky;left:0;z-index:4}
  .outlook-list #watchlistPanel{grid-template-columns:minmax(0,1fr) 68px 58px 48px}
  .outlook-message{padding:14px 14px 22px}
  .outlook-hero{height:64px}
  .outlook-hero span{font-size:18px}
  .outlook-message-actions{display:none}
  .updates-beta{align-items:stretch;flex-direction:column}
}

/* Outlook beta v2: screenshot-faithful shell, no ad column, market data as mail. */
body.theme-outlook .outlook-app{grid-template-rows:54px 42px 104px minmax(0,1fr);min-width:0;overflow:hidden}
.outlook-symbols{position:absolute;width:0;height:0;overflow:hidden}
.outlook-top-actions{grid-column:5;justify-self:end;margin-left:auto}
.outlook-top-actions span:not(.outlook-profile){width:28px;height:28px;display:inline-flex;align-items:center;justify-content:center}
.outlook-top-actions svg,
.outlook-apprail svg,
.outlook-folder svg,
.outlook-list-tools svg,
.outlook-brief-actions svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}
.outlook-top-actions svg{color:#fff}
.outlook-tabbar{height:42px;background:#f3f2f1;border-bottom:1px solid #e1dfdd;display:flex;align-items:center;padding:0 12px;gap:2px;overflow:hidden}
.outlook-tabbar span,.outlook-hamburger{height:42px;font-size:13px;padding:0 10px;flex:0 0 auto}
.outlook-hamburger{position:static;left:auto;width:30px;margin-right:4px;color:#323130;border-radius:3px}
.outlook-hamburger:hover{background:#e9e8e7}
.outlook-tabbar span.active::after{left:12px;right:12px;bottom:2px;background:#0f6cbd}
.outlook-ribbon{
  height:104px;margin:0 12px 8px;padding:6px 10px 5px;
  width:auto;max-width:none;
  border-radius:8px;background:#fff;border:1px solid #e1dfdd;
  box-shadow:0 1px 2px rgba(0,0,0,.08),0 3px 10px rgba(0,0,0,.10);
  align-items:stretch;gap:0;overflow-x:auto;overflow-y:hidden;min-width:0;
}
.outlook-ribbon-group{min-width:auto;display:flex;flex-direction:row;align-items:flex-start;justify-content:center;gap:2px;padding:0 8px 15px}
.outlook-ribbon-group:nth-child(2){min-width:188px}
.outlook-ribbon-group:nth-child(6){min-width:246px}
.outlook-ribbon-group-muted{opacity:.42}
.outlook-command{height:74px;min-width:40px;max-width:64px;padding:4px 3px 3px;gap:3px;border-radius:4px;color:#323130;font-size:11.5px}
.outlook-command:hover{background:#f5f5f5;border-color:#edebe9}
.outlook-command svg{width:29px;height:29px;fill:none;stroke:currentColor;stroke-width:1.45;stroke-linecap:round;stroke-linejoin:round;color:#424242}
.outlook-command-big svg{width:34px;height:34px}
.outlook-command em{font-size:11.5px;line-height:1.12;white-space:nowrap}
.outlook-command small{font-size:9px;color:#605e5c;line-height:1;margin-top:-3px}
.outlook-ribbon-group strong{position:absolute;left:6px;right:6px;bottom:0;font-size:10.5px;color:#605e5c;line-height:14px}
.outlook-main{grid-template-columns:48px minmax(260px,288px) minmax(380px,28vw) minmax(560px,1fr);border-top:1px solid #edebe9;min-width:0}
.outlook-apprail{gap:18px;padding:10px 0;background:#f3f2f1}
.outlook-apprail span{color:#0f6cbd;border-radius:4px}
.outlook-apprail span.active{background:#fff;box-shadow:inset 3px 0 0 #0f6cbd}
.outlook-apprail .office-letter{font-weight:800;font-size:14px}
.outlook-apprail .office-logo img{width:25px;height:25px;display:block;object-fit:contain;filter:drop-shadow(0 1px 1px rgba(0,0,0,.18))}
.outlook-apprail .word{color:#185abd}.outlook-apprail .excel{color:#107c41}.outlook-apprail .ppt{color:#c43e1c}
.outlook-folders{background:#fafafa;padding:14px 12px 22px}
.outlook-folder-title{display:flex;align-items:center;gap:6px;font-size:17px;font-weight:700;margin:10px 0 12px}
.outlook-folder-title::before{content:"⌄";font-size:13px;color:#605e5c}
.outlook-folder{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:9px;height:34px;padding:0 9px;border-radius:4px;font-size:14px}
.outlook-folder svg{color:#424242;width:18px;height:18px}
.outlook-folder.selected{background:#cfe4fa;color:#0f4c81;font-weight:650}
.outlook-folder.selected svg{color:#424242}
.outlook-folder-account{font-size:17px;margin:22px 4px 12px}
.outlook-market-slot .floating-tabs{display:grid;gap:1px}
.outlook-market-slot .tab{height:30px;display:grid;grid-template-columns:22px minmax(0,1fr);align-items:center;gap:8px;font-size:13px;padding:0 9px;border:0;border-radius:4px;color:#323130;background:transparent;cursor:pointer;text-align:left;letter-spacing:-.1px}
.outlook-market-slot .tab:hover{background:#eef0f3}
.outlook-market-slot .tab.active{background:#cfe4fa;color:#0f4c81;font-weight:650}
.outlook-market-slot .tab::before{content:"";width:14px;height:14px;background-color:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h7l2 3h9v8H3z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 8h7l2 3h9v8H3z'/%3E%3C/svg%3E") center/contain no-repeat;color:#424242;opacity:.85}
.outlook-market-slot .tab.active::before{color:#0f4c81;opacity:1}
.outlook-status-card{box-shadow:none}
.outlook-mobile-market-slot{display:none}
.outlook-list{background:#fff}
.outlook-list-head{height:44px;padding:0 14px;border-bottom:1px solid #edebe9;align-items:center}
.outlook-focused{font-size:15px;gap:22px}
.outlook-list-tools{display:flex;align-items:center;gap:12px;margin-left:auto;color:#605e5c;letter-spacing:0}
.outlook-list-tools svg{width:15px;height:15px;opacity:.86}
.outlook-list-banner{display:none}
.outlook-avatar-market{background:#e5f1fb;color:#0f6cbd}
.outlook-list-banner strong{font-size:14.5px;color:#242424}
.outlook-list-banner p{margin:2px 0 0;color:#605e5c;font-size:12px;line-height:1.3}
.outlook-section-head{height:34px;background:#fff}
.outlook-list #watchlistPanel{grid-template-columns:minmax(0,1fr) 72px 66px 58px}
.outlook-list #watchlistPanel button{background:#0f6cbd}
.outlook-change-slot{padding:6px 12px}
.outlook-preview,.outlook-mailtime{display:none}
.outlook-mail-table tr:not(.holding-row){
  position:relative;display:grid;grid-template-columns:minmax(0,1fr) 64px;grid-template-areas:"name change";
  min-height:58px;padding:6px 10px 6px 0;border-bottom:1px solid #edebe9;background:#fff;align-items:center;
}
.outlook-mail-table tr:not(.holding-row)::before{
  content:attr(data-outlook-badge);position:absolute;left:26px;top:50%;width:30px;height:30px;border-radius:50%;transform:translateY(-50%);
  background:#e5f1fb;color:#0f6cbd;display:flex;align-items:center;justify-content:center;
  font-size:10px;font-weight:700;
}
.outlook-mail-table tr[data-outlook-tone="kr"]::before{background:#e7f8ef;color:#107c41}
.outlook-mail-table tr[data-outlook-tone="us"]::before{background:#eef2ff;color:#3949ab}
.outlook-mail-table tr[data-outlook-tone="coin"]::before{background:#fff4d4;color:#9a6400}
.outlook-mail-table tr[data-outlook-tone="night"]::before{background:#f6edff;color:#6b3fa0}
.outlook-mail-table tr[data-outlook-tone="flow"]::before{background:#f4f4f4;color:#605e5c}
.outlook-mail-table tr:nth-child(3){background:#f0f0f0;box-shadow:inset 4px 0 0 #0f6cbd}
.outlook-mail-table td,.outlook-mail-table th{padding:0 8px}
.outlook-mail-table .left{grid-area:name;align-self:center;padding-left:66px;font-size:13px;font-weight:700;min-width:0}
.outlook-mail-table .left .metric-cell{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"title source" "preview preview";column-gap:8px;min-width:0;position:relative}
.outlook-mail-table .metric-label{grid-area:title;display:flex;align-items:center;gap:5px;max-width:100%;font-size:13px;line-height:1.2;color:#242424}
.outlook-mail-table .metric-label a{color:#242424;text-decoration:none;font-weight:700}
.outlook-mail-table .metric-label a:hover{color:#0f6cbd;text-decoration:underline}
.outlook-mail-table .outlook-preview{grid-area:preview;display:block;margin-top:2px;max-width:100%;color:#605e5c;font-size:11.5px;font-weight:400;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.outlook-mail-table .outlook-mailtime{grid-area:source;display:block;position:static;justify-self:end;color:#8a8886;font-size:10.5px;font-weight:500;white-space:nowrap}
.outlook-mail-table td:nth-child(3){display:none}
.outlook-mail-table td:nth-child(4){grid-area:change;align-self:center;justify-self:end;font-size:11px;font-weight:650;text-align:right;padding:0;opacity:.88}
.outlook-mail-table .metric-trail{position:absolute;right:-60px;top:50%;transform:translateY(-50%);margin-left:0;display:flex}
.outlook-mail-table .row-actions{position:static;transform:none;opacity:0;background:rgba(255,255,255,.96);border:1px solid #e1dfdd;border-radius:999px;box-shadow:0 2px 8px rgba(0,0,0,.12);padding:1px 3px}
.outlook-mail-table tr:hover .row-actions{opacity:1}
.outlook-mail-table tr:hover td:nth-child(4){opacity:.18}
.outlook-mail-table .market-state{height:16px;font-size:10px}
.outlook-mail-table .stale-icon{margin-left:2px}
.outlook-mail-table tr.mood-row:not(.holding-row){background:#fbfbfb}
.outlook-mail-table tr.flow-row .metric-label{max-width:100%}
.outlook-reading{background:#f3f2f1;padding:0 22px 26px}
.outlook-subject{height:52px;margin:0 0 10px;font-size:16px;font-weight:650}
.outlook-message{max-width:none;min-height:calc(100vh - 260px);padding:18px 26px 28px}
.outlook-message-head{align-items:flex-start;margin-bottom:16px;padding-bottom:14px;border-bottom:1px solid #edebe9}
.outlook-message-head strong{font-size:14px}
.outlook-message-meta{min-width:0}
.outlook-message-meta p{display:flex;gap:7px;margin:3px 0 0;color:#605e5c;font-size:12.5px}
.outlook-message-meta p span{color:#323130;font-weight:600}
.outlook-business-mail{max-width:760px;margin:6px auto 18px;color:#323130;font-size:14px;line-height:1.65}
.outlook-business-mail p{margin:0 0 12px}
.outlook-mail-summary{display:grid;grid-template-columns:84px minmax(0,1fr);gap:12px;align-items:center;border:1px solid #edebe9;background:#fafafa;border-radius:4px;margin:8px 0;padding:8px 10px}
.outlook-mail-summary span{color:#605e5c;font-size:12px}
.outlook-mail-summary b{font-size:13px;font-weight:650;color:#323130;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.outlook-brief-actions{display:flex;justify-content:flex-start;gap:8px;flex-wrap:wrap;max-width:760px;margin:0 auto 20px}
.outlook-brief-actions-subtle{border-top:1px solid #f1f1f1;padding-top:12px}
.outlook-brief-actions button,.outlook-brief-actions a{height:32px;border:1px solid #c7d8ea;background:#fff;color:#0f6cbd;border-radius:4px;padding:0 11px;display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12px;font-weight:650;text-decoration:none;cursor:pointer}
.outlook-brief-actions button:hover,.outlook-brief-actions a:hover{background:#eef6fc;text-decoration:none}
.outlook-news-title{border-top:1px solid #edebe9;padding-top:14px;max-width:880px;margin-left:auto;margin-right:auto}
.outlook-news-title strong{font-size:19px}
.outlook-news-table{max-width:880px;margin-left:auto;margin-right:auto}
.outlook-news-table tr.news-row{grid-template-columns:76px 58px minmax(0,1fr) auto}
@media(max-width:1180px){
  body.theme-outlook .outlook-main{grid-template-columns:44px 248px 390px minmax(500px,1fr);overflow-x:auto}
  body.theme-outlook .outlook-ribbon{margin-left:8px;margin-right:8px;max-width:none}
}
@media(max-width:760px){
  body.theme-outlook .outlook-app{grid-template-rows:48px 40px 104px minmax(0,1fr);width:100vw;max-width:100vw}
  body.theme-outlook .outlook-topbar{grid-template-columns:34px 82px minmax(120px,1fr) auto;gap:5px;padding:0 6px}
  body.theme-outlook .outlook-brand{font-size:16px}
  body.theme-outlook .outlook-search{grid-column:3;height:32px;padding:0 9px}
  body.theme-outlook .outlook-top-actions{grid-column:4;gap:10px}
  body.theme-outlook .outlook-top-actions span:nth-child(n+3):not(.outlook-profile){display:none}
  body.theme-outlook .outlook-profile{width:32px;height:32px}
  body.theme-outlook .outlook-tabbar{height:40px;padding:0 4px 0 6px;overflow-x:auto;scrollbar-width:none}
  .outlook-tabbar::-webkit-scrollbar{display:none}
  .outlook-hamburger{position:static;left:auto;width:36px;margin-right:4px}
  body.theme-outlook .outlook-ribbon{height:104px;margin:0 4px 4px;padding:6px 5px 4px;width:auto;max-width:calc(100vw - 8px)}
  .outlook-ribbon-group{padding:0 7px 15px}
  .outlook-command{height:72px;min-width:38px;font-size:10.5px}
  .outlook-command svg{width:27px;height:27px}
  .outlook-command-big svg{width:31px;height:31px}
  body.theme-outlook .outlook-main{
    grid-template-columns:42px minmax(0,1fr);
    grid-template-rows:auto auto;
    align-content:start;
    width:100vw;
    max-width:100vw;
    overflow-x:hidden;
    overflow-y:auto;
  }
  body.theme-outlook .outlook-apprail{grid-column:1;grid-row:1 / 3;position:sticky;top:0;align-self:start}
  body.theme-outlook .outlook-folders{display:none}
  body.theme-outlook .outlook-list{
    grid-column:2;
    grid-row:1;
    min-width:0;
    width:calc(100vw - 42px);
    max-width:calc(100vw - 42px);
    height:calc(100vh - 192px);
    overflow-x:hidden;
    overflow-y:auto;
    border-right:0;
  }
  body.theme-outlook .outlook-reading{grid-column:2;grid-row:2;min-width:0;width:calc(100vw - 42px);max-width:calc(100vw - 42px);padding:8px 8px 18px}
  .outlook-mobile-market-slot{display:block;border-bottom:1px solid #edebe9;background:#fff}
  .outlook-mobile-market-slot .floating-tabs{position:static;left:auto;right:auto;bottom:auto;background:transparent;border:0;padding:6px 8px;display:flex;gap:5px;overflow-x:auto;scrollbar-width:none;box-shadow:none}
  .outlook-mobile-market-slot .floating-tabs::-webkit-scrollbar{display:none}
  .outlook-mobile-market-slot .tab{height:28px;min-width:max-content;border:1px solid #d7e8f7;border-radius:999px;padding:0 10px;background:#fff;color:#323130;font-size:11.5px;box-shadow:none}
  .outlook-mobile-market-slot .tab.active{background:#e5f1fb;color:#0f4c81;border-color:#bad6ef;font-weight:700;box-shadow:none}
  .outlook-list-head{height:42px;padding:0 12px 4px}
  .outlook-list-banner{display:none}
  .outlook-section-head{height:34px;padding:0 10px}
  .outlook-list #watchlistPanel{padding:6px 8px;grid-template-columns:minmax(0,1fr) 56px 56px 32px}
  .outlook-list #watchlistPanel select{font-size:11px!important}
  .outlook-list #watchlistPanel button{font-size:0;padding:0;justify-content:center}
  .outlook-list #watchlistPanel .watchlist-export::before{content:"↗";font-size:13px;font-weight:800}
  .outlook-change-slot{padding:5px 10px}
  .outlook-mail-table tr:not(.holding-row){min-height:54px;padding-right:8px}
  .outlook-mail-table tr:not(.holding-row)::before{left:18px;width:28px;height:28px}
  .outlook-mail-table .left{padding-left:54px}
  .outlook-mail-table .metric-label{font-size:12.5px}
  .outlook-mail-table .outlook-preview{font-size:11px}
  .outlook-subject{height:44px;font-size:13px;padding:0 10px;margin-bottom:6px}
  .outlook-message{padding:14px 14px 22px}
  .outlook-business-mail{font-size:13px}
  .outlook-mail-summary{grid-template-columns:70px minmax(0,1fr)}
}

/* === Outlook v3 — clean, screenshot-faithful rebuild ============================ */
/* Overrides legacy Outlook CSS above. Excel-table slot rendering replaced with
   dedicated mail rows + dynamic reading pane. */
body.theme-outlook .outlook-main{grid-template-columns:48px minmax(232px,272px) minmax(360px,430px) minmax(420px,1fr);min-width:0}
body.theme-outlook .outlook-list{background:#fff;border-right:1px solid #e1dfdd;display:flex;flex-direction:column;overflow:hidden;min-width:0}
body.theme-outlook .outlook-folders{padding:10px 8px 22px;overflow:auto}
body.theme-outlook .outlook-folder-section{display:grid;gap:1px;margin-bottom:6px}
body.theme-outlook .outlook-folder-section .outlook-folder-title{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:#323130;margin:8px 6px 4px}
body.theme-outlook .outlook-folder-section .outlook-folder-title::before{content:"⌄";font-size:11px;color:#605e5c;font-weight:700}
body.theme-outlook .outlook-folder{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:8px;height:30px;padding:0 9px;border-radius:4px;font-size:13px;color:#323130;align-items:center;cursor:pointer}
body.theme-outlook .outlook-folder:hover{background:#eef0f3}
body.theme-outlook .outlook-folder.selected{background:#cfe4fa;color:#0f4c81;font-weight:650}
body.theme-outlook .outlook-folder svg{width:16px;height:16px;color:#424242}
body.theme-outlook .outlook-folder.selected svg{color:#0f4c81}
body.theme-outlook .outlook-folder b{color:#0f6cbd;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums}
body.theme-outlook .outlook-folder.selected b{color:#0f4c81}
body.theme-outlook .outlook-tool{font:inherit;border:0;background:transparent;text-align:left;width:100%;text-decoration:none}
body.theme-outlook .outlook-tool[aria-pressed="true"]{background:#fff3d4;color:#8a6100}
body.theme-outlook .outlook-tool-excel{margin-top:4px;background:#e8f3ed;color:#0f5a35}
body.theme-outlook .outlook-tool-excel:hover{background:#d6ebde}
body.theme-outlook .outlook-tool-excel svg{color:#107c41}
body.theme-outlook .outlook-account{font-size:14px;font-weight:700;margin:14px 8px 12px;color:#323130;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.theme-outlook .outlook-status-card{box-shadow:none;background:#fff;border:1px solid #e1dfdd;border-radius:6px;padding:8px 10px;margin-top:4px}
body.theme-outlook .outlook-folder-account{display:none}

/* List head */
body.theme-outlook .outlook-list-head{min-height:52px;border-bottom:1px solid #edebe9;display:flex;align-items:center;justify-content:flex-start;gap:18px;padding:8px 16px 0;background:#fff;position:sticky;top:0;z-index:3;flex:0 0 auto;flex-wrap:wrap}
body.theme-outlook .outlook-list-head strong{font-size:17px;font-weight:700;color:#242424;letter-spacing:-.2px}
body.theme-outlook .outlook-list-head .outlook-focused{font-size:13px;gap:18px;display:flex;align-items:flex-end;font-weight:600;margin-left:auto;height:42px}
body.theme-outlook .outlook-list-head .outlook-focused span{padding:0 0 12px;color:#605e5c;cursor:pointer;position:relative}
body.theme-outlook .outlook-list-head .outlook-focused .active{color:#0f6cbd;font-weight:700}
body.theme-outlook .outlook-list-head .outlook-focused .active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:#0f6cbd;border-radius:2px 2px 0 0}
body.theme-outlook .outlook-list-head .outlook-list-tools{display:flex;align-items:center;gap:10px;margin-left:8px;color:#605e5c;align-self:center}
body.theme-outlook .outlook-list-head .outlook-list-tools svg{width:14px;height:14px;opacity:.85}

/* Mail list */
body.theme-outlook .outlook-mail-list{flex:1;min-height:0;overflow-y:auto;background:#fff}
body.theme-outlook .outlook-mail-empty{padding:30px 18px;color:#605e5c;font-size:13px;text-align:center}
body.theme-outlook .outlook-mail-date{padding:8px 14px 4px;font-size:11.5px;color:#605e5c;font-weight:700;background:#fafafa;border-bottom:1px solid #edebe9;position:sticky;top:0;z-index:1}
body.theme-outlook .outlook-mail-row{display:grid;grid-template-columns:40px minmax(0,1fr) 86px;column-gap:10px;padding:10px 14px 10px 14px;border-bottom:1px solid #edebe9;cursor:pointer;position:relative;background:#fff;transition:background-color .12s,box-shadow .12s}
body.theme-outlook .outlook-mail-row:hover{background:#f5f7fa}
body.theme-outlook .outlook-mail-row.is-selected{background:#e5f1fb}
body.theme-outlook .outlook-mail-row.is-selected::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:#0f6cbd}
body.theme-outlook .outlook-mail-row.is-unread .outlook-mail-sender{color:#0f4c81}
body.theme-outlook .outlook-mail-avatar{grid-row:1 / span 3;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11.5px;font-weight:700;letter-spacing:.2px;color:#fff;align-self:center}
body.theme-outlook .outlook-mail-avatar[data-tone="kr"]{background:#1d8a52}
body.theme-outlook .outlook-mail-avatar[data-tone="us"]{background:#2557c6}
body.theme-outlook .outlook-mail-avatar[data-tone="coin"]{background:#d6a400;color:#3a2a00}
body.theme-outlook .outlook-mail-avatar[data-tone="index"]{background:#6b3fa0}
body.theme-outlook .outlook-mail-avatar[data-tone="fx"]{background:#0f7c5b}
body.theme-outlook .outlook-mail-avatar[data-tone="flow"]{background:#605e5c}

body.theme-outlook .outlook-mail-sender{font-size:13.5px;font-weight:700;color:#242424;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-self:end;min-width:0}
body.theme-outlook .outlook-mail-time{grid-column:3;grid-row:1;font-size:11.5px;color:#605e5c;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;align-self:end}
body.theme-outlook .outlook-mail-subject{grid-column:2;font-size:12.5px;color:#242424;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600;margin-top:2px}
body.theme-outlook .outlook-mail-preview{grid-column:2;font-size:11.5px;color:#605e5c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.35;margin-top:1px}
body.theme-outlook .outlook-mail-price{grid-column:3;grid-row:2;font-size:13px;font-weight:700;color:#242424;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.2px}
body.theme-outlook .outlook-mail-change{grid-column:3;grid-row:3;font-size:11.5px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.1px}
body.theme-outlook .outlook-mail-change[data-change="up"]{color:#c50f1f}
body.theme-outlook .outlook-mail-change[data-change="down"]{color:#0f6cbd}
body.theme-outlook .outlook-mail-change[data-change="flat"]{color:#605e5c}
/* Community post 행 — 종목 시세 행과 같은 grid 를 쓰되 가격 칼럼 자리를 댓글 수
   pill 로 대체한다. */
body.theme-outlook .outlook-community-row .outlook-mail-meta-trail,
body.theme-outlook .outlook-news-row .outlook-mail-meta-trail{grid-column:3;grid-row:1 / span 3;align-self:center;display:flex;justify-content:flex-end}
body.theme-outlook .outlook-comment-pill{display:inline-flex;align-items:center;gap:3px;height:22px;padding:0 9px;border-radius:999px;background:#f3f2f1;color:#605e5c;font-size:11.5px;font-weight:650}
body.theme-outlook .outlook-community-row .outlook-mail-meta-trail{gap:5px;flex-wrap:nowrap}
/* 추천 12시간 핀 글 — 메일 리스트에서 살짝 노란빛으로 강조 (Outlook flagged email 톤). */
body.theme-outlook .outlook-community-row.is-pinned{background:linear-gradient(0deg,rgba(255,196,0,.05),rgba(255,196,0,.05))}
body.theme-outlook .outlook-community-row.is-pinned:hover{background:linear-gradient(0deg,rgba(255,196,0,.1),rgba(255,196,0,.1))}
body.theme-outlook .outlook-community-row.is-pinned .outlook-mail-subject{color:#9a6b00}

/* Reading pane */
body.theme-outlook .outlook-reading{background:#fff;padding:0;overflow-y:auto;display:flex;flex-direction:column;min-width:0}
body.theme-outlook .outlook-reading-empty{margin:auto;text-align:center;color:#605e5c;display:grid;justify-items:center;gap:6px;padding:48px 32px}
body.theme-outlook .outlook-reading-empty svg{width:84px;height:84px;color:#bdbdbd;margin-bottom:10px}
body.theme-outlook .outlook-reading-empty strong{font-size:14.5px;color:#323130;font-weight:650}
body.theme-outlook .outlook-reading-empty span{font-size:12.5px;max-width:260px;line-height:1.5}
body.theme-outlook .outlook-reading-message{padding:22px 28px 30px;color:#242424;font-size:13.5px;line-height:1.55;background:#fff;flex:1;display:flex;flex-direction:column}
body.theme-outlook .outlook-reading-subject{font-size:18px;font-weight:700;margin:0 0 6px;color:#242424;line-height:1.35}
body.theme-outlook .outlook-reading-tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;color:#605e5c;margin-bottom:14px}
body.theme-outlook .outlook-reading-tag svg{width:13px;height:13px}
body.theme-outlook .outlook-reading-header{display:grid;grid-template-columns:44px 1fr auto;align-items:flex-start;gap:12px;padding:14px 0 16px;border-bottom:1px solid #edebe9}
body.theme-outlook .outlook-reading-avatar{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13.5px;color:#fff}
body.theme-outlook .outlook-reading-avatar[data-tone="kr"]{background:#1d8a52}
body.theme-outlook .outlook-reading-avatar[data-tone="us"]{background:#2557c6}
body.theme-outlook .outlook-reading-avatar[data-tone="coin"]{background:#d6a400;color:#3a2a00}
body.theme-outlook .outlook-reading-avatar[data-tone="index"]{background:#6b3fa0}
body.theme-outlook .outlook-reading-avatar[data-tone="fx"]{background:#0f7c5b}
body.theme-outlook .outlook-reading-avatar[data-tone="flow"]{background:#605e5c}
body.theme-outlook .outlook-reading-from-block{min-width:0}
body.theme-outlook .outlook-reading-from{font-size:13.5px;font-weight:700;color:#242424;margin:0}
body.theme-outlook .outlook-reading-recipients{margin:6px 0 0;display:grid;grid-template-columns:auto 1fr;column-gap:8px;row-gap:2px;color:#323130;font-size:12px;line-height:1.45}
body.theme-outlook .outlook-reading-recipients dt{color:#605e5c;font-weight:600}
body.theme-outlook .outlook-reading-meta-right{text-align:right;color:#605e5c;font-size:12px;white-space:nowrap}
body.theme-outlook .outlook-reading-meta-right .actions{display:flex;justify-content:flex-end;gap:2px;margin-bottom:6px;color:#424242}
body.theme-outlook .outlook-reading-meta-right .actions button{width:28px;height:28px;border:0;background:transparent;border-radius:4px;cursor:pointer;color:inherit;display:inline-flex;align-items:center;justify-content:center}
body.theme-outlook .outlook-reading-meta-right .actions button:hover{background:#f3f2f1}
body.theme-outlook .outlook-reading-meta-right .actions svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6}

body.theme-outlook .outlook-reading-body{margin-top:18px;display:grid;gap:14px}
body.theme-outlook .outlook-reading-body p{margin:0;line-height:1.6}
body.theme-outlook .outlook-reading-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
body.theme-outlook .outlook-reading-card{padding:12px 14px;border:1px solid #edebe9;border-radius:6px;background:#fafafa;display:grid;gap:4px}
body.theme-outlook .outlook-reading-card-label{font-size:11.5px;color:#605e5c;font-weight:600;letter-spacing:.2px}
body.theme-outlook .outlook-reading-card-value{font-size:22px;font-weight:700;color:#242424;font-variant-numeric:tabular-nums;letter-spacing:-.4px;line-height:1.2}
body.theme-outlook .outlook-reading-card-sub{font-size:12px;color:#605e5c;font-weight:600;font-variant-numeric:tabular-nums}
body.theme-outlook .outlook-reading-card-sub[data-change="up"]{color:#c50f1f}
body.theme-outlook .outlook-reading-card-sub[data-change="down"]{color:#0f6cbd}
body.theme-outlook .outlook-reading-card-value[data-change="up"]{color:#c50f1f}
body.theme-outlook .outlook-reading-card-value[data-change="down"]{color:#0f6cbd}

body.theme-outlook .outlook-reading-attachment{display:inline-flex;align-items:center;gap:10px;padding:10px 14px;border:1px solid #c7d8ea;border-radius:6px;background:#f3f9ff;color:#0f4c81;font-size:13px;font-weight:600;max-width:320px;cursor:default}
body.theme-outlook .outlook-reading-attachment svg{width:24px;height:24px;flex:0 0 auto;color:#107c41}
body.theme-outlook .outlook-reading-attachment small{display:block;font-size:11px;font-weight:500;color:#605e5c;margin-top:2px}

body.theme-outlook .outlook-reading-actions-row{display:flex;flex-wrap:wrap;gap:8px;padding-top:4px}
body.theme-outlook .outlook-reading-actions-row button,
body.theme-outlook .outlook-reading-actions-row a{height:32px;border:1px solid #c7d8ea;background:#fff;color:#0f4c81;border-radius:4px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12.5px;font-weight:650;text-decoration:none;cursor:pointer}
body.theme-outlook .outlook-reading-actions-row button:hover,
body.theme-outlook .outlook-reading-actions-row a:hover{background:#eef6fc}
body.theme-outlook .outlook-reading-actions-row svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;color:currentColor}

body.theme-outlook .outlook-reading-news-bullets{margin:4px 0 4px 0;padding-left:20px;display:grid;gap:6px;color:#323130;font-size:13px;line-height:1.5}
body.theme-outlook .outlook-reading-news-bullets li{padding-left:2px}
body.theme-outlook .outlook-reading-news-bullets li::marker{color:#0f6cbd}
body.theme-outlook .outlook-reading-news-bullets .bullet-title a{color:#0f4c81;text-decoration:none;font-weight:500}
body.theme-outlook .outlook-reading-news-bullets .bullet-title a:hover{text-decoration:underline}
body.theme-outlook .outlook-reading-news-bullets .bullet-meta{color:#605e5c;font-size:11.5px}
body.theme-outlook .outlook-reading-signature{margin:4px 0 4px;padding:6px 10px;border-left:3px solid #c7d8ea;color:#605e5c;font-size:13px;line-height:1.55;font-style:italic;background:#fafbfd}
body.theme-outlook .outlook-reading-news-title{margin:20px 0 8px;font-size:13.5px;font-weight:700;color:#323130;border-top:1px solid #edebe9;padding-top:16px}
body.theme-outlook .outlook-reading-news{display:grid;gap:4px}
body.theme-outlook .outlook-reading-news a{display:grid;grid-template-columns:60px 1fr;gap:10px;padding:8px 10px;border:1px solid transparent;border-radius:4px;text-decoration:none;color:#323130;font-size:12.5px;line-height:1.45}
body.theme-outlook .outlook-reading-news a:hover{border-color:#edebe9;background:#fafafa}
body.theme-outlook .outlook-reading-news .news-time{color:#605e5c;font-size:11px;white-space:nowrap;font-variant-numeric:tabular-nums;padding-top:2px}
body.theme-outlook .outlook-reading-news .news-title{font-weight:600;color:#242424;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
body.theme-outlook .outlook-reading-news .news-meta{display:block;color:#605e5c;font-size:11px;font-weight:500;margin-top:2px}

body.theme-outlook .outlook-top-btn{width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;background:transparent;border:0;cursor:pointer;font:inherit}
body.theme-outlook .outlook-top-btn:hover{background:rgba(255,255,255,.18)}
body.theme-outlook .outlook-top-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
body.theme-outlook .outlook-search svg{width:16px;height:16px;color:#616161;flex:0 0 auto}

body.theme-outlook .outlook-reading-back{display:none}
/* Mobile (≤760px): list-only by default, reading as overlay */
@media(max-width:760px){
  /* 모바일에서는 리본/탭바/탑바 모두 페이지와 함께 스크롤된다. 받은 편지함
     헤더만 상단에 sticky. 페이지 자체가 스크롤 컨테이너 역할 — sticky 가
     viewport 에 정확히 붙도록 outlook-app/main 의 overflow:hidden 도 제거. */
  body.theme-outlook{overflow-y:auto !important;overflow-x:hidden !important;touch-action:pan-y;-webkit-overflow-scrolling:touch}
  body.theme-outlook .outlook-app{height:auto !important;min-height:100vh;display:block !important;overflow:visible !important}
  body.theme-outlook .outlook-topbar,
  body.theme-outlook .outlook-tabbar,
  body.theme-outlook .outlook-ribbon{position:static !important;flex:0 0 auto}
  body.theme-outlook .outlook-topbar{
    box-sizing:border-box;width:100vw;max-width:100vw;overflow:hidden;
    grid-template-columns:30px 78px minmax(0,1fr) auto;gap:5px;padding:0 6px;
  }
  body.theme-outlook .outlook-search{min-width:0}
  body.theme-outlook .outlook-top-actions{min-width:0;gap:4px;overflow:hidden}
  body.theme-outlook .outlook-top-actions .outlook-top-btn:nth-of-type(n+2),
  body.theme-outlook .outlook-top-actions .outlook-profile{display:none}
  body.theme-outlook .outlook-top-btn{width:30px;height:30px}
  body.theme-outlook .outlook-ribbon{
    box-sizing:border-box;width:calc(100vw - 8px);max-width:calc(100vw - 8px);
    margin-left:4px;margin-right:4px;overflow-x:auto;overflow-y:hidden;
  }
  body.theme-outlook .outlook-main{display:block !important;grid-template-columns:none !important;grid-template-rows:none !important;height:auto !important;overflow:visible !important;border-top:1px solid #edebe9}
  body.theme-outlook .outlook-apprail,
  body.theme-outlook .outlook-folders{display:none !important}
  body.theme-outlook .outlook-list{width:100% !important;max-width:100% !important;height:auto !important;overflow:visible !important;border-right:0;grid-column:auto;grid-row:auto;display:block}
  body.theme-outlook .outlook-list-head{position:sticky !important;top:0;z-index:6;background:#fff;border-bottom:1px solid #edebe9;box-shadow:0 1px 0 rgba(0,0,0,.04)}
  body.theme-outlook .outlook-mail-list{height:auto !important;overflow:visible !important;min-height:50vh}
  body.theme-outlook .outlook-reading{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;max-width:100vw;height:100vh;z-index:50;background:#fff;transform:translateX(100%);transition:transform .25s ease-out;padding-top:env(safe-area-inset-top,0);overflow-y:auto}
  body.theme-outlook .outlook-reading.is-open{transform:translateX(0)}
  body.theme-outlook .outlook-reading-message{padding:14px 16px 24px}
  body.theme-outlook .outlook-reading-back{display:inline-flex !important;align-items:center;gap:6px;height:38px;padding:0 12px;border:0;background:transparent;color:#0f6cbd;font:inherit;font-size:14px;font-weight:650;margin:8px 0 4px -8px;cursor:pointer}
  body.theme-outlook .outlook-reading-back svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
  body.theme-outlook .chat-panel{bottom:0}
  body.theme-outlook.outlook-nav-open{overflow:hidden !important}
  body.theme-outlook.outlook-nav-open::before{content:"";position:fixed;inset:0;background:rgba(0,0,0,.28);z-index:70}
  body.theme-outlook.outlook-nav-open .outlook-folders{
    display:block !important;position:fixed;top:0;left:0;bottom:0;z-index:80;
    width:min(84vw,312px);max-width:312px;padding:calc(12px + env(safe-area-inset-top,0px)) 10px calc(22px + env(safe-area-inset-bottom,0px));
    background:#fafafa;border-right:1px solid #d6d6d6;box-shadow:0 18px 42px rgba(0,0,0,.26);
    overflow-y:auto;-webkit-overflow-scrolling:touch;
  }
  body.theme-outlook.outlook-nav-open .outlook-folders::before{content:"메일함";display:block;margin:2px 8px 10px;color:#242424;font-size:17px;font-weight:750;letter-spacing:-.2px}
}
/* === end Outlook v3 ============================================================= */

html.pwa-standalone{
  --safe-top:env(safe-area-inset-top);
  --app-header-h:calc(200px + var(--safe-top));
}
.app-header{position:relative;z-index:20;background:var(--ribbon-bg)}
html.pwa-standalone .app-header{padding-top:var(--safe-top);background:var(--titlebar-bg)}

/* === Title bar === */
.titlebar{height:38px;background:var(--titlebar-bg);color:var(--titlebar-fg);display:grid;grid-template-columns:auto 1fr auto;align-items:center;padding:0 var(--gutter);gap:14px}
.quick{display:flex;align-items:center;gap:2px;padding-left:0}
.app-icon{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;margin-right:2px;border-radius:3px;flex-shrink:0;transition:background 100ms}
.app-icon img{width:23px;height:23px;display:block;filter:drop-shadow(0 1px 1px rgba(0,0,0,.18))}
.app-icon:hover{background:var(--titlebar-hover)}
body.inline-admin-mode .app-icon{background:rgba(255,255,255,.22);box-shadow:inset 0 0 0 1px rgba(255,255,255,.38)}
.quick button,.window button{width:30px;height:28px;border:0;background:transparent;color:var(--titlebar-fg);font-size:13px;cursor:pointer;border-radius:3px;display:inline-flex;align-items:center;justify-content:center;transition:background 80ms}
.quick button:hover,.window button:hover,.search:hover{background:var(--titlebar-hover)}
body.ribbon-collapsed .ribbon{display:none}
body.ribbon-collapsed .tabs{border-bottom:1px solid var(--sep)}
body.ribbon-collapsed{--app-header-h:calc(104px + var(--safe-top))}
.quick button:active{background:var(--titlebar-active)}
.quick button[disabled]{opacity:.45;cursor:default}
.quick button[disabled]:hover{background:transparent}
.quick svg,.window svg{width:14px;height:14px;display:block}
.quick .save-btn svg{width:15px;height:15px;filter:drop-shadow(0 1px 1px rgba(0,0,0,.16))}
.quick .qa-sep{width:1px;height:16px;background:var(--titlebar-sep);margin:0 4px}
.book-title{display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;font-weight:600;letter-spacing:.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.book-title .star{font-size:11px;opacity:.85}
.book-title .ext{font-weight:400;opacity:.85}
.search{display:none;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:3px;background:var(--titlebar-hover);color:var(--titlebar-fg);font-size:12px;cursor:text;min-width:280px}
.search svg{width:13px;height:13px;flex-shrink:0}
.search input{border:0;background:transparent;color:var(--titlebar-fg);outline:none;font:inherit;width:100%}
.search input::placeholder{color:var(--titlebar-muted)}
@media(min-width:1100px){.search{display:flex}}
.window{display:flex;gap:2px;align-items:center}
.avatar{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#5c8c70,#3d6b53);display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:11px}

/* === Ribbon tabs === */
.tabs{height:36px;background:var(--top-tab-bg);display:flex;align-items:end;border-bottom:0;padding-left:var(--gutter);padding-right:var(--gutter);gap:0;overflow:auto;white-space:nowrap}
.tabs{scrollbar-width:none;-ms-overflow-style:none}
.tabs::-webkit-scrollbar{display:none}
.tabs span{height:35px;padding:8px 14px 8px;color:var(--txt);font-size:12.5px;cursor:pointer;border-radius:4px 4px 0 0;position:relative;font-weight:400}
.tabs span:hover{background:#f3f2f1}
.tabs span.file-tab{background:transparent;color:var(--txt);font-weight:400;border-radius:4px 4px 0 0;padding:8px 14px}
.tabs span.file-tab:hover{background:#f3f2f1}
.tabs span.active{color:var(--excel-dark);font-weight:600}
.tabs span.active::after{content:"";position:absolute;left:14px;right:14px;bottom:0;height:2px;background:var(--excel);border-radius:2px}

/* === Ribbon body — flush full-width band (모든 row 와 동일 좌우 gutter) === */
.ribbon{
  height:96px;
  background:var(--ribbon-bg);
  border:0;
  border-bottom:1px solid var(--sep);
  margin:0;
  border-radius:0;
  box-shadow:none;
  display:flex;
  align-items:stretch;
  gap:0;
  overflow:hidden;
  padding:0 var(--gutter);
  position:relative;
}
.ribbon-spacer{flex:1 1 auto;min-width:8px}
/* Hidden helper for progressive collapse (drives focus + screen reader) */
.ribbon [hidden]{display:none !important}
.group{display:grid;grid-template-rows:1fr 16px;align-items:end;justify-items:center;padding:4px 6px 4px;position:relative;flex-shrink:0}
/* 그룹 내부 콘텐츠 horizontal centering (글꼴/맞춤/표시 형식 좌측 쏠림 보정) */
.group .tools{justify-content:center;align-items:center}
.group > div:first-child:not(.tools):not(.group-label){display:flex;flex-direction:column;align-items:center;gap:2px;width:100%}
.group .selectrow{justify-content:center}
.group .stack{justify-content:center;justify-items:center}
.group:not(:last-child)::after{content:"";position:absolute;right:0;top:8px;bottom:24px;width:1px;background:var(--sep)}
.group-label{text-align:center;color:var(--muted);font-size:11px;letter-spacing:.1px;padding-top:2px}
.tools{display:flex;align-items:stretch;gap:2px;height:74px}

/* Big button (paste / conditional formatting / etc.) */
.tool.big{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;gap:4px;width:54px;height:74px;padding:4px 2px 6px;border:1px solid transparent;border-radius:3px;background:transparent;cursor:pointer;font:inherit;color:var(--txt)}
.tool.big .ic{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;font-size:22px;line-height:1}
.tool.big .lbl{font-size:11px;text-align:center;line-height:1.15;color:var(--txt);font-weight:400}
.tool.big .caret{font-size:9px;color:var(--muted);margin-top:-2px}
.tool.big:hover{background:var(--hover);border-color:var(--hover-border)}
.tool.big:active{background:var(--pressed)}

/* Small icon button */
.tool{display:inline-flex;align-items:center;justify-content:center;width:24px;height:22px;border:1px solid transparent;border-radius:3px;background:transparent;cursor:pointer;font:inherit;color:var(--txt);font-size:12px;line-height:1;padding:0}
.tool:hover{background:var(--hover);border-color:var(--hover-border)}
.tool:active{background:var(--pressed)}

/* Split button (icon + label inline, with caret) */
.split{display:inline-flex;align-items:center;gap:5px;height:22px;padding:0 6px;border:1px solid transparent;border-radius:3px;background:transparent;cursor:pointer;font:inherit;color:var(--txt);font-size:12px}
.split:hover{background:var(--hover);border-color:var(--hover-border)}
.split .ic{font-size:13px;color:var(--muted)}
.split .caret{font-size:8px;color:var(--muted)}

/* Combo / dropdown like font picker */
.combo{display:inline-flex;align-items:center;justify-content:space-between;height:22px;padding:0 6px;border:1px solid var(--control-border);background:var(--control-bg);border-radius:2px;font-size:12px;cursor:pointer;min-width:90px;color:var(--txt)}
.combo > span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.combo:hover{border-color:var(--muted)}
.combo.small{min-width:46px}
.combo .caret{font-size:8px;color:var(--muted);margin-left:6px}
select.combo{font:inherit;line-height:1;appearance:auto;-webkit-appearance:menulist}
.combo.font-select{min-width:104px;width:118px;max-width:118px;padding:0 18px 0 6px}

/* Layout helpers */
.commandcol{display:flex;flex-direction:column;justify-content:flex-start;gap:1px;height:74px;padding-top:2px}
.stack{display:grid;grid-template-columns:repeat(3,24px);grid-auto-rows:22px;gap:1px;align-content:start;padding-top:2px}
.selectrow{display:flex;gap:3px;margin-bottom:3px;padding-top:2px}

/* Group widths (modeled on real M365 Excel) — flex-shrink default 0 */
.group.clipboard{padding-left:6px;padding-right:6px;flex-shrink:0;min-width:90px}
.group.font{min-width:232px;flex-shrink:0}
/* 글꼴 그룹: 텍스트 서식 6 버튼을 1행으로 — 위/아래 padding 동일하게 */
.group.font .stack{
  grid-template-columns:repeat(6,24px);
  grid-auto-rows:22px;
  gap:2px;
  padding-top:0;
}
.group.font > div:first-child:not(.tools):not(.group-label){
  gap:8px;
  padding:6px 0 4px;
  justify-content:center;
}
.group.font .selectrow{margin-bottom:0}
.group.align{min-width:178px;flex-shrink:0}
.group.number{min-width:142px;flex-shrink:1}
.group.styles{min-width:172px;flex-shrink:1}
.group.cells{min-width:108px;flex-shrink:1}
.group.editing{min-width:142px;flex-shrink:1}
.group.data{min-width:126px;flex-shrink:0}
a.tool.big{text-decoration:none}
a.tool.big:hover{text-decoration:none}

/* === SVG 아이콘 = Excel Fluent 톤 (모노 + 미세 강세) === */
.ic svg, .tool svg, .split svg, .tool.big .ic svg{
  display:block;color:var(--txt);fill:currentColor;
  shape-rendering:geometricPrecision;vertical-align:middle;
}
.ic svg{width:16px;height:16px}
.tool > svg{width:16px;height:16px;color:var(--txt);fill:currentColor}
.split .ic{display:inline-flex;align-items:center;justify-content:center;color:var(--txt);width:16px;height:16px;flex-shrink:0}
.split .ic svg{width:16px;height:16px}
.tool.big .ic{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px}
.tool.big .ic svg{width:26px;height:26px}
.tool.big .lbl{font-size:10.5px;line-height:1.15;color:var(--txt);font-weight:400}
.group-label{font-size:10.5px}
.split{font-size:11px}
.tool.big{width:52px;padding:4px 1px 6px}
/* Excel 풍 미세 강세: 일부 아이콘에 1~2색 액센트 */
.ic--accent-blue svg{color:#1f6feb}
.ic--accent-green svg{color:#21a366}
.ic--accent-amber svg{color:#dba514}
/* 그룹 내 글꼴 선택 콤보의 미세 자국 */
.combo{font-size:11.5px;height:21px}

/* === 우측 메모/공유 cluster (real Excel) === */
.ribbon-actions{display:flex;align-items:center;gap:6px;padding:0 10px 0 6px;align-self:center;flex-shrink:0;height:100%}
.btn-memo,.btn-share{height:26px;padding:0 12px 0 9px;border-radius:3px;display:inline-flex;align-items:center;gap:6px;font-size:11.5px;cursor:pointer;font-weight:500;font-family:inherit;line-height:1;text-decoration:none}
.btn-memo{background:#fff;color:#0d6e95;border:1px solid #1ca5d0}
.btn-memo:hover{background:#eaf6fb;border-color:#0d6e95}
.btn-share{background:#107c41;color:#fff;border:1px solid #107c41}
.btn-share:hover{background:#0e6b39;color:#fff}
.btn-memo svg,.btn-share svg{width:14px;height:14px;flex-shrink:0}
@media(max-width:899px){.btn-memo .lbl,.btn-share .lbl{display:none}.btn-memo,.btn-share{padding:0 9px}}

/* === Progressive collapse — Excel 식 점진적 축소 ===
   1500+ : full ribbon
   1280–1499 : 셀 그룹 hide (3 big 버튼 데코)
   1140–1279 : 표시 형식 추가 hide
   1020–1139 : 스타일 추가 hide
    900–1019 : 편집의 commandcol(채우기/지우기/정렬/찾기) 압축
    760–899 : 편집 그룹 hide, 맞춤 split('병합하고 가운데') hide
    600–759 : 글꼴의 selectrow(폰트 picker) hide
    <600 : 클립보드만 big paste, 글꼴은 B/I/U icon-only, 분석 + 새로고침
   위 모든 단계는 가장 정보 가치 낮은 그룹부터 사라짐. 사용자 자주 쓰는
   클립보드/글꼴/맞춤/편집 코어/데이터/인사이트 는 끝까지 살아남음. */
@media(max-width:1499px){ .group.cells{display:none} }
@media(max-width:1279px){ .group.number{display:none} }
@media(max-width:1139px){ .group.styles{display:none} }
@media(max-width:1019px){
  .group.editing .commandcol .split{font-size:0;padding:0 6px}
  .group.editing .commandcol .split .ic{font-size:13px}
  .group.editing .commandcol .split .caret{display:none}
}
@media(max-width:899px){
  .group.editing{display:none}
  .group.align .selectrow{display:none}  /* '병합하고 가운데' split 숨김 */
  .group.font{min-width:142px}
  .group.font .selectrow .combo:first-child{min-width:78px!important;width:78px;max-width:78px}
  .group.font .combo.small{min-width:36px!important;width:36px;max-width:36px;padding:0 4px}
}
@media(max-width:759px){
  .tabs{overflow-x:auto;overscroll-behavior-x:contain}
  .tabs span{flex:0 0 auto;padding-left:12px;padding-right:12px}
  .ribbon{
    height:120px;
    align-items:stretch;
    justify-content:flex-start;
    gap:0;
    overflow-x:auto;
    overflow-y:hidden;
    overscroll-behavior-x:contain;
    -webkit-overflow-scrolling:touch;
    touch-action:pan-x;
    scroll-snap-type:x proximity;
    scrollbar-width:none;
    -ms-overflow-style:none;
  }
  .ribbon::-webkit-scrollbar{display:none}
  .ribbon-spacer{display:none}
  .group{
    display:flex;
    align-items:flex-start;
    justify-content:center;
    height:auto;
    padding:7px 6px 26px;
    scroll-snap-align:start;
  }
  .group-label{display:block;position:absolute;left:4px;right:4px;bottom:5px;font-size:10.5px;line-height:18px;padding-top:0;white-space:nowrap}
  .group:not(:last-child)::after{top:10px;bottom:32px}
  .tools{height:78px;align-items:stretch}
  .tool.big{
    width:52px;
    height:78px;
    justify-content:flex-start;
    gap:3px;
    padding:6px 1px 7px;
  }
  .tool.big .ic{width:30px;height:30px}
  .tool.big .ic svg{width:25px;height:25px}
  .tool.big .lbl{font-size:10px;line-height:1.12}
  .tool.big .caret{margin-top:-2px}
  .group.clipboard .commandcol{display:none}
  .group.clipboard{min-width:68px;padding-left:2px;padding-right:8px}
  .group.data{min-width:70px;padding-left:8px;padding-right:6px}
  .group.data .commandcol{display:none}
  .ribbon-actions{
    height:100%;
    align-self:stretch;
    padding:0 8px 28px 8px;
    gap:5px;
  }
  .btn-memo,.btn-share{
    width:36px;
    height:36px;
    justify-content:center;
    padding:0;
  }
  .btn-memo svg,.btn-share svg{width:15px;height:15px}
  .group.font{min-width:126px}
  .group.font .selectrow{gap:1px;margin-bottom:1px;padding-top:1px}
  .group.font .selectrow .combo:first-child{display:none}
  .group.font .combo.small{min-width:34px;width:34px;padding:0 4px}
  .group.font .selectrow .tool{width:20px;height:20px;font-size:10.5px}
  .group.font .stack{grid-template-columns:repeat(3,22px);grid-auto-rows:20px;gap:1px}
  .group.font .stack .tool{width:22px;height:20px}
  .group.align{min-width:118px}
}
@media(min-width:600px) and (max-width:759px){
  .group.font{min-width:172px}
  .group.font .stack{
    grid-template-columns:repeat(6,22px);
    grid-auto-rows:20px;
    gap:1px;
    padding-top:0;
  }
  .group.align{min-width:112px}
  .group.align .stack{grid-template-columns:repeat(4,22px)!important;grid-auto-rows:20px!important}
  .group.align .tool{width:22px;height:20px}
}
@media(max-width:599px){
  .ribbon{
    height:120px;
    align-items:stretch;
    justify-content:flex-start;
    gap:0;
  }
  .group.align{display:flex;min-width:112px}
  .group.font{min-width:94px;padding-left:6px;padding-right:6px}
  .group.font .selectrow{display:none}
  .group.font > div:first-child{height:78px;justify-content:center}
  .group.font .stack{
    grid-template-columns:repeat(3,24px);
    grid-auto-rows:22px;
    gap:1px;
    align-content:center;
    padding-top:0;
  }
  .group.font .stack .tool{width:24px;height:22px}
  .group.align > div:first-child{height:78px;justify-content:center}
  .group.align .stack{grid-template-columns:repeat(4,22px)!important;grid-auto-rows:20px!important}
  .group.align .tool{width:22px;height:20px}
  .tabs span{padding-left:11px;padding-right:11px}
}
@media(max-width:479px){
  :root{--gutter:2px}
}

/* === Formula bar — flush full-width, top hairline 제거 === */
.formula{height:30px;background:var(--formula-bg);border-bottom:1px solid var(--sep);display:grid;grid-template-columns:96px 28px 1fr auto auto;align-items:center;gap:4px;padding:0 var(--gutter)}
.namebox{height:22px;border:1px solid var(--control-border);background:var(--control-bg);display:flex;align-items:center;padding:0 8px;font-size:12px;border-radius:2px;color:var(--txt)}
.fxmark{font-family:'Cambria Math','STIX Two Math','Segoe UI Symbol',serif;font-style:italic;color:var(--muted);text-align:center;font-size:13px}
.fxbox{height:22px;border:1px solid var(--sep);background:var(--control-bg);display:flex;align-items:center;padding:0 8px;font-size:12px;border-radius:2px;color:var(--txt);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ribbon-inline-toggle{height:22px;border:1px solid var(--control-border);background:var(--control-bg);color:var(--muted);border-radius:4px;padding:0 8px;font:inherit;font-size:11px;font-weight:500;white-space:nowrap;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;line-height:1;box-shadow:0 1px 0 rgba(255,255,255,.65) inset}
.ribbon-inline-toggle:hover{background:var(--hover);border-color:var(--control-border);color:var(--txt)}
.ribbon-inline-toggle:active{background:var(--pressed)}
body.ribbon-collapsed .ribbon-inline-toggle{background:var(--control-bg);border-color:var(--control-border);color:var(--muted)}
/* 우측 메타 — 옛 bar-compact 의 정보(@kospigazua, 시각, session) 통합 */
.fx-meta{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--muted);padding-left:6px;white-space:nowrap;overflow:hidden}
.fx-meta a.meta-link{color:#1565c0;text-decoration:none;font-weight:500}
.fx-meta a.meta-link:hover{text-decoration:underline}
.fx-meta .meta-sep{opacity:.4}
.fx-meta .badge{display:inline-block;padding:1px 6px;background:#eef3fb;color:#1565c0;border-radius:8px;font-size:10.5px;font-weight:500}
@media(max-width:560px){.fx-meta .meta-sep{display:none}.fx-meta{gap:5px;font-size:10.5px}}
@media(max-width:640px){
  .quote-sort-select{max-width:58px;padding:0 4px;font-size:10px}
}

.bar{display:flex;justify-content:space-between;align-items:center;background:var(--panel-bg);border-bottom:1px solid var(--grid);padding:8px var(--gutter)}
.title{font-size:13px;font-weight:600}
.tagline{font-size:11px;color:var(--muted);letter-spacing:.2px}
.sub{font-size:11px;color:var(--muted)}
.badge{display:inline-block;padding:3px 9px;border-radius:11px;background:var(--excel);color:#fff;font-size:11px;font-weight:600;letter-spacing:.1px}

/* === Sheet content (default = stacked, full width) === */
.sheet{background:var(--bg);border:0;border-top:1px solid var(--grid);overflow:auto;margin:0;box-shadow:none;min-height:calc(100vh - 280px)}
/* Empty trailing rows = "끝까지 뻗은" Excel grid look */
tr.empty-row td{height:24px;background:var(--bg);color:#8f98a3;font-weight:400}
tr.empty-row .rownum{color:#9aa0a6}
@media(max-width:1099px){
  tr.empty-row{display:none}
}
/* 새로 들어온 뉴스 row 강조 — 4초 동안 노란 배경 fade out */
@keyframes news-row-fadein{
  0%{background-color:#fff4d4}
  100%{background-color:transparent}
}
tr.news-row.is-new > td{animation:news-row-fadein 4s ease-out forwards}
tr.news-row.is-new > td:nth-child(2)::before{content:"●";color:#d4a017;margin-right:3px;font-size:9px;animation:news-row-fadein 4s ease-out forwards}
@keyframes news-row-fadein-dark{
  0%{background-color:#2a2715}
  100%{background-color:transparent}
}
body.excel-dark-mode:not(.theme-outlook) tr.news-row.is-new > td{animation:news-row-fadein-dark 4s ease-out forwards}
body.excel-dark-mode:not(.theme-outlook) tr.news-row.is-new > td:nth-child(2)::before{color:#d9b85a;animation:news-row-fadein-dark 4s ease-out forwards}
@keyframes community-post-inserted{
  0%{background-color:#eaf7ee;box-shadow:inset 0 0 0 999px rgba(33,163,102,.10)}
  100%{background-color:transparent;box-shadow:inset 0 0 0 999px rgba(33,163,102,0)}
}
table{border-collapse:collapse;width:100%;min-width:780px}
.sheet.summary table{min-width:0;table-layout:fixed}
.sheet.summary th.rownum,.sheet.summary td.rownum{width:32px}
.sheet.summary th:nth-child(3),.sheet.summary td:nth-child(3){width:110px}
.sheet.summary th:nth-child(4),.sheet.summary td:nth-child(4){width:66px}
body.readability-mode .sheet.summary th:nth-child(4),
body.readability-mode .sheet.summary td:nth-child(4){width:92px}
.sheet.summary td.right{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* 현재가 셀 좌측에 통화 부호 고정 ($/₩). 본문은 우측 정렬 유지. */
.sheet.summary .quote-price-cell{position:relative}
.quote-price-currency{position:absolute;left:7px;top:50%;transform:translateY(-50%);color:#9aa6a1;font-size:11px;font-weight:500;line-height:1;pointer-events:none;letter-spacing:0;font-variant-numeric:normal}
body.excel-dark-mode:not(.theme-outlook) .quote-price-currency{color:#7a8a83}
html:not(.platform-windows) .sheet.summary .quote-price-cell,
html:not(.platform-windows) .sheet.summary .quote-change-cell{font-variant-numeric:normal;letter-spacing:normal}
.sheet.summary{scrollbar-width:none;-ms-overflow-style:none;position:relative}
.sheet.summary::-webkit-scrollbar{display:none}
.sheet.summary.sheet-switch-loading::after{
  content:attr(data-loading-text);
  position:absolute;
  left:50%;
  top:52px;
  z-index:16;
  display:inline-flex;
  align-items:center;
  gap:7px;
  transform:translateX(-50%);
  padding:5px 10px;
  border:1px solid var(--control-border);
  border-left:3px solid var(--excel);
  border-radius:3px;
  background:rgba(255,255,255,.94);
  color:var(--txt);
  box-shadow:0 4px 12px rgba(0,0,0,.12);
  font-size:11.5px;
  font-weight:600;
  pointer-events:none;
}
.sheet.summary.sheet-switch-loading table{opacity:.72}
.sheet.timeline{overflow-x:hidden}
.sheet.timeline table{min-width:0;width:100%}
/* mood 영역(수급/15·30분 변동) — 아주 옅은 배경 음영으로만 영역 구분.
 * 엑셀 banded rows 처럼 자연스럽게 어우러짐. */
.sheet.summary tr.mood-row td{background:#f7f7f5}
.sheet.summary tr.mood-row:hover td{background:#f0eff0}
.sheet.summary tr.flow-row td{background:#f7f7f5}
.flow-cell{font-variant-numeric:tabular-nums;white-space:nowrap;color:#5f6368;font-weight:400}
.flow-line{display:inline-flex;align-items:center;gap:5px;flex-wrap:nowrap;white-space:nowrap;font-size:11.5px;font-weight:400}
.flow-pill{display:inline-flex;align-items:center;gap:2px;font-weight:400;white-space:nowrap;color:#5f6368}
.flow-pill .flow-label{color:#666;font-weight:400}
/* 숨긴 항목 복원 — 변동률 토글과 같은 크기/톤으로 맞춤. */
.hidden-restore{height:21px;padding:0 8px;font:inherit;font-size:11px;font-weight:500;background:#fff;border:1px solid #d0d7de;border-radius:3px;color:#605e5c;cursor:pointer;margin-left:4px;white-space:nowrap;flex:0 0 auto;line-height:1}
.hidden-restore:hover{background:#f3f2f1;color:#252423}
th,td{border:1px solid var(--grid);padding:4px 7px;font-size:12px;line-height:1.2;height:24px}
th{background:var(--head);font-weight:600;text-align:center;position:sticky;top:0;z-index:6}
.sheet table tr:first-child th{top:0;z-index:8}
.sheet table tr:nth-child(2) th{top:var(--sheet-colhead-h);z-index:7}
/* sticky 헤더 보더 — border-collapse:collapse 환경에서는 position:sticky 가 적용된
 * 셀의 border 가 scroll 시 깨지거나 비어 보인다. inset box-shadow 로 4 변을 직접
 * 그려 일관된 보더를 만든다. 종토방 헤더는 별도 ID 규칙(아래)이 우선. */
.sheet table tr:first-child th,
.sheet table tr:nth-child(2) th{
  border:0;
  background-clip:padding-box;
  box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid),inset 0 1px 0 var(--grid);
}
/* 두 sticky 행이 겹치는 경계는 한 줄로만 보이도록 위쪽 shadow 제거. */
.sheet table tr:nth-child(2) th{box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
.colhead{background:var(--head);font-weight:600;text-align:center;color:#555}
.subhead{background:var(--bg);font-weight:600;color:var(--txt);white-space:nowrap}
.rownum{background:var(--head);width:36px;text-align:right;color:#666;font-weight:600}
th.rownum,
td.rownum{
  background:var(--head)!important;
  color:#666!important;
  font-weight:600!important;
  text-align:right!important;
  box-sizing:border-box;
  white-space:nowrap;
  font-variant-numeric:tabular-nums;
}
th.rownum::before,
td.rownum::before{content:none!important;display:none!important}
#cardsTable th,
#cardsTable td{
  border:0!important;
  box-shadow:inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid);
}
#cardsTable tr > :first-child{
  box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid);
}
#cardsTable tr:first-child > *{
  box-shadow:inset -1px 0 0 var(--grid),inset 0 1px 0 var(--grid),inset 0 -1px 0 var(--grid);
}
#cardsTable tr:first-child > :first-child{
  box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 1px 0 var(--grid),inset 0 -1px 0 var(--grid);
}
#cardsTable tr.quote-with-holding > td{
  box-shadow:inset -1px 0 0 var(--grid);
}
#cardsTable tr.quote-with-holding > td:not(.rownum){
  background-image:linear-gradient(to right, rgba(112,128,119,.42) 50%, transparent 0)!important;
  background-size:4px 1px;
  background-repeat:repeat-x;
  background-position:left bottom;
}
#cardsTable tr.quote-with-holding > td:first-child{
  box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid);
}
#cardsTable tr.quote-with-holding > td.rownum{
  box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid);
}
#cardsTable tr.holding-lot-first > td:not(.rownum),
#cardsTable tr.quote-with-holding + tr.holding-edit-row > td:not(.rownum){
  background-image:none!important;
}
#cardsTable tr.holding-lot-first > td.rownum,
#cardsTable tr.quote-with-holding + tr.holding-edit-row > td.rownum{
  background-image:none!important;
}
#cardsTable th.rownum,
#cardsTable td.rownum{
  width:32px;
  min-width:32px;
  max-width:32px;
  padding-left:4px;
  padding-right:6px;
}
.left{text-align:left}.right{text-align:right;font-variant-numeric:tabular-nums}.center{text-align:center}
.up{color:var(--up)}.down{color:var(--down)}.flat{color:var(--flat)}
a{color:#0563c1;text-decoration:none}
a:hover{text-decoration:underline}
.time{font-size:11px;color:#605e5c}
.metric-cell{position:relative;display:flex;align-items:center;gap:5px;min-width:0}
.metric-cell > span:first-child:not(.metric-trail){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.metric-label{display:inline-flex;align-items:center;gap:4px;min-width:0;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.metric-label a{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tv-chart-button{display:inline-flex;align-items:center;justify-content:center;height:16px;min-width:28px;padding:0 5px;border:1px solid #b7c9bd;border-radius:3px;background:#f3fbf6;color:#185c37;font:inherit;font-size:9.5px;font-weight:750;line-height:1;cursor:pointer;opacity:0;pointer-events:none;transform:translateX(-2px);transition:opacity 120ms,transform 120ms,background 120ms,color 120ms;flex:0 0 auto}
tr:hover .tv-chart-button,.metric-cell:hover .tv-chart-button,.tv-chart-button:focus-visible,tr.tv-chart-active .tv-chart-button{opacity:1;pointer-events:auto;transform:translateX(0)}
.tv-chart-button.fv-force-visible{opacity:1;pointer-events:auto;transform:translateX(0)}
.tv-chart-button:hover,.tv-chart-button:focus-visible,tr.tv-chart-active .tv-chart-button{background:#107c41;color:#fff;border-color:#107c41;text-decoration:none}
.source-pill{display:inline-flex;align-items:center;height:14px;padding:0 4px;border:1px solid rgba(106,115,125,.28);background:transparent;color:#6a737d;border-radius:var(--ui-pill-radius);font-size:9.5px;font-weight:400;white-space:nowrap;text-decoration:none;line-height:1;flex:0 0 auto}
.tv-chart-panel,.mobile-tv-chart-panel{height:250px;min-height:250px;background:#fff;display:flex;flex-direction:column;overflow:hidden;animation:tv-chart-open 160ms ease-out}
.tv-chart-panel{flex:0 0 var(--tv-chart-height,250px);height:var(--tv-chart-height,250px);min-height:180px;margin:0;border:1px solid var(--grid);border-top:0;box-shadow:0 6px 16px rgba(0,0,0,.08)}
.tv-chart-panel[hidden]{display:none!important}
.tv-chart-head{height:28px;flex:0 0 28px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 8px 0 10px;border-bottom:1px solid #e1dfdd;background:linear-gradient(180deg,#fbfdfc,#f3f7f4);color:#252423}
.tv-chart-title{min-width:0;display:flex;align-items:center;gap:7px}
.tv-chart-title strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:750}
.tv-chart-kicker{height:16px;display:inline-flex;align-items:center;padding:0 5px;border:1px solid #c9d8cf;border-radius:3px;background:#eef7f1;color:#107c41;font-size:9.5px;font-weight:800;letter-spacing:.1px;flex:0 0 auto}
.tv-chart-close{width:22px;height:22px;border:1px solid #d0d7de;border-radius:50%;background:#fff;color:#605e5c;font:inherit;font-size:16px;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.tv-chart-close:hover{background:#f3f2f1;color:#252423}
.tv-chart-widget{position:relative;flex:1 1 auto;min-height:0;background:#fff}
.tv-chart-frame{display:block;width:100%;height:100%;border:0;background:#fff}
.tv-chart-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#6a737d;font-size:12px;background:linear-gradient(90deg,#f7f8f7,#eef5f0,#f7f8f7);background-size:200% 100%;animation:mini-chart-shimmer 1.1s linear infinite}
.tv-chart-resizer{height:8px;flex:0 0 8px;cursor:row-resize;background:linear-gradient(180deg,#f7faf8,#edf3ef);border-top:1px solid #d9e3dc;position:relative;touch-action:none}
.tv-chart-resizer::after{content:"";position:absolute;left:50%;top:50%;width:42px;height:3px;border-radius:999px;background:#b8c9bf;transform:translate(-50%,-50%)}
.tv-chart-resizer:hover::after,.tv-chart-panel.is-resizing .tv-chart-resizer::after{background:#107c41}
.mobile-tv-chart-row td{height:auto!important;padding:0!important;background:#fff!important}
.mobile-tv-chart-row{display:none}
.mobile-tv-chart-cell{border-left:1px solid var(--grid)!important;border-right:1px solid var(--grid)!important}
.mobile-tv-chart-panel{width:100%;border:0;border-bottom:1px solid var(--grid);box-shadow:inset 0 1px 0 rgba(16,124,65,.14)}
@keyframes tv-chart-open{from{opacity:.4;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.mini-chart-popover{position:fixed;z-index:180;background:rgba(255,255,255,.98);border:1px solid #c8c6c4;border-radius:5px;box-shadow:0 10px 26px rgba(0,0,0,.18),0 2px 6px rgba(0,0,0,.10);width:260px;min-height:142px;padding:9px 10px 8px;color:#252423;pointer-events:none}
.mini-chart-popover.is-touch{width:min(360px,calc(100vw - 24px));min-height:158px;pointer-events:auto;border-radius:8px;box-shadow:0 16px 34px rgba(0,0,0,.22),0 3px 9px rgba(0,0,0,.13)}
.mini-chart-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px}
.mini-chart-head strong{font-size:12px;font-weight:700;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mini-chart-head span{font-size:11px;font-weight:650}
.mini-chart-title{display:flex;align-items:center;gap:6px;min-width:0}
.mini-chart-close{width:22px;height:22px;border:1px solid #d8dde3;border-radius:50%;background:#fff;color:#605e5c;font:inherit;font-size:14px;line-height:1;cursor:pointer;flex:0 0 auto}
.mini-chart-svg{display:block;width:100%;height:82px}
.mini-chart-grid{stroke:#e8ece8;stroke-width:1}
.mini-chart-baseline{stroke:#8b949e;stroke-width:1.2;stroke-dasharray:4 4;opacity:.7}
.mini-chart-line{filter:drop-shadow(0 1px 1px rgba(255,255,255,.9))}
.mini-chart-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:3px;color:#605e5c;font-size:10.5px}
.mini-chart-foot span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mini-chart-foot b{color:#252423;font-weight:650;white-space:nowrap}
.mini-chart-loading{height:92px;border-radius:3px;background:linear-gradient(90deg,#f6f7f6,#edf3ef,#f6f7f6);background-size:200% 100%;animation:mini-chart-shimmer 1.1s linear infinite}
.mini-chart-empty{min-height:96px;display:flex;align-items:center;justify-content:center;color:#605e5c;font-size:11px}
@keyframes mini-chart-shimmer{to{background-position:-200% 0}}
body.theme-outlook .outlook-mail-table .left{align-self:center}
body.theme-outlook .outlook-mail-table .metric-trail{position:absolute;right:-60px;top:50%;transform:translateY(-50%);margin-left:0;display:flex;align-items:center}
body.theme-outlook .outlook-mail-table .row-actions{position:static;transform:none;opacity:0;background:rgba(255,255,255,.96);border:1px solid #e1dfdd;border-radius:999px;box-shadow:0 2px 8px rgba(0,0,0,.12);padding:1px 3px}
body.theme-outlook .outlook-mail-table tr:hover .row-actions{opacity:1}
body.theme-outlook .outlook-mail-table tr:hover td:nth-child(4){opacity:.18}

.news-feed table:not(.community-table){min-width:0;width:100%;table-layout:fixed}
.news-feed table:not(.community-table) th:nth-child(2),
.news-feed table:not(.community-table) td:nth-child(2){width:58px;min-width:58px;white-space:nowrap}
@media(min-width:1100px){
  .news-feed table:not(.community-table){table-layout:fixed}
  .news-feed table:not(.community-table) th:nth-child(1),
  .news-feed table:not(.community-table) td:nth-child(1){width:36px}
  .news-feed table:not(.community-table) th:nth-child(3),
  .news-feed table:not(.community-table) td:nth-child(3){width:64px}
  .news-feed table:not(.community-table) th:nth-child(4),
  .news-feed table:not(.community-table) td:nth-child(4){width:42%}
  .news-feed table:not(.community-table) th:nth-child(6),
  .news-feed table:not(.community-table) td:nth-child(6){width:62px}
}
body.readability-mode .news-feed table:not(.community-table){min-width:0}
body.readability-mode .news-feed table:not(.community-table) th:nth-child(2),
body.readability-mode .news-feed table:not(.community-table) td:nth-child(2){width:70px;min-width:70px;white-space:nowrap}
/* 뉴스 로딩 상태 — cold start 시 빈 화면/가짜 시세 요약 대신 실제 시트 행을 보여준다 */
.news-loading-cell{height:38px;padding:0 12px;text-align:center;color:#605e5c;background:#fbfcfb;font-size:12.5px}
.news-loading-cell strong{font-variant-numeric:tabular-nums;color:#107c41}
.news-loading-hint{display:inline;margin-left:8px;font-size:11px;color:#9aa0a6}
.news-loading-spin{display:inline-block;width:10px;height:10px;border:2px solid #e1dfdd;border-top-color:#107c41;border-radius:50%;animation:nls 800ms linear infinite;margin-right:6px;vertical-align:middle}
.news-loading-empty-row{display:table-row!important}
@keyframes nls{to{transform:rotate(360deg)}}
/* 뉴스 제목은 위장 톤은 유지하되, 읽을거리로 바로 보이도록 한 단계만 진하게. */
.news-title-link{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;color:#20252b;text-decoration:none}
.news-title-link:hover{color:#0563c1;text-decoration:underline}
.news-mobile-market{display:none}
.news-desc{white-space:normal;color:#6a7480;line-height:1.35;max-width:none;overflow:hidden;text-overflow:ellipsis}
.link-pill{display:inline-flex;align-items:center;justify-content:center;height:20px;padding:0 7px;border:1px solid #cfe7d7;background:#f2f8f4;color:var(--excel-dark);border-radius:var(--ui-pill-radius);font-size:11px;font-weight:600;text-decoration:none;white-space:nowrap}
.link-pill:hover{background:#e2efe4;text-decoration:none}
.sheet-title{height:30px;box-sizing:border-box;background:var(--soft-bg);border:0;border-top:1px solid var(--grid);border-bottom:1px solid var(--sep);margin:0;padding:5px 7px;font-weight:700;color:var(--txt);font-size:12.5px;display:flex;align-items:center;gap:6px}
.sheet-title > span:first-child{white-space:nowrap;flex:0 0 auto}
.sheet-title .hint{font-weight:500;color:var(--muted);font-size:10.5px;margin-left:auto;display:inline-flex;align-items:center;gap:6px;min-width:0;max-width:min(52vw,270px);overflow:hidden;white-space:nowrap;padding-left:9px}
.sheet-title .hint > span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sheet-title .live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#21a366;box-shadow:0 0 0 0 rgba(33,163,102,.55);animation:live-pulse 2s ease-out infinite;flex:0 0 auto}
.sheet-title .live-dot.stale{background:#bdbdbd;animation:none;box-shadow:none}
@keyframes live-pulse{0%{box-shadow:0 0 0 0 rgba(33,163,102,.5)}70%{box-shadow:0 0 0 8px rgba(33,163,102,0)}100%{box-shadow:0 0 0 0 rgba(33,163,102,0)}}
.change-toggle{display:inline-flex;align-items:center;gap:1px;margin-left:4px;border:1px solid #d0d7de;background:#fff;border-radius:3px;overflow:hidden;height:21px;flex:0 0 auto}
.change-toggle button{height:21px;border:0;border-left:1px solid #e5e7eb;background:transparent;color:#605e5c;padding:0 8px;font:inherit;font-size:11px;font-weight:500;cursor:pointer;white-space:nowrap}
.change-toggle button:first-child{border-left:0}
.change-toggle button.active{background:#eaf4ef;color:var(--excel-dark);font-weight:700}
.change-toggle button:hover{background:#f3f2f1}
.quote-sort-select{
  height:21px;
  border:1px solid #d0d7de;
  border-radius:3px;
  background:#fff;
  color:#605e5c;
  padding:0 6px;
  font:inherit;
  font-size:10.8px;
  font-weight:600;
  cursor:pointer;
  max-width:78px;
  flex:0 0 auto;
}
.quote-sort-select:focus{outline:none;border-color:var(--excel);box-shadow:0 0 0 1px rgba(16,124,65,.14)}
body.quote-sort-auto #cardsTable .quote-row-handle{cursor:default}
.timeline-title{height:30px;padding-top:4px;padding-bottom:4px;gap:6px;min-width:0}
.col-timeline > .timeline-title{border-bottom:0}
.col-timeline > .sheet.timeline{border-top:0}
.timeline-tabs{display:inline-flex;align-items:center;gap:5px;width:max-content;height:22px;border:0;background:transparent;border-radius:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;flex:0 1 auto;min-width:0;max-width:100%}
.timeline-tabs::-webkit-scrollbar{display:none}
.timeline-tab-group{display:inline-flex;align-items:center;height:22px;border:1px solid #d0d7de;background:#fff;border-radius:3px;overflow:hidden;flex:0 0 auto}
.timeline-tabs button{position:relative;height:22px;border:0;border-left:1px solid #e5e7eb;background:transparent;color:#605e5c;padding:0 8px;font:inherit;font-size:11.5px;font-weight:650;line-height:20px;cursor:pointer;white-space:nowrap;flex:0 0 auto}
.timeline-tab-label-tight{display:none}
.timeline-tab-group button:first-child{border-left:0}
.timeline-tabs button.active,.timeline-tabs button[aria-selected="true"]{background:#eaf4ef;color:var(--excel-dark);font-weight:700}
.timeline-tabs button:hover{background:#f3f2f1}
.timeline-tabs button.has-unread::after{content:"";position:absolute;right:4px;top:3px;width:5px;height:5px;border-radius:999px;background:#20a464;box-shadow:0 0 0 1px #fff}
#timelineTable.community-table{min-width:0!important;width:100%;table-layout:fixed}
#timelineTable.community-table th,#timelineTable.community-table td{overflow:hidden;border-width:1px;border-style:solid;border-color:var(--grid);background-clip:padding-box}
#timelineTable.community-table .rownum,#timelineTable.community-table .colhead{background:var(--head)!important;color:#555}
#timelineTable.community-table .rownum{color:#666}
#timelineTable.community-table .community-colhead-row th{top:0;z-index:9}
#timelineTable.community-table .community-subhead-row th{top:var(--sheet-colhead-h);z-index:8}
/* sticky 행은 border-collapse 환경에서 보더가 안 그려지는 문제가 있어,
 * border 는 투명으로 두고 inset box-shadow 로 4 면을 그린다. background-clip
 * padding-box 로 sticky 셀의 배경이 그어진 보더를 안 가린다. */
#timelineTable.community-table .community-colhead-row th,
#timelineTable.community-table .community-subhead-row th{
  border:0;
  background-clip:padding-box;
  box-shadow:inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid);
}
#timelineTable.community-table .community-colhead-row th{box-shadow:inset 0 1px 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable.community-table .community-colhead-row th:first-child{box-shadow:inset 1px 0 0 var(--grid),inset 0 1px 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable.community-table .community-subhead-row th:first-child{box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable col.community-rownum-col{width:34px}
#timelineTable col.community-author-col{width:88px}
#timelineTable col.community-time-col{width:78px}
#timelineTable col.community-report-col{width:116px}
body.inline-admin-mode #timelineTable col.community-report-col{width:168px}
#timelineTable col.community-body-col{width:auto}
body.readability-mode #timelineTable.community-table{min-width:0!important;width:100%;table-layout:fixed}
body.readability-mode #timelineTable col.community-rownum-col{width:34px}
body.readability-mode #timelineTable col.community-author-col{width:78px}
body.readability-mode #timelineTable col.community-time-col{width:82px}
body.readability-mode #timelineTable col.community-body-col{width:auto}
.personal-feed-row td:not(.rownum){height:24px;background:#fbfdf9;color:#44544b;font-size:11.2px;font-weight:500}
.personal-feed-row.is-actionable td:not(.rownum){cursor:pointer}
.personal-feed-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.personal-feed-author{white-space:nowrap;text-align:center}
.personal-feed-title{display:inline-flex;align-items:center;justify-content:center;height:18px;margin-right:6px;padding:0 7px;border:1px solid #b8d7c0;border-radius:var(--ui-pill-radius);background:#edf8f1;color:#107c41;font-size:10.5px;font-weight:750;line-height:16px;vertical-align:0;white-space:nowrap}
.personal-feed-author .personal-feed-title{margin-right:0;padding:0 5px;font-size:9.8px}
.personal-feed-main{min-width:0;color:#34463c;vertical-align:middle}
.personal-feed-row.is-actionable .personal-feed-main{text-decoration:underline;text-decoration-thickness:.6px;text-underline-offset:2px}
.personal-feed-muted{margin-left:7px;color:#78837d;font-weight:450}
tr.news-row.is-personal-match > td{background:#fffdf0}
tr.news-row.personal-news-pulse > td{animation:personal-news-pulse 1.7s ease-out}
@keyframes personal-news-pulse{
  0%{background:#fff4b8}
  55%{background:#fff8d6}
  100%{background:#fffdf0}
}
.community-read-marker-row td:not(.rownum){height:21px;background:#fbfcfb;color:#7a877f;font-size:10.6px;font-weight:500}
.community-read-marker-cell{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;letter-spacing:-.01em}
.community-read-marker-cell span{color:#66736b;font-weight:600}
.community-read-marker-cell em{font-style:normal;color:#9aa49d;margin-left:6px;font-weight:400}
#timelineTable.community-table .community-post-row.is-unread-community td:not(.rownum),
#timelineTable.community-table .community-comment-row.is-unread-community-comment td:not(.rownum){background:#fffef7}
#timelineTable.community-table .community-post-row.is-unread-community .community-body-with-actions,
#timelineTable.community-table .community-comment-row.is-unread-community-comment .community-body-with-actions{box-shadow:inset 2px 0 0 rgba(16,124,65,.32)}
#timelineTable.etf-table{min-width:0!important;width:100%;table-layout:fixed}
#timelineTable.etf-table th,#timelineTable.etf-table td{overflow:hidden;border-width:1px;border-style:solid;border-color:var(--grid);background-clip:padding-box}
#timelineTable.etf-table .rownum,#timelineTable.etf-table .colhead{background:var(--head)!important;color:#555}
#timelineTable.etf-table .etf-colhead-row th{top:0;z-index:9}
#timelineTable.etf-table{--etf-filter-row-h:72px}
#timelineTable.etf-table .etf-filter-row td{position:sticky;top:var(--sheet-colhead-h);z-index:8;box-shadow:inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable.etf-table .etf-filter-row td:first-child{box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable.etf-table .etf-subhead-row th{top:calc(var(--sheet-colhead-h) + var(--etf-filter-row-h));z-index:7}
#timelineTable.etf-table .etf-colhead-row th,
#timelineTable.etf-table .etf-filter-row td,
#timelineTable.etf-table .etf-subhead-row th,
#timelineTable.etf-table .etf-data-row td,
#timelineTable.etf-table .etf-detail-row td,
#timelineTable.etf-table .etf-page-row td{
  border:0;
  background-clip:padding-box;
}
#timelineTable.etf-table .etf-colhead-row .rownum,
#timelineTable.etf-table .etf-filter-row .rownum,
#timelineTable.etf-table .etf-subhead-row .rownum,
#timelineTable.etf-table .etf-data-row .rownum,
#timelineTable.etf-table .etf-detail-row .rownum,
#timelineTable.etf-table .etf-page-row .rownum{
  padding:0 5px 0 3px!important;
  text-align:right!important;
  vertical-align:middle!important;
  line-height:1!important;
}
#timelineTable.etf-table .etf-filter-row .rownum{height:var(--etf-filter-row-h)}
#timelineTable.etf-table .etf-subhead-row .rownum{height:var(--sheet-colhead-h)}
#timelineTable.etf-table .etf-colhead-row th{box-shadow:inset 0 1px 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable.etf-table .etf-colhead-row th:first-child{box-shadow:inset 1px 0 0 var(--grid),inset 0 1px 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable.etf-table .etf-subhead-row th{box-shadow:inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable.etf-table .etf-subhead-row th:first-child{box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable.etf-table .etf-data-row td,
#timelineTable.etf-table .etf-detail-row td,
#timelineTable.etf-table .etf-page-row td{box-shadow:inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable.etf-table .etf-data-row td:first-child,
#timelineTable.etf-table .etf-detail-row td:first-child,
#timelineTable.etf-table .etf-page-row td:first-child{box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)}
#timelineTable th,
#timelineTable td{
  border:0!important;
  box-shadow:inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)!important;
  background-clip:padding-box;
}
#timelineTable tr > :first-child{
  box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 -1px 0 var(--grid)!important;
}
#timelineTable tr:first-child > *{
  box-shadow:inset -1px 0 0 var(--grid),inset 0 1px 0 var(--grid),inset 0 -1px 0 var(--grid)!important;
}
#timelineTable tr:first-child > :first-child{
  box-shadow:inset 1px 0 0 var(--grid),inset -1px 0 0 var(--grid),inset 0 1px 0 var(--grid),inset 0 -1px 0 var(--grid)!important;
}
#timelineTable col.etf-rownum-col{width:34px}
#timelineTable col.etf-name-col{width:210px}
#timelineTable col.etf-price-col{width:74px}
#timelineTable col.etf-return-col{width:90px}
#timelineTable col.etf-facts-col{width:124px}
#timelineTable col.etf-fee-col{width:112px}
#timelineTable col.etf-div-col{width:46px}
#timelineTable col.etf-holdings-col{width:116px}
.etf-filter-cell{height:auto;padding:4px 6px!important;background:#f8fbf9!important;vertical-align:middle}
.etf-controls{
  display:grid;
  grid-template-columns:minmax(220px,1fr) 78px 82px 94px 28px;
  grid-template-areas:
    "search type risk sort refresh"
    "chips chips chips chips chips";
  align-items:center;
  gap:4px 5px;
  min-width:0;
  width:100%;
}
.etf-beta-note{margin-top:2px;color:#7a8085;font-size:10.4px;font-weight:400;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.etf-beta-note a{color:#4f5963;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px}
.etf-beta-note a:hover{color:#107c41}
.etf-search,.etf-select,.etf-refresh,.etf-chip{height:22px;border:1px solid var(--control-border);border-radius:var(--ui-control-radius);background:#fff;color:#3b3f45;font:inherit;font-size:11px;font-weight:var(--ui-control-font-weight);line-height:20px;box-sizing:border-box}
.etf-search{grid-area:search;min-width:0;width:100%;padding:0 7px}
.etf-select{width:100%;min-width:0;padding:0 20px 0 7px;background-color:#fff;background-image:var(--ui-control-caret);background-repeat:no-repeat;background-position:right 7px center;background-size:8px 5px;appearance:none;-webkit-appearance:none}
.etf-type{grid-area:type}
.etf-risk{grid-area:risk}
.etf-sort{grid-area:sort}
.etf-refresh{grid-area:refresh;width:28px;padding:0;cursor:pointer;background:#f6f8f7;color:#3b3f45;font-size:0;font-weight:650;display:inline-flex;align-items:center;justify-content:center}
.etf-refresh::before{content:"↻";font-weight:700;font-size:12px;line-height:1}
.etf-refresh:hover{background:#eaf4ef;color:#107c41;border-color:#9ec7ad}
.etf-chip-row{grid-area:chips;display:flex;flex-wrap:nowrap;align-items:center;gap:3px;min-width:0;margin-top:0;overflow-x:auto;scrollbar-width:none}
.etf-chip-row::-webkit-scrollbar{display:none}
.etf-chip{padding:0 6px;color:#5f6368;cursor:pointer;white-space:nowrap}
.etf-chip.active{border-color:#9ec7ad;background:#eaf4ef;color:#185c37;font-weight:650}
.etf-search:focus,.etf-select:focus,.etf-refresh:focus-visible,.etf-chip:focus-visible{outline:none;border-color:var(--excel);box-shadow:0 0 0 1px rgba(16,124,65,.14)}
.etf-data-row td{height:auto;min-height:42px;padding-top:4px!important;padding-bottom:4px!important;vertical-align:middle}
.etf-data-row[data-etf-detail-key]{cursor:pointer}
.etf-data-row[data-etf-detail-key]:hover td:not(.rownum){background:#fbfdfb!important}
.etf-data-row.is-expanded td:not(.rownum){background:#f8fbf9!important}
.etf-name-cell{display:flex;flex-direction:column;gap:2px;min-width:0}
.etf-name-main{display:flex;align-items:center;gap:5px;min-width:0;overflow:visible;color:#0563c1;font-size:12px;font-weight:650;line-height:1.22;white-space:normal;word-break:keep-all;overflow-wrap:anywhere}
.etf-name-label{min-width:0;overflow-wrap:anywhere}
.etf-detail-cue{flex:0 0 auto;height:14px;padding:0 4px;border:1px solid #d9e2dd;border-radius:var(--ui-pill-radius);background:#fbfcfb;color:#667078;font-size:8.5px;font-weight:600;line-height:12px;white-space:nowrap}
.etf-data-row.is-expanded .etf-detail-cue{border-color:#9ec7ad;background:#eaf4ef;color:#185c37}
.etf-meta{display:flex;align-items:center;flex-wrap:wrap;gap:2px 6px;min-width:0;color:#7a8085;font-size:9.7px;line-height:1.15}
.etf-meta-item{display:inline-flex;align-items:center;white-space:nowrap}
.etf-meta-item:not(:last-child)::after{content:"";width:2px;height:2px;margin-left:6px;border-radius:50%;background:#b8bec4}
.etf-pills{display:flex;align-items:center;flex-wrap:wrap;gap:3px;min-width:0;overflow:visible;margin-top:1px}
.etf-pill,.etf-risk-pill{display:inline-flex;align-items:center;height:14px;padding:0 4px;border:1px solid #d7b56d;border-radius:var(--ui-pill-radius);background:#fff9e6;color:#806000;font-size:9px;font-weight:650;line-height:1;white-space:nowrap}
.etf-risk-pill{border-color:#d9e2dd;background:#fbfcfb;color:#5f6368}
.etf-risk-pill.risk-1,.etf-risk-pill.risk-2{border-color:#efc6a5;background:#fff5eb;color:#9a4b00}
.etf-risk-pill.risk-3{border-color:#c8ddb1;background:#f4faee;color:#537a1f}
.etf-risk-pill.risk-4,.etf-risk-pill.risk-5,.etf-risk-pill.risk-6{border-color:#d9e2dd;background:#fbfcfb;color:#667078}
.etf-metric-stack{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:10px;line-height:1.18;white-space:nowrap;color:#5f6368;font-variant-numeric:tabular-nums}
.etf-metric-stack > .etf-metric-line,.etf-metric-stack > .etf-metric-primary{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.etf-metric-primary{color:#252423;font-size:12px;font-weight:500}
.etf-return-grid{display:grid;grid-template-columns:1fr;gap:1px;min-width:0;font-size:10.3px;line-height:1.15;font-variant-numeric:tabular-nums}
.etf-return-grid .etf-return-item{display:flex;align-items:center;justify-content:space-between;gap:4px;min-width:0;white-space:nowrap}
.etf-return-grid em{font-style:normal;color:#8a9096;font-size:9.2px;font-weight:500}
.etf-holdings{white-space:normal}
.etf-holdings-inner{display:flex;align-items:flex-start;min-width:0;max-width:100%;overflow:visible;vertical-align:middle}
.etf-holding-list{display:flex;align-items:center;flex-wrap:wrap;gap:4px;min-width:0;overflow:visible;white-space:normal}
.etf-holding-chip{display:inline-flex;align-items:center;max-width:100%;height:17px;padding:0 5px;border:1px solid #d9e2dd;border-radius:var(--ui-pill-radius);background:#fbfcfb;color:#5f6368;font-size:9.8px;line-height:1;white-space:nowrap;vertical-align:middle}
.etf-holding-name{display:inline-block;min-width:0;max-width:122px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.etf-holding-weight{margin-left:4px;color:#107c41;font-weight:650}
.etf-mobile-holdings{display:none}
.etf-mobile-price{display:none}
.etf-detail-cell{padding:5px 6px!important;background:#f8fbf9!important;overflow:visible!important;white-space:normal}
.etf-detail-card{border:1px solid #d9e2dd;border-radius:7px;background:#fff;color:#252423;box-shadow:0 1px 2px rgba(16,24,20,.04);overflow:hidden}
.etf-detail-hero{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;border-bottom:1px solid #e5ebe7;background:#fbfdfb}
.etf-detail-name{display:flex;flex-direction:column;gap:2px;min-width:0}
.etf-detail-name b{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#185c37;font-size:13.2px;font-weight:700;line-height:1.2}
.etf-detail-name span,.etf-detail-price span{display:flex;align-items:center;flex-wrap:wrap;gap:3px 6px;color:#6e747a;font-size:10.3px;line-height:1.2}
.etf-detail-name span span{display:inline-flex;white-space:nowrap}
.etf-detail-price{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:0 0 auto;font-variant-numeric:tabular-nums}
.etf-detail-price strong{font-size:13.2px;font-weight:650;color:#252423;line-height:1.15}
.etf-detail-tags{display:flex;align-items:center;flex-wrap:wrap;gap:3px;padding:5px 9px 0}
.etf-detail-tags span{display:inline-flex;align-items:center;height:16px;padding:0 5px;border:1px solid #d7b56d;border-radius:var(--ui-pill-radius);background:#fff9e6;color:#806000;font-size:9.7px;font-weight:650;line-height:1}
.etf-detail-layout{display:grid;grid-template-columns:minmax(180px,1fr) minmax(190px,1.05fr) minmax(180px,1fr);gap:6px;padding:7px 9px 9px}
.etf-detail-section{min-width:0;border:1px solid #e1e7e3;border-radius:6px;background:#fcfdfc;overflow:hidden}
.etf-detail-section-returns{grid-row:span 2}
.etf-detail-section-holdings{grid-column:span 2}
.etf-detail-title{height:21px;padding:0 7px;border-bottom:1px solid #e5ebe7;background:#f4f9f6;color:#185c37;font-size:10.7px;font-weight:700;line-height:21px}
.etf-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0}
.etf-detail-item{min-width:0;padding:5px 7px;border-right:1px solid #edf1ee;border-bottom:1px solid #edf1ee}
.etf-detail-item:nth-child(2n){border-right:0}
.etf-detail-item span{display:block;margin-bottom:2px;color:#8a9096;font-size:9.7px;line-height:1;white-space:nowrap}
.etf-detail-item strong{display:block;min-width:0;overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere;color:#333;font-size:11.4px;font-weight:600;line-height:1.17;font-variant-numeric:tabular-nums}
.etf-detail-return-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0}
.etf-detail-return{display:flex;align-items:center;justify-content:space-between;gap:5px;min-width:0;padding:5px 7px;border-right:1px solid #edf1ee;border-bottom:1px solid #edf1ee;font-variant-numeric:tabular-nums}
.etf-detail-return:nth-child(2n){border-right:0}
.etf-detail-return span{color:#8a9096;font-size:9.8px;white-space:nowrap}
.etf-detail-return strong{font-size:11.3px;font-weight:650;white-space:nowrap}
.etf-detail-holdings-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;padding:7px}
.etf-detail-holding{min-width:0}
.etf-detail-holding-top{display:grid;grid-template-columns:16px minmax(0,1fr) auto;align-items:center;gap:5px;min-width:0;font-size:10.4px;line-height:1.2}
.etf-detail-holding-rank{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:4px;background:#eaf4ef;color:#185c37;font-size:8.7px;font-weight:700}
.etf-detail-holding-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#4f5963}
.etf-detail-holding strong{color:#107c41;font-size:10.4px;font-weight:700;white-space:nowrap}
.etf-detail-holding-bar{height:3px;margin:3px 0 0 21px;border-radius:999px;background:#edf2ef;overflow:hidden}
.etf-detail-holding-bar i{display:block;width:var(--etf-holding-bar);height:100%;border-radius:inherit;background:#8ccaa0}
.etf-detail-empty{padding:8px;color:#8a9096;font-size:10px}
.etf-loading-cell{height:44px;text-align:center;color:#5f6368;background:#fff;font-size:12px}
.etf-page-cell{height:24px;text-align:center;background:#fbfcfb!important;color:#6a737d;font-size:11px;white-space:nowrap}
.etf-page-cell button{height:19px;margin:0 6px;border:1px solid var(--control-border);border-radius:var(--ui-control-radius);background:#fff;color:#3b3f45;font:inherit;font-size:10.5px;cursor:pointer}
.etf-page-cell button:disabled{opacity:.45;cursor:default}
.community-ready-cell{height:78px;text-align:center;color:#5f6368;background:#fff;font-size:13px}
.community-compose-row td:not(.rownum){background:#f4fbf6;height:68px;vertical-align:middle}
.community-cell-input{width:100%;height:22px;border:0;background:transparent;padding:0 2px;font:inherit;font-size:12px;color:#252423;outline:none}
.community-cell-input:focus{box-shadow:inset 0 0 0 1px var(--excel);background:#fff}
.community-nick-input{width:auto;min-width:0;height:42px;border:0;background:transparent;padding:0 8px;font-family:inherit;font-size:12px;font-weight:650;line-height:1.25;color:#185c37;outline:none;box-sizing:border-box;-webkit-appearance:none;appearance:none}
.community-nick-input::placeholder{color:#8a8f98;font-weight:500;opacity:1}
.community-cell-button,.community-report,.community-recommend,.community-reply-btn,.community-reply-cancel{height:20px;border:1px solid var(--control-border);background:#fff;color:#3b3f45;border-radius:var(--ui-control-radius);padding:0 7px;font:inherit;font-size:11px;font-weight:var(--ui-control-font-weight);line-height:1;cursor:pointer;white-space:nowrap}
.community-cell-button{background:var(--excel);border-color:var(--excel);color:#fff;font-weight:600}
.community-cell-button:disabled,.community-report:disabled,.community-recommend:disabled,.community-reply-btn:disabled{opacity:.45;cursor:default}
.community-compose-box.is-sending .community-compose-submit:disabled{opacity:.78;cursor:progress;font-size:10.5px}
.community-report{border-color:#d8dde3;color:#7b8490;background:#fff}
.community-recommend{border-color:#bfd9c8;color:#107c41;background:#f7fbf8;font-weight:650}
.community-reply-btn{border-color:#b9d7c2;color:#107c41;background:#f7fbf7;font-weight:650}
.community-report:hover:not(:disabled){background:#f8f8f8;color:#605e5c}
.community-recommend:hover:not(:disabled){background:#eaf4ef}
.community-reply-btn:hover{background:#eaf4ef}
.community-reply-cancel:hover{background:#f3f2f1}
.community-admin-actions{display:inline-flex;align-items:center;justify-content:center;gap:3px;margin-left:3px;vertical-align:middle}
.admin-action{height:18px;border:1px solid #d7b56d;background:#fff8e1;color:#775000;border-radius:var(--ui-control-radius);padding:0 4px;font:inherit;font-size:10px;font-weight:700;line-height:16px;cursor:pointer;white-space:nowrap}
.admin-action:hover:not(:disabled){background:#ffefbd}
.admin-action-danger{border-color:#e1a3a3;background:#fff3f3;color:#a4262c}
.admin-action-danger:hover:not(:disabled){background:#ffe3e3}
.admin-action:disabled{opacity:.55;cursor:progress}
.community-action-cell{padding-left:4px;padding-right:4px;white-space:nowrap;text-align:center;vertical-align:middle}
.community-action-group{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:0;max-width:100%;white-space:nowrap;vertical-align:middle}
.community-action-group .community-recommend{min-width:44px}
.community-action-group .community-report{min-width:38px}
.community-author{max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#52606c;font-size:11px}
.community-author-name{display:inline-flex;align-items:center;justify-content:center;max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.community-author-admin{height:18px;padding:0 6px;border:1px solid #a9d3b8;border-radius:var(--ui-pill-radius);background:#f3faf6;color:#107c41;font-weight:700;line-height:16px}
.community-compose-cell{padding:5px 6px}
.community-compose-box{position:relative;border:1px solid #b9d7c2;background:#fff;border-radius:4px;min-height:54px;box-shadow:inset 0 0 0 1px rgba(16,124,65,.06);overflow:hidden}
.community-compose-box.is-sending{background:#f7faf8;border-color:#a8cdb4}
/* gap 을 0 으로 두고, 각 셀 사이에 실선 divider 를 border-right 로. 닉네임 칸은
 * 살짝 음영으로 본문 칸과 시각적으로 구분 (시세표 행 머리처럼).
 * 닉네임/본문/첨부/등록 4 셀이 한 행처럼 보임. */
.community-main-compose{display:grid;grid-template-columns:74px minmax(0,1fr) 32px 46px;align-items:stretch;gap:0;min-height:54px;padding:0}
.community-main-compose .community-nick-input{width:100%;height:100%;min-height:54px;background:#f5faf7;border-right:1px solid #e3edea;padding:0 10px;color:#185c37;font-weight:650}
.community-main-compose .community-post-input{height:100%;min-height:54px;padding:8px 10px;border-right:1px solid #e3edea}
.community-main-compose .community-attach{height:100%;min-height:54px;width:100%;border:0;border-right:1px solid #e3edea;border-radius:0;background:#f7faf8;color:#586069;align-self:stretch;display:flex;align-items:center;justify-content:center}
.community-main-compose .community-attach:hover{background:#eaf4ef;color:#107c41}
.community-main-compose .community-compose-submit{position:static;width:100%;height:100%;min-height:54px;border-radius:0;border:0;align-self:stretch;padding:0;background:var(--excel);display:flex;align-items:center;justify-content:center}
#timelineTable.community-table .community-post-input{display:block;width:100%;height:42px;min-height:42px;border:0;background:transparent;resize:none;outline:none;overflow:hidden;scrollbar-width:none;-ms-overflow-style:none;padding:2px 0;font:400 12.5px/1.35 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#252423;box-sizing:border-box;-webkit-appearance:none;appearance:none}
#timelineTable.community-table .community-post-input::-webkit-scrollbar{display:none}
#timelineTable.community-table .community-main-compose .community-post-input{height:100%;min-height:54px;padding:8px 10px}
#timelineTable.community-table .community-post-input:disabled,.community-nick-input:disabled{opacity:1;color:#52606c;-webkit-text-fill-color:#52606c;cursor:progress}
#timelineTable.community-table .community-post-input::placeholder{color:#7e8792;white-space:pre-line;opacity:1;font:400 12.5px/1.35 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
.community-compose-box:focus-within{border-color:var(--excel);box-shadow:0 0 0 1px rgba(16,124,65,.18)}
.community-compose-submit{position:absolute;right:6px;bottom:6px}
.community-post-body{white-space:pre-wrap;line-height:1.35;color:#3a4a5c;word-break:break-word;position:relative}
.community-post-row.is-pinned > td:not(.rownum){background:#fffef7}
/* === Unified pill chip — community/chat/summary 의 모든 배지가 동일한 base size 와
 * font/layout 을 공유한다. 차이는 색뿐. height·padding·font-size·weight·radius 모두
 * 한 곳에서 관리. */
.pill-chip,
.community-pin-badge,
.community-hidden-badge,
.stock-mention-badge,
.community-ad-badge-cell .ad-badge,
.community-ad-merged-inner .ad-badge,
.chat-ad-line .ad-badge,
tr.summary-sheet-ad-row td.summary-sheet-ad-cell > .ad-badge{
  display:inline-flex;align-items:center;justify-content:center;
  height:18px;padding:0 7px;
  border:1px solid transparent;border-radius:var(--ui-pill-radius);
  font:inherit;font-size:10.5px;font-weight:750;letter-spacing:0;line-height:1;
  font-style:normal;white-space:nowrap;vertical-align:baseline;
}
/* color variants — green / beige / neutral */
.pill-chip--green,
.stock-mention-badge,
.chat-ad-line .ad-badge,
tr.summary-sheet-ad-row td.summary-sheet-ad-cell > .ad-badge{background:#edf8f1;border-color:#b8d7c0;color:#107c41}
.pill-chip--beige,
.community-pin-badge,
.community-ad-badge-cell .ad-badge,
.community-ad-merged-inner .ad-badge{background:#fbf3dc;border-color:#e7d29a;color:#8a6d2a}
.pill-chip--neutral,
.community-hidden-badge,
.stock-mention-badge.pending{background:#f4f5f6;border-color:#d8dde3;color:#6a737d}
.community-pin-badge,
.community-hidden-badge{margin-right:5px}
.community-body-with-actions{padding-right:54px}
.community-hover-actions{position:absolute;right:5px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:flex-end;gap:4px;max-width:54px;opacity:0;pointer-events:none;transition:opacity 100ms;background:linear-gradient(90deg,rgba(255,255,255,0),#fff 12px);padding-left:16px}
.community-post-row:hover .community-hover-actions,
.community-comment-row:hover .community-hover-actions,
.community-hover-actions:focus-within{opacity:1;pointer-events:auto}
.message-image-list{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px;white-space:normal}
.stock-mention-badge{max-width:100%;margin:0 2px;text-decoration:none}
a.stock-mention-badge:hover{background:#dff1e5;border-color:#86bd96;color:#0b6b35;text-decoration:none}
.stock-mention-badge.pending{font-weight:650}
/* market 서브 라벨 (예: 종목명 옆 KR/US) — pill 폰트 그대로 받고 색만 미세하게 옅게. */
.stock-mention-market{margin-left:4px;color:inherit;opacity:.55;font-size:inherit;font-weight:inherit}
.stock-mention-change{margin-left:5px;padding-left:5px;border-left:1px solid rgba(16,124,65,.18);font-size:10px;font-weight:550;font-variant-numeric:tabular-nums;line-height:1}
.stock-mention-change.up{color:#a4262c}
.stock-mention-change.down{color:#24718f}
.stock-mention-change.flat{color:#605e5c}
.message-image-preview{display:inline-flex;max-width:min(220px,100%);border:1px solid #d0d7de;border-radius:4px;background:#fff;padding:2px;text-decoration:none;overflow:hidden}
.message-image-preview:hover{border-color:var(--excel);box-shadow:0 0 0 1px rgba(16,124,65,.14)}
.message-image-preview img{display:block;max-width:100%;max-height:150px;object-fit:cover;border-radius:2px}
.message-image-preview.is-broken{max-width:100%;padding:3px 6px;background:#f8f9fa;color:#6a737d;font-size:11px;line-height:1.35;border-color:#d8dde3}
.message-image-preview.is-broken:hover{color:#3b3f45;text-decoration:none}
.message-image-fallback{display:inline-flex;align-items:center;gap:4px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.community-image-collapsed{display:block;margin-top:4px;white-space:normal}
.community-post-body > .community-image-collapsed:first-child,
.community-comment-body > .community-image-collapsed:first-child{margin-top:0}
.community-image-toggle{display:inline-flex;align-items:center;gap:4px;max-width:100%;height:22px;border:1px solid #c9d6ce;border-radius:3px;background:#f7fbf8;color:#107c41;padding:0 7px;font-family:inherit;font-size:11px;font-weight:700;line-height:1;cursor:pointer;vertical-align:middle}
.community-image-toggle:hover{background:#edf7f0;border-color:#9fc8ad}
.community-image-toggle svg{flex:0 0 auto;color:#107c41}
.community-image-toggle-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.community-image-preview-slot{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.community-image-preview-slot[hidden]{display:none}
.community-post-row.is-just-posted > td:not(.rownum){animation:community-post-inserted 5s ease-out forwards}
.community-poll-row > td:not(.rownum){height:34px;background:#fbfdfb}
.community-poll-row.is-voted > td:not(.rownum){background:#f7fbf8}
.community-poll-author span{display:inline-flex;align-items:center;justify-content:center;height:18px;padding:0 7px;border:1px solid #b8d7c0;border-radius:999px;background:#edf8f1;color:#107c41;font-size:10.5px;font-weight:750}
.community-poll-body{padding-right:6px!important;white-space:normal}
.community-poll-inner{display:flex;align-items:center;gap:7px;min-width:0;line-height:1.2}
.community-poll-kicker{flex:0 0 auto;color:#107c41;font-size:11px;font-weight:750;white-space:nowrap}
.community-poll-question{min-width:0;color:#2f4739;font-size:12px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.community-poll-options{display:inline-flex;align-items:center;gap:4px;flex:0 0 auto}
.community-poll-choice{height:20px;min-width:38px;border:1px solid #c9d6ce;border-radius:var(--ui-control-radius);background:#fff;color:#3b3f45;padding:0 7px;font:inherit;font-size:10.8px;font-weight:650;line-height:18px;white-space:nowrap;cursor:pointer}
.community-poll-choice:hover:not(:disabled){background:#eaf4ef;border-color:#a7cdb4;color:#107c41}
.community-poll-choice.selected{background:#107c41;border-color:#107c41;color:#fff}
.community-poll-choice:disabled{cursor:default;opacity:.86}
.community-poll-count{flex:0 0 auto;color:#7c8982;font-size:10.5px;font-weight:520;white-space:nowrap}
.community-poll-tail{color:#6f7771;font-size:10.5px;font-weight:600}
.community-poll-time{color:#7c8982}
.community-post-row.is-just-posted > td:nth-child(2){box-shadow:inset 3px 0 0 var(--excel)}
.community-comment-row.is-just-commented > td:not(.rownum){animation:community-post-inserted 5s ease-out forwards}
.community-comment-row.is-just-commented > td:nth-child(2){box-shadow:inset 3px 0 0 var(--excel)}
.community-mobile-actions{display:none}
.community-comment-row td:not(.rownum){background:#f4f7fa;color:#6a7480}
#timelineTable.community-table .community-comment-body{white-space:pre-wrap;line-height:1.35;color:#596877;padding-left:26px;position:relative;word-break:break-word;vertical-align:top}
.community-comment-body::before{content:"↳";position:absolute;left:7px;top:5px;display:block;width:14px;text-align:center;color:#9aa0a6;font-family:Arial,"Segoe UI Symbol",sans-serif;line-height:1.35;pointer-events:none}
.community-comment-text{display:block;min-width:0}
#timelineTable.community-table .community-comment-depth-1 .community-comment-body{padding-left:36px}
#timelineTable.community-table .community-comment-depth-1 .community-comment-body::before{left:17px}
.community-comment-depth-1 .community-comment-body::before{color:#a7adb4}
#timelineTable.community-table .community-comment-depth-2 .community-comment-body{padding-left:46px}
#timelineTable.community-table .community-comment-depth-2 .community-comment-body::before{left:27px}
.community-comment-depth-2 .community-comment-body::before{color:#b0b6bd}
.community-comment-row td,
.community-reply-more-row td,
.community-reply-row td{border-color:var(--grid);background-clip:padding-box}
.community-comment-report,.community-comment-recommend{height:20px;font-size:10.5px;padding:0 6px}
/* 더보기 행은 일반 댓글 행과 동일한 td 룰을 그대로 따른다.
 * height/padding/line-height/vertical-align 모두 .community-comment-body 룰이 결정. */
.community-reply-more-row td:not(.rownum){background:#f4f7fa;color:#6a7480}
/* 더보기 셀은 템플릿 줄바꿈 공백이 실제 줄로 보이면 안 된다. */
.community-reply-more-cell{white-space:nowrap!important}
/* 더보기 클릭 영역은 일반 inline 텍스트(span). 어떤 user agent 기본 스타일도 받지 않음. */
.community-reply-more-btn{color:#107c41;font-weight:650;cursor:pointer;letter-spacing:-.1px;text-decoration:underline;text-underline-offset:2px}
.community-reply-more-btn:hover{color:#0b5f32;text-decoration-thickness:1.5px}
.community-reply-more-btn:focus-visible{outline:1px dotted #107c41;outline-offset:2px}
.community-reply-row td:not(.rownum){background:#eef8f1}
.community-reply-box{border-color:#aad4b6;display:grid;grid-template-columns:64px minmax(0,1fr) 30px 44px 44px;align-items:stretch;gap:6px;min-height:60px;padding:6px}
.community-reply-box .community-attach{height:48px;width:30px;align-self:stretch}
.community-reply-box .community-reply-nick-input{height:48px}
#timelineTable.community-table .community-reply-box .community-post-input{height:48px;min-height:48px;padding:2px 0}
.community-reply-cancel{height:48px;border:1px solid #d8dde3;background:#fff;color:#7b8490;border-radius:var(--ui-control-radius);padding:0 6px;font:inherit;font-size:11px;cursor:pointer}
.community-reply-box .community-reply-cancel,.community-reply-box .community-compose-submit{position:static;width:44px;height:48px;align-self:stretch;padding:0}
.community-hidden-row td:not(.rownum){background:#f8f8f8;color:#7b8490}
.community-hidden-text{text-align:center;color:#7b8490}
.community-pagination-row td:not(.rownum){background:#fbfbfb}
.community-pagination-cell{height:31px;text-align:center;padding:4px 6px}
.community-pagination{display:inline-flex;align-items:center;justify-content:center;gap:8px;max-width:100%;height:22px;color:#5f6368;font-size:11.5px;white-space:nowrap}
.community-pagination button{height:22px;border:1px solid #cfd8d3;background:#fff;color:#185c37;border-radius:3px;padding:0 9px;font:inherit;font-size:11px;font-weight:600;cursor:pointer}
.community-pagination button:hover:not(:disabled){background:#eaf4ef}
.community-pagination button:disabled{opacity:.42;cursor:default;color:#7b8490}
/* 광고 행 — 시세표 셀처럼 보이되 아주 옅은 노트 셀 톤으로만 구분. */
.community-ad-row td:not(.rownum){color:#776b4d;vertical-align:middle;background:#fffdf7;background-clip:padding-box}
.community-ad-row .rownum{background:var(--head)!important;color:#666!important}
.community-ad-badge-cell{height:28px;text-align:center;padding:3px 6px!important}
.community-ad-copy-cell{height:28px;padding:3px 9px!important}
.community-ad-time-cell{height:28px;padding:3px 6px!important;background:#fffdf7;color:#8a8060;font-size:11px;white-space:nowrap}
.community-ad-empty-cell{height:28px;padding:3px!important;background:#fffdf7}
.community-text-ad{display:flex;align-items:center;gap:6px;min-width:0;white-space:nowrap;overflow:hidden;font-size:12px;font-weight:560;font-style:normal;color:#6b6046}
/* 광고 배지 — 둥근 알약 모양 칩. 원래 크기(9.5px 폰트) 유지하면서 chip 톤만 적용.
 * line-height 1 + flex 정렬로 텍스트가 알약 가운데에 오게 한다. */
.community-ad-badge-cell .ad-badge,
.community-ad-merged-inner .ad-badge{vertical-align:middle}
.community-text-ad .ad-copy{overflow:hidden;text-overflow:ellipsis;font-style:normal}
/* 본문에 자연스럽게 녹아드는 링크 — 색은 톤다운, underline 은 또렷이 보이게. */
.community-text-ad a{position:relative;display:inline-block;max-width:100%;padding-right:13px;color:#5a553f;font-weight:600;text-decoration:none;box-shadow:inset 0 -.5px 0 rgba(90,85,63,.72);flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;font-style:normal;vertical-align:bottom}
.community-text-ad a::after{content:"↗";position:absolute;right:0;top:50%;transform:translateY(-52%);font-size:.86em;line-height:1;opacity:.72;text-decoration:none}
.community-text-ad a:hover{color:#3a3520;box-shadow:inset 0 -1px 0 currentColor}
.community-text-ad a:hover::after{opacity:1}
.summary-sheet-ad .community-text-ad a{box-shadow:none;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;text-decoration-color:rgba(70,83,95,.55)}
.summary-sheet-ad .community-text-ad a:hover{box-shadow:none;text-decoration-color:currentColor}
/* 모바일 셀 병합 — 행 번호 옆을 한 칸으로 묶고 inner div 가 flex 정렬 담당.
 * <td> 자체에 display:flex 를 두면 일부 모바일 브라우저(iOS Safari 등)에서
 * 셀 폭 계산이 어그러진다. 셀은 그대로 table-cell, inner 가 flex. */
.community-ad-merged-cell{height:28px;padding:3px 9px!important;vertical-align:middle}
.community-ad-merged-inner{display:flex;align-items:center;gap:6px;min-width:0;width:100%;overflow:hidden}
.community-ad-merged-inner .ad-badge{flex:0 0 auto}
.community-ad-merged-inner .community-text-ad{flex:1 1 auto;min-width:0;overflow:hidden}
@media(max-width:700px){
  .news-feed table:not(.community-table){min-width:0;width:100%;table-layout:fixed}
  .news-feed table:not(.community-table) col.news-rownum-col{width:30px}
  .news-feed table:not(.community-table) col.news-time-col{width:43px}
  .news-feed table:not(.community-table) col.news-title-col{width:auto}
  .news-feed table:not(.community-table) th,
  .news-feed table:not(.community-table) td{font-size:11px;padding-left:3px;padding-right:3px}
  .news-feed table:not(.community-table) .time{font-size:10px;white-space:nowrap}
  .news-feed table:not(.community-table) .news-title-link{display:block;font-size:11.4px;line-height:1.32}
  .news-mobile-market{display:inline-flex;align-items:center;height:15px;margin-right:4px;padding:0 3px;border-radius:2px;background:#eef4f1;color:#107c41;font-size:9px;font-weight:750;vertical-align:1px}
  .timeline-title .hint{display:none}
  .timeline-tabs{gap:2px;flex:0 1 auto}
  .timeline-tabs button{padding:0 4px;font-size:10.6px}
  .timeline-tabs button.has-unread::after{right:2px;top:3px;width:4px;height:4px}
  .personal-feed-row td:not(.rownum){height:24px;font-size:10.7px}
  .personal-feed-title{height:17px;margin-right:4px;padding:0 5px;font-size:9.5px;line-height:15px}
  .personal-feed-author .personal-feed-title{margin-right:0;padding:0 3px;font-size:9px}
  .personal-feed-muted{display:none}
  .community-read-marker-row td:not(.rownum){height:20px;font-size:10.2px}
  @media(max-width:340px){
    .timeline-tabs button{padding:0 3px}
    .timeline-tab-label-full{display:none}
    .timeline-tab-label-tight{display:inline}
  }
  #timelineTable col.etf-rownum-col{width:28px}
  #timelineTable col.etf-name-col{width:calc(100% - 178px)}
  #timelineTable col.etf-return-col{width:52px}
  #timelineTable col.etf-div-col{width:46px}
  #timelineTable.etf-table .etf-colhead-row > :nth-child(1),
  #timelineTable.etf-table .etf-subhead-row > :nth-child(1),
  #timelineTable.etf-table .etf-data-row > :nth-child(1){width:28px;min-width:28px;max-width:28px}
  #timelineTable.etf-table .etf-colhead-row > :nth-child(2),
  #timelineTable.etf-table .etf-subhead-row > :nth-child(2),
  #timelineTable.etf-table .etf-data-row > :nth-child(2){width:calc(100% - 178px);min-width:0}
  #timelineTable.etf-table .etf-colhead-row > :nth-child(3),
  #timelineTable.etf-table .etf-subhead-row > :nth-child(3),
  #timelineTable.etf-table .etf-data-row > :nth-child(3),
  #timelineTable.etf-table .etf-colhead-row > :nth-child(4),
  #timelineTable.etf-table .etf-subhead-row > :nth-child(4),
  #timelineTable.etf-table .etf-data-row > :nth-child(4){width:52px;min-width:52px;max-width:52px}
  #timelineTable.etf-table .etf-colhead-row > :nth-child(5),
  #timelineTable.etf-table .etf-subhead-row > :nth-child(5),
  #timelineTable.etf-table .etf-data-row > :nth-child(5){width:46px;min-width:46px;max-width:46px}
  #timelineTable.etf-table th,#timelineTable.etf-table td{font-size:10.8px;padding-left:3px;padding-right:3px}
  #timelineTable.etf-table{--etf-filter-row-h:86px}
  .etf-filter-cell{padding:4px!important}
  .etf-beta-note{display:none}
  .etf-controls{
    grid-template-columns:minmax(0,1fr) 66px 72px 72px 28px;
    grid-template-areas:
      "search search search search refresh"
      "type risk sort sort sort"
      "chips chips chips chips chips";
    gap:4px;
    overflow:visible;
  }
  .etf-search{min-width:0;width:100%;font-size:10.8px}
  .etf-select{width:100%;max-width:none;font-size:10.6px;padding-left:6px;padding-right:18px;background-position:right 5px center}
  .etf-refresh{width:28px}
  .etf-chip-row{gap:3px;padding-bottom:1px}
  .etf-chip{height:19px;padding:0 5px;font-size:10px}
  .etf-data-row td{height:auto;min-height:56px}
  .etf-name-main{font-size:11.2px;line-height:1.2}
  .etf-meta{font-size:8.9px;gap:2px 5px;line-height:1.14}
  .etf-meta-item:not(:last-child)::after{margin-left:5px}
  .etf-pills{display:none}
  .etf-mobile-price{display:block;color:#6e747a;font-size:9px;line-height:1.12;white-space:nowrap;font-variant-numeric:tabular-nums}
  .etf-mobile-holdings{display:block;margin-top:1px;min-width:0;overflow:visible;white-space:normal}
  .etf-mobile-holdings .etf-holding-list{gap:2px}
  .etf-holding-chip{height:13px;font-size:8.3px;padding:0 3px}
  .etf-holding-name{max-width:96px}
  .etf-detail-cell{padding:4px!important}
  .etf-detail-card{border-radius:6px}
  .etf-detail-hero{align-items:flex-start;gap:6px;padding:6px}
  .etf-detail-name b{font-size:12.2px;white-space:normal;overflow-wrap:anywhere}
  .etf-detail-name span,.etf-detail-price span{font-size:9.5px;gap:2px 5px}
  .etf-detail-price strong{font-size:12px}
  .etf-detail-tags{padding:4px 6px 0}
  .etf-detail-layout{grid-template-columns:1fr;gap:5px;padding:6px}
  .etf-detail-section-returns,.etf-detail-section-holdings{grid-column:auto;grid-row:auto}
  .etf-detail-title{height:20px;padding:0 6px;font-size:10.1px;line-height:20px}
  .etf-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .etf-detail-item{padding:5px 6px}
  .etf-detail-item span{font-size:9.1px}
  .etf-detail-item strong{font-size:10.7px}
  .etf-detail-return{padding:5px 6px}
  .etf-detail-return span{font-size:9.2px}
  .etf-detail-return strong{font-size:10.7px}
  .etf-detail-holdings-list{grid-template-columns:1fr;padding:6px}
  .etf-page-cell{font-size:10px}
  #timelineTable col.community-rownum-col{width:28px}
  #timelineTable col.community-author-col{width:50px}
  #timelineTable col.community-time-col{width:42px}
  #timelineTable col.community-body-col{width:auto}
  #timelineTable.community-table th,#timelineTable.community-table td{font-size:10.8px;padding-left:3px;padding-right:3px}
  #timelineTable.community-table .time{font-size:10px;line-height:1.15;white-space:nowrap}
  #timelineTable.community-table .community-author{max-width:54px;font-size:8.8px;line-height:1.12}
  .community-poll-row > td:not(.rownum){height:44px}
  .community-poll-author span{height:17px;padding:0 5px;font-size:9.5px}
  .community-poll-body{padding-right:3px!important}
  .community-poll-inner{display:grid;grid-template-columns:auto 1fr;gap:3px 5px;align-items:center}
  .community-poll-kicker{font-size:9.6px}
  .community-poll-question{font-size:11.1px;line-height:1.18}
  .community-poll-options{grid-column:1 / -1;gap:3px;min-width:0;overflow:hidden}
  .community-poll-choice{height:18px;min-width:0;flex:1 1 0;padding:0 4px;font-size:9.8px;line-height:16px}
  .community-poll-count{display:none}
  /* base pill 사이즈를 그대로 유지 — 별도 override 없음. */
  #timelineTable.community-table .stock-mention-market{display:none}
  .community-post-body,.community-comment-body{font-size:11.2px;line-height:1.28}
  .community-image-toggle{height:20px;max-width:100%;padding:0 5px;font-size:10px}
  .community-image-preview-slot .message-image-preview img{max-height:118px}
  .community-hover-actions{display:none}
  .community-body-with-actions{padding-right:3px}
  .community-actions-open .community-post-body{padding-right:152px;min-height:28px}
  .community-actions-open .community-comment-body{padding-right:152px;min-height:28px}
  body.inline-admin-mode .community-actions-open .community-post-body{padding-right:176px}
  body.inline-admin-mode .community-actions-open .community-comment-body{padding-right:220px}
  #timelineTable.community-table .community-comment-body{padding-left:21px}
  .community-comment-body::before{left:4px;width:13px;top:4px}
  #timelineTable.community-table .community-comment-depth-1 .community-comment-body{padding-left:30px}
  #timelineTable.community-table .community-comment-depth-1 .community-comment-body::before{left:13px}
  #timelineTable.community-table .community-comment-depth-2 .community-comment-body{padding-left:37px}
  #timelineTable.community-table .community-comment-depth-2 .community-comment-body::before{left:20px}
  .community-mobile-actions.active{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:flex-end;gap:5px;margin-top:0;background:linear-gradient(90deg,rgba(255,255,255,0),#fff 14px);padding-left:16px}
  .community-mobile-actions .community-reply-btn,
  .community-mobile-actions .community-recommend,
  .community-mobile-report{height:18px;padding:0 6px;font-size:10px}
  .community-mobile-actions .community-admin-actions{margin-left:0;gap:4px}
  .community-mobile-actions .admin-action{height:18px;font-size:10px;padding:0 5px}
  .community-compose-row td:not(.rownum){height:72px}
  .community-compose-cell{padding:5px}
  .community-compose-box{min-height:58px;border-radius:4px}
  .community-main-compose{grid-template-columns:56px minmax(0,1fr) 30px 42px;gap:0;min-height:58px;padding:0}
  .community-main-compose .community-attach{width:100%;height:100%;min-height:58px}
  .community-reply-box .community-attach{width:26px;height:48px}
  .community-main-compose .community-nick-input{width:100%;height:100%;min-height:58px;padding:0 7px}
  #timelineTable.community-table .community-main-compose .community-post-input{height:100%;min-height:58px;padding:7px 8px}
  #timelineTable.community-table .community-main-compose .community-post-input::placeholder{font-size:11.3px!important;line-height:1.28!important}
  .community-main-compose .community-compose-submit{width:100%;height:100%;min-height:58px}
  .community-nick-input{width:58px;height:48px;padding:0 5px}
  .community-reply-box{grid-template-columns:54px minmax(0,1fr) 26px 38px 38px;gap:5px;padding:5px;min-height:58px}
  .community-reply-box .community-reply-nick-input{height:48px;width:54px;padding:0 4px}
  #timelineTable.community-table .community-reply-box .community-post-input{padding:2px 0}
  .community-reply-box .community-reply-cancel,.community-reply-box .community-compose-submit{width:38px;height:48px}
  .community-action-cell{padding-left:2px;padding-right:2px}
  .community-cell-button,.community-report,.community-recommend,.community-reply-btn,.community-reply-cancel{padding:0 5px;font-size:10.5px}
  .community-reply-btn{max-width:100%;padding-left:4px;padding-right:4px}
  .community-pagination{gap:5px;font-size:10.5px}
  .community-pagination button{padding:0 6px;font-size:10.5px}
  .community-ad-badge-cell{padding-left:3px!important;padding-right:3px!important}
  .community-ad-copy-cell{padding-left:5px!important;padding-right:5px!important}
  .community-text-ad{gap:4px;font-size:10.5px}
  .community-ad-badge-cell .ad-badge{height:17px;padding:0 6px;font-size:10px;border-radius:999px}
  /* 모바일 셀 병합 한 줄 광고 */
  .community-ad-merged-cell{padding:3px 6px!important;height:22px}
  .community-ad-merged-inner{gap:5px}
  /* 모바일에서도 base pill 사이즈 유지 (height 18 / font 10.5 / padding 0 7) */
  .community-ad-merged-inner .ad-badge{padding:0 6px}
  .community-ad-merged-inner .community-text-ad{gap:4px;font-size:10.7px;font-style:normal}
  body.readability-mode #timelineTable col.community-rownum-col{width:28px}
  body.readability-mode #timelineTable col.community-author-col{width:50px}
  body.readability-mode #timelineTable col.community-time-col{width:42px}
  body.readability-mode #timelineTable col.community-body-col{width:auto}
  body.readability-mode #timelineTable.community-table .community-author{max-width:50px;font-size:8.8px;line-height:1.12}
}

/* === Watchlist (inline, inside 실시간 시세창) === */
.watchlist-add{position:relative;display:grid;grid-template-columns:minmax(190px,1fr) 58px 58px 28px 28px;gap:4px;align-items:center;padding:6px 8px;background:#fafbfc;border:0;border-bottom:1px solid var(--sep);margin:0}
.sheets-grid .watchlist-add{margin:0}
.watchlist-add input{box-sizing:border-box;flex:1;min-width:0;height:var(--ui-control-height);border:1px solid var(--control-border);border-radius:var(--ui-control-radius);padding:0 8px;font:inherit;font-size:12px;outline:none;color:#252423;background:#fff}
.watchlist-add input:focus{border-color:var(--excel);box-shadow:0 0 0 1px rgba(16,124,65,.2)}
.watchlist-add > select{box-sizing:border-box;width:100%;min-width:0;height:var(--ui-control-height);border:1px solid var(--control-border);border-radius:var(--ui-control-radius);padding:0 15px 0 6px;font:inherit;font-size:var(--ui-control-font-size);font-weight:var(--ui-control-font-weight);line-height:1;cursor:pointer;background-color:#fff;background-image:var(--ui-control-caret);background-repeat:no-repeat;background-position:right 5px center;background-size:8px 5px;color:#39433d;letter-spacing:-.02em;text-align:center;text-align-last:center;-webkit-appearance:none;appearance:none}
.watchlist-add > select:focus{border-color:var(--excel);outline:none}
.watchlist-add > button{box-sizing:border-box;height:var(--ui-control-height);padding:0 6px;background:#fff;color:#39433d;border:1px solid var(--control-border);border-radius:var(--ui-control-radius);cursor:pointer;font:inherit;font-weight:var(--ui-control-font-weight);font-size:var(--ui-control-font-size);letter-spacing:-.02em;transition:background 80ms,color 80ms,border-color 80ms;display:inline-flex;align-items:center;justify-content:center;gap:3px;flex-shrink:0;line-height:1}
.watchlist-add > button:hover{background:#eef7f1;color:#107c41;border-color:#b7c9bd}
.watchlist-add > button:active{background:#dff1e5;color:#0b5f32;border-color:#a8d0b3}
.watchlist-add > button:disabled{background:#f6f8f7;color:#8a938d;border-color:#d0d7de;opacity:1;cursor:default}
.watchlist-add input:disabled,
.watchlist-add > select:disabled{background:#f6f7f8;color:#7d858c;cursor:default}
.watchlist-add .quote-sort-select{height:var(--ui-control-height);max-width:none;width:100%;padding:0 15px 0 6px;font-size:var(--ui-control-font-size);font-weight:var(--ui-control-font-weight)}
.watchlist-add .watchlist-phone,
.watchlist-add .watchlist-more{width:28px;padding:0;background:#fff;color:#39433d;border:1px solid var(--control-border);border-radius:var(--ui-control-radius);font-size:16px;font-weight:var(--ui-control-font-weight);letter-spacing:-.08em}
.watchlist-add .watchlist-phone svg{width:14px;height:14px;display:block}
.watchlist-add .watchlist-phone{font-size:0;letter-spacing:0}
.watchlist-add .watchlist-phone:hover,
.watchlist-add .watchlist-phone[aria-expanded="true"],
.watchlist-add .watchlist-more:hover,
.watchlist-add .watchlist-more[aria-expanded="true"]{background:#eef7f1;color:#107c41;border-color:#b7c9bd}
.watchlist-more-menu{position:absolute;right:8px;top:calc(100% - 2px);z-index:85;min-width:184px;padding:4px;border:1px solid #ccd7d0;border-radius:5px;background:#fff;box-shadow:0 10px 24px rgba(0,0,0,.16),0 2px 6px rgba(0,0,0,.08);display:grid;gap:1px}
.watchlist-more-menu[hidden]{display:none!important}
.watchlist-more-menu button{box-sizing:border-box;width:100%;height:26px;margin:0;padding:0 8px;border:0;border-radius:3px;background:transparent;color:#39433d;font:inherit;font-size:11.5px;font-weight:600;text-align:left;display:flex;align-items:center;justify-content:flex-start;gap:6px;cursor:pointer;white-space:nowrap}
.watchlist-more-menu button:hover{background:#eef7f1;color:#107c41}
.watchlist-more-menu button:active{background:#dff1e5}
.watchlist-more-menu button:disabled{opacity:.45;cursor:default;background:transparent;color:#8a938d}
.watchlist-more-menu .watchlist-export svg,
.watchlist-more-menu [data-watchlist-action="phone"] svg{display:block;width:14px;height:14px;flex:0 0 auto}
.watchlist-more-menu .hidden-restore{margin-left:0;line-height:1}

.watchlist-phone-modal{position:fixed;inset:0;z-index:340;display:grid;place-items:center;min-height:100dvh;padding:18px;color:#252423;overflow:auto;overscroll-behavior:contain}
.watchlist-phone-backdrop{position:absolute;inset:0;background:rgba(32,31,30,.26);backdrop-filter:blur(2px)}
.watchlist-phone-card{position:relative;width:min(460px,calc(100vw - 28px));background:#fff;border:1px solid #b7c9bf;border-radius:10px;box-shadow:0 22px 54px rgba(0,0,0,.24),0 6px 18px rgba(0,0,0,.12);overflow:hidden;animation:watchlist-phone-pop 150ms ease-out}
.watchlist-phone-head{min-height:44px;padding:0 10px 0 14px;display:flex;align-items:center;gap:9px;background:linear-gradient(180deg,#f7faf8,#edf5f0);border-bottom:1px solid #d8e3dc}
.watchlist-phone-icon{width:24px;height:24px;border:1px solid #b9d7c4;border-radius:6px;background:#fff;color:#107c41;display:inline-grid;place-items:center;flex:0 0 auto;box-shadow:inset 0 0 0 1px rgba(16,124,65,.04)}
.watchlist-phone-icon svg{width:15px;height:15px}
.watchlist-phone-title{min-width:0;flex:1;display:grid;gap:1px}
.watchlist-phone-title strong{font-size:13px;font-weight:720;color:#185c37;line-height:1.25}
.watchlist-phone-title span{font-size:11px;color:#6f7771;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.watchlist-phone-close{width:28px;height:28px;border:1px solid #c8c6c4;border-radius:5px;background:#fff;color:#444;font:inherit;font-size:17px;line-height:1;cursor:pointer}
.watchlist-phone-close:hover{background:#f3f6f4;border-color:#9db9a7}
.watchlist-phone-body{padding:14px;display:grid;gap:11px;background:#fff}
.watchlist-phone-qr-wrap{display:grid;place-items:center;padding:11px;background:repeating-linear-gradient(0deg,#fbfdfb,#fbfdfb 23px,#f1f5f2 24px);border:1px solid #dbe6df;border-radius:8px}
.watchlist-phone-qr{width:min(300px,calc(100vw - 78px));aspect-ratio:1;background:#fff;border:1px solid #d0d7de;border-radius:7px;padding:8px;display:grid;place-items:center;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.watchlist-phone-qr svg{width:100%;height:100%;display:block;shape-rendering:crispEdges}
.watchlist-phone-loading,.watchlist-phone-fallback{font-size:12px;color:#6f7771;text-align:center;line-height:1.45;padding:18px 10px}
.watchlist-phone-underqr{margin:-3px auto 0;max-width:34em;color:#66716b;font-size:11.2px;line-height:1.42;text-align:center;word-break:keep-all;text-wrap:pretty}
.watchlist-phone-underqr span{display:inline}
.watchlist-phone-underqr button{appearance:none;border:0;background:transparent;color:#107c41;font:inherit;font-weight:720;text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px;padding:0 1px;cursor:pointer}
.watchlist-phone-underqr button:hover{color:#0b5f32}
.watchlist-phone-copy{display:grid;gap:4px;padding:9px 10px;background:#f7faf8;border:1px solid #e1ebe5;border-radius:7px}
.watchlist-phone-copy strong{font-size:12px;color:#244b35;font-weight:720}
.watchlist-phone-copy span{font-size:11.5px;color:#69746e;line-height:1.42;word-break:keep-all;text-wrap:pretty}
.watchlist-phone-url{height:24px;display:flex;align-items:center;min-width:0;padding:0 7px;border:1px solid #d7dfda;border-radius:4px;background:#fff;color:#6a716d;font-size:10.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.watchlist-phone-actions{display:flex;justify-content:flex-end;gap:6px}
.watchlist-phone-actions button{height:28px;border:1px solid #c8c6c4;border-radius:5px;background:#fff;color:#323130;font:inherit;font-size:11.5px;font-weight:680;padding:0 10px;cursor:pointer}
.watchlist-phone-actions button:hover{background:#f3f6f4;border-color:#9db9a7}
.watchlist-phone-actions .primary{background:#107c41;border-color:#107c41;color:#fff}
.watchlist-phone-actions .primary:hover{background:#0e6b39;border-color:#0e6b39;color:#fff}
.watchlist-phone-note{font-size:10.8px;color:#7d8580;line-height:1.38}
@keyframes watchlist-phone-pop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}

/* User-added rows share the same sheet tone as snapshot rows.
 * Keep the class for behavior only; visual separation is no longer useful. */
tr.quote-note-row td{height:24px;background:#f3f5f1;color:#5f6f66}
tr.quote-note-row:hover td{background:#eef2ea}
.quote-note-cell{padding:0 6px!important}
.quote-note-inner{position:relative;display:flex;align-items:center;min-height:23px}
.quote-note-content{
  position:relative;z-index:1;box-sizing:border-box;width:100%;min-height:18px;
  padding:1px 24px 1px 7px;border-radius:3px;outline:none;
  color:#56665d;font-size:11.5px;font-weight:650;line-height:18px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.quote-note-content:empty::before{content:attr(data-placeholder);color:#919991;font-weight:500}
.quote-note-content:focus{background:#fff;box-shadow:inset 0 0 0 1px rgba(16,124,65,.25);color:#2f4739}
.quote-note-remove{position:absolute;right:4px;top:50%;transform:translateY(-50%);z-index:2}
.metric-cell .metric-trail{position:relative;margin-left:auto;display:inline-flex;align-items:center;gap:4px;flex:0 0 auto}
.metric-cell .quote-action-trail{min-width:62px;justify-content:flex-end}
.metric-cell .quote-action-trail .source-pill{transition:opacity 120ms,visibility 120ms}
#cardsTable tr:hover .quote-action-trail .source-pill,
.quote-action-trail:focus-within .source-pill{opacity:0;visibility:hidden}
#cardsTable .row-actions{position:absolute;right:0;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;gap:1px;flex-shrink:0;z-index:2;padding:1px 2px;background:rgba(255,255,255,.96);border:1px solid rgba(201,216,207,.92);border-radius:999px;box-shadow:0 1px 4px rgba(15,23,42,.10);opacity:0;pointer-events:none;transition:opacity 120ms,background 120ms,border-color 120ms}
#cardsTable tr:hover .quote-action-trail .row-actions,
.quote-action-trail:focus-within .row-actions{opacity:1;pointer-events:auto}
#cardsTable .quote-action-trail .row-actions.fv-force-visible{opacity:1;pointer-events:auto}
#cardsTable .quote-action-trail .row-actions.fv-force-visible + .source-pill{opacity:0;visibility:hidden}
/* 행 삭제 버튼 — 모든 row 동일 디자인 (기존엔 user-row 에만 적용됐던 스타일 전역화) */
.row-x{
  width:14px;height:14px;border-radius:50%;
  background:transparent;color:#9aa0a6;border:0;cursor:pointer;
  font-size:11px;line-height:1;padding:0;
  display:inline-flex;align-items:center;justify-content:center;
  flex-shrink:0;
  opacity:0;transition:opacity 120ms,background 120ms,color 120ms;
}
tr:hover .row-x{opacity:.65}
.row-x:hover{opacity:1;background:#f6dcd9;color:var(--up)}
.row-move{
  width:15px;height:14px;border-radius:50%;
  background:transparent;color:#9aa0a6;border:0;cursor:pointer;
  font-size:9px;line-height:1;padding:0;
  display:inline-flex;align-items:center;justify-content:center;
  flex-shrink:0;opacity:0;transition:opacity 120ms,background 120ms,color 120ms;
}
tr:hover .row-move{opacity:.65}
.row-move:hover{opacity:1;background:#e8f4fd;color:#0c63c4}
.row-move[disabled]{display:none}
.quote-row-handle{cursor:grab;user-select:none;touch-action:none;position:relative;white-space:nowrap;vertical-align:middle}
.quote-row-handle::after{content:none!important;display:none!important}
body.quote-row-drag-active{cursor:grabbing}
.quote-row-dragging td{opacity:.55}
#cardsTable tr.quote-row-drop-before td{box-shadow:inset 0 2px 0 var(--excel)}
#cardsTable tr.quote-row-drop-after td{box-shadow:inset 0 -2px 0 var(--excel)}
.row-holding{
  width:16px;height:14px;border-radius:50%;
  background:transparent;color:#9aa0a6;border:0;cursor:pointer;
  font-size:10px;line-height:1;padding:0;
  display:inline-flex;align-items:center;justify-content:center;
  flex-shrink:0;opacity:0;transition:opacity 120ms,background 120ms,color 120ms;
}
tr:hover .row-holding{opacity:.65}
.row-holding:hover{opacity:1;background:#eaf4ef;color:var(--excel-dark)}
.row-holding.fv-force-visible{opacity:1;background:#eaf4ef;color:var(--excel-dark)}
.change-wrap{display:inline-flex;align-items:center;justify-content:flex-end;gap:5px;white-space:nowrap}
#cardsTable tr.holding-lot-row td{
  background-color:#f6faf7;
  color:#5f6368;
  font-size:11.5px;
  height:24px;
}
#cardsTable tr.holding-lot-row:hover td{background-color:#f1f7f3}
tr.holding-row td{background-color:#fff;color:#5f6368;font-size:11.5px;height:24px}
tr.holding-row .holding-cell{position:relative;padding-right:22px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
tr.holding-row .holding-meta-cell{padding-right:50px}
tr.holding-edit-row .holding-cell{padding-right:22px}
tr.holding-row .holding-row-x{position:absolute;right:6px;top:50%;transform:translateY(-50%);opacity:0}
tr.holding-row:hover .holding-row-x{opacity:.65}
.holding-line,.holding-meta-line{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;max-width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;font-weight:400}
.holding-line > span,.holding-meta-line > span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.holding-line .muted,.holding-meta-line .muted{color:#7a828a}
.holding-lot-label{font-size:10.5px}
.holding-row-add{position:absolute;z-index:2;top:50%;transform:translateY(-50%);height:18px;border:1px solid transparent;border-radius:3px;background:transparent;color:#60756a;padding:0 5px;font:inherit;font-size:10.5px;font-weight:600;line-height:16px;cursor:pointer;opacity:0;pointer-events:none;transition:opacity 120ms,background 120ms,color 120ms,border-color 120ms}
.holding-row-add{right:26px}
tr.holding-row:hover .holding-row-add,.holding-row-add:focus-visible{opacity:.78;background:#fff;border-color:#c9d8cf}
.holding-row-add:focus-visible,tr.holding-row:hover .holding-row-add{pointer-events:auto}
.holding-row-add:hover{opacity:1;background:#eef7f1;color:#107c41;border-color:#b9d7c2}
.holding-value-cell,.holding-return-cell,.holding-summary-value-cell,.holding-summary-return-cell{white-space:nowrap;font-variant-numeric:tabular-nums;overflow:hidden;text-overflow:ellipsis}
.holding-value-cell,.holding-summary-value-cell{color:#4f6257;font-size:11.1px;font-weight:450}
.holding-value-cell.quote-price-cell{padding-left:18px}
.holding-value-cell .quote-price-currency{color:#9aa6a1}
.holding-return-cell,.holding-summary-return-cell{font-size:11px;font-weight:500}
.holding-line.up,.holding-meta-line .up,.holding-return-cell.up,.holding-summary-return-cell.up{color:#6f8a56}
.holding-line.down,.holding-meta-line .down,.holding-return-cell.down,.holding-summary-return-cell.down{color:#7b7474}
body.excel-dark-mode:not(.theme-outlook) .holding-line.up,
body.excel-dark-mode:not(.theme-outlook) .holding-meta-line .up,
body.excel-dark-mode:not(.theme-outlook) .holding-return-cell.up,
body.excel-dark-mode:not(.theme-outlook) .holding-summary-return-cell.up{color:var(--up)}
body.excel-dark-mode:not(.theme-outlook) .holding-line.down,
body.excel-dark-mode:not(.theme-outlook) .holding-meta-line .down,
body.excel-dark-mode:not(.theme-outlook) .holding-return-cell.down,
body.excel-dark-mode:not(.theme-outlook) .holding-summary-return-cell.down{color:var(--down)}
/* 보유 합계 row — border-color 를 임의로 지정하면 border-collapse 가 인접 행의 더
 * 짙은 var(--grid) 를 채택해서 가로 보더만 진해지고 세로 보더가 옅게 보이는 비대칭이
 * 생긴다. 그래서 보더 색은 표준 --grid 그대로 두고, 행의 distinction 은 배경색·텍스트
 * 톤에서만 가져온다. */
tr.holding-summary-row td:not(.rownum){height:24px;background-color:#fcfdfc;color:#4f6257;font-size:11.3px;font-weight:400}
tr.holding-summary-row:hover td:not(.rownum){background-color:#fafcfa}
.holding-empty-row td:not(.rownum){height:34px;background-color:#fcfdfc;color:#60756a;font-size:11.5px}
.holding-empty-cell{white-space:normal;line-height:1.35}
.holding-empty-title{font-weight:650;color:#3f5d4d;margin-right:7px;white-space:nowrap}
.holding-empty-copy{color:#6f7c74;word-break:keep-all}
.holding-empty-copy b{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:1px solid #b9d7c2;border-radius:999px;background:#eef7f1;color:#107c41;font-size:10px;line-height:1;vertical-align:-2px}
.holding-summary-merged-cell{position:relative;vertical-align:middle;padding-right:12px}
.holding-summary-content{display:inline-flex;align-items:center;gap:8px;min-width:0;max-width:100%;line-height:1.18;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.holding-summary-title{font-weight:500;color:#3f5d4d;white-space:nowrap}
.holding-summary-meta{color:#7a8780;font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.holding-summary-value-label{color:#7a8780;font-size:10.6px;white-space:nowrap}
.holding-summary-value,.holding-summary-pct{white-space:nowrap;font-weight:400}
.holding-summary-value{font-size:10.8px}
.holding-summary-pct{font-size:11px}
.holding-summary-pct.up{color:#6f8a56;font-weight:400}
.holding-summary-pct.down{color:#7b7474;font-weight:400}
body.readability-mode #cardsTable tr.holding-row td:not(.rownum){
  height:23px;
  color:#5f6971;
  font-size:11.7px;
  line-height:1.18;
  font-weight:400;
}
body.readability-mode #cardsTable .holding-line{
  gap:6px;
  font-size:11.7px;
  font-weight:400;
}
body.readability-mode #cardsTable .holding-meta-line{
  gap:6px;
  font-size:11.7px;
  font-weight:400;
}
body.readability-mode #cardsTable .holding-line.up,
body.readability-mode #cardsTable .holding-line.down,
body.readability-mode #cardsTable .holding-meta-line .up,
body.readability-mode #cardsTable .holding-meta-line .down{font-weight:400}
body.readability-mode #cardsTable .holding-line .muted,
body.readability-mode #cardsTable .holding-meta-line .muted{color:#747d85}
body.readability-mode #cardsTable .holding-lot-label{font-size:10px}
body.readability-mode #cardsTable tr.holding-summary-row td:not(.rownum){
  color:#52645a;
  font-size:11.1px;
  background-color:#fcfdfc;
}
body.readability-mode #cardsTable .holding-summary-title{font-size:11.1px;font-weight:500;color:#4c6758}
body.readability-mode #cardsTable .holding-summary-meta{font-size:10.7px;color:#747f78}
body.readability-mode #cardsTable .holding-summary-value-label{font-size:10.3px;color:#7d8781}
body.readability-mode #cardsTable .holding-summary-value{font-size:10.5px}
body.readability-mode #cardsTable .holding-summary-pct{font-size:10.7px;font-weight:400}
body.readability-mode #cardsTable .holding-value-cell,
body.readability-mode #cardsTable .holding-summary-value-cell{font-size:10.9px}
body.readability-mode #cardsTable .holding-return-cell,
body.readability-mode #cardsTable .holding-summary-return-cell{font-size:10.7px;font-weight:400}
body.excel-dark-mode.readability-mode #cardsTable tr.holding-row td:not(.rownum){
  background-color:#171d21;
  color:#b3bdc4;
}
body.excel-dark-mode.readability-mode #cardsTable tr.holding-summary-row td:not(.rownum){background-color:#171f1b;color:#aebdb4}
body.excel-dark-mode.readability-mode #cardsTable .holding-line .muted,
body.excel-dark-mode.readability-mode #cardsTable .holding-meta-line .muted,
body.excel-dark-mode.readability-mode #cardsTable .holding-summary-meta,
body.excel-dark-mode.readability-mode #cardsTable .holding-summary-value-label{color:#8ea197}
body.excel-dark-mode.readability-mode #cardsTable .holding-meta-line .up,
body.excel-dark-mode.readability-mode #cardsTable .holding-return-cell.up,
body.excel-dark-mode.readability-mode #cardsTable .holding-summary-return-cell.up{color:#ffb0b0}
body.excel-dark-mode.readability-mode #cardsTable .holding-meta-line .down,
body.excel-dark-mode.readability-mode #cardsTable .holding-return-cell.down,
body.excel-dark-mode.readability-mode #cardsTable .holding-summary-return-cell.down{color:#bad6ff}
.holding-inline{display:grid;grid-template-columns:minmax(70px,1fr) minmax(58px,.8fr) 42px;gap:5px;align-items:center;padding-right:18px;max-width:100%}
.holding-inline input{width:100%;min-width:0;height:20px;border:1px solid var(--control-border);border-radius:var(--ui-control-radius);padding:0 5px;font:inherit;font-size:11.5px;background:#fff;color:#252423}
.holding-inline input:focus{border-color:var(--excel);outline:none;box-shadow:0 0 0 1px rgba(16,124,65,.16)}
.holding-inline button{height:20px;border:1px solid var(--excel);background:var(--excel);color:#fff;border-radius:var(--ui-control-radius);padding:0 7px;font:inherit;font-size:11px;font-weight:600;cursor:pointer}
.holding-inline .inline-cancel{position:absolute;right:5px;top:50%;transform:translateY(-50%);width:14px;height:14px;border:0;border-radius:50%;background:transparent;color:#9aa0a6;padding:0;font-size:11px;line-height:1}
.holding-inline .inline-cancel:hover{background:#f6dcd9;color:#a4262c}
tr.user-row.loading td{opacity:.6}
tr.user-row.error td.right{color:#9aa0a6;font-style:italic}

/* Market-state badges — 프리/애프터/장종료를 종목명 옆에 명확히 표시 */
.stale-icon{
  display:inline-flex;align-items:center;gap:3px;
  color:#8a6d3b;font-size:10.5px;font-weight:700;
  margin-left:0;letter-spacing:.2px;
  vertical-align:1px;
}
.stale-icon svg{width:11px;height:11px;color:#8a6d3b}
.market-state{
  display:inline-flex;align-items:center;height:14px;padding:0 5px;
  border-radius:7px;font-size:9.5px;font-weight:700;letter-spacing:.3px;
  margin-left:0;vertical-align:1px;flex-shrink:0;
}
.market-state.pre{background:#fff4d4;color:#8a6100;border:1px solid #efd48a}
.market-state.day{background:#e9f7ed;color:#0f6b3a;border:1px solid #a9d8b7}
.market-state.post{background:#e2eaf6;color:#1f4d8a;border:1px solid #b7cbe8}

/* === Toast === */
.toast-stack{position:fixed;bottom:90px;left:50%;transform:translateX(-50%);z-index:360;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}
.toast{background:#252423;color:#fff;padding:10px 18px;border-radius:18px;font-size:13px;font-weight:500;box-shadow:0 8px 24px rgba(0,0,0,.28),0 2px 6px rgba(0,0,0,.12);min-width:min(320px,calc(100vw - 22px));max-width:min(560px,calc(100vw - 18px));text-align:center;opacity:0;transform:translateY(8px);animation:toast-in 220ms ease forwards,toast-out 280ms ease 2.7s forwards;letter-spacing:.1px;white-space:pre-line}
.toast::before{margin-right:6px}
.toast.kr::before{content:"🇰🇷"}
.toast.us::before{content:"🇺🇸"}
.toast.err{background:#a4262c}
.toast.warn{background:#866400}
.toast.info{background:#0c63c4}
.toast.desktop-notice{line-height:1.45}
@keyframes toast-in{to{opacity:1;transform:translateY(0)}}
@keyframes toast-out{to{opacity:0;transform:translateY(-8px)}}
.loading-toast{position:fixed;left:50%;bottom:calc(114px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:130;display:none;align-items:center;gap:10px;background:#fff;color:#252423;border:1px solid #c8c6c4;border-left:4px solid var(--excel);padding:10px 16px;border-radius:4px;box-shadow:0 10px 28px rgba(0,0,0,.18),0 2px 7px rgba(0,0,0,.10);font-size:12.5px;font-weight:600;max-width:min(360px,calc(100vw - 36px))}
.loading-toast.active{display:flex}
.spinner{width:14px;height:14px;border:2px solid #d8e7dc;border-top-color:var(--excel);border-radius:50%;animation:spin 700ms linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
body.busy .sheet{position:relative}
body.busy .sheet::after{content:"";position:absolute;inset:0;background:rgba(255,255,255,.42);pointer-events:none}
.loading-row td{height:30px;color:#6b7280;background:linear-gradient(90deg,#f7f9fb 0,#eef4f0 50%,#f7f9fb 100%);background-size:220% 100%;animation:shimmer 1.1s ease-in-out infinite}
@keyframes shimmer{0%{background-position:160% 0}100%{background-position:-60% 0}}

/* === First-visit highlight === */
.first-visit-pulse{animation:fv-pulse 1.6s ease-out 4 forwards;border-color:var(--excel) !important}
@keyframes fv-pulse{0%{box-shadow:0 0 0 0 rgba(16,124,65,.55),0 1px 2px rgba(0,0,0,.04)}70%{box-shadow:0 0 0 14px rgba(16,124,65,0),0 1px 2px rgba(0,0,0,.04)}100%{box-shadow:0 0 0 0 rgba(16,124,65,0),0 1px 2px rgba(0,0,0,.04)}}
.fv-tooltip{position:fixed;background:#252423;color:#fff;padding:8px 10px 8px 12px;border-radius:6px;font-size:12px;white-space:normal;box-shadow:0 6px 16px rgba(0,0,0,.22);z-index:200;animation:fv-bob 1.2s ease-in-out infinite alternate;width:max-content;max-width:min(360px,calc(100vw - 24px));min-width:180px;display:flex;align-items:flex-start;gap:8px;line-height:1.35}
.fv-tooltip::after{content:"";position:absolute;top:-5px;left:var(--fv-arrow-left,34px);width:10px;height:10px;background:#252423;transform:rotate(45deg)}
.fv-tooltip.is-above::after{top:auto;bottom:-5px}
.fv-tooltip .fv-text{min-width:0}
.fv-tooltip .fv-close{margin-left:0;background:transparent;border:0;color:#fff;cursor:pointer;font-size:14px;opacity:.7;line-height:1;flex:0 0 auto;padding:1px 2px}
.fv-tooltip .fv-close:hover{opacity:1}
.fv-tooltip.chat-tip{min-width:170px;max-width:min(280px,calc(100vw - 30px));background:#2e3430;border:1px solid rgba(255,255,255,.08);box-shadow:0 10px 24px rgba(0,0,0,.22),0 2px 7px rgba(0,0,0,.12)}
.fv-tooltip.chat-tip::after{background:#2e3430}
.fv-tooltip.watchlist-phone-tip{background:#234030;border:1px solid rgba(184,220,195,.22);box-shadow:0 10px 24px rgba(16,124,65,.22),0 2px 7px rgba(0,0,0,.12)}
.fv-tooltip.watchlist-phone-tip::after{background:#234030}
@media(max-width:520px){
  .fv-tooltip.holding-tip{
    width:auto;
    max-width:min(320px,calc(100vw - 36px));
    padding:8px 9px 8px 11px;
    gap:6px;
    font-size:12px;
  }
  .fv-tooltip.holding-tip .fv-close{font-size:15px;padding:0 2px}
  .fv-tooltip.chat-tip{font-size:12px;line-height:1.35;padding:8px 9px 8px 11px}
}
@keyframes fv-bob{from{transform:translateY(0)}to{transform:translateY(-3px)}}

/* === Sheets grid (responsive 2-pane layout) === */
.sheets-grid{display:flex;flex-direction:column;gap:0;margin:0;padding:0;align-items:stretch}
.sheets-grid .col{min-width:0;position:relative}
/* 시세창 하단 광고 — 두 가지 노출 방식 공존:
 *   1) 데스크탑(≥701px): col-summary 가장 아래의 floating overlay (#summarySheetAd).
 *      시세창 스크롤과 무관하게 한 줄이 시트 위에 떠 있음.
 *   2) 모바일(≤700px): cardsTable 안에 직접 두 행을 추가 (.summary-sheet-ad-row).
 *      행번호·격자선이 그대로 유지돼 시트와 자연스럽게 이어짐.
 * 같은 placement='summary' 라 관리자 패널 / GA 식별자 둘 다 통합. */
tr.summary-sheet-ad-blank-row,
tr.summary-sheet-ad-row{display:none}
.summary-sheet-ad{display:none}
.col-chat-dock[hidden]{display:none!important}
.chat-dock-slot{display:flex;flex-direction:column;min-width:0;min-height:0;height:100%;overflow:hidden;background:var(--bg);border-top:1px solid var(--grid);border-left:1px solid var(--grid)}
.sheet-splitter{display:none}
@media(min-width:1100px){
  .sheets-grid{
    flex-direction:row;
    height:calc(100dvh - var(--app-header-h) - 66px);
    min-height:360px;
    overflow:hidden;
    align-items:stretch;
  }
  /* Each col carries its own width var. Timeline is the elastic one. */
  .col-summary{flex:0 0 var(--summary-pane-width,480px);min-width:390px;order:1}
  .sheet-splitter-main{flex:0 0 6px;display:block;order:2}
  .col-timeline{flex:1 1 0;min-width:460px;order:3}
  .sheet-splitter-chat{flex:0 0 6px;display:none;order:4}
  .col-chat-dock{flex:0 0 var(--chat-pane-width,380px);min-width:320px;order:5}
  .sheet-splitter{
    position:relative;
    align-self:stretch;
    cursor:col-resize;
    background:transparent;
    border-top:1px solid var(--grid);
    touch-action:none;
    z-index:3;
  }
  .sheet-splitter::before{
    content:"";
    position:absolute;
    top:0;
    bottom:0;
    left:2px;
    width:1px;
    background:var(--grid);
  }
  .sheet-splitter:hover::before,
  body.sheet-split-resizing .sheet-splitter.is-active::before{background:var(--excel)}
  body.sheet-split-resizing{cursor:col-resize;user-select:none}
  body.sheet-split-resizing iframe{pointer-events:none}
  /* In grid: kill outer margins so sheets sit flush within their grid track */
  .sheets-grid .sheet,
  .sheets-grid .sheet-title{margin-left:0;margin-right:0}
  .sheets-grid .col{display:flex;flex-direction:column;min-height:0}
  .sheets-grid .col-summary{position:relative;top:auto;align-self:stretch}
  .sheets-grid .sheet{flex:1 1 auto;min-height:0;overflow:auto}
  .sheets-grid .watchlist-add{flex:0 0 auto}
}

/* === Panel drag-to-reorder (desktop only) === */
.col-drag-handle{display:none!important}
@media(min-width:1100px){
  .panel-drag-title{cursor:grab;user-select:none;touch-action:none}
  .panel-drag-title.is-grabbing{cursor:grabbing}
  .panel-drag-title button,
  .panel-drag-title a,
  .panel-drag-title input,
  .panel-drag-title select,
  .panel-drag-title textarea,
  .panel-drag-title [role="button"],
  .panel-drag-title .change-toggle,
  .panel-drag-title .timeline-tabs,
  .panel-drag-title .chat-head-actions{cursor:auto;user-select:auto;touch-action:auto}
}
.col.is-panel-dragging{opacity:.4}
.col.is-panel-drop-before::before,
.col.is-panel-drop-after::after{
  content:'';position:absolute;top:0;bottom:0;width:3px;
  background:var(--excel);z-index:40;pointer-events:none;
}
.col.is-panel-drop-before::before{left:-1px}
.col.is-panel-drop-after::after{right:-1px}
/* 데스크탑 시세창 하단 floating overlay — col-summary 의 절대 위치 한 줄.
 * 시세창 스크롤과 무관하게 가장 아래에 떠 있고, 가로폭은 col-summary 전체. */
@media(min-width:701px){
  .col-summary{position:relative}
  .col-summary .sheet.summary{
    box-sizing:border-box;
    padding-bottom:32px;
    scroll-padding-bottom:36px;
  }
  .summary-sheet-ad{
    display:flex;
    position:absolute;
    left:0;right:0;bottom:0;
    z-index:24;
    height:26px;
    align-items:center;
    gap:8px;
    padding:0 10px 0 12px;
    border-top:1px solid var(--grid);
    background:rgba(255,255,255,.985);
    color:#46535f;
    font-size:11.5px;
    line-height:1.25;
    white-space:nowrap;
    overflow:hidden;
    box-shadow:0 -2px 6px rgba(15,23,42,.05);
  }
  .summary-sheet-ad .ad-badge{flex:0 0 auto}
  .summary-sheet-ad .community-text-ad{
    flex:1 1 auto;min-width:0;
    display:inline-flex;align-items:center;gap:5px;
    color:inherit;font-size:11.5px;font-weight:500;
    overflow:hidden;text-overflow:ellipsis;
  }
  .summary-sheet-ad .ad-copy{
    display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;
    color:inherit;font-weight:500;
    text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;
    text-decoration-color:rgba(70,83,95,.55);
    box-shadow:none;
  }
  .summary-sheet-ad .ad-copy:hover{color:#107c41;text-decoration-color:currentColor}
}
/* 다크모드 톤 */
body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad{
  background:rgba(28,32,36,.985);color:#cbd5ce;border-top-color:#2d3a31;
}
body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad .ad-copy{
  color:inherit;text-decoration-color:rgba(203,213,206,.55);
}
body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad .ad-copy:hover{color:#7cd6a2}
/* 모바일 시세창 하단 광고 — cardsTable 안에 자연스럽게 두 행으로 들어감.
 * 첫 행: rownum + 빈 데이터 셀들 (시각적 여백)
 * 둘째 행: rownum + colspan 3 광고 셀 (badge + 텍스트/링크)
 * 모바일에서만 보이도록 max-width:700px 에서 display:table-row. */
@media(max-width:700px){
  tr.summary-sheet-ad-blank-row,
  tr.summary-sheet-ad-row{display:table-row}
  tr.summary-sheet-ad-row td.summary-sheet-ad-cell{
    padding:5px 7px;
    background:#fafdfa;
    color:#4d555c;
    font-size:11px;
    line-height:1.25;
    white-space:nowrap;
    overflow:hidden;
  }
  tr.summary-sheet-ad-row td.summary-sheet-ad-cell > .ad-badge{
    display:inline-flex;align-items:center;justify-content:center;
    height:16px;padding:0 6px;margin-right:6px;
    border:1px solid #b9d7c2;border-radius:999px;background:#edf8f1;color:#107c41;
    font-size:9.5px;font-weight:750;line-height:1;vertical-align:middle;
  }
  tr.summary-sheet-ad-row td.summary-sheet-ad-cell > .community-text-ad{
    display:inline-flex;align-items:center;gap:5px;min-width:0;
    max-width:calc(100% - 50px);overflow:hidden;text-overflow:ellipsis;
    color:inherit;font-size:11px;vertical-align:middle;
  }
  tr.summary-sheet-ad-row td.summary-sheet-ad-cell .ad-copy{
    display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;
    color:#46535f;font-weight:500;text-decoration:underline;
    text-decoration-thickness:1px;text-underline-offset:2px;
    text-decoration-color:rgba(74,80,84,.55);
    box-shadow:none;
  }
  tr.summary-sheet-ad-row td.summary-sheet-ad-cell .ad-copy:hover{
    color:#107c41;text-decoration-color:currentColor;
  }
}
@media(min-width:1500px){
  .col-summary{flex:0 0 var(--summary-pane-width,520px);min-width:440px}
}
@media(min-width:1600px){
  body.chat-docked .sheet-splitter-chat{display:block}
  body.chat-docked .col-chat-dock{
    display:flex;
    flex-direction:column;
    min-width:0;
    min-height:0;
    overflow:hidden;
  }
  body.chat-docked .chat-panel{
    position:static;
    inset:auto;
    width:100%;
    height:100%;
    max-height:none;
    min-height:0;
    border:0;
    border-radius:0;
    box-shadow:none;
    z-index:auto;
    opacity:1;
    background:var(--bg);
    color:var(--txt);
    min-width:0;
    max-width:100%;
    overflow:hidden;
  }
  body.chat-docked .chat-dock-slot{border-top:0}
  body.chat-docked .chat-panel.is-large{width:100%;height:100%;max-height:none}
  body.chat-docked .chat-panel.open{display:grid;grid-template-rows:auto auto minmax(0,1fr) auto}
  body.chat-docked .chat-panel.open > *{min-width:0;max-width:100%;box-sizing:border-box}
  body.chat-docked .chat-head{
    height:30px;
    min-height:30px;
    box-sizing:border-box;
    padding:5px 7px;
    background:var(--soft-bg);
    color:var(--txt);
    border-top:1px solid var(--grid);
    border-bottom:1px solid var(--sep);
  }
  body.chat-docked .chat-title{gap:6px;font-size:12.5px;font-weight:700;color:var(--txt)}
  body.chat-docked .chat-title small{font-size:10.5px;color:var(--muted);opacity:1;font-weight:500}
  body.chat-docked .chat-live-dot{width:7px;height:7px;background:var(--excel);box-shadow:none;animation:none}
  body.chat-docked .chat-head-actions{gap:3px}
  body.chat-docked .chat-close,
  body.chat-docked .chat-size-toggle,
  body.chat-docked .chat-head-btn{
    width:22px;
    height:22px;
    border:1px solid transparent;
    border-radius:3px;
    background:transparent;
    color:var(--muted);
  }
  body.chat-docked .chat-head-btn.is-active{
    background:var(--pressed);
    color:var(--excel-dark);
    border-color:var(--hover-border);
  }
  body.chat-docked .chat-close:hover,
  body.chat-docked .chat-size-toggle:hover,
  body.chat-docked .chat-head-btn:hover{
    background:var(--hover);
    border-color:var(--hover-border);
    color:var(--txt);
  }
  body.chat-docked .chat-size-toggle{display:none}
  body.chat-docked .chat-ad-line{min-height:25px;padding:4px 8px;background:#f4fbf6;border-bottom:1px solid var(--grid)}
  body.chat-docked .chat-ad-line .ad-badge{height:18px;border-radius:999px;background:#edf8f1;color:#107c41;border-color:#b8d7c0}
  body.chat-docked .chat-body{width:100%;box-sizing:border-box;min-height:0;min-width:0;max-width:100%;background:var(--bg);padding:6px;border-bottom:0;overflow-x:hidden}
  body.chat-docked .chat-msg{box-sizing:border-box;min-width:0;max-width:100%;border-radius:3px;box-shadow:none;overflow:visible}
  body.chat-docked .chat-text{min-width:0;max-width:100%;overflow-wrap:break-word}
  body.chat-docked .chat-composer{border-top:1px solid var(--grid);background:var(--soft-bg);padding:6px;grid-template-columns:76px minmax(0,1fr) 34px 50px}
  body.chat-docked .chat-nickname,
  body.chat-docked .chat-input,
  body.chat-docked .chat-attach,
  body.chat-docked .chat-send{height:30px;border-radius:3px}
  body.chat-docked .chat-panel.chat-excel-mode .chat-body{padding:0;background:var(--bg);overflow-x:hidden}
  body.chat-docked .chat-excel-table{min-width:0;max-width:100%}
  body.chat-docked .chat-sleep-notice{display:block;flex:0 0 auto;align-self:stretch;box-sizing:border-box;width:auto;min-width:0;max-width:none;margin:6px;overflow:visible;overflow-wrap:anywhere}
  body.chat-docked .floating-actions [data-floating-wrap="chat"]{display:none}
  body.chat-docked .floating-actions{right:calc(var(--chat-dock-width, 340px) + 28px)}
  body.chat-docked .sheet.timeline,
  body.chat-docked .news-feed{scrollbar-width:none;-ms-overflow-style:none}
  body.chat-docked .sheet.timeline::-webkit-scrollbar,
  body.chat-docked .news-feed::-webkit-scrollbar{width:0;height:0;display:none}
  body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook).chat-docked .chat-head{background:#f7f8f7;color:#242424}
  body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook).chat-docked .chat-close,
  body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook).chat-docked .chat-size-toggle,
  body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook).chat-docked .chat-head-btn{background:transparent;color:#5f6368}
  body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook).chat-docked .chat-head-btn.is-active{background:#e7f0eb;color:#0e6b39;border-color:#b9d7c2}
  body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook).chat-docked .chat-close:hover,
  body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook).chat-docked .chat-size-toggle:hover,
  body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook).chat-docked .chat-head-btn:hover{background:#ecefee;color:#242424;border-color:#d0d7de}
  body.excel-dark-mode:not(.theme-outlook).chat-docked .chat-head{background:var(--head);border-color:var(--grid)}
  body.excel-dark-mode:not(.theme-outlook).chat-docked .chat-ad-line,
  body.excel-dark-mode:not(.theme-outlook).chat-docked .chat-body{background:var(--bg)}
  body.excel-dark-mode:not(.theme-outlook).chat-docked .chat-composer{background:var(--soft-bg);border-color:var(--grid)}
}
/* Stacked (mobile / tablet): keep current behaviour, but slightly tighter spacing */
@media(max-width:1099px){
  .sheets-grid .sheet-title{margin-top:8px}
  .tv-chart-button,.tv-chart-panel{display:none!important}
  tr.mobile-tv-chart-row{display:table-row}
}
@media(max-width:760px){
  .sheets-grid .sheet,
  .sheets-grid .sheet-title{margin-left:0;margin-right:0;border-radius:0}
  .rownum{width:30px;padding:4px 4px}
  th,td{padding:4px 5px}
}

/* === Floating sheet tabs (bottom) === */
.floating-tabs{position:fixed;left:0;right:0;bottom:calc(24px + env(safe-area-inset-bottom));background:var(--sheet-tab-bg);border-top:1px solid var(--control-border);padding:3px 6px;display:flex;gap:0;z-index:50;justify-content:flex-start}
.tab{padding:4px 11px;border:1px solid transparent;background:transparent;cursor:pointer;font-size:12px;border-radius:2px 2px 0 0;color:var(--txt)}
.tab:hover{background:rgba(255,255,255,.5)}
.tab.active{background:var(--panel-bg);font-weight:600;color:var(--excel-dark);border-color:var(--control-border);border-bottom-color:var(--panel-bg);position:relative;top:1px;box-shadow:inset 0 2px 0 var(--excel)}

/* === Sticky 헤더 (PC 만) — 리본/타이틀바/탭/수식바를 상단 고정 === */
.app-header{background:var(--ribbon-bg);position:relative}
@media(min-width:760px){
  .app{padding-top:var(--app-header-h)}
  .app-header{position:fixed;top:0;left:0;right:0;z-index:95;box-shadow:0 1px 0 rgba(0,0,0,.06)}
}

/* === Status bar === */
.statusbar{position:fixed;left:0;right:0;bottom:0;min-height:24px;height:calc(24px + env(safe-area-inset-bottom));background:var(--statusbar-bg);color:var(--statusbar-fg);display:flex;align-items:flex-start;justify-content:space-between;padding:4px 12px env(safe-area-inset-bottom);font-size:11px;z-index:80;letter-spacing:.1px;overflow:hidden}
.statusbar .left-cluster,.statusbar .right-cluster{display:flex;align-items:center;min-width:0}
.statusbar .left-cluster{gap:8px;flex:1 1 auto;overflow:hidden}
.statusbar #statusLeft{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.floating-restore{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;flex-shrink:0}
.floating-restore[hidden]{display:none}
.floating-restore button{height:17px;padding:0 6px;border:1px solid var(--statusbar-button-border);border-radius:2px;background:var(--statusbar-button-bg);color:var(--statusbar-fg);font:inherit;font-size:10.5px;cursor:pointer}
.floating-restore button:hover{background:rgba(255,255,255,.22)}
.updates-button{height:17px;padding:0 7px;border:1px solid var(--statusbar-button-border);border-radius:2px;background:var(--statusbar-button-bg);color:var(--statusbar-fg);font:inherit;font-size:10.5px;line-height:15px;cursor:pointer;white-space:nowrap;flex-shrink:0;text-decoration:none;display:inline-flex;align-items:center;justify-content:center}
.updates-button[hidden]{display:none}
.updates-button:hover{background:rgba(255,255,255,.22)}
.updates-button.has-new{gap:4px}
.updates-button.has-new::after{content:"N";position:static;display:inline-flex;align-items:center;justify-content:center;min-width:12px;height:12px;border-radius:999px;background:#ffcf33;color:#6b4200;border:1px solid rgba(255,255,255,.78);font-size:8px;font-weight:900;line-height:1;box-shadow:0 1px 2px rgba(0,0,0,.18)}
.readability-button.active{background:rgba(255,255,255,.28);border-color:rgba(255,255,255,.72);font-weight:700}
.install-button{border-color:rgba(255,207,51,.72);background:rgba(255,207,51,.18);font-weight:700}
.bookmark-button{border-color:rgba(255,255,255,.44);background:rgba(255,255,255,.08)}
.readability-button{max-width:128px;overflow:hidden;text-overflow:ellipsis}
.statusbar .tagline-pin{font-style:italic;opacity:.9;margin-right:2px;white-space:nowrap}
.statusbar .tagline-pin::before{content:"✦ ";opacity:.7}
.statusbar .right-cluster{gap:10px;white-space:nowrap;flex:0 0 auto}
.presence-count{color:var(--statusbar-fg);opacity:.92;font-variant-numeric:tabular-nums;display:inline-block;max-width:132px;overflow:hidden;text-overflow:ellipsis}
.updates-modal{position:fixed;inset:0;z-index:300;display:none;color:#252423}
.updates-modal.open{display:block}
/* Settings modal — shares the updates-panel skeleton */
.settings-body{padding:4px 0 6px}
.settings-group{padding:8px 14px 6px;border-bottom:1px solid #eee5da}
.settings-group:last-of-type{border-bottom:0}
.settings-group-title{font-size:11px;font-weight:700;color:#605e5c;text-transform:uppercase;letter-spacing:.6px;margin:2px 0 4px}
.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 0;cursor:pointer}
.settings-row + .settings-row{border-top:1px dashed #efe9dd}
.settings-row-text{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.settings-row-text strong{font-size:12.5px;color:#252423;font-weight:650;line-height:1.3}
.settings-row-text em{font-style:normal;font-size:11px;color:#7a8085;line-height:1.35}
.settings-row-action{cursor:default}
.settings-select{height:30px;max-width:142px;border:1px solid var(--control-border);border-radius:5px;background:var(--control-bg);color:var(--txt);font:inherit;font-size:12px;font-weight:650;padding:0 25px 0 9px;cursor:pointer;flex:0 0 auto}
.settings-select:focus{outline:2px solid rgba(16,124,65,.28);outline-offset:1px}
.settings-toggle{position:relative;width:42px;height:22px;flex:0 0 auto;display:inline-block}
.settings-toggle input{position:absolute;inset:0;opacity:0;cursor:pointer;margin:0;width:100%;height:100%}
.settings-toggle-slider{position:absolute;inset:0;background:#c8c6c4;border-radius:999px;transition:background .14s ease}
.settings-toggle-slider::after{content:"";position:absolute;left:2px;top:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .14s ease}
.settings-toggle input:checked + .settings-toggle-slider{background:#107c41}
.settings-toggle input:checked + .settings-toggle-slider::after{transform:translateX(20px)}
.settings-toggle input:focus-visible + .settings-toggle-slider{outline:2px solid #5b9bd5;outline-offset:1px}
.settings-toggle input:disabled + .settings-toggle-slider{opacity:.5;cursor:not-allowed}
.settings-range-control{display:grid;grid-template-columns:96px 42px;align-items:center;gap:8px;flex:0 0 auto}
.settings-range{width:96px;accent-color:var(--excel);cursor:pointer}
.settings-range:focus-visible{outline:2px solid rgba(16,124,65,.28);outline-offset:3px;border-radius:999px}
.settings-range-control output{font-size:12px;font-weight:700;color:#605e5c;text-align:right;font-variant-numeric:tabular-nums}
.settings-danger{height:30px;border:1px solid #c4314b;background:#fff;color:#c4314b;border-radius:5px;font:inherit;font-weight:650;font-size:12.5px;padding:0 14px;cursor:pointer;flex:0 0 auto}
.settings-danger:hover{background:#fbeaee}
.settings-foot{padding:8px 14px 10px;color:#7a8085;font-size:11px;line-height:1.45}
body.theme-outlook .settings-toggle input:checked + .settings-toggle-slider{background:#0f6cbd}
body.theme-outlook .settings-range{accent-color:#0f6cbd}
body.theme-outlook .settings-danger{color:#c4314b;border-color:#c4314b}
body.excel-dark-mode:not(.theme-outlook) .app-header,
body.excel-dark-mode:not(.theme-outlook) .tabs,
body.excel-dark-mode:not(.theme-outlook) .ribbon,
body.excel-dark-mode:not(.theme-outlook) .formula,
body.excel-dark-mode:not(.theme-outlook) .sheet-title,
body.excel-dark-mode:not(.theme-outlook) .sheet,
body.excel-dark-mode:not(.theme-outlook) .bar,
body.excel-dark-mode:not(.theme-outlook) .updates-panel,
body.excel-dark-mode:not(.theme-outlook) .updates-body{background:var(--panel-bg);color:var(--txt)}
body.excel-dark-mode:not(.theme-outlook) .tabs span:hover,
body.excel-dark-mode:not(.theme-outlook) .tabs span.file-tab:hover,
body.excel-dark-mode:not(.theme-outlook) .change-toggle button:hover,
body.excel-dark-mode:not(.theme-outlook) .timeline-tabs button:hover,
body.excel-dark-mode:not(.theme-outlook) .tool:hover,
body.excel-dark-mode:not(.theme-outlook) .tool.big:hover,
body.excel-dark-mode:not(.theme-outlook) .split:hover{background:var(--hover);border-color:var(--hover-border)}
body.excel-dark-mode:not(.theme-outlook) .tabs span,
body.excel-dark-mode:not(.theme-outlook) .tabs span.file-tab,
body.excel-dark-mode:not(.theme-outlook) .sheet-title,
body.excel-dark-mode:not(.theme-outlook) .settings-row-text strong,
body.excel-dark-mode:not(.theme-outlook) .updates-head h2{color:var(--txt)}
body.excel-dark-mode:not(.theme-outlook) .settings-row-text em,
body.excel-dark-mode:not(.theme-outlook) .settings-group-title,
body.excel-dark-mode:not(.theme-outlook) .settings-foot,
body.excel-dark-mode:not(.theme-outlook) .settings-range-control output,
body.excel-dark-mode:not(.theme-outlook) .sub,
body.excel-dark-mode:not(.theme-outlook) .time,
body.excel-dark-mode:not(.theme-outlook) .sheet-title .hint{color:var(--muted)}
body.excel-dark-mode:not(.theme-outlook) .floating-tabs{background:var(--sheet-tab-bg);border-color:var(--control-border)}
body.excel-dark-mode:not(.theme-outlook) .tab:hover{background:#20272d}
body.excel-dark-mode:not(.theme-outlook) .tab.active{background:var(--panel-bg);color:#9de8bb;border-color:var(--control-border);border-bottom-color:var(--panel-bg)}
body.excel-dark-mode:not(.theme-outlook) .updates-head,
body.excel-dark-mode:not(.theme-outlook) .settings-group{background:var(--soft-bg);border-color:var(--sep)}
body.excel-dark-mode:not(.theme-outlook) .settings-row + .settings-row{border-top-color:#2e363d}
body.excel-dark-mode:not(.theme-outlook) .updates-link,
body.excel-dark-mode:not(.theme-outlook) .updates-close,
body.excel-dark-mode:not(.theme-outlook) .settings-danger,
body.excel-dark-mode:not(.theme-outlook) .btn-memo,
body.excel-dark-mode:not(.theme-outlook) .btn-share,
body.excel-dark-mode:not(.theme-outlook) .fx-meta .badge,
body.excel-dark-mode:not(.theme-outlook) input,
body.excel-dark-mode:not(.theme-outlook) select,
body.excel-dark-mode:not(.theme-outlook) textarea,
body.excel-dark-mode:not(.theme-outlook) .combo,
body.excel-dark-mode:not(.theme-outlook) .namebox,
body.excel-dark-mode:not(.theme-outlook) .fxbox,
body.excel-dark-mode:not(.theme-outlook) .ribbon-inline-toggle,
body.excel-dark-mode:not(.theme-outlook) .change-toggle,
body.excel-dark-mode:not(.theme-outlook) .timeline-tabs,
body.excel-dark-mode:not(.theme-outlook) .hidden-restore,
body.excel-dark-mode:not(.theme-outlook) .community-cell-button:not(.community-compose-submit),
body.excel-dark-mode:not(.theme-outlook) .community-recommend,
body.excel-dark-mode:not(.theme-outlook) .community-report,
body.excel-dark-mode:not(.theme-outlook) .community-reply-btn,
body.excel-dark-mode:not(.theme-outlook) .community-reply-cancel,
body.excel-dark-mode:not(.theme-outlook) .etf-search,
body.excel-dark-mode:not(.theme-outlook) .etf-select,
body.excel-dark-mode:not(.theme-outlook) .etf-refresh,
body.excel-dark-mode:not(.theme-outlook) .etf-chip,
body.excel-dark-mode:not(.theme-outlook) .watchlist-add input,
body.excel-dark-mode:not(.theme-outlook) .watchlist-add > select,
body.excel-dark-mode:not(.theme-outlook) .watchlist-add > button,
body.excel-dark-mode:not(.theme-outlook) .watchlist-add .watchlist-more,
body.excel-dark-mode:not(.theme-outlook) .watchlist-more-menu,
body.excel-dark-mode:not(.theme-outlook) .holding-inline input,
body.excel-dark-mode:not(.theme-outlook) .chat-nickname,
body.excel-dark-mode:not(.theme-outlook) .chat-input{background:var(--control-bg);border-color:var(--control-border);color:var(--txt)}
body.excel-dark-mode:not(.theme-outlook) .watchlist-add > select{background-color:var(--control-bg);background-image:var(--ui-control-caret);background-repeat:no-repeat;background-position:right 5px center;background-size:8px 5px}
body.excel-dark-mode:not(.theme-outlook) .etf-select{background-color:var(--control-bg);background-image:var(--ui-control-caret);background-repeat:no-repeat;background-position:right 7px center;background-size:8px 5px}
body.excel-dark-mode:not(.theme-outlook) .etf-filter-cell,
body.excel-dark-mode:not(.theme-outlook) .etf-page-cell{background:#11181d!important;color:var(--muted)}
body.excel-dark-mode:not(.theme-outlook) .etf-beta-note{color:var(--muted)}
body.excel-dark-mode:not(.theme-outlook) .etf-name-main{color:#8ab4ff}
body.excel-dark-mode:not(.theme-outlook) .etf-meta{color:#aab3bb}
body.excel-dark-mode:not(.theme-outlook) .etf-meta-item:not(:last-child)::after{background:#5f6a73}
body.excel-dark-mode:not(.theme-outlook) .etf-metric-primary{color:#d7dee5}
body.excel-dark-mode:not(.theme-outlook) .etf-metric-stack,
body.excel-dark-mode:not(.theme-outlook) .etf-return-grid em,
body.excel-dark-mode:not(.theme-outlook) .etf-mobile-price{color:#aab3bb}
body.excel-dark-mode:not(.theme-outlook) .etf-chip.active{border-color:#4a7a5d;background:#193321;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .etf-pill{border-color:#7c6a2d;background:#2b2716;color:#ead886}
body.excel-dark-mode:not(.theme-outlook) .etf-risk-pill{border-color:#35404a;background:#182027;color:#aeb8c2}
body.excel-dark-mode:not(.theme-outlook) .etf-holding-chip{border-color:#35404a;background:#182027;color:#aeb8c2}
body.excel-dark-mode:not(.theme-outlook) .etf-holding-weight{color:#9ee2b5}
body.excel-dark-mode:not(.theme-outlook) .etf-data-row[data-etf-detail-key]:hover td:not(.rownum),
body.excel-dark-mode:not(.theme-outlook) .etf-data-row.is-expanded td:not(.rownum),
body.excel-dark-mode:not(.theme-outlook) .etf-detail-cell{background:#11181d!important}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-cue{border-color:#35404a;background:#182027;color:#aeb8c2}
body.excel-dark-mode:not(.theme-outlook) .etf-data-row.is-expanded .etf-detail-cue{border-color:#4a7a5d;background:#193321;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-card,
body.excel-dark-mode:not(.theme-outlook) .etf-detail-section{border-color:#35404a;background:#121b22;color:#d7dee5}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-hero,
body.excel-dark-mode:not(.theme-outlook) .etf-detail-title{border-color:#35404a;background:#182027}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-name b{color:#9ee2b5}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-name span,
body.excel-dark-mode:not(.theme-outlook) .etf-detail-price span,
body.excel-dark-mode:not(.theme-outlook) .etf-detail-item span,
body.excel-dark-mode:not(.theme-outlook) .etf-detail-return span,
body.excel-dark-mode:not(.theme-outlook) .etf-detail-holding-name,
body.excel-dark-mode:not(.theme-outlook) .etf-detail-empty{color:#aab3bb}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-price strong,
body.excel-dark-mode:not(.theme-outlook) .etf-detail-item strong{color:#d7dee5}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-title{color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-item,
body.excel-dark-mode:not(.theme-outlook) .etf-detail-return{border-color:#27323a}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-holding-rank{background:#193321;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-holding-bar{background:#27323a}
body.excel-dark-mode:not(.theme-outlook) .etf-detail-holding-bar i{background:#5fb57a}
body.excel-dark-mode:not(.theme-outlook) .timeline-tabs{background:transparent;border-color:transparent}
body.excel-dark-mode:not(.theme-outlook) .timeline-tab-group{background:var(--control-bg);border-color:var(--control-border)}
body.excel-dark-mode:not(.theme-outlook) .watchlist-more-menu button{color:var(--txt)}
body.excel-dark-mode:not(.theme-outlook) .watchlist-more-menu button:hover{background:#17231c;color:#9ee2b5}
body.excel-dark-mode:not(.theme-outlook) .watchlist-add > button:hover{background:#17231c;color:#9ee2b5;border-color:#5a8d6b}
body.excel-dark-mode:not(.theme-outlook) .watchlist-add > button:disabled{background:var(--control-bg);border-color:var(--control-border);color:var(--muted)}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-card{background:#171b20;border-color:#3a424a;color:var(--txt);box-shadow:0 22px 54px rgba(0,0,0,.48),0 6px 18px rgba(0,0,0,.28)}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-head{background:linear-gradient(180deg,#20272d,#17231c);border-color:#35404a}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-icon,
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-close,
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-actions button{background:#11181d;border-color:#35404a;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-title strong{color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-title span,
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-loading,
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-fallback,
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-underqr,
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-note{color:#aab3bb}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-underqr button{color:#8ee1aa}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-underqr button:hover{color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-body{background:#171b20}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-qr-wrap{background:repeating-linear-gradient(0deg,#11181d,#11181d 23px,#182027 24px);border-color:#35404a}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-qr,
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-url{background:#fff;border-color:#35404a;color:#39433d}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-copy{background:#11181d;border-color:#35404a}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-copy strong{color:#d7dee5}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-copy span{color:#aab3bb}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-actions{background:linear-gradient(180deg,rgba(23,27,32,0),#171b20 28%,#171b20)}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-actions button:hover{background:#17231c;border-color:#5a8d6b}
body.excel-dark-mode:not(.theme-outlook) .watchlist-phone-actions .primary{background:#1f8f4d;border-color:#1f8f4d;color:#fff}
body.excel-dark-mode:not(.theme-outlook) .change-toggle button,
body.excel-dark-mode:not(.theme-outlook) .timeline-tabs button{color:var(--muted);border-left-color:var(--sep)}
body.excel-dark-mode:not(.theme-outlook) .btn-memo,
body.excel-dark-mode:not(.theme-outlook) .btn-share,
body.excel-dark-mode:not(.theme-outlook) .fx-meta .badge{color:#9de8bb}
body.excel-dark-mode:not(.theme-outlook).ribbon-collapsed .ribbon-inline-toggle{background:var(--control-bg);border-color:var(--control-border);color:var(--muted)}
body.excel-dark-mode:not(.theme-outlook) .change-toggle button.active,
body.excel-dark-mode:not(.theme-outlook) .timeline-tabs button.active,
body.excel-dark-mode:not(.theme-outlook) .timeline-tabs button[aria-selected="true"]{background:#183727;color:#9de8bb}
body.excel-dark-mode:not(.theme-outlook) .timeline-tabs button.has-unread::after{background:#7cd6a2;box-shadow:0 0 0 1px #183727}
body.excel-dark-mode:not(.theme-outlook) table,
body.excel-dark-mode:not(.theme-outlook) th,
body.excel-dark-mode:not(.theme-outlook) td{border-color:var(--grid);color:var(--txt)}
body.excel-dark-mode:not(.theme-outlook) th,
body.excel-dark-mode:not(.theme-outlook) .colhead,
body.excel-dark-mode:not(.theme-outlook) .rownum,
body.excel-dark-mode:not(.theme-outlook) #timelineTable.community-table .rownum,
body.excel-dark-mode:not(.theme-outlook) #timelineTable.community-table .colhead{background:var(--head)!important;color:#b6c0c8}
body.excel-dark-mode:not(.theme-outlook) th.rownum,
body.excel-dark-mode:not(.theme-outlook) td.rownum,
body.excel-dark-mode:not(.theme-outlook) #timelineTable.community-table .rownum,
body.excel-dark-mode:not(.theme-outlook) .community-ad-row .rownum{color:#b6c0c8!important}
body.excel-dark-mode:not(.theme-outlook) td,
body.excel-dark-mode:not(.theme-outlook) .subhead{background:var(--bg);color:var(--txt)}
body.excel-dark-mode:not(.theme-outlook) .sheet.summary tr.mood-row td,
body.excel-dark-mode:not(.theme-outlook) .sheet.summary tr.flow-row td,
body.excel-dark-mode:not(.theme-outlook) .community-pagination-row td:not(.rownum){background:#1a2025}
body.excel-dark-mode:not(.theme-outlook) .community-compose-row td:not(.rownum),
body.excel-dark-mode:not(.theme-outlook) .community-reply-row td:not(.rownum){background:#16251d}
body.excel-dark-mode:not(.theme-outlook) .community-comment-row td:not(.rownum),
body.excel-dark-mode:not(.theme-outlook) .community-hidden-row td:not(.rownum){background:#1b2229}
body.excel-dark-mode:not(.theme-outlook) .community-post-row.is-pinned > td:not(.rownum){background:#211f18}
body.excel-dark-mode:not(.theme-outlook) .community-pin-badge{background:#2a2418;border-color:#5a4923;color:#dcc488}
body.excel-dark-mode:not(.theme-outlook) .stock-mention-badge{background:#14261d;border-color:#315842;color:#9ee2b5}
body.excel-dark-mode:not(.theme-outlook) .community-ad-badge-cell .ad-badge,
body.excel-dark-mode:not(.theme-outlook) .community-ad-merged-inner .ad-badge{background:#2a2418;border-color:#5a4923;color:#dcc488}
body.excel-dark-mode:not(.theme-outlook) .community-ad-row td:not(.rownum){background:#1d1b15;color:#c8b988}
body.excel-dark-mode:not(.theme-outlook) .community-ad-empty-cell,
body.excel-dark-mode:not(.theme-outlook) .community-ad-time-cell{background:#1d1b15;color:#c8b988}
body.excel-dark-mode:not(.theme-outlook) .community-ad-row .rownum{background:var(--head)!important;color:#b6c0c8!important}
body.excel-dark-mode:not(.theme-outlook) .community-hover-actions{background:linear-gradient(90deg,rgba(21,25,29,0),#15191d 12px)}
body.excel-dark-mode:not(.theme-outlook) a.stock-mention-badge:hover{background:#193321;border-color:#4a7a5d;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .stock-mention-badge.pending{background:#1c2228;border-color:#45505a;color:#aab3bb}
body.excel-dark-mode:not(.theme-outlook) .stock-mention-market{color:#8ea89a}
body.excel-dark-mode:not(.theme-outlook) .stock-mention-change{border-left-color:rgba(158,226,181,.22)}
body.excel-dark-mode:not(.theme-outlook) .stock-mention-change.up{color:#ffb0b0}
body.excel-dark-mode:not(.theme-outlook) .stock-mention-change.down{color:#bad6ff}
body.excel-dark-mode:not(.theme-outlook) .stock-mention-change.flat{color:#aab3bb}
body.excel-dark-mode:not(.theme-outlook) .community-text-ad,
body.excel-dark-mode:not(.theme-outlook) .community-text-ad .ad-copy{color:#c8b988}
body.excel-dark-mode:not(.theme-outlook) .community-text-ad a{color:inherit;box-shadow:inset 0 -.5px 0 rgba(200,185,136,.76)}
body.excel-dark-mode:not(.theme-outlook) .watchlist-add,
body.excel-dark-mode:not(.theme-outlook) .chat-body,
body.excel-dark-mode:not(.theme-outlook) .chat-composer{background:var(--soft-bg);border-color:var(--sep)}
body.excel-dark-mode:not(.theme-outlook) .chat-ad-line{background:#16251d;border-color:#2d3a31;color:#cbd5ce}
body.excel-dark-mode:not(.theme-outlook) .chat-ad-line .ad-badge{background:#17231c;border-color:#3c5c48;color:#7cd6a2}
body.excel-dark-mode:not(.theme-outlook) .community-hidden-badge{background:#1c2228;border-color:#45505a;color:#aab3bb}
body.excel-dark-mode:not(.theme-outlook) .chat-ad-line a{color:inherit;box-shadow:inset 0 -.5px 0 rgba(203,213,206,.72)}
body.excel-dark-mode:not(.theme-outlook) .chat-ad-line a:hover{color:#7cd6a2;box-shadow:inset 0 -1px 0 currentColor}
body.excel-dark-mode:not(.theme-outlook) .community-text-ad a{color:inherit;box-shadow:inset 0 -.5px 0 rgba(200,185,136,.76)}
body.excel-dark-mode:not(.theme-outlook) .community-text-ad a:hover{color:#e4cf91;box-shadow:inset 0 -1px 0 currentColor}
body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad{background:rgba(21,25,29,.98);border-color:var(--grid);color:#cbd5ce;box-shadow:0 -2px 8px rgba(0,0,0,.22)}
body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad .ad-badge{background:#17231c;border-color:#3c5c48;color:#7cd6a2}
body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad a.ad-copy{color:inherit;box-shadow:none;text-decoration-color:rgba(203,213,206,.55)}
body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad a.ad-copy:hover{color:#7cd6a2;text-decoration-color:currentColor}
body.excel-dark-mode:not(.theme-outlook) tr.summary-sheet-ad-row td.summary-sheet-ad-cell a.ad-copy{box-shadow:none;text-decoration-color:rgba(203,213,206,.55)}
body.excel-dark-mode:not(.theme-outlook) tr.summary-sheet-ad-row td.summary-sheet-ad-cell a.ad-copy:hover{color:#7cd6a2;text-decoration-color:currentColor}
@media(max-width:1099px){
  body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad{background:transparent;border-color:transparent;box-shadow:none;color:#cbd5ce}
  body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad-rownum{background:var(--head);border-color:var(--grid);color:#b6c0c8}
  body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad-blank-cell{background:var(--bg);border-color:var(--grid)}
  body.excel-dark-mode:not(.theme-outlook) .summary-sheet-ad-cell{background:rgba(21,25,29,.98);border-color:var(--grid)}
}
body.excel-dark-mode:not(.theme-outlook) tr.quote-note-row td{background:#1a211d;color:#aebdb4}
body.excel-dark-mode:not(.theme-outlook) tr.quote-note-row:hover td{background:#1d2a22}
body.excel-dark-mode:not(.theme-outlook) .quote-note-content{color:#b8cabf}
body.excel-dark-mode:not(.theme-outlook) .quote-note-content:empty::before{color:#7f8b83}
body.excel-dark-mode:not(.theme-outlook) .quote-note-content:focus{background:#11181d;box-shadow:inset 0 0 0 1px rgba(126,214,162,.3);color:#d9e6de}
body.excel-dark-mode:not(.theme-outlook) tr.holding-row td,
body.excel-dark-mode:not(.theme-outlook) tr.holding-row:hover td{background-color:#171d21;color:var(--muted)}
body.excel-dark-mode:not(.theme-outlook) #cardsTable tr.holding-lot-row td{
  background-color:#171d21;
  color:var(--muted);
}
body.excel-dark-mode:not(.theme-outlook) #cardsTable tr.quote-with-holding > td:not(.rownum){background-image:linear-gradient(to right, rgba(142,161,151,.42) 50%, transparent 0)!important}
body.excel-dark-mode:not(.theme-outlook) #cardsTable tr.holding-lot-first > td:not(.rownum),
body.excel-dark-mode:not(.theme-outlook) #cardsTable tr.quote-with-holding + tr.holding-edit-row > td:not(.rownum){background-image:none!important}
body.excel-dark-mode:not(.theme-outlook) #cardsTable tr.holding-lot-row:hover td{background-color:#19241e}
body.excel-dark-mode:not(.theme-outlook) .holding-row-add{background:transparent;border-color:transparent;color:#8ea197}
body.excel-dark-mode:not(.theme-outlook) tr.holding-row:hover .holding-row-add,
body.excel-dark-mode:not(.theme-outlook) .holding-row-add:focus-visible{background:#11181d;border-color:#35404a}
body.excel-dark-mode:not(.theme-outlook) .holding-row-add:hover{background:#193321;border-color:#4a7a5d;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) tr.holding-summary-row td:not(.rownum){background-color:#171f1b;color:#aebdb4}
body.excel-dark-mode:not(.theme-outlook) tr.holding-summary-row:hover td:not(.rownum){background-color:#19241e}
body.excel-dark-mode:not(.theme-outlook) .holding-empty-row td:not(.rownum){background-color:#171f1b;color:#8ea197}
body.excel-dark-mode:not(.theme-outlook) .holding-empty-title{color:#b8cabf}
body.excel-dark-mode:not(.theme-outlook) .holding-empty-copy{color:#8ea197}
body.excel-dark-mode:not(.theme-outlook) .holding-empty-copy b{background:#193321;border-color:#4a7a5d;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .holding-summary-title{color:#b8cabf}
body.excel-dark-mode:not(.theme-outlook) .holding-summary-meta{color:#8ea197}
body.excel-dark-mode:not(.theme-outlook) .holding-summary-value-label{color:#8ea197}
body.excel-dark-mode:not(.theme-outlook) .holding-value-cell,
body.excel-dark-mode:not(.theme-outlook) .holding-summary-value-cell{color:#b8cabf}
body.excel-dark-mode:not(.theme-outlook) .holding-summary-pct.up{color:var(--up)}
body.excel-dark-mode:not(.theme-outlook) .holding-summary-pct.down{color:var(--down)}
body.excel-dark-mode:not(.theme-outlook) #cardsTable .holding-meta-line .up,
body.excel-dark-mode:not(.theme-outlook) #cardsTable .holding-return-cell.up,
body.excel-dark-mode:not(.theme-outlook) #cardsTable .holding-summary-return-cell.up{color:var(--up)}
body.excel-dark-mode:not(.theme-outlook) #cardsTable .holding-meta-line .down,
body.excel-dark-mode:not(.theme-outlook) #cardsTable .holding-return-cell.down,
body.excel-dark-mode:not(.theme-outlook) #cardsTable .holding-summary-return-cell.down{color:var(--down)}
body.readability-mode #cardsTable tr.holding-row td.holding-return-cell.up,
body.readability-mode #cardsTable tr.holding-row td.holding-summary-return-cell.up{color:#d04444}
body.readability-mode #cardsTable tr.holding-row td.holding-return-cell.down,
body.readability-mode #cardsTable tr.holding-row td.holding-summary-return-cell.down{color:#1f6fd6}
body.excel-dark-mode.readability-mode:not(.theme-outlook) #cardsTable tr.holding-row td.holding-return-cell.up,
body.excel-dark-mode.readability-mode:not(.theme-outlook) #cardsTable tr.holding-row td.holding-summary-return-cell.up{color:#ffb0b0}
body.excel-dark-mode.readability-mode:not(.theme-outlook) #cardsTable tr.holding-row td.holding-return-cell.down,
body.excel-dark-mode.readability-mode:not(.theme-outlook) #cardsTable tr.holding-row td.holding-summary-return-cell.down{color:#bad6ff}
body.excel-dark-mode:not(.theme-outlook) .community-compose-box,
body.excel-dark-mode:not(.theme-outlook) .community-reply-box{background:#11181d;border-color:#2d6d46;box-shadow:inset 0 0 0 1px rgba(33,163,102,.08)}
body.excel-dark-mode:not(.theme-outlook) .community-post-body,
body.excel-dark-mode:not(.theme-outlook) #timelineTable.community-table .community-comment-body,
body.excel-dark-mode:not(.theme-outlook) .news-title-link{color:#eef2f4}
body.excel-dark-mode:not(.theme-outlook) .community-reply-more-row td:not(.rownum){background:#182027;color:#aeb8c2}
body.excel-dark-mode:not(.theme-outlook) .community-reply-more-btn{background:transparent;border-color:transparent;color:#9ee2b5}
body.excel-dark-mode:not(.theme-outlook) .community-reply-more-btn:hover{background:transparent;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .personal-feed-row td:not(.rownum){background:#111a15;color:#aebdb4}
body.excel-dark-mode:not(.theme-outlook) .personal-feed-title{background:#193321;border-color:#4a7a5d;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .personal-feed-main{color:#d7dee5}
body.excel-dark-mode:not(.theme-outlook) .personal-feed-muted{color:#8ea197}
body.excel-dark-mode:not(.theme-outlook) tr.news-row.is-personal-match > td{background:#1d1c12}
body.excel-dark-mode:not(.theme-outlook) tr.news-row.personal-news-pulse > td{animation:personal-news-pulse-dark 1.7s ease-out}
@keyframes personal-news-pulse-dark{
  0%{background:#393314}
  55%{background:#2a2715}
  100%{background:#1d1c12}
}
body.excel-dark-mode:not(.theme-outlook) .community-read-marker-row td:not(.rownum){background:#151a17;color:#98a69d}
body.excel-dark-mode:not(.theme-outlook) .community-read-marker-cell span{color:#a9b8af}
body.excel-dark-mode:not(.theme-outlook) .community-read-marker-cell em{color:#77877f}
body.excel-dark-mode:not(.theme-outlook) .community-poll-row > td:not(.rownum){background:#111a15}
body.excel-dark-mode:not(.theme-outlook) .community-poll-row.is-voted > td:not(.rownum){background:#152019}
body.excel-dark-mode:not(.theme-outlook) .community-poll-author span{background:#193321;border-color:#4a7a5d;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .community-author-admin{background:#182820;border-color:#4a7a5d;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .community-poll-kicker{color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .community-poll-question{color:#d7dee5}
body.excel-dark-mode:not(.theme-outlook) .community-poll-choice{background:#11181d;border-color:#35404a;color:#d7dee5}
body.excel-dark-mode:not(.theme-outlook) .community-poll-choice:hover:not(:disabled){background:#17231c;border-color:#5a8d6b;color:#b8f2c9}
body.excel-dark-mode:not(.theme-outlook) .community-poll-choice.selected{background:#1f8f4d;border-color:#1f8f4d;color:#fff}
body.excel-dark-mode:not(.theme-outlook) .community-poll-count,
body.excel-dark-mode:not(.theme-outlook) .community-poll-tail,
body.excel-dark-mode:not(.theme-outlook) .community-poll-time{color:#8ea197}
body.excel-dark-mode:not(.theme-outlook) #timelineTable.community-table .community-post-row.is-unread-community td:not(.rownum),
body.excel-dark-mode:not(.theme-outlook) #timelineTable.community-table .community-comment-row.is-unread-community-comment td:not(.rownum){background:#181b16}
body.excel-dark-mode:not(.theme-outlook) .news-desc,
body.excel-dark-mode:not(.theme-outlook) .source-pill,
body.excel-dark-mode:not(.theme-outlook) .flow-cell,
body.excel-dark-mode:not(.theme-outlook) .flow-pill,
body.excel-dark-mode:not(.theme-outlook) .flow-pill .flow-label{color:#aab3bb}
body.excel-dark-mode:not(.theme-outlook) a{color:#8ab4ff}
body.excel-dark-mode:not(.theme-outlook) .source-pill,
body.excel-dark-mode:not(.theme-outlook) .link-pill{border-color:#3a5f48;background:#17231c;color:#9de8bb}
body.excel-dark-mode:not(.theme-outlook) #cardsTable .row-actions{background:rgba(17,24,29,.97);border-color:#35404a;box-shadow:0 1px 5px rgba(0,0,0,.28)}
body.excel-dark-mode:not(.theme-outlook) .mini-chart-popover,
body.excel-dark-mode:not(.theme-outlook) .loading-toast,
body.excel-dark-mode:not(.theme-outlook) .sheet.summary.sheet-switch-loading::after,
body.excel-dark-mode:not(.theme-outlook) .chat-panel,
body.excel-dark-mode:not(.theme-outlook) .chat-system,
body.excel-dark-mode:not(.theme-outlook) .chat-msg,
body.excel-dark-mode:not(.theme-outlook) .updates-table-wrap,
body.excel-dark-mode:not(.theme-outlook) .notice-card{background:#171b20;border-color:#3a424a;color:var(--txt)}
body.excel-dark-mode:not(.theme-outlook) .chat-msg.own{background:#15271d;border-color:#2d6d46}
body.excel-dark-mode:not(.theme-outlook) .chat-msg.moderated{background:#1c2228;border-color:#45505a}
body.excel-dark-mode:not(.theme-outlook) .chat-loading b,
body.excel-dark-mode:not(.theme-outlook) .mini-chart-foot b{color:var(--txt)}
body.excel-dark-mode:not(.theme-outlook) .tv-chart-button{background:#17231c;border-color:#365644;color:#9ee2b5}
body.excel-dark-mode:not(.theme-outlook) .tv-chart-button:hover,
body.excel-dark-mode:not(.theme-outlook) .tv-chart-button:focus-visible,
body.excel-dark-mode:not(.theme-outlook) tr.tv-chart-active .tv-chart-button{background:#1f8f4d;border-color:#1f8f4d;color:#fff}
body.excel-dark-mode:not(.theme-outlook) .tv-chart-panel{background:#11161b;border-color:#35404a;box-shadow:0 8px 20px rgba(0,0,0,.32)}
body.excel-dark-mode:not(.theme-outlook) .mobile-tv-chart-row td{background:#11161b!important}
body.excel-dark-mode:not(.theme-outlook) .mobile-tv-chart-cell{border-color:#35404a!important}
body.excel-dark-mode:not(.theme-outlook) .mobile-tv-chart-panel{background:#11161b;border-color:#35404a;box-shadow:inset 0 1px 0 rgba(126,214,162,.14)}
body.excel-dark-mode:not(.theme-outlook) .tv-chart-head{background:linear-gradient(180deg,#20272e,#171d22);border-color:#35404a;color:var(--txt)}
body.excel-dark-mode:not(.theme-outlook) .tv-chart-kicker{background:#15251b;border-color:#315842;color:#9ee2b5}
body.excel-dark-mode:not(.theme-outlook) .tv-chart-close{background:#11161b;border-color:#3a424a;color:#d1d5db}
body.excel-dark-mode:not(.theme-outlook) .tv-chart-widget{background:#11161b}
body.excel-dark-mode:not(.theme-outlook) .tv-chart-loading{background:linear-gradient(90deg,#151b20,#1d2a22,#151b20);color:#aeb4bb;background-size:200% 100%}
body.excel-dark-mode:not(.theme-outlook) .tv-chart-resizer{background:linear-gradient(180deg,#171d22,#11161b);border-color:#35404a}
body.excel-dark-mode:not(.theme-outlook) .tv-chart-resizer::after{background:#4b5a52}
body.excel-dark-mode:not(.theme-outlook) .updates-body p,
body.excel-dark-mode:not(.theme-outlook) .updates-body li,
body.excel-dark-mode:not(.theme-outlook) .notice-card,
body.excel-dark-mode:not(.theme-outlook) .server-status-admin-counts,
body.excel-dark-mode:not(.theme-outlook) .server-status-flags{color:var(--muted)}
body.excel-dark-mode:not(.theme-outlook) .updates-body h1,
body.excel-dark-mode:not(.theme-outlook) .updates-body h2,
body.excel-dark-mode:not(.theme-outlook) .updates-body h3{color:#9de8bb;border-color:var(--sep)}
body.excel-dark-mode:not(.theme-outlook) .updates-table th,
body.excel-dark-mode:not(.theme-outlook) .updates-table tr:nth-child(even) td,
body.excel-dark-mode:not(.theme-outlook) .notice-card-detail{background:#11161b;color:var(--txt);border-color:var(--sep)}
body.excel-dark-mode:not(.theme-outlook) .notice-card-summary:hover,
body.excel-dark-mode:not(.theme-outlook) .notice-card-button:hover,
body.excel-dark-mode:not(.theme-outlook) .updates-link:hover,
body.excel-dark-mode:not(.theme-outlook) .updates-close:hover{background:#20272d}
body.excel-dark-mode:not(.theme-outlook) .server-status-flags span{background:#11161b;border-color:var(--control-border)}
body.excel-dark-mode:not(.theme-outlook) .market-state.pre{background:#3a2f12;color:#ffd76d;border-color:#6e5a22}
body.excel-dark-mode:not(.theme-outlook) .market-state.day{background:#12351f;color:#95dda8;border-color:#2d6b3f}
body.excel-dark-mode:not(.theme-outlook) .market-state.post{background:#17263a;color:#9ec4ff;border-color:#365780}
body.excel-dark-mode:not(.theme-outlook) .community-mobile-actions.active{background:linear-gradient(90deg,rgba(21,25,29,0),#15191d 14px)}
body.excel-dark-mode:not(.theme-outlook) .mini-chart-grid{stroke:#29323a}
body.excel-dark-mode:not(.theme-outlook) .mini-chart-foot,
body.excel-dark-mode:not(.theme-outlook) .mini-chart-empty{color:var(--muted)}
body.excel-dark-mode:not(.theme-outlook) .toast{box-shadow:0 10px 28px rgba(0,0,0,.42)}
.updates-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.22)}
.updates-panel{position:absolute;right:18px;bottom:calc(36px + env(safe-area-inset-bottom));width:min(520px,calc(100vw - 28px));max-height:min(72vh,620px);background:#fff;border:1px solid #b7c9bf;border-radius:8px;box-shadow:0 18px 48px rgba(0,0,0,.24),0 4px 12px rgba(0,0,0,.12);display:grid;grid-template-rows:auto 1fr;overflow:hidden}
.updates-head{height:42px;padding:0 10px 0 14px;background:#f6f8f6;border-bottom:1px solid #d8e3dc;display:flex;align-items:center;gap:8px}
.updates-head h2{font-size:13px;margin:0;font-weight:700;color:#185c37;flex:1}
.updates-link,.updates-close{height:26px;border:1px solid #c8c6c4;border-radius:4px;background:#fff;color:#252423;font:inherit;font-size:11px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;padding:0 8px;cursor:pointer}
.updates-link:hover,.updates-close:hover{background:#f3f6f4;border-color:#9db9a7}
.updates-close{width:28px;padding:0;font-size:17px;line-height:1}
.updates-body{padding:14px 16px 18px;overflow-y:auto;overflow-x:hidden;font-size:12.5px;line-height:1.58;background:#fff;min-width:0}
.updates-body *{box-sizing:border-box}
.updates-body h1,.updates-body h2,.updates-body h3{margin:0 0 8px;color:#185c37;line-height:1.3}
.updates-body h1{font-size:18px}
.updates-body h2{font-size:15px;margin-top:16px;padding-top:12px;border-top:1px solid #e1dfdd}
.updates-body h3{font-size:13px;margin-top:12px}
.updates-body p{margin:7px 0;color:#3b3a39;overflow-wrap:anywhere;word-break:keep-all}
.updates-body ul{margin:6px 0 12px;padding-left:18px}
.updates-body li{margin:4px 0;overflow-wrap:anywhere;word-break:keep-all}
.updates-body a{color:#0c63c4;text-decoration:none}
.updates-body a:hover{text-decoration:underline}
.updates-table-wrap{max-width:100%;overflow-x:auto;overflow-y:hidden;margin:9px 0 14px;border:1px solid #e1dfdd;border-radius:6px;background:#fff;overscroll-behavior-x:contain}
.updates-table{width:100%;min-width:0;border-collapse:collapse;table-layout:auto;font-size:11.5px;line-height:1.42}
.updates-table-wide{min-width:760px}
.updates-table th,.updates-table td{border:1px solid #edebe9;padding:6px 7px;vertical-align:top;text-align:left;white-space:normal;overflow-wrap:anywhere;word-break:keep-all}
.updates-table th:first-child,.updates-table td:first-child{min-width:62px;white-space:nowrap;overflow-wrap:normal;word-break:normal}
.updates-table th{background:#f6f8f6;color:#185c37;font-weight:750}
.updates-table tr:nth-child(even) td{background:#fbfbfa}
.updates-table .align-right{text-align:right;white-space:nowrap}
.updates-table .align-center{text-align:center}
/* 통일 카드 — 서버 상태 / Ootlook 베타 / 커피값 셋이 같은 모양으로 묶임.
 * 카드 자체 padding/border/높이/dot 위치 등은 동일하게, 색만 accent 별로 다르게 한다.
 * data-accent="status|outlook|coffee" 로 dot 색, 좌측 strip 색만 분기.
 */
.notice-card{margin:0 0 8px;border:1px solid #e1dfdd;border-left:3px solid #b6b6b6;border-radius:6px;background:#fbfbfa;color:#605e5c;font-size:12px;line-height:1.42;overflow:hidden;display:block;width:100%;text-align:left;padding:0;font:inherit}
button.notice-card{cursor:pointer}
.notice-card-summary{width:100%;min-height:32px;border:0;background:transparent;color:inherit;font:inherit;display:flex;align-items:center;gap:8px;padding:7px 10px;text-align:left;cursor:pointer}
.notice-card-summary:hover{background:#f4f7f5}
.notice-card-summary-static{cursor:inherit}
.notice-card-summary-static:hover{background:transparent}
.notice-card-button{cursor:pointer}
.notice-card-button:hover{background:#f4f7f5}
.notice-card-dot{width:8px;height:8px;border-radius:50%;background:#9aa0a6;box-shadow:0 0 0 2px rgba(154,160,166,.18);flex:0 0 auto}
.notice-card-title{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:650;color:#252423;font-size:12.5px}
.notice-card-title em{font-style:normal;font-weight:400;color:#7b8490;font-size:11.5px;margin-left:6px}
.notice-card-caret{flex:0 0 auto;color:#7b8490;font-size:10.5px;line-height:1}
.notice-card[data-expanded="true"] .notice-card-caret{transform:rotate(180deg)}
.notice-card-detail{border-top:1px solid #ece8df;background:#fff;padding:9px 12px 10px;display:grid;gap:4px;font-size:12px;color:#3b3a39}
.notice-card-detail[hidden]{display:none!important}
.notice-card-detail strong{color:#252423}
.notice-card-detail a{color:#0563c1;text-decoration:none}
.notice-card-detail a:hover{text-decoration:underline}
/* accent 색 — dot + 왼쪽 strip + title 강조 */
.notice-card[data-accent="status"]{border-left-color:#21a366}
.notice-card[data-accent="status"] .notice-card-dot{background:#21a366;box-shadow:0 0 0 2px rgba(33,163,102,.18)}
.notice-card[data-accent="outlook"]{border-left-color:#0f6cbd}
.notice-card[data-accent="outlook"] .notice-card-dot{background:#0f6cbd;box-shadow:0 0 0 2px rgba(15,108,189,.18)}
.notice-card[data-accent="coffee"]{border-left-color:#c08a3e}
.notice-card[data-accent="coffee"] .notice-card-dot{background:#c08a3e;box-shadow:0 0 0 2px rgba(192,138,62,.18)}
/* 서버 상태 health 변형 — 기본 status(녹색)에서 busy/degraded/down 으로 dot 색 + border 색 */
.server-status-card[data-health="busy"]{border-left-color:#dba514}
.server-status-card[data-health="busy"] .notice-card-dot{background:#dba514;box-shadow:0 0 0 2px rgba(219,165,20,.18)}
.server-status-card[data-health="degraded"]{border-left-color:#d97500}
.server-status-card[data-health="degraded"] .notice-card-dot{background:#d97500;box-shadow:0 0 0 2px rgba(217,117,0,.18)}
.server-status-card[data-health="down"]{border-left-color:#c50f1f}
.server-status-card[data-health="down"] .notice-card-dot{background:#c50f1f;box-shadow:0 0 0 2px rgba(197,15,31,.18)}
.server-status-row{color:#3b3a39;font-size:12px}
.server-status-warn{color:#8a5a00;font-weight:700}
.server-status-features span{display:block}
.server-status-debug{color:#797775;font-size:11.5px}
.server-status-muted{color:#9aa0a6;font-weight:400}
.server-status-admin{margin-top:6px;padding-top:7px;border-top:1px dashed #d8d2c4;display:grid;gap:5px}
.server-status-admin strong{color:#185c37;font-size:12px}
.server-status-admin-counts,.server-status-flags{display:flex;flex-wrap:wrap;gap:4px 8px;color:#605e5c;font-size:11.5px}
.server-status-flags span{padding:1px 5px;border:1px solid #e1dfdd;border-radius:999px;background:#faf9f8}
.server-status-admin-actions{display:flex;flex-wrap:wrap;gap:5px}
.server-status-admin-actions button{height:22px;border:1px solid #c8c6c4;border-radius:4px;background:#fff;color:#323130;font:inherit;font-size:11px;font-weight:700;padding:0 7px;cursor:pointer}
.server-status-admin-actions button:hover:not(:disabled){background:#f3f6f4;border-color:#9db9a7}
.server-status-admin-actions button:disabled{opacity:.6;cursor:progress}
/* 옛 .updates-notice 스타일도 .notice-card 로 흡수됨.
 * 만든사람 커피값 카드는 이제 data-accent="coffee" 로 처리. */
.updates-error{color:#a4262c}
@media(max-width:760px){
  .toast-stack{bottom:calc(150px + env(safe-area-inset-bottom))}
  .toast.desktop-notice{min-width:min(350px,calc(100vw - 16px));max-width:calc(100vw - 16px);padding:10px 14px;border-radius:14px;font-size:12.5px}
  .loading-toast{bottom:calc(150px + env(safe-area-inset-bottom));padding:9px 13px;font-size:12px}
  .statusbar{padding:4px 8px env(safe-area-inset-bottom)}
  .statusbar .left-cluster{gap:5px}
  .statusbar .tagline-pin{display:none}
  .statusbar .right-cluster{font-size:10.5px}
  .statusbar .view-label{display:none}
  .updates-button{padding:0 5px;font-size:10px}
  .floating-restore{gap:3px}
  .floating-restore button{padding:0 5px;font-size:10px}
  .bookmark-button{display:none}
  .readability-button{max-width:74px}
  .updates-panel{left:8px;right:8px;bottom:calc(34px + env(safe-area-inset-bottom));width:auto;max-height:min(76vh,620px)}
  .updates-head{padding-left:10px}
  .updates-source{display:none}
  .updates-body{padding:12px 12px 16px}
  .updates-table{font-size:11px}
  .updates-table-wide{min-width:700px}
  .updates-table th,.updates-table td{padding:5px 6px}
  .updates-table th:first-child,.updates-table td:first-child{min-width:58px}
  .notice-card{font-size:11.5px}
  .notice-card-summary{padding:6px 9px}
  .notice-card-detail{padding:8px 9px}
  .notice-card-title em{font-size:11px}
}
@media(max-width:390px){
  .statusbar #statusLeft{display:none}
}

/* === Floating Telegram CTA === */
.tg-cta{position:fixed;right:18px;bottom:calc(64px + env(safe-area-inset-bottom));display:inline-flex;align-items:center;gap:9px;padding:11px 16px 11px 14px;background:linear-gradient(135deg,#37aee2,#179cde);color:#fff;border-radius:999px;font-size:13px;font-weight:600;text-decoration:none;box-shadow:0 8px 22px rgba(23,156,222,.42),0 2px 6px rgba(0,0,0,.12);z-index:60;letter-spacing:.1px;transition:transform 120ms ease,box-shadow 120ms ease}
.tg-cta:hover{transform:translateY(-1px);box-shadow:0 12px 28px rgba(23,156,222,.5),0 3px 8px rgba(0,0,0,.14)}
.tg-cta:active{transform:translateY(0)}
.tg-cta svg{width:18px;height:18px;flex-shrink:0}
.tg-cta .tg-pulse{position:absolute;top:-2px;right:-2px;width:10px;height:10px;border-radius:50%;background:#ff5252;border:2px solid #fff;animation:tgpulse 1.6s ease-in-out infinite}
@keyframes tgpulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.25);opacity:.7}}
@media(max-width:520px){
  .tg-cta{right:10px;bottom:calc(60px + env(safe-area-inset-bottom));padding:10px 14px;font-size:12px}
}

/* === Floating chat === */
.floating-actions{position:fixed;right:18px;bottom:calc(56px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:10px;z-index:210}
.floating-actions.is-hidden{display:none}
.float-wrap{position:relative;display:inline-flex;align-items:center}
.float-wrap.is-hidden{display:none}
.floating-actions .tg-cta{position:relative;right:auto;bottom:auto}
.chat-cta{position:relative;display:inline-flex;align-items:center;gap:8px;padding:11px 15px;background:linear-gradient(135deg,#107c41,#0b6a36);color:#fff;border:0;border-radius:999px;font-size:13px;font-weight:700;font-family:inherit;cursor:pointer;box-shadow:0 8px 22px rgba(16,124,65,.36),0 2px 6px rgba(0,0,0,.12);transition:transform 120ms ease,box-shadow 120ms ease,background 120ms ease;overflow:visible}
.chat-cta:hover{transform:translateY(-1px);box-shadow:0 12px 28px rgba(16,124,65,.44),0 3px 8px rgba(0,0,0,.14)}
.chat-cta.has-unread{background:linear-gradient(135deg,#d83b01,#a4262c);box-shadow:0 8px 22px rgba(216,59,1,.34),0 2px 6px rgba(0,0,0,.12)}
.chat-cta svg{width:18px;height:18px;flex-shrink:0}
.chat-new-badge{position:absolute;top:-2px;right:-2px;width:10px;height:10px;border-radius:50%;background:#ff5252;border:2px solid #fff;display:inline-block;font-size:0;line-height:0;color:transparent;animation:tgpulse 1.6s ease-in-out infinite}
.chat-cta .chat-dot{position:absolute;top:-2px;right:-2px;width:10px;height:10px;border-radius:50%;background:#ff5252;border:2px solid #fff;display:none}
.chat-cta.has-unread .chat-dot{display:block}
.chat-cta.has-unread .chat-new-badge{display:none}
@keyframes chatNewPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.08)}}
.chat-panel{position:fixed;right:18px;bottom:calc(116px + env(safe-area-inset-bottom));width:min(380px,calc(100vw - 36px));height:484px;max-height:min(70vh,560px);background:#fff;border:1px solid #b7c9bf;border-radius:12px;box-shadow:0 18px 48px rgba(0,0,0,.26),0 4px 12px rgba(0,0,0,.12);z-index:240;display:none;overflow:hidden;color:#252423;opacity:var(--chat-panel-opacity,1);transition:opacity 120ms ease}
.chat-panel.is-large{width:min(500px,calc(100vw - 36px));height:620px;max-height:min(82vh,680px)}
.chat-panel.open{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto minmax(0,1fr) auto}
.chat-head{background:var(--chat-head-bg);color:var(--titlebar-fg);padding:7px 10px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.chat-title{display:flex;align-items:center;gap:7px;min-width:0;flex:1 1 auto;overflow:hidden;white-space:nowrap;font-size:12.5px;font-weight:700}
.chat-title > span:first-child{flex:0 0 auto;white-space:nowrap}
.chat-title small{display:flex;align-items:center;gap:5px;min-width:0;flex:1 1 auto;overflow:hidden;white-space:nowrap;font-size:10px;font-weight:500;opacity:.92;margin-top:0}
.chat-title small span:last-child{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-live-dot{width:7px;height:7px;border-radius:50%;background:#72f6a8;box-shadow:0 0 0 0 rgba(114,246,168,.58),0 0 10px rgba(114,246,168,.82);display:inline-block;flex:0 0 auto;animation:chatLivePulse 1.45s ease-in-out infinite}
@keyframes chatLivePulse{0%,100%{transform:scale(.82);box-shadow:0 0 0 0 rgba(114,246,168,.50),0 0 8px rgba(114,246,168,.80)}50%{transform:scale(1);box-shadow:0 0 0 5px rgba(114,246,168,0),0 0 13px rgba(114,246,168,.96)}}
.chat-head-actions{display:flex;align-items:center;gap:5px;flex:0 0 auto}
.chat-close,.chat-size-toggle,.chat-head-btn{width:24px;height:24px;border:0;border-radius:50%;background:rgba(255,255,255,.14);color:var(--titlebar-fg);cursor:pointer;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;padding:0;flex:0 0 auto}
.chat-size-toggle{font-size:13px;font-weight:800}
.chat-close svg,.chat-size-toggle svg,.chat-head-btn svg{display:block;width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round}
.chat-excel-toggle svg{width:15.5px;height:15.5px}
.chat-dock-toggle svg{width:16px;height:16px}
.chat-close svg{width:14.5px;height:14.5px}
.chat-head-btn.is-active{background:rgba(255,255,255,.42);color:#fff}
.chat-dock-toggle[hidden]{display:none!important}
.chat-close:hover,.chat-size-toggle:hover,.chat-head-btn:hover{background:rgba(255,255,255,.24)}
@media(min-width:761px) and (hover:hover) and (pointer:fine){
  .chat-head{cursor:grab;user-select:none;touch-action:none}
  .chat-head-actions{cursor:auto}
  .chat-head-actions button{cursor:pointer}
  .chat-panel.is-dragging{user-select:none}
  .chat-panel.is-dragging .chat-head{cursor:grabbing}
}
/* 채팅 엑셀 모드 — 시세표/종토방과 같은 표 스타일로 렌더 */
.chat-excel-table{width:100%;max-width:100%;min-width:0;border-collapse:collapse;table-layout:fixed;background:#fff;font-size:11.4px;color:#3a3f44}
.chat-excel-table col.chat-excel-col-rownum{width:30px}
.chat-excel-table col.chat-excel-col-nick{width:36px}
.chat-excel-table col.chat-excel-col-body{width:auto}
.chat-excel-table col.chat-excel-col-time{width:46px}
.chat-excel-table th,.chat-excel-table td{border:1px solid var(--grid);padding:3px 5px;font-size:11.4px;line-height:1.38;vertical-align:top;overflow:hidden;word-break:break-word;background-clip:padding-box}
.chat-excel-table tbody .rownum{background:var(--head);color:#666;font-weight:600;text-align:right;font-size:10.5px;vertical-align:middle}
.chat-excel-meta-row td:not(.rownum){height:18px;padding-top:2px;padding-bottom:2px;background:#f8faf9;color:#68717d}
.chat-excel-body-row td:not(.rownum){background:#fff}
.chat-excel-row.own td:not(.rownum){background:#f7fbf8}
.chat-excel-row.admin td:not(.rownum){background:#fbfcfb}
.chat-excel-row.moderated td{color:#9aa0a6;background:#f6f7f8}
.chat-excel-table td.chat-excel-nick{color:#3f6b52;font-weight:650;font-size:10.6px;letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.chat-excel-row.own .chat-excel-nick{color:#0c5b30}
.chat-nick.admin-nick{display:inline-flex;align-items:center;justify-content:center;max-width:100%;height:17px;padding:0 6px;border-radius:3px;background:#107c41;color:#fff!important;border:1px solid #0b6a36;font-weight:800;line-height:1;vertical-align:middle;box-shadow:inset 0 -1px 0 rgba(0,0,0,.12)}
.chat-excel-table td.chat-excel-nick.admin-nick{color:#3f6b52!important;font-weight:700}
.chat-excel-table td.chat-excel-time{color:#797775;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:10.5px;vertical-align:middle}
.chat-excel-body{position:relative;white-space:pre-wrap;line-height:1.42;min-width:0;max-width:100%;padding:4px 42px 5px 5px!important;color:#333b44}
.chat-excel-body .message-image-list{max-width:100%;overflow:hidden}
.chat-excel-body .message-image-preview{max-width:100%}
.chat-excel-report{height:18px;padding:0 5px;border:1px solid #e1dfdd;background:rgba(255,255,255,.92);color:#8a6d3b;cursor:pointer;font-size:10.5px;border-radius:2px;vertical-align:middle}
.chat-excel-report:hover:not(:disabled){background:#fff3d6}
.chat-excel-report:disabled{opacity:.35;cursor:default}
.chat-excel-row-actions{position:absolute;right:4px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;gap:3px;opacity:0;pointer-events:none;transition:opacity .12s ease;white-space:nowrap}
.chat-excel-row:hover .chat-excel-row-actions,
.chat-excel-row:focus-within .chat-excel-row-actions{opacity:1;pointer-events:auto}
.chat-excel-actions{display:inline-flex;align-items:center;gap:3px;white-space:nowrap;vertical-align:middle}
.chat-excel-actions .chat-admin-action{font-size:10.5px;padding:0 4px;height:18px;line-height:18px;display:inline-flex;align-items:center}
.chat-excel-warn{color:#dba514;margin-left:2px}
.chat-panel.chat-excel-mode .chat-body{padding:0;background:#fff;gap:0;overflow-x:hidden}
.chat-panel.chat-excel-mode .chat-sleep-notice{margin:6px 8px;font-size:11px}
body.excel-dark-mode:not(.theme-outlook) .chat-excel-table{background:var(--bg);color:var(--txt)}
body.excel-dark-mode:not(.theme-outlook) .chat-excel-meta-row td:not(.rownum){background:#1b2220;color:#9aa8a2}
body.excel-dark-mode:not(.theme-outlook) .chat-excel-body-row td:not(.rownum){background:var(--bg)}
body.excel-dark-mode:not(.theme-outlook) .chat-excel-row.own td:not(.rownum){background:#18251f}
body.excel-dark-mode:not(.theme-outlook) .chat-excel-row.admin td:not(.rownum){background:#19201d}
body.excel-dark-mode:not(.theme-outlook) .chat-excel-row.moderated td{background:#1c2026;color:#9aa0a6}
body.excel-dark-mode:not(.theme-outlook) .chat-excel-nick{color:#9de8bb}
body.excel-dark-mode:not(.theme-outlook) .chat-excel-nick.admin-nick,
body.excel-dark-mode:not(.theme-outlook) .chat-nick.admin-nick{background:#21a366;color:#06180f!important;border-color:#6ee7a2}
body.excel-dark-mode:not(.theme-outlook) .chat-excel-nick.admin-nick{background:#19201d!important;color:#a6c8b5!important;border-color:var(--grid)!important}
body.excel-dark-mode:not(.theme-outlook) .chat-excel-body{color:#c8d1d9}
@media(hover:none){
  .chat-excel-row-actions{opacity:1;pointer-events:auto}
}
body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook) .chat-close,
body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook) .chat-size-toggle{background:rgba(0,0,0,.06);color:#424242}
body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook) .chat-close:hover,
body.excel-theme-silver:not(.excel-dark-mode):not(.theme-outlook) .chat-size-toggle:hover{background:rgba(0,0,0,.12)}
.chat-ad-line{min-height:29px;display:flex;align-items:center;gap:7px;padding:5px 10px;border-bottom:1px solid #d9e3dc;background:#f4fbf6;color:#4a5054;font-size:12px;line-height:1.3;white-space:nowrap;overflow:hidden}
.chat-ad-line .ad-badge{flex:0 0 auto}
.chat-ad-line .ad-copy{min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:12px;font-weight:560}
/* 본문 색에 맞춘 톤다운 링크 — 색은 본문 톤, underline 은 명확하게. */
.chat-ad-line a{position:relative;display:inline-block;padding-right:13px;color:inherit;font-weight:600;text-decoration:none;box-shadow:inset 0 -.5px 0 rgba(74,80,84,.72);overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}
.chat-ad-line a::after{content:"↗";position:absolute;right:0;top:50%;transform:translateY(-52%);font-size:.86em;line-height:1;opacity:.72;text-decoration:none}
.chat-ad-line a:hover{color:#107c41;box-shadow:inset 0 -1px 0 currentColor}
.chat-ad-line a:hover::after{opacity:1}
/* 후원자 마쿼 — 채팅 입력창 아래의 얇은 회색 정보 라인. 라벨과 ticker 영역을
 * flex 로 분리해 흐르는 글자가 제목 영역을 침범하지 않게 한다. */
.chat-donor-marquee{position:relative;display:flex;align-items:center;width:100%;height:24px;min-height:24px;border-bottom:1px solid #dedede;background:#f3f3f3;color:#5f6368;font-size:11px;line-height:1.25;overflow:hidden}
.chat-donor-marquee[hidden]{display:none!important}
.chat-donor-track{position:relative;order:1;display:flex;align-items:center;min-width:0;height:100%;flex:1 1 auto;overflow:hidden;background:#f8f8f8}
.chat-donor-strip{display:inline-flex;align-items:center;gap:8px;white-space:nowrap;flex-shrink:0;will-change:transform;animation:chatDonorScroll var(--chat-donor-duration,30s) linear infinite;animation-delay:var(--chat-donor-delay,5s);animation-fill-mode:both;padding:0 12px}
.chat-donor-item{display:inline-flex;align-items:baseline;gap:4px;color:#5f6368}
.chat-donor-amount{font-weight:650;color:#4f545a;font-variant-numeric:tabular-nums}
.chat-donor-nick{font-weight:600;color:#4f545a}
.chat-donor-note{color:#7f858b;font-size:10.5px;font-style:normal}
.chat-donor-sep{color:#c7c7c7;margin:0}
.chat-donor-label{position:relative;order:0;z-index:1;display:flex;align-items:center;align-self:stretch;flex:0 0 auto;max-width:48%;padding:0 10px;font-weight:600;font-size:11px;letter-spacing:0;color:#4f545a;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;background:#f3f3f3;border-right:1px solid #dedede}
.chat-donor-label.chat-donor-label-click{pointer-events:auto;cursor:pointer;text-decoration:underline;text-decoration-color:rgba(0,0,0,.18);text-underline-offset:2px}
.chat-donor-label.chat-donor-label-click:hover{background:#e8e8e8;color:#252423;text-decoration-color:rgba(0,0,0,.42)}
.chat-donor-label.chat-donor-label-click:focus-visible{outline:2px solid #107c41;outline-offset:-2px}
.chat-donor-label[hidden]{display:none!important}
.chat-donor-marquee-inline{height:18px;min-height:18px;border:0;border-top:1px solid #e1dfdd;border-radius:0;background:#f7f7f7;font-size:10px;color:#666d73}
.chat-donor-marquee-inline .chat-donor-track{background:#fbfbfb}
.chat-donor-marquee-inline .chat-donor-label{background:#f7f7f7;border-color:#e1dfdd;font-size:10px;font-weight:500;padding:0 7px;max-width:45%;color:#5f666d}
.chat-donor-marquee-inline .chat-donor-amount{font-weight:500;color:#586069}
.chat-donor-marquee-inline .chat-donor-nick{font-weight:500;color:#586069}
.chat-donor-marquee-inline .chat-donor-note{font-size:9.5px;color:#8a8f98}
@keyframes chatDonorScroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-marquee{background:#22262b;border-color:#363a40;color:#aeb4bb}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-track{background:#1f2328}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-label{color:#d1d5db;background:#22262b;border-color:#363a40}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-label.chat-donor-label-click{text-decoration-color:rgba(255,255,255,.22)}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-label.chat-donor-label-click:hover{background:#2a2f35;color:#f3f7f8;text-decoration-color:rgba(255,255,255,.5)}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-amount{color:#d1d5db}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-nick{color:#c7ccd2}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-note{color:#8f98a3}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-sep{color:#525860}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-marquee-inline{background:#1f2328;border-color:#363a40;color:#aeb4bb}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-marquee-inline .chat-donor-track{background:#1b1f24}
body.excel-dark-mode:not(.theme-outlook) .chat-donor-marquee-inline .chat-donor-label{background:#1f2328;border-color:#363a40;color:#c4cad0}
@media(max-width:760px){
  .chat-donor-marquee{height:23px;min-height:23px;font-size:10.5px}
  .chat-donor-label{font-size:10.5px;padding:0 8px;max-width:50%}
  .chat-donor-marquee-inline{height:18px;min-height:18px}
  .chat-donor-marquee-inline .chat-donor-label{max-width:48%;font-size:9.5px;padding:0 6px}
  .chat-donor-strip{gap:7px;padding:0 10px}
  .chat-donor-note{display:none}
}
.chat-body{position:relative;min-width:0;min-height:0;padding:8px;background:#f7faf8;overflow:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:6px;scrollbar-width:none;-ms-overflow-style:none}
.chat-body::-webkit-scrollbar{width:0;height:0}
.chat-empty,.chat-system{margin:auto;text-align:center;color:#6b7280;font-size:12px;line-height:1.5;max-width:280px}
.chat-system{margin:12px auto;background:#fff;border:1px solid #e1dfdd;border-radius:8px;padding:12px}
.chat-loading{margin:auto;display:grid;justify-items:center;gap:8px;text-align:center;color:#5f6b63;font-size:12px;line-height:1.45}
.chat-loading b{font-size:13px;color:#252423}
.chat-loading small{font-size:11px;color:#7b8490}
.chat-loading-inline{align-self:center;display:inline-flex;align-items:center;gap:7px;margin:2px auto 0;padding:6px 10px;border:1px solid #e1dfdd;border-radius:999px;background:#fff;color:#6b7280;font-size:11px}
.chat-loading-spin{width:18px;height:18px;border-radius:50%;border:2px solid rgba(16,124,65,.16);border-top-color:#107c41;animation:chatSpin .8s linear infinite}
@keyframes chatSpin{to{transform:rotate(360deg)}}
.chat-sleep-notice{align-self:stretch;box-sizing:border-box;min-width:0;width:auto;max-width:none;margin:4px 0 0;background:#fff8e1;border:1px solid #ead38a;border-radius:8px;padding:8px 10px;color:#6b5a12;font-size:11.5px;line-height:1.45;text-align:left;white-space:normal;overflow:visible;overflow-wrap:anywhere;word-break:normal}
.chat-new-inline{position:sticky;bottom:8px;z-index:8;align-self:center;display:inline-flex;align-items:center;justify-content:center;margin:2px auto 0;padding:6px 12px;border:1px solid rgba(255,255,255,.56);border-radius:999px;background:#107c41;color:#fff;font:inherit;font-size:11.5px;font-weight:800;line-height:1;box-shadow:0 8px 20px rgba(0,0,0,.2);cursor:pointer}
.chat-new-inline:hover{background:#0c6a36}
.chat-msg{background:#fff;border:1px solid #e1dfdd;border-radius:8px;padding:6px 7px;box-shadow:0 1px 2px rgba(0,0,0,.03)}
.chat-msg.own{background:#eef8f0;border-color:#cfe7d7}
.chat-msg.admin{background:#f7fbf8;border-color:#b7d9c4}
.chat-msg.moderated{background:#f3f4f6;border-color:#d8dde3;border-style:dashed;box-shadow:none}
.chat-moderated-text{color:#7b8490;font-size:11.5px;line-height:1.4;text-align:center}
.chat-meta{display:flex;align-items:center;gap:5px;margin-bottom:3px;font-size:10.5px;color:#6b7280}
.chat-nick{font-weight:800;color:#107c41;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-time{margin-left:auto;font-variant-numeric:tabular-nums}
.chat-report{border:0;background:transparent;color:#8a6d3b;cursor:pointer;font-size:10.5px;padding:0 2px}
.chat-report:hover{text-decoration:underline}
.chat-report[disabled]{opacity:.35;cursor:default;text-decoration:none}
.chat-admin-actions{display:inline-flex;align-items:center;gap:4px;margin-left:2px}
.chat-admin-action{border:0;background:transparent;color:#775000;cursor:pointer;font-size:10.5px;font-weight:800;padding:0 2px}
.chat-admin-action.admin-action-danger{border:0;background:transparent;color:#a4262c}
.chat-admin-action:hover{text-decoration:underline}
.chat-admin-action.admin-action-danger:hover{background:transparent}
.chat-admin-action:disabled{opacity:.45;cursor:progress;text-decoration:none}
.chat-text{white-space:pre-wrap;word-break:break-word;font-size:12.3px;line-height:1.36}
.chat-text .message-image-preview img{max-height:132px}
.chat-composer{box-sizing:border-box;width:100%;min-width:0;max-width:100%;overflow:hidden;border-top:1px solid #e1dfdd;background:#fff;padding:8px;display:grid;grid-template-columns:84px minmax(0,1fr) 34px 50px;gap:6px;align-items:center}
.chat-composer > *{box-sizing:border-box;min-width:0}
.chat-attach,.community-attach{display:inline-flex;align-items:center;justify-content:center;border:1px solid #d0d7de;background:#f6f8fa;color:#586069;padding:0;cursor:pointer;box-sizing:border-box}
.chat-attach{height:34px;width:34px;border-radius:8px}
.community-attach{border-radius:3px}
.chat-attach:hover,.community-attach:hover{background:#eef3f8;color:#107c41}
.chat-attach:disabled,.community-attach:disabled{opacity:.45;cursor:default}
.chat-composer.is-sending{background:#f7faf8}
.chat-nickname{width:100%;height:34px;border:1px solid #d0d7de;border-radius:8px;padding:0 7px;font:inherit;font-size:12px;font-weight:700;color:#107c41;min-width:0}
.chat-input{width:100%;height:34px;border:1px solid #d0d7de;border-radius:8px;padding:0 10px;font:inherit;font-size:12.5px;min-width:0}
.chat-nickname:disabled,.chat-input:disabled{opacity:1;background:#f3f6f4;color:#52606c;-webkit-text-fill-color:#52606c;cursor:progress}
.chat-send{display:inline-flex;align-items:center;justify-content:center;width:100%;min-width:0;height:34px;border:0;border-radius:8px;background:#107c41;color:#fff;padding:0 8px;font:inherit;font-weight:800;white-space:nowrap;cursor:pointer}
.chat-send:disabled{opacity:.45;cursor:default}
.chat-composer.is-sending .chat-send:disabled{opacity:.78;cursor:progress;font-size:11px;padding:0 6px}
.chat-footnote{grid-column:1 / -1;margin:2px -8px -8px;color:#8a8f98;font-size:10.5px;line-height:1.3}
.chat-footnote[hidden]{display:none!important}
body.excel-dark-mode:not(.theme-outlook) .message-image-preview{background:#11161b;border-color:#3a424a}
body.excel-dark-mode:not(.theme-outlook) .message-image-preview:hover{border-color:#5a8d6b}
body.excel-dark-mode:not(.theme-outlook) .community-image-toggle{background:#11161b;border-color:#3a424a;color:#7cd6a2}
body.excel-dark-mode:not(.theme-outlook) .community-image-toggle:hover{background:#17231c;border-color:#5a8d6b}
body.excel-dark-mode:not(.theme-outlook) .chat-attach,
body.excel-dark-mode:not(.theme-outlook) .community-attach{background:#11161b;border-color:#3a424a;color:#aab3bb}
body.excel-dark-mode:not(.theme-outlook) .chat-attach:hover,
body.excel-dark-mode:not(.theme-outlook) .community-attach:hover{background:#17231c;color:#7cd6a2;border-color:#5a8d6b}
body.excel-dark-mode:not(.theme-outlook) .chat-new-inline{border-color:#295d3d;background:#21a366;color:#06180f;box-shadow:0 8px 22px rgba(0,0,0,.42)}
body.excel-dark-mode:not(.theme-outlook) .chat-new-inline:hover{background:#38bd7b}
@media(max-width:760px){
  .floating-actions{right:10px;bottom:calc(88px + env(safe-area-inset-bottom));gap:8px}
  .floating-actions .tg-cta{padding:10px 13px;font-size:12px}
  .chat-cta{padding:10px 13px;font-size:12px}
  .chat-cta .lbl{display:inline}
  body.theme-outlook .floating-actions{right:12px;bottom:calc(18px + env(safe-area-inset-bottom))}
  body.chat-open .statusbar{display:none}
  body.chat-open .floating-actions{display:none}
  body.chat-open .app{padding-bottom:0}
  .chat-panel{left:0;right:0;bottom:0;width:auto;height:min(590px,82dvh);max-height:calc(100dvh - 8px);border-radius:12px 12px 0 0}
  .chat-panel.is-positioned{left:0!important;right:0!important;top:auto!important;bottom:0!important}
  .chat-panel.is-large{width:auto;height:min(590px,82dvh);max-height:calc(100dvh - 8px)}
  .chat-size-toggle{display:none}
  .chat-composer{grid-template-columns:66px minmax(0,1fr) 34px 44px;gap:4px;padding:6px}
  .chat-attach{height:34px;width:34px;border-radius:8px}
  .chat-panel.open .chat-composer{padding-bottom:calc(7px + env(safe-area-inset-bottom))}
  .chat-footnote{margin:2px -7px -7px}
  .chat-nickname{font-size:var(--mobile-form-font-size)!important;letter-spacing:-.25px;padding:0 6px}
  .chat-input{font-size:var(--mobile-form-font-size)!important}
  .chat-send{padding:0 6px}
  .watchlist-add input,
  .chat-input,
  .chat-nickname,
  .holding-inline input,
  #timelineTable.community-table .community-nick-input,
  #timelineTable.community-table .community-post-input{font-size:var(--mobile-form-font-size)!important}
  .watchlist-add input::placeholder,
  .chat-nickname::placeholder,
  .chat-input::placeholder,
  #timelineTable.community-table .community-post-input::placeholder{font-size:var(--mobile-form-placeholder-size)!important;line-height:normal;color:#8a8f98;opacity:1}
}

/* === Cell selection — 진짜 Excel 처럼 ===
 *  - 단일 셀 클릭: 굵은 초록 outline 만, 음영(fill) 없음
 *  - 드래그 범위 선택: anchor 셀은 그대로 흰색 + outline, 나머지 범위 셀에만
 *    아주 옅은 초록 fill, 범위 4면 둘레에 굵은 초록 perimeter 테두리
 *  - 행번호·열헤더에 범위 인디케이터(짙은 초록)
 *
 *  position:relative 가 sticky 헤더(top:0, top:24px)를 깨뜨려 종토방 상단 행이
 *  24px 만큼 아래로 어긋났던 적이 있어, sticky 가 아닌 셀에만 좁혀서 적용한다. */
.sheet table{user-select:none;-webkit-user-select:none}
/* th 셀(헤더)은 sticky 가 적용돼 있다. sticky 도 positioned value 라 ::after 의
 * position:absolute 가 정상 동작하므로, sticky 를 relative 로 덮어쓰지 않는다.
 * td 만 relative 로 두면 충분. */
.sheet td.excel-active-cell,
.sheet td.excel-selected-cell,
.sheet td.excel-range-cell,
.sheet td.selected-cell{position:relative}
.sheet td:not(.rownum),.sheet th:not(.rownum){cursor:cell}
.sheet a,.sheet button,.sheet input,.sheet select,.sheet textarea,.sheet label,.sheet [contenteditable="true"]{user-select:text;-webkit-user-select:text}
body.sheet-cell-selecting,body.sheet-cell-selecting *{user-select:none!important;-webkit-user-select:none!important}

/* 범위 모든 셀에 perimeter 테두리가 그려지도록 한다. anchor(active) 셀이 범위의 모서리에
 * 닿아 있어도 그 변의 굵은 초록 테두리가 빠지지 않아야 한다.
 * fill 만 anchor 에서는 제외 (anchor 는 흰색을 유지). */
.sheet td.excel-range-cell,.sheet th.excel-range-cell{
  --rng-fill:0 0 transparent;
  --rng-border-top:0;
  --rng-border-right:0;
  --rng-border-bottom:0;
  --rng-border-left:0;
  box-shadow:var(--rng-fill);
  background-clip:padding-box;
}
.sheet td.excel-range-cell::before,.sheet th.excel-range-cell::before{
  content:"";
  position:absolute;
  inset:-1px;
  border-style:solid;
  border-color:var(--excel);
  border-width:var(--rng-border-top) var(--rng-border-right) var(--rng-border-bottom) var(--rng-border-left);
  pointer-events:none;
  z-index:8;
}
.sheet td.excel-range-cell:not(.excel-active-cell),
.sheet th.excel-range-cell:not(.excel-active-cell){--rng-fill:inset 0 0 0 9999px rgba(33,163,102,.07)}
.sheet td.excel-range-top,.sheet th.excel-range-top{--rng-border-top:2px}
.sheet td.excel-range-bottom,.sheet th.excel-range-bottom{--rng-border-bottom:2px}
.sheet td.excel-range-left,.sheet th.excel-range-left{--rng-border-left:2px}
.sheet td.excel-range-right,.sheet th.excel-range-right{--rng-border-right:2px}

/* Active(anchor) 셀 — 단일 선택일 때만 굵은 초록 outline.
 * 범위 선택일 때 anchor 는 평범한 흰색 셀로 두고, fill-handle 은 범위 우하단으로 옮겨
 * 진짜 Excel 처럼 보이게 한다. */
.sheet td.excel-active-cell:not(.excel-range-cell),
.sheet th.excel-active-cell:not(.excel-range-cell){
  outline:2px solid var(--excel);
  outline-offset:-2px;
  z-index:9;
  background-clip:padding-box;
}
/* fill-handle (우하단 초록 사각형 점) — 단일 cell 모드에선 active 에, 범위 모드에선 우하단 cell 에 */
.sheet td.excel-range-bottomright,.sheet th.excel-range-bottomright{position:relative;z-index:9}
.sheet td.excel-active-cell:not(.excel-range-cell)::after,
.sheet th.excel-active-cell:not(.excel-range-cell)::after,
.sheet td.excel-range-bottomright::after,
.sheet th.excel-range-bottomright::after{
  content:"";
  position:absolute;
  right:-3px;
  bottom:-3px;
  width:7px;
  height:7px;
  background:var(--excel);
  border:1px solid #fff;
  box-sizing:border-box;
  pointer-events:none;
  z-index:10;
}

/* 행번호·열헤더 — 진짜 Excel 의 진한 초록 강조 톤 */
.sheet .excel-row-selected.rownum,
.sheet .excel-col-selected.colhead{
  background:#dbeee2!important;
  color:#0c5a2f!important;
  font-weight:700;
}

/* 다크모드 — fill 톤만 진하게, 보더는 그대로 사용 */
body.excel-dark-mode:not(.theme-outlook) .sheet td.excel-range-cell:not(.excel-active-cell),
body.excel-dark-mode:not(.theme-outlook) .sheet th.excel-range-cell:not(.excel-active-cell){--rng-fill:inset 0 0 0 9999px rgba(33,163,102,.14)}
body.excel-dark-mode:not(.theme-outlook) .sheet .excel-row-selected.rownum,
body.excel-dark-mode:not(.theme-outlook) .sheet .excel-col-selected.colhead{
  background:#1c3a25!important;
  color:#9de8bb!important;
}

/* === Menu polish — focus, transitions, separators === */
.tool:focus-visible,.split:focus-visible,.tool.big:focus-visible,.combo:focus-visible,
.quick button:focus-visible,.window button:focus-visible{outline:2px solid var(--excel);outline-offset:1px}
.tool,.split,.tool.big,.combo{transition:background 90ms ease,border-color 90ms ease}
.tool.big{transition:background 100ms ease,border-color 100ms ease,transform 100ms ease}
.tool.big:active{transform:scale(.97)}
/* Group separator: top/bottom inset 좀 더 자연스럽게 */
.group:not(:last-child)::after{top:10px;bottom:22px;background:linear-gradient(to bottom,transparent,#e1dfdd 12%,#e1dfdd 88%,transparent)}
/* 작은 caret 들이 더 정렬되어 보이게 */
.tool.big .caret,.split .caret,.combo .caret{transition:transform 120ms ease}
.tool.big:hover .caret,.split:hover .caret,.combo:hover .caret{transform:translateY(1px)}

/* === Progressive narrow: 760px 이하 — 모바일 폴리시 === */
@media(max-width:760px){
  .titlebar{grid-template-columns:auto 1fr auto;gap:6px;padding:0 6px;height:36px}
  .quick button,.window button{width:28px;height:26px}
  .ribbon{height:90px;padding:0 2px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
  .ribbon::-webkit-scrollbar{display:none}
  .tool.big{width:48px;height:68px;padding:3px 1px 5px}
  .tool.big .ic{font-size:18px;width:26px;height:26px}
  .tool.big .lbl{font-size:10.5px}
  .formula{grid-template-columns:70px 22px minmax(0,1fr) auto auto;height:28px;gap:3px}
  .namebox{padding:0 6px}
  .ribbon-inline-toggle{height:22px;padding:0 7px;font-size:10.5px}
  /* 모바일에서는 @kospigazua와 구분점 숨기고 session badge 만 유지 */
  .fx-meta .meta-link,
  .fx-meta .meta-sep{display:none}
  .fx-meta{gap:0;padding-left:4px;font-size:10.5px}
  .book-title{text-align:left;justify-content:flex-start}
  .book-title .ext,.book-title .star{display:none}
  .sheet{margin-left:0;margin-right:0;min-height:0}.sheet-title{margin-left:0;margin-right:0}
  /* 모바일은 빈 행 패딩 없음 → sheet 도 컨텐츠 높이만 차지 (하단 흰 공백 제거) */
  .sheet.summary{min-height:0;overflow-x:hidden;overflow-y:visible}
  .sheet.summary table{min-width:100%}
  .avatar{display:none}
  .ribbon-spacer{min-width:4px}
}

/* === Final Responsive Normalization ===
   리본은 폭별로 파편화하지 않고, 같은 구조를 유지한 채 내부 가로 스크롤만 허용한다.
   아래 규칙은 위의 점진적 축소 규칙을 의도적으로 덮어쓴다. */
.ribbon{
  overflow-x:auto;
  overflow-y:hidden;
  scrollbar-width:none;
  -ms-overflow-style:none;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-x:contain;
  max-width:100%;
}
.ribbon::-webkit-scrollbar{display:none}
.group.clipboard,.group.font,.group.align,.group.number,.group.styles,.group.cells,.group.editing,.group.data{
  display:grid !important;
  grid-template-rows:74px 16px !important;
  align-items:start !important;
  justify-items:center !important;
  height:94px !important;
  padding:4px 6px !important;
  flex:0 0 auto;
  scroll-snap-align:start;
}
.group-label{
  display:block !important;
  position:static !important;
  align-self:center !important;
  height:16px !important;
  line-height:16px !important;
  padding:0 !important;
  white-space:nowrap;
}
.group:not(:last-child)::after{top:10px !important;bottom:22px !important}
.tools,.commandcol{height:74px !important}
.group > div:first-child:not(.tools):not(.group-label){height:74px !important}
.group.font{min-width:232px !important}
.group.align{min-width:178px !important}
.group.number{min-width:142px !important}
.group.styles{min-width:172px !important}
.group.cells{min-width:108px !important}
.group.editing{min-width:142px !important}
.group.data{min-width:126px !important}
.group.font .selectrow,.group.align .selectrow{display:flex !important}
.group.font .selectrow .combo:first-child{
  display:inline-flex !important;
  min-width:104px !important;
  width:auto !important;
  max-width:none !important;
}
.group.font .combo.small{min-width:46px !important;width:auto !important;max-width:none !important}
.group.font .stack{grid-template-columns:repeat(6,24px) !important;grid-auto-rows:22px !important;gap:2px !important;padding-top:0 !important}
.group.font .stack .tool{width:24px !important;height:22px !important}
.group.font > div:first-child:not(.tools):not(.group-label){gap:8px !important;padding:6px 0 4px !important;justify-content:center !important;height:74px !important}
.group.editing .commandcol .split{font-size:11px !important;padding:0 6px !important}
.group.editing .commandcol .split .caret{display:inline !important}
.ribbon-actions{flex:0 0 auto}

/* === 좌우 gutter 는 :root 의 --gutter 변수가 단일 source of truth.
       모든 row 가 동일 var(--gutter) 패딩을 공유 → 가로 정렬 자동 일치 === */

@media(max-width:760px){
  :root{--gutter:6px}
  .ribbon{
    height:112px !important;
    scroll-snap-type:x proximity;
  }
  .group.clipboard,.group.font,.group.align,.group.number,.group.styles,.group.cells,.group.editing,.group.data{
    grid-template-rows:88px 18px !important;
    height:110px !important;
    padding:5px 6px !important;
  }
  .group-label{height:18px !important;line-height:18px !important;font-size:10.5px}
  .group:not(:last-child)::after{top:10px !important;bottom:28px !important}
  .tools,.commandcol{height:88px !important}
  .tool.big{height:88px !important;padding:7px 1px 8px}
  .group > div:first-child:not(.tools):not(.group-label){height:88px !important}
  .ribbon-actions{height:100%;align-self:stretch;padding:0 8px 28px 8px}
}

.watchlist-add{
  display:grid;
  grid-template-columns:minmax(190px,1fr) 58px 58px 28px 28px;
  align-items:center;
  gap:4px;
  min-width:0;
}
.watchlist-add input{width:100%;min-width:0}
.watchlist-add > select,.watchlist-add > button{min-width:0}
@media(max-width:420px){
  .watchlist-add{grid-template-columns:minmax(0,1fr) 52px 52px 28px 28px;gap:4px;padding-left:8px;padding-right:8px}
  .watchlist-add input,.watchlist-add > select{height:var(--ui-control-height-mobile)}
  .watchlist-add > select{width:100%;min-width:0;font-size:11px;padding-left:4px;padding-right:12px;background-position:right 4px center}
  .watchlist-add > button{height:var(--ui-control-height-mobile);min-width:0;justify-content:center;padding:0;border-radius:var(--ui-control-radius);font-size:10.6px;font-weight:var(--ui-control-font-weight);letter-spacing:-.04em}
  .watchlist-add .quote-sort-select{height:var(--ui-control-height-mobile);font-size:11px;padding-left:4px;padding-right:12px}
  .watchlist-add .watchlist-phone,
  .watchlist-add .watchlist-more{width:28px;font-size:16px}
  .watchlist-more-menu{right:8px;min-width:180px}
  .watchlist-phone-modal{place-items:start center;padding:calc(env(safe-area-inset-top,0px) + 10px) 9px calc(env(safe-area-inset-bottom,0px) + 10px)}
  .watchlist-phone-card{width:min(420px,calc(100vw - 18px));max-height:calc(100dvh - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px) - 20px);display:flex;flex-direction:column}
  .watchlist-phone-head{min-height:42px;padding:0 8px 0 12px;gap:7px;flex:0 0 auto}
  .watchlist-phone-title strong{font-size:12.5px}
  .watchlist-phone-body{padding:10px;gap:8px;overflow:auto;-webkit-overflow-scrolling:touch}
  .watchlist-phone-qr{width:min(280px,calc(100vw - 70px))}
  .watchlist-phone-underqr{max-width:29em;font-size:10.8px;line-height:1.34}
  .watchlist-phone-underqr span{display:block}
  .watchlist-phone-copy{padding:8px 9px;gap:3px}
  .watchlist-phone-copy strong{font-size:11.6px;line-height:1.32}
  .watchlist-phone-copy span{font-size:10.8px;line-height:1.34}
  .watchlist-phone-url{height:23px;font-size:10px}
  .watchlist-phone-actions{position:sticky;bottom:-1px;padding-top:4px;background:linear-gradient(180deg,rgba(255,255,255,0),#fff 28%,#fff)}
  .watchlist-phone-actions button{height:30px}
  @media(max-width:360px){
    .watchlist-add{grid-template-columns:minmax(0,1fr) 48px 48px 27px 27px;gap:3px}
    .watchlist-add > button{font-size:10.2px}
    .watchlist-add .quote-sort-select,
    .watchlist-add > select{font-size:10.6px}
    .watchlist-add .watchlist-phone,
    .watchlist-add .watchlist-more{width:27px}
    .watchlist-phone-body{padding:9px;gap:7px}
    .watchlist-phone-underqr{font-size:10.5px}
    .watchlist-phone-copy strong{font-size:11.3px}
    .watchlist-phone-copy span{font-size:10.5px}
    .watchlist-phone-title span{display:none}
  }
  .sheet.summary th.rownum,.sheet.summary td.rownum{width:30px}
  .sheet.summary th:nth-child(3),.sheet.summary td:nth-child(3){width:100px}
  .sheet.summary th:nth-child(4),.sheet.summary td:nth-child(4){width:63px}
  .quote-price-currency{left:5px;font-size:10px}
  body.readability-mode .sheet.summary th:nth-child(4),
  body.readability-mode .sheet.summary td:nth-child(4){width:92px}
}
@media(max-width:760px){
  #timelineTable.community-table .community-nick-input{font-size:var(--mobile-form-font-size)!important;line-height:1.25}
  #timelineTable.community-table .community-post-input,
  #timelineTable.community-table .community-post-input::placeholder{font-size:var(--mobile-form-font-size)!important;line-height:1.35!important}
  #watchlistMarket,#quoteSortMode{font-size:11px!important;line-height:1!important;font-weight:var(--ui-control-font-weight)!important}
  #chatNickname.chat-nickname{font-size:var(--mobile-form-font-size)!important}
  button{touch-action:manipulation}
  .tabs,.ribbon,.sheet{touch-action:pan-x pan-y}
}
