*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg-base: #08080e;--bg-surface: #12121a;--bg-elevated: #1a1a26;--bg-hover: #22223a;--text-primary: #f0ede8;--text-muted: #8884a0;--text-dim: #4a4860;--accent: #e8c547;--accent-dim: #b89a2e;--green: #3dd68c;--yellow: #e8c547;--red: #f06292;--orange: #fb923c;--border: rgba(255, 255, 255, .07);--radius: 8px}body{background:var(--bg-base);color:var(--text-primary);font-family:DM Sans,sans-serif;font-size:14px}.app{display:flex;flex-direction:column;height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--bg-surface);border-bottom:1px solid var(--border)}.app-title{font-size:16px;font-weight:600}.tab-bar{display:grid;grid-template-columns:repeat(4,1fr);position:relative;background:var(--bg-surface);border-bottom:1px solid var(--border)}.tab-indicator{position:absolute;bottom:0;left:0;width:25%;height:3px;background:var(--accent);transition:transform .25s ease;pointer-events:none}.tab-btn{padding:10px 0;border:none;border-radius:0;background:transparent;color:var(--text-dim);cursor:pointer;font-size:13px;font-family:DM Sans,sans-serif;font-weight:500;text-align:center;transition:color .15s}.tab-btn:hover{color:var(--text-muted)}.tab-btn.active{color:var(--text-primary);font-weight:600}.main-content{display:flex;flex:1;overflow:hidden}.stock-list{width:260px;min-width:220px;overflow-y:auto;border-right:1px solid var(--border)}.stock-detail{flex:1;overflow-y:auto;padding:16px}.stock-item{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .1s;animation:fadeSlideIn .2s ease both}.stock-item:hover{background:var(--bg-hover)}.stock-item.selected{background:#e8c5470f;border-left:3px solid var(--accent);padding-left:11px}.stock-item-left{flex:1;min-width:0}.stock-item-id{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-dim);margin-bottom:3px}.stock-item-name{font-family:DM Sans,sans-serif;font-size:15px;font-weight:600;color:var(--text-primary);margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stock-item-sub{font-size:11px;color:var(--text-muted)}.stock-item-right{text-align:right;flex-shrink:0;padding-left:8px}.stock-item-value{font-family:JetBrains Mono,monospace;font-size:22px;font-weight:600;line-height:1}.stock-item-unit{font-family:DM Sans,sans-serif;font-size:11px;color:var(--text-dim);margin-top:3px}@keyframes fadeSlideIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}.stock-detail-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px;padding-bottom:16px;border-bottom:1px solid var(--border)}.stock-detail-header-id{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-dim);margin-bottom:4px}.stock-detail-header-name{font-family:"DM Serif Display",serif;font-size:24px;color:var(--text-primary)}.stock-detail-header-score{font-family:"DM Serif Display",serif;font-size:48px;line-height:1;font-weight:400}.stock-detail-header-unit{font-family:DM Sans,sans-serif;font-size:12px;color:var(--text-dim);text-align:right;margin-top:4px}.detail-section{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;margin-bottom:12px;animation:fadeSlideUp .25s ease both}.detail-section:nth-child(1){animation-delay:0ms}.detail-section:nth-child(2){animation-delay:50ms}.detail-section:nth-child(3){animation-delay:.1s}.detail-section:nth-child(4){animation-delay:.15s}.detail-section h4{font-family:DM Sans,sans-serif;color:var(--accent-dim);font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;margin-bottom:10px}.badge{display:inline-block;padding:2px 7px;border-radius:4px;font-size:11px;font-weight:600;margin:2px}.badge-green{background:#166534;color:var(--green)}.badge-blue{background:#1e3a5f;color:var(--accent)}.badge-yellow{background:#713f12;color:var(--yellow)}.badge-red{background:#7f1d1d;color:var(--red)}.indicator-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.indicator-cell{text-align:center}.indicator-value{font-family:JetBrains Mono,monospace;font-size:18px;font-weight:600}.indicator-label{font-family:DM Sans,sans-serif;color:var(--text-dim);font-size:11px;margin-top:2px}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.loading{padding:2rem;color:var(--text-muted);text-align:center}.error{padding:1rem;color:var(--red);background:#3f0a0a;border-radius:var(--radius)}.filter-bar{background:var(--bg-surface);border-bottom:1px solid var(--border);padding:0 16px}.filter-bar-header{display:flex;align-items:center;justify-content:space-between;padding:8px 0;cursor:pointer;-webkit-user-select:none;user-select:none}.filter-bar-body{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;padding-bottom:12px}.filter-badge{background:var(--accent);color:#08080e;font-family:JetBrains Mono,monospace;font-size:11px;font-weight:600;padding:1px 6px;border-radius:10px}.filter-field label{font-size:10px;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;display:block;margin-bottom:4px}.filter-field input,.filter-field select{width:100%;background:var(--bg-elevated);border:1px solid var(--border);color:var(--text-primary);font-family:DM Sans,sans-serif;font-size:13px;padding:5px 8px;border-radius:6px;outline:none}.filter-field input:focus,.filter-field select:focus{border-color:var(--accent-dim)}@media (max-width: 768px){.main-content{position:relative}.stock-list{width:100%;border-right:none}.stock-detail{display:none;position:fixed;bottom:0;left:0;right:0;height:80vh;background:var(--bg-surface);border-top:1px solid var(--border);border-radius:16px 16px 0 0;z-index:100;padding:0 16px 16px;transform:translateY(100%);transition:transform .35s cubic-bezier(.32,.72,0,1)}.stock-detail.open{display:block;overflow-y:auto;transform:translateY(0)}.sheet-handle{width:36px;height:4px;background:var(--text-dim);border-radius:2px;margin:0 auto 12px;padding-top:12px}.sheet-close{position:sticky;top:0;display:flex;justify-content:flex-end;background:var(--bg-surface);padding:8px 0}.sheet-close button{background:var(--bg-elevated);border:none;color:var(--text-muted);padding:4px 10px;border-radius:var(--radius);cursor:pointer;font-size:16px}.sheet-backdrop{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:99}.sheet-backdrop.open{display:block}}.badge-legislator{background:#14532d;color:var(--green);cursor:pointer}.badge-legislator:hover{background:#166534}.legislator-panel{width:260px;min-width:220px;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.legislator-view-toggle{display:flex;gap:0;padding:8px 10px;border-bottom:1px solid var(--border);flex-shrink:0}.legislator-view-btn{flex:1;padding:5px 0;border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;font-size:12px;font-family:DM Sans,sans-serif;transition:background .15s,color .15s}.legislator-view-btn:first-child{border-radius:var(--radius) 0 0 var(--radius)}.legislator-view-btn:last-child{border-radius:0 var(--radius) var(--radius) 0;border-left:none}.legislator-view-btn.active{background:var(--bg-elevated);color:var(--text-primary);font-weight:600}.leg-list{overflow-y:auto;flex:1}.leg-row{display:flex;align-items:center;padding:6px 0;border-bottom:1px solid var(--border);font-size:13px;gap:4px}.leg-row:last-child{border-bottom:none}.legislator-jump-btn{margin-left:auto;background:none;border:none;color:var(--accent);cursor:pointer;font-size:14px;padding:2px 6px;border-radius:var(--radius);transition:background .1s}.legislator-jump-btn:hover{background:var(--bg-hover)}.period-toggle-btn{width:100%;display:flex;align-items:center;gap:6px;padding:6px 0;background:none;border:none;border-top:1px solid var(--border);color:var(--text-muted);font-size:12px;cursor:pointer;text-align:left}.period-toggle-btn:hover{color:var(--text-primary)}.period-toggle-btn .period-arrow{font-size:10px;transition:transform .15s}.period-toggle-btn.open .period-arrow{transform:rotate(90deg)}.period-group{padding:4px 0 4px 12px}.period-tag{display:inline-block;font-size:11px;color:var(--text-muted);margin-left:8px}@media (max-width: 768px){.legislator-panel{width:100%;border-right:none}}
