:root{--bg:#eef1f6;--surface:rgba(255,255,255,0.85);--card:#ffffff;--elev:#fafbfc;--line:#e7e9ef;--line-soft:#eef0f4;--ink:#1b1d23;--muted:#6b7280;--faint:#8a90a0;--chip:#e7eaf0;--toggle-off:#d4d8e0;--ok:#0f9d6b;--warn-bg:#fff6e9;--warn-line:#f3d6a4;--warn-ink:#7c4a03;--warn-sub:#9a6b1e;--danger-ink:#c0392b;--up:#1f8a4c;--down:#d23f33;--body:#3c4250;--hover:#e2e6ee;--line-strong:#d6dae4;--line-bright:#b7bfcd;--act:#b06f00;--act-ink:#ffffff;--act-soft:rgba(176,111,0,0.12);--fail-bg:#fdeceb;--fail-line:#f0c4c0;--accent:#2563eb;--accent-ink:#ffffff;--accent-soft:#eaf0ff;--radius:18px;--radius-lg:24px;--shadow:0 1px 3px rgba(0,0,0,0.08);--shadow-pop:0 18px 40px -16px rgba(20,30,60,0.35);--font:"Geist",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--font-mono:"Geist Mono",ui-monospace,SFMono-Regular,Menlo,monospace}:root[data-mode=trading]{--bg:#e6edef;--surface:rgba(243,247,248,0.88);--card:#ffffff;--elev:#f1f6f7;--line-soft:#e3ebed;--line:#d3dfe2;--line-strong:#bccbd0;--line-bright:#93a9b0;--ink:#10242b;--body:#33474f;--muted:#5c7178;--faint:#7b9199;--chip:#dce7ea;--hover:#e9f1f3;--toggle-off:#c5d4d8;--warn-bg:#fbf1dd;--warn-line:#e6cf9c;--warn-ink:#8a5c00;--warn-sub:#a07520;--fail-bg:#fceceb;--fail-line:#f0c6c1;--accent:var(--act);--accent-ink:var(--act-ink);--accent-soft:var(--act-soft)}:root[data-theme=dark]{--bg:#0b0d11;--surface:rgba(14,17,22,0.82);--card:#13171e;--elev:#0b0d11;--line:#20252e;--line-soft:#181d24;--ink:#e8eaed;--muted:#8b92a0;--faint:#6c7480;--chip:#191e26;--toggle-off:#2a313b;--ok:#25c26e;--warn-bg:#2a2110;--warn-line:#4a3a18;--warn-ink:#e9c46a;--warn-sub:#b89542;--danger-ink:#f0564a;--up:#25c26e;--down:#f0564a;--body:#c9ced8;--hover:#1b212a;--line-strong:#2a313b;--line-bright:#3b4552;--act:#f0a500;--act-ink:#2a1d00;--act-soft:rgba(240,165,0,0.16);--fail-bg:#2e1a1c;--fail-line:#4a2b2e;--accent:#5b8cff;--accent-ink:#ffffff;--accent-soft:rgba(91,140,255,0.16);--shadow-pop:0 18px 40px -16px rgba(0,0,0,0.6)}:root[data-theme=dark][data-mode=trading]{--bg:#1f2b2f;--surface:rgba(37,50,55,0.9);--card:#2a383e;--elev:#253237;--line-soft:#2f3f45;--line:#3a4d55;--line-strong:#405860;--line-bright:#55707a;--ink:#e0fbfc;--body:#c2dfe3;--muted:#9db4c0;--faint:#8aa3ad;--chip:#35474e;--hover:#33454c;--toggle-off:#3a4d55;--up:#25c26e;--down:#f0564a;--ok:#25c26e;--act:#f0a500;--act-ink:#2a1d00;--act-soft:rgba(240,165,0,0.16);--accent:var(--act);--accent-ink:var(--act-ink);--accent-soft:var(--act-soft);--warn-bg:#3a3018;--warn-line:#5a4418;--warn-ink:#f0a500;--warn-sub:#c08c1e;--danger-ink:#f0564a;--fail-bg:#3b2a2c;--fail-line:#5a3a37;--shadow:0 1px 3px rgba(0,0,0,0.22);--shadow-pop:0 18px 40px -16px rgba(0,0,0,0.55)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:18px;line-height:1.5;-webkit-text-size-adjust:100%;transition:background-color .25s ease,color .25s ease}.container{max-width:600px;margin:0 auto;padding:18px 16px 120px}h1{font-size:1.55rem;letter-spacing:-.01em;margin:.3em 0}h1,h2{font-weight:700}h2{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:1.4em 4px .6em}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin:12px 0}.card.center{text-align:center}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:52px;padding:13px 20px;font-size:1.05rem;font-weight:700;border-radius:14px;border:none;background:var(--accent);color:var(--accent-ink);text-decoration:none;cursor:pointer;width:100%;transition:filter .15s ease,transform .05s ease}.btn:hover{filter:brightness(1.04)}.btn:active{transform:scale(.985)}.btn.secondary{background:transparent;color:var(--accent);border:1.5px solid var(--line)}.badge{display:inline-block;font-size:.78rem;font-weight:600;padding:3px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent)}.badge.virtual{background:color-mix(in srgb,var(--ok) 14%,transparent);color:var(--ok)}input,select,textarea{width:100%;font-size:1rem;padding:13px;border:1.5px solid var(--line);border-radius:12px;background:var(--elev);color:var(--ink)}label{display:block;font-weight:600;margin:14px 0 6px;font-size:.85rem}.muted,label{color:var(--muted)}.center{text-align:center}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:var(--surface);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:11px 16px}.topbar-center{flex:1 1;display:flex;justify-content:center}.topbar-nav{display:flex;gap:2px;margin-left:4px}.topbar-spacer{display:none}@media (min-width:861px){.topbar-center{flex:0 0 auto;justify-content:flex-start}.topbar-spacer{display:block;flex:1 1}}.brand{width:26px;height:26px;border-radius:8px;background:linear-gradient(135deg,#2f6bff,#1e50d6);color:#fff;font-weight:800;font-size:14px}.brand,.icon-btn{flex:none;display:flex;align-items:center;justify-content:center}.icon-btn{width:34px;height:34px;border-radius:50%;border:none;background:var(--chip);color:var(--muted);font-size:15px}.icon-btn,.nav-tab{cursor:pointer;text-decoration:none}.nav-tab{padding:6px 12px;border-radius:8px;font-size:.82rem;font-weight:600;color:var(--faint)}.nav-tab.active{color:var(--ink);background:var(--chip)}.switch{width:50px;height:30px;border-radius:999px;background:var(--toggle-off);position:relative;flex:none;cursor:pointer;border:none;transition:background .18s ease}.switch.on{background:var(--accent)}.switch:after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:left .18s ease}.switch.on:after{left:23px}.row{display:flex;align-items:center;gap:12px}.row+.row{border-top:1px solid var(--line-soft);margin-top:4px;padding-top:14px}.row .row-main{flex:1 1}.row .row-title{font-weight:700;color:var(--ink);font-size:1rem}.row .row-sub{color:var(--muted);font-size:.85rem}.hero{border-radius:var(--radius-lg);padding:22px;color:#fff;position:relative;overflow:hidden;background:linear-gradient(150deg,#3b74ff,#1e4fd6);box-shadow:0 14px 30px -12px rgba(30,79,214,.55)}.hero:after{content:"";position:absolute;right:-30px;top:-30px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.1)}.hero .overline{font-size:.62rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;opacity:.85}.hero .countdown{font-size:3.4rem;font-weight:800;line-height:.9;letter-spacing:-.02em}.hero .countdown small{font-size:1.2rem;font-weight:600;opacity:.9;margin-left:6px}.appt-row{display:flex;align-items:center;gap:14px;padding:15px 16px}.appt-row+.appt-row{border-top:1px solid var(--line-soft)}.appt-time{width:64px;text-align:right;flex:none;font-weight:700;font-size:.95rem;color:var(--ink)}.appt-time small{display:block;font-size:.7rem;color:var(--faint);font-weight:500}.appt-rail{width:3px;align-self:stretch;min-height:38px;border-radius:3px;background:var(--accent);flex:none}.appt-rail.virtual{background:var(--ok)}.appt-title{font-weight:700;font-size:.97rem;color:var(--ink)}.appt-meta{color:var(--muted);font-size:.82rem}.leave-by{font-size:1.15rem;font-weight:700;color:var(--accent)}.leave-by .time{font-size:1.55rem}.conflict{display:flex;align-items:center;gap:12px;background:var(--warn-bg);border:1px solid var(--warn-line);border-radius:16px;padding:14px 16px;cursor:pointer;text-decoration:none}.conflict .conflict-ink{color:var(--warn-ink);font-weight:700}.conflict .conflict-sub{color:var(--warn-sub);font-size:.82rem}.dock{position:fixed;left:0;right:0;bottom:0;z-index:45;background:var(--surface);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);padding:12px 16px calc(14px + env(safe-area-inset-bottom))}.dock-inner{max-width:520px;margin:0 auto;gap:10px}.dock-inner,.mic{display:flex;align-items:center}.mic{min-width:56px;height:56px;border-radius:16px;border:none;cursor:pointer;flex:none;color:#fff;font-size:1.4rem;justify-content:center;background:linear-gradient(135deg,#2f6bff,#1e50d6);box-shadow:0 8px 20px -8px rgba(30,79,214,.6)}:root[data-mode=trading] .mic{background:linear-gradient(135deg,#25c26e,#178a4c)}.mic.recording{background:#f0564a;box-shadow:none;animation:pulseRing 1.2s infinite}.chat-log{max-height:50vh;overflow-y:auto}.bubble{padding:10px 14px;border-radius:16px;margin:6px 0;max-width:85%;width:-moz-fit-content;width:fit-content;font-size:.95rem;line-height:1.45;animation:fadeUp .25s ease}.bubble.user{background:var(--accent);color:var(--accent-ink);margin-left:auto;border-radius:16px 16px 4px 16px}.bubble.agent{background:var(--chip);color:var(--ink);border-radius:16px 16px 16px 4px}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px}.kpi .kpi-label{font-size:.65rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.kpi .kpi-value{font-size:1.6rem;font-weight:700;margin-top:6px;color:var(--ink)}.tbl{width:100%;border-collapse:collapse;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden}.tbl th{text-align:left;padding:10px 16px;font-family:var(--font-mono);font-size:.66rem;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line);font-weight:600}.tbl td{padding:13px 16px;border-top:1px solid var(--line-soft);font-size:.85rem;color:var(--ink)}.tbl td.num,.tbl td.sym{font-family:var(--font-mono)}.tbl td.sym{font-weight:600;color:var(--ink)}.tbl td.num{color:var(--muted)}.up{color:var(--up)}.down{color:var(--down)}.verdict{font-size:.62rem;font-weight:700;letter-spacing:.05em;padding:3px 9px;border-radius:999px}.verdict-buy{background:color-mix(in srgb,var(--ok) 16%,transparent);color:var(--ok)}.verdict-watch{background:color-mix(in srgb,#d6a52a 18%,transparent);color:#b8861f}.verdict-hold{background:color-mix(in srgb,var(--muted) 18%,transparent);color:var(--muted)}.verdict-sell{background:color-mix(in srgb,var(--down) 16%,transparent);color:var(--down)}.rail{width:320px;flex:none;background:var(--surface);border-left:1px solid var(--line);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:57px;height:calc(100vh - 57px)}.rail-head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:8px;font-weight:700;font-size:.82rem;color:var(--ink)}.rail-body{flex:1 1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:10px}.rail-foot{padding:12px;border-top:1px solid var(--line);display:flex;gap:8px;align-items:center}.sched-shell{display:flex;min-height:calc(100vh - 57px)}.sched-main{flex:1 1;min-width:0}@media (max-width:860px){.sched-shell{display:block;min-height:0}}.offline-banner{position:-webkit-sticky;position:sticky;top:0;z-index:200;background:#fde68a;color:#713f12;text-align:center;font-weight:600;padding:8px 12px;font-size:.9rem}@media (max-width:860px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.rail{display:none}.hide-mobile{display:none!important}}@media (min-width:861px){.show-mobile{display:none!important}}@keyframes pulseRing{0%{box-shadow:0 0 0 0 rgba(240,86,74,.5)}70%{box-shadow:0 0 0 16px rgba(240,86,74,0)}to{box-shadow:0 0 0 0 rgba(240,86,74,0)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.num,.tnum{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1,"tnum"}.num{text-align:right}.overline{font-size:10.5px;letter-spacing:.13em}.colhead,.overline{font-family:var(--font-mono);text-transform:uppercase;color:var(--faint)}.colhead{font-size:9.5px;letter-spacing:.11em;font-weight:500}.tr-row{min-height:34px;display:flex;align-items:center;gap:10px;padding:0 10px;border-bottom:1px solid var(--line-soft);font-size:12.5px}.tr-row:hover{background:var(--hover)}.tr-row:last-child{border-bottom:none}.tr-badge{display:inline-flex;align-items:center;gap:5px;padding:2px 7px;border-radius:5px;font-family:var(--font-mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.09em;white-space:nowrap}.tr-badge,.tr-btn2{background:var(--chip);color:var(--body)}.tr-btn2{padding:5px 11px;border-radius:7px;border:1px solid var(--line-strong);font-size:12px;font-weight:600;cursor:pointer}.tr-btn2:hover{border-color:var(--line-bright)}.tr-btn2:hover,.tr-hover:hover,.tr-menuitem:hover{background:var(--hover)}.tr-menuitem:hover{color:var(--ink)}.tr-menuitem-danger:hover{color:var(--down)}