:root{--color-neutral-0: #0b0e11;--color-neutral-100: #11151a;--color-neutral-200: #171c22;--color-neutral-300: #232a32;--color-neutral-400: #39434f;--color-neutral-500: #6b7887;--color-neutral-600: #8b97a6;--color-neutral-700: #b6c0cb;--color-neutral-800: #d8dfe6;--color-neutral-900: #f2f5f8;--color-market-up: #d05a5a;--color-market-down: #3f9b78;--color-market-flat: #7a8796;--color-success: #4c8f6e;--color-warn: #c9a227;--color-danger: #c25b6a;--color-info: #6f93b3;--color-shadow-soft: rgba(0, 0, 0, .32);--color-shadow-strong: rgba(0, 0, 0, .5);--badge-verified: #4c8f6e;--badge-pending: #c9a227;--badge-external: #8296ad;--viz-fact: #a7bdd1;--viz-forecast: #c9a227;--viz-opinion: #8296ad;--viz-forecast-band: rgba(201, 162, 39, .16);--viz-break-line: #c9a227;--timeline-event-anchor: #7fa6c9;--chart-grid: #1e252d;--color-series-1: #7fa6c9;--color-series-2: #a7bdd1;--color-series-3: #c9a227;--color-series-4: #4c8f6e;--color-series-5: #c25b6a;--font-ui: "IBM Plex Sans", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", sans-serif;--font-body: var(--font-ui);--font-display: var(--font-ui);--font-data: "JetBrains Mono", "SFMono-Regular", Menlo, Consolas, "Liberation Mono", monospace;--text-xs: 12px;--text-sm: 14px;--text-base: 16px;--text-lg: 18px;--text-xl: 20px;--text-2xl: 24px;--text-3xl: 32px;--text-4xl: 40px;--leading-meta: 1.5;--leading-body: 1.5;--leading-reading: 1.65;--leading-tight: 1.4;--leading-heading: 1.25;--leading-display: 1.1;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--radius-none: 0;--radius-xs: 2px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 9999px;--border-width-hairline: 1px;--border-width-focus: 2px;--container-max: 1440px;--container-reading: 760px;--section-y-desktop: 80px;--section-y-tablet: 48px;--section-y-phone: 32px;--elev-flat: none;--elev-raised: 0 1px 8px var(--color-shadow-soft);--elev-overlay: 0 4px 16px var(--color-shadow-strong);--z-base: 0;--z-dropdown: 1000;--z-sticky: 1100;--z-modal: 1200;--z-toast: 1300;--motion-instant: 70ms;--motion-fast: .15s;--motion-base: .2s;--motion-enter: .28s;--motion-transition: .36s;--ease-linear: linear;--ease-out: cubic-bezier(0, 0, 0, 1);--ease-standard: cubic-bezier(.2, 0, 0, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1)}html[data-theme=dark]{--color-bg: var(--color-neutral-0);--color-surface: var(--color-neutral-100);--color-surface-raised: var(--color-neutral-200);--color-fg: var(--color-neutral-900);--color-muted: var(--color-neutral-600);--color-border: var(--color-neutral-300);--color-border-soft: #1a2027;--color-border-strong: var(--color-neutral-400);--color-accent: #7fa6c9;--color-accent-hover: #94b7d6;--color-accent-active: #6a8fb0;--color-accent-on: var(--color-neutral-0);--color-focus: #9dc0e0;--surface-warm: var(--color-surface);--surface-inset: #0e1216;--fg-2: var(--color-fg);--meta: var(--color-muted);--border-soft: var(--color-border-soft);--border-strong: var(--color-border-strong);--accent-hover: var(--color-accent-hover);--accent-active: var(--color-accent-active)}html[data-theme=light]{--color-bg: #f7f9fb;--color-surface: #eef1f5;--color-surface-raised: #ffffff;--color-fg: #101418;--color-muted: #5a6572;--color-border: #c9d1da;--color-border-soft: #dde3ea;--color-border-strong: #a9b5c2;--color-accent: #3d6285;--color-accent-hover: #31506e;--color-accent-active: #263f57;--color-accent-on: #ffffff;--color-focus: #3d6285;--surface-warm: var(--color-surface);--surface-inset: #e4e9ef;--fg-2: var(--color-fg);--meta: var(--color-muted);--border-soft: var(--color-border-soft);--border-strong: var(--color-border-strong);--accent-hover: var(--color-accent-hover);--accent-active: var(--color-accent-active);--chart-grid: #dde3ea;--color-market-up: #b23a3a;--color-market-down: #2f7358;--color-market-flat: #5a6572;--color-success: #2f7358;--color-warn: #8a6d10;--color-danger: #a33b4c;--color-info: #3d6285;--badge-verified: #2f7358;--badge-pending: #8a6d10;--badge-external: #4f6076;--viz-fact: #3d6285;--viz-forecast: #8a6d10;--viz-opinion: #4f6076;--color-series-1: #3d6285;--color-series-2: #4f6076;--color-series-3: #8a6d10;--color-series-4: #2f7358;--color-series-5: #a33b4c}@media (prefers-reduced-motion: reduce){:root{--motion-instant: 0ms;--motion-fast: 0ms;--motion-base: 0ms;--motion-enter: 0ms;--motion-transition: 0ms}}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--color-bg);color:var(--color-fg);font-family:var(--font-ui);font-size:var(--text-sm);line-height:var(--leading-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{min-height:100vh}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover);text-decoration:underline;text-underline-offset:3px}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:var(--border-width-focus) solid var(--color-focus);outline-offset:2px}::selection{background:var(--color-accent);color:var(--color-accent-on)}.num{font-family:var(--font-data);font-variant-numeric:tabular-nums}.muted{color:var(--color-muted)}.small{font-size:var(--text-xs)}.mono{font-family:var(--font-data)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:var(--space-4);top:-80px;z-index:var(--z-toast);background:var(--color-surface-raised);border:1px solid var(--color-border-strong);padding:var(--space-2) var(--space-4);transition:top var(--motion-fast) var(--ease-out)}.skip-link:focus{top:var(--space-4)}.app-shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;border-right:1px solid var(--color-border);background:var(--color-bg);padding:var(--space-5) var(--space-4);display:flex;flex-direction:column;gap:var(--space-6);z-index:var(--z-sticky)}.brand{display:block;color:var(--color-fg);text-decoration:none;padding:0 var(--space-2)}.brand:hover{text-decoration:none;color:var(--color-fg)}.brand-title{display:block;font-size:var(--text-lg);font-weight:590;letter-spacing:-.01em;line-height:var(--leading-tight)}.brand-sub{display:flex;gap:var(--space-2);margin-top:var(--space-1);color:var(--color-muted);font-family:var(--font-data);font-size:var(--text-xs)}.nav-group{display:flex;flex-direction:column;gap:2px}.nav-label{padding:0 var(--space-2) var(--space-2);color:var(--color-muted);font-size:var(--text-xs)}.nav-item{display:flex;align-items:center;gap:var(--space-2);min-height:36px;padding:var(--space-2);border-radius:var(--radius-sm);color:var(--color-fg);text-decoration:none;border-left:1px solid transparent}.nav-item:hover{background:var(--color-surface);text-decoration:none;color:var(--color-fg)}.nav-item[aria-current=page]{background:var(--color-surface);border-left-color:var(--color-accent);color:var(--color-fg);font-weight:510}.nav-item svg{color:var(--color-muted);flex:none}.sidebar-foot{margin-top:auto;color:var(--color-muted);font-size:var(--text-xs);line-height:var(--leading-meta);padding:var(--space-2);border-top:1px solid var(--color-border)}.main{min-width:0;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:var(--z-sticky);display:flex;align-items:center;gap:var(--space-4);min-height:56px;padding:var(--space-2) var(--space-6);border-bottom:1px solid var(--color-border);background:var(--color-bg)}.market-strip{display:flex;align-items:baseline;gap:var(--space-2);font-size:var(--text-xs);color:var(--color-muted);white-space:nowrap;overflow:hidden}.market-strip strong{font-family:var(--font-data);font-size:var(--text-sm);color:var(--color-fg);font-weight:510}.mobile-brand{display:none;color:var(--color-fg);font-weight:590;text-decoration:none;white-space:nowrap}.topbar-spacer{flex:1}.search{display:flex;align-items:center;gap:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:0 var(--space-2);min-width:220px;background:var(--color-surface)}.search input{border:0;background:transparent;outline:none;min-height:32px;width:100%;font-size:var(--text-sm)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-width:44px;min-height:44px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--color-fg);cursor:pointer}.icon-btn:hover{background:var(--color-surface)}.content{width:100%;max-width:var(--container-max);margin:0 auto;padding:var(--space-8) var(--space-6) var(--space-16)}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-6)}.page-title{margin:0;font-size:var(--text-2xl);font-weight:590;letter-spacing:-.01em;line-height:var(--leading-heading)}.page-sub{margin:var(--space-2) 0 0;color:var(--color-muted);font-size:var(--text-sm);max-width:78ch}.section{border-top:1px solid var(--color-border);padding-top:var(--space-5);margin-top:var(--space-8)}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}.section-title{margin:0;font-size:var(--text-lg);font-weight:510;letter-spacing:-.005em}.section-meta{color:var(--color-muted);font-size:var(--text-xs)}.badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:1px var(--space-2);border-radius:var(--radius-xs);border:1px solid var(--color-border-strong);font-size:var(--text-xs);line-height:1.6;white-space:nowrap}.badge svg{flex:none}.badge-verified{color:var(--badge-verified);border-color:var(--badge-verified);background:color-mix(in srgb,var(--badge-verified) 12%,transparent)}.badge-pending{color:var(--badge-pending);border-style:dashed;border-color:var(--badge-pending)}.badge-external{color:var(--badge-external);border-style:dotted;border-color:var(--badge-external)}.badge-neutral{color:var(--color-muted)}.badge-accent{color:var(--color-accent);border-color:var(--color-accent)}.tag{display:inline-flex;align-items:center;gap:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-xs);padding:1px var(--space-2);color:var(--color-muted);font-size:var(--text-xs)}.meta-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);color:var(--color-muted);font-size:var(--text-xs)}.dot:before{content:"·";padding-right:var(--space-2);color:var(--color-muted)}.feed{display:flex;flex-direction:column;border-top:1px solid var(--color-border)}.feed-row{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:var(--space-6);padding:var(--space-4) 0;border-bottom:1px solid var(--color-border-soft)}.feed-row-main{min-width:0}.feed-title{display:block;margin:0 0 var(--space-2);color:var(--color-fg);font-size:var(--text-base);font-weight:510;line-height:var(--leading-tight);text-decoration:none}.feed-title:hover{color:var(--color-accent-hover);text-decoration:underline;text-underline-offset:3px}.feed-summary{margin:0 0 var(--space-3);color:var(--color-muted);line-height:var(--leading-reading);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.feed-side{text-align:right;color:var(--color-muted);font-size:var(--text-xs);line-height:var(--leading-meta);padding-top:2px}.feed-side .num{display:block;color:var(--color-fg);font-size:var(--text-sm)}.metric-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.metric{padding:var(--space-4) var(--space-4) var(--space-4) 0;border-right:1px solid var(--color-border);min-width:0}.metric:last-child{border-right:0}.metric+.metric{padding-left:var(--space-4)}.metric-label{color:var(--color-muted);font-size:var(--text-xs);margin-bottom:var(--space-2)}.metric-value{font-family:var(--font-data);font-variant-numeric:tabular-nums;font-size:var(--text-3xl);font-weight:590;line-height:var(--leading-display);letter-spacing:-.02em;white-space:nowrap}.metric-value .unit{font-size:var(--text-sm);color:var(--color-muted);font-weight:400;margin-left:var(--space-1)}.metric-foot{margin-top:var(--space-2);color:var(--color-muted);font-size:var(--text-xs)}.up{color:var(--color-market-up)}.down{color:var(--color-market-down)}.flat{color:var(--color-market-flat)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:36px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-fg);font-size:var(--text-sm);cursor:pointer;transition:background var(--motion-fast) var(--ease-out),border-color var(--motion-fast) var(--ease-out)}.btn:hover{border-color:var(--color-accent);text-decoration:none}.btn:disabled{cursor:not-allowed;color:var(--color-muted);border-color:var(--color-border);opacity:1}.btn-primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-on)}.btn-primary:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn-danger{color:var(--color-danger);border-color:var(--color-danger)}.btn-ghost{background:transparent;border-color:transparent}.btn-ghost:hover{background:var(--color-surface)}.btn-sm{min-height:30px;padding:3px var(--space-2);font-size:var(--text-xs)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field.full{grid-column:1 / -1}.field label{font-size:var(--text-xs);color:var(--color-muted)}.input,.select,.textarea{width:100%;min-height:36px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);color:var(--color-fg);outline:none}.textarea{min-height:120px;resize:vertical;line-height:var(--leading-reading)}.input:focus,.select:focus,.textarea:focus{border-color:var(--color-accent);outline:var(--border-width-focus) solid var(--color-focus);outline-offset:0}.actions{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.source-bar{margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--color-border-soft);color:var(--color-muted);font-size:var(--text-xs);line-height:var(--leading-meta)}.source-line{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.disclaimer-bar{margin-top:var(--space-8);padding-top:var(--space-3);border-top:1px solid var(--color-border);color:var(--color-muted);font-size:var(--text-xs);line-height:var(--leading-meta)}.disclaimer-strong{color:var(--color-fg);font-weight:510}.state{padding:var(--space-8) var(--space-4);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);color:var(--color-muted)}.state-title{display:flex;align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);color:var(--color-fg);font-size:var(--text-base);font-weight:510}.state p{margin:0 0 var(--space-3);max-width:72ch}.skeleton{background:var(--color-surface);border:1px solid var(--color-border-soft);border-radius:var(--radius-xs);animation:none}.skeleton-row{height:18px;margin-bottom:var(--space-2)}.table-wrap{width:100%;overflow-x:auto;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.table th{text-align:left;color:var(--color-muted);font-weight:500;font-size:var(--text-xs);padding:var(--space-2) var(--space-3);border-bottom:1px solid var(--color-border);white-space:nowrap}.table td{padding:var(--space-3);border-bottom:1px solid var(--color-border-soft);vertical-align:top}.table td.num,.table th.num{text-align:right;font-family:var(--font-data);font-variant-numeric:tabular-nums}.table tr:last-child td{border-bottom:0}.chart-box{width:100%;min-height:320px}.chart-svg{display:block;width:100%;height:auto;overflow:visible}.chart-legend{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-top:var(--space-3);color:var(--color-muted);font-size:var(--text-xs)}.legend-item{display:inline-flex;align-items:center;gap:var(--space-2)}.legend-swatch{width:18px;height:0;border-top:2px solid var(--viz-fact)}.legend-swatch.series{border-top-color:var(--color-series-1)}.legend-swatch.dashed{border-top-style:dashed;border-top-color:var(--viz-forecast)}.legend-swatch.dotted{border-top-style:dotted;border-top-color:var(--viz-opinion)}.legend-swatch.bar{width:10px;height:10px;border:0;background:var(--viz-fact)}.chart-footnote{margin-top:var(--space-3);color:var(--color-muted);font-size:var(--text-xs);line-height:var(--leading-meta)}.chart-toggle{display:flex;gap:var(--space-2);margin-bottom:var(--space-3)}.chart-toggle button[aria-pressed=true]{border-color:var(--color-accent);color:var(--color-accent)}.mobile-nav{display:none}@media (max-width: 1023px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.mobile-nav{display:flex;gap:var(--space-2);overflow-x:auto;padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--color-border);background:var(--color-bg)}.mobile-nav a{white-space:nowrap;color:var(--color-fg);text-decoration:none;padding:var(--space-2);font-size:var(--text-sm)}.mobile-nav a[aria-current=page]{color:var(--color-accent)}.content{padding:var(--space-5) var(--space-4) var(--space-12)}.metric-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.metric:nth-child(2){border-right:0}.metric:nth-child(3),.metric:nth-child(4){border-top:1px solid var(--color-border)}.feed-row{grid-template-columns:1fr;gap:var(--space-2)}.feed-side{text-align:left}.form-grid{grid-template-columns:1fr}.topbar{padding:var(--space-2) var(--space-4)}.mobile-brand{display:inline-block;font-size:var(--text-sm)}.mobile-brand+.topbar-spacer{flex:1}.market-strip{display:none}.search{min-width:0;flex:1}}@media (max-width: 639px){.topbar .search{display:none}.page-head{flex-direction:column;align-items:flex-start}.page-head .meta-line{white-space:normal}.metric-value{font-size:var(--text-2xl)}.section-head{flex-direction:column;align-items:flex-start;gap:var(--space-2)}}.admin-login{max-width:420px;margin:var(--space-16) auto}.admin-grid{display:grid;grid-template-columns:minmax(280px,380px) minmax(0,1fr);gap:0;border-top:1px solid var(--color-border)}.admin-list{border-right:1px solid var(--color-border);min-width:0}.admin-list-row{display:block;width:100%;text-align:left;padding:var(--space-3) var(--space-4) var(--space-3) 0;border:0;border-bottom:1px solid var(--color-border-soft);border-left:2px solid transparent;background:transparent;color:var(--color-fg);cursor:pointer}.admin-list-row:hover{background:var(--color-surface)}.admin-list-row[aria-selected=true]{background:var(--color-surface);border-left-color:var(--color-accent)}.admin-list-title{display:block;font-size:var(--text-sm);font-weight:510;line-height:var(--leading-tight);margin-bottom:var(--space-2)}.admin-detail{padding:0 0 0 var(--space-6);min-width:0}.admin-detail h2{margin:0 0 var(--space-3);font-size:var(--text-xl);font-weight:510}.admin-block{border-top:1px solid var(--color-border-soft);padding-top:var(--space-4);margin-top:var(--space-4)}.admin-block h3{margin:0 0 var(--space-2);font-size:var(--text-sm);font-weight:510}.admin-actions{position:sticky;bottom:0;background:var(--color-bg);border-top:1px solid var(--color-border);padding:var(--space-3) 0;display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:flex-end}.admin-actions .field{flex:1;min-width:220px}.pre{margin:0;padding:var(--space-3);background:var(--surface-inset);border:1px solid var(--color-border-soft);border-radius:var(--radius-xs);font-family:var(--font-data);font-size:var(--text-xs);line-height:var(--leading-meta);overflow-x:auto;white-space:pre-wrap;word-break:break-word}.stat-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.stat{padding:var(--space-4) var(--space-4) var(--space-4) 0;border-right:1px solid var(--color-border)}.stat:last-child{border-right:0;padding-left:var(--space-4)}.stat+.stat{padding-left:var(--space-4)}.stat-label{color:var(--color-muted);font-size:var(--text-xs)}.stat-value{font-family:var(--font-data);font-size:var(--text-2xl);font-weight:590;margin-top:var(--space-1)}@media (max-width: 1023px){.admin-grid{grid-template-columns:1fr}.admin-list{border-right:0;border-bottom:1px solid var(--color-border);max-height:320px;overflow-y:auto}.admin-detail{padding:var(--space-5) 0 0}.stat-row{grid-template-columns:1fr}.stat,.stat+.stat{border-right:0;padding-left:0;border-bottom:1px solid var(--color-border-soft)}.stat:last-child{border-bottom:0}}
