.app-frame{min-height:100dvh}.sidebar{position:fixed;top:0;left:0;bottom:0;z-index:40;width:212px;display:flex;flex-direction:column;gap:14px;padding:16px 12px calc(14px + var(--safe-bottom));padding-top:calc(16px + var(--safe-top));padding-left:calc(12px + var(--safe-left));background:linear-gradient(180deg,#0c1017,#090c12);border-right:1px solid var(--border-soft);box-shadow:1px 0 #ffffff05;transition:transform .22s ease}.sidebar-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 4px 12px;border-bottom:1px solid var(--border-soft)}.brand{display:flex;align-items:center;gap:10px;min-width:0}.brand-badge{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,#22c55e,#0ea5e9);color:#06210f;font-weight:800;font-size:12px;letter-spacing:.02em;flex-shrink:0;box-shadow:0 4px 14px #22c55e47}.brand-copy{display:flex;flex-direction:column;line-height:1.25;min-width:0}.brand-copy strong{font-size:12px;letter-spacing:.05em;white-space:nowrap}.brand-copy small{font-size:10px;color:var(--text-tertiary);letter-spacing:.03em;white-space:nowrap}.sidebar-close{display:none;align-items:center;justify-content:center;width:28px;height:28px;border-radius:8px;border:1px solid var(--border-soft);background:transparent;color:var(--text-secondary)}.sidebar-nav{display:flex;flex-direction:column;gap:4px;flex:1;min-height:0;overflow-y:auto}.sidebar-section{padding:4px 8px 6px;font-size:10px;letter-spacing:.14em;color:var(--text-tertiary)}.sidebar-item{position:relative;display:flex;align-items:center;gap:10px;width:100%;padding:9px 10px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--text-secondary);text-align:left;transition:background .15s ease,color .15s ease,border-color .15s ease,transform .15s ease}.sidebar-item:hover:not(:disabled){background:#94a3b814;color:var(--text-primary);transform:translate(1px)}.sidebar-item.is-active{background:var(--accent-soft);border-color:#22c55e59;color:var(--text-primary);box-shadow:inset 0 1px #ffffff0a}.sidebar-item.is-active:before{content:"";position:absolute;left:-12px;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:linear-gradient(180deg,var(--accent-bright),var(--accent));box-shadow:0 0 10px var(--accent-glow)}.sidebar-item:disabled{opacity:.45;cursor:not-allowed}.sidebar-item-label{display:flex;flex-direction:column;line-height:1.25;flex:1;min-width:0}.sidebar-item-label strong{font-size:13px;font-weight:600}.sidebar-item-label small{font-size:10px;color:var(--text-tertiary)}.sidebar-item-tag{font-size:10px;color:var(--text-tertiary);border:1px solid var(--border-soft);border-radius:999px;padding:1px 6px;white-space:nowrap}.sidebar-foot{padding:10px 8px 0;border-top:1px solid var(--border-soft)}.sidebar-status{display:inline-flex;align-items:center;gap:6px;font-size:11px;color:var(--text-tertiary)}.status-dot-inline{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);animation:sidebar-pulse 2.4s ease-in-out infinite}@keyframes sidebar-pulse{0%,to{opacity:1}50%{opacity:.45}}.sidebar-toggle{display:none;position:fixed;top:calc(12px + var(--safe-top));left:calc(14px + var(--safe-left));z-index:30;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;border:1px solid var(--border-soft);background:#0d1016e6;color:var(--text-secondary);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.sidebar-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:35;border:none;background:#04060a9e;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.app-content{margin-left:212px;min-width:0;min-height:100dvh;display:flex;flex-direction:column}@media(max-width:900px){.sidebar{transform:translate(-104%);box-shadow:24px 0 60px #00000080}.sidebar.is-open{transform:none}.sidebar-close,.sidebar-toggle{display:inline-flex}.app-content{margin-left:0}}.module-loading{padding:40px;text-align:center;color:var(--text-tertiary)}.venue-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:4px;font-size:10px;font-weight:700;line-height:1;letter-spacing:.02em;flex-shrink:0}.venue-mark.size-sm{width:16px;height:16px;font-size:9px}.venue-mark.size-md{width:18px;height:18px;font-size:10px}.venue-dot{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:999px;font-size:9px;font-weight:700;line-height:1;flex-shrink:0}.robot-btn-small{padding:3px 9px;font-size:11.5px;line-height:1.3}.robot-btn-ghost{border:1px solid var(--border-soft);background:transparent;color:var(--text-secondary);border-radius:8px;cursor:pointer}.robot-btn-ghost:hover:not(:disabled){border-color:var(--border-strong);color:var(--text-primary);background:#94a3b81a}.robot-btn-positive{border:1px solid rgba(34,197,94,.4);background:var(--accent-soft);color:var(--accent);border-radius:8px;cursor:pointer}.robot-btn-positive:hover:not(:disabled){background:#22c55e33}.robot-btn-ghost:disabled,.robot-btn-positive:disabled{opacity:.55;cursor:not-allowed}:root{--bg-base: #07090d;--bg-panel: #10141d;--bg-panel-soft: #151b27;--bg-elevated: #1b2231;--border-soft: rgba(148, 163, 184, .16);--border-strong: rgba(148, 163, 184, .34);--border-highlight: rgba(255, 255, 255, .06);--text-primary: #f1f6fb;--text-secondary: #b6c2d2;--text-tertiary: #8d9aad;--accent: #22c55e;--accent-bright: #34d399;--up: #4ade80;--down: #f87171;--accent-soft: rgba(34, 197, 94, .12);--accent-glow: rgba(34, 197, 94, .28);--warning: #f59e0b;--warning-soft: rgba(245, 158, 11, .12);--danger: #ef4444;--danger-soft: rgba(239, 68, 68, .12);--neutral: #64748b;--neutral-soft: rgba(100, 116, 139, .12);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);--shadow-md: 0 10px 30px rgba(0, 0, 0, .35);--shadow-lg: 0 20px 50px rgba(0, 0, 0, .45);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100dvh}body{margin:0;background:radial-gradient(1100px 520px at 88% -12%,rgba(34,197,94,.07),transparent 62%),radial-gradient(900px 520px at -8% 108%,rgba(14,165,233,.05),transparent 60%),var(--bg-base);background-attachment:fixed;color:var(--text-primary);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}::selection{background:#22c55e47}:focus-visible{outline:2px solid rgba(34,197,94,.55);outline-offset:2px}button,select,input{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.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}.num,.metric,time{font-family:var(--font-mono);font-variant-numeric:tabular-nums}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#94a3b838;border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#94a3b861}::-webkit-scrollbar-track{background:transparent}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}.filter-check{display:inline-flex;align-items:center;gap:6px;padding:7px 12px;font-size:12px;color:var(--text-secondary);background:var(--bg-panel-soft);border:1px solid var(--border-soft);border-radius:var(--radius-sm);cursor:pointer;-webkit-user-select:none;user-select:none}.filter-check input{accent-color:var(--accent)}.threshold-panel{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;padding:12px 14px;background:var(--bg-panel-soft);border:1px solid var(--border-soft);border-radius:var(--radius-sm)}.threshold-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}.threshold-head strong{font-size:13px;color:var(--text-primary)}.threshold-head span{font-size:11.5px;color:var(--text-tertiary)}.threshold-fields{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}.threshold-field{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text-tertiary)}.threshold-field select{padding:5px 8px;font-size:12px;color:var(--text-primary);background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:6px}.threshold-apply{padding:6px 14px;font-size:12px;color:var(--text-primary);background:var(--accent);border:none;border-radius:6px;cursor:pointer}.threshold-apply:disabled{opacity:.45;cursor:not-allowed}.threshold-status{font-size:11.5px;color:var(--text-tertiary)}.threshold-error{margin:0;font-style:normal;font-size:11.5px;color:var(--danger)}.asset-table{width:100%;border-collapse:collapse}.asset-table thead th{padding:9px 14px;text-align:left;font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--text-tertiary);background:linear-gradient(180deg,#94a3b817,#94a3b80a);border-bottom:1px solid var(--border-strong);white-space:nowrap}.asset-table td{padding:10px 14px;font-size:13px;vertical-align:middle}.asset-table tbody tr+tr{border-top:1px solid var(--border-strong)}.asset-row{transition:background .15s ease;cursor:pointer;outline:none}.asset-row:hover{background:#94a3b812;box-shadow:inset 3px 0 #22c55e8c}.asset-row:focus-visible{box-shadow:inset 0 0 0 1px var(--border-strong);background:#94a3b80f}.asset-row.is-pinned{background:#f59e0b12}.asset-row.is-pinned td:first-child{box-shadow:inset 3px 0 0 0 var(--warning)}.asset-row.is-group{cursor:default;background:none}.asset-row.is-group:hover{background:none;box-shadow:none}.asset-row.is-group td{padding:0;border-top:1px solid rgba(148,163,184,.22)}.asset-name{font-size:15px;font-weight:600}.asset-price{font-family:var(--font-mono);font-size:13px;font-variant-numeric:tabular-nums;color:var(--text-primary)}.asset-price-cell{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}.asset-delta{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.asset-delta.is-up,.asset-price.is-up{color:var(--accent)}.asset-delta.is-down,.asset-price.is-down{color:var(--danger)}.asset-sub{margin-top:2px;font-size:12px;line-height:1.5;color:var(--text-tertiary)}.asset-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.asset-tag{display:inline-block;padding:2px 8px;border-radius:6px;border:1px solid var(--border-soft);background:var(--bg-panel-soft);font-size:11px;color:var(--text-secondary);white-space:nowrap}.asset-meter{display:block;width:100%;max-width:128px;height:3px;margin-top:5px;border-radius:2px;background:#94a3b829;overflow:hidden}.asset-meter>i{display:block;height:100%;border-radius:2px;background:var(--neutral);transition:width .7s cubic-bezier(.22,1,.36,1)}.asset-meter>i.tone-danger{background:linear-gradient(90deg,rgba(239,68,68,.45),var(--danger));box-shadow:0 0 8px #ef444459}.asset-meter>i.tone-warning{background:linear-gradient(90deg,rgba(245,158,11,.4),var(--warning));box-shadow:0 0 8px #f59e0b40}.asset-spark{width:66px;height:20px;flex:none;opacity:.95}.asset-spark polyline{fill:none;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}.asset-spark.up polyline{stroke:#4ade80;filter:drop-shadow(0 0 4px rgba(74,222,128,.5))}.asset-spark.down polyline{stroke:#f87171;filter:drop-shadow(0 0 4px rgba(248,113,113,.5))}.asset-spark-dot{animation:asset-spark-dot 1.6s ease-in-out infinite}.asset-spark.up .asset-spark-dot{fill:#4ade80;filter:drop-shadow(0 0 3px rgba(74,222,128,.8))}.asset-spark.down .asset-spark-dot{fill:#f87171;filter:drop-shadow(0 0 3px rgba(248,113,113,.8))}.asset-spark.is-flat polyline{stroke:var(--text-tertiary);stroke-width:1.2;stroke-dasharray:3 3;filter:none;opacity:.75}.asset-spark.is-empty{display:inline-block;border-bottom:1px dashed var(--border-strong);opacity:.3}@keyframes asset-spark-dot{0%,to{opacity:1}50%{opacity:.35}}@keyframes asset-flash-up{0%{background-color:#22c55e47;box-shadow:0 0 14px #22c55e4d}to{background-color:transparent;box-shadow:0 0 #22c55e00}}@keyframes asset-flash-down{0%{background-color:#ef444442;box-shadow:0 0 14px #ef444447}to{background-color:transparent;box-shadow:0 0 #ef444400}}.asset-flash-up{animation:asset-flash-up 1.1s ease-out}.asset-flash-down{animation:asset-flash-down 1.1s ease-out}.asset-price.asset-flash-up,.asset-price.asset-flash-down{padding:1px 5px;margin:-1px -5px;border-radius:5px}.asset-band-cool{--asset-band-color: #3b82f6}.asset-band-cold{--asset-band-color: #22c55e}.asset-band-neutral{--asset-band-color: #eab308}.asset-band-warm{--asset-band-color: #f97316}.asset-band-hot{--asset-band-color: #ef4444}.asset-row.asset-band-cool td:first-child,.asset-row.asset-band-cold td:first-child,.asset-row.asset-band-neutral td:first-child,.asset-row.asset-band-warm td:first-child,.asset-row.asset-band-hot td:first-child{box-shadow:inset 3px 0 0 0 var(--asset-band-color)}.asset-band-cool:not(.asset-row),.asset-band-cold:not(.asset-row),.asset-band-neutral:not(.asset-row),.asset-band-warm:not(.asset-row),.asset-band-hot:not(.asset-row){color:var(--asset-band-color)}.chip-status-badge.is-heat,.badge.is-heat{color:var(--asset-band-color);border-color:color-mix(in srgb,var(--asset-band-color) 45%,transparent);background:color-mix(in srgb,var(--asset-band-color) 12%,transparent)}.asset-table-scroll{overflow:auto;max-height:72vh}.asset-table-scroll .asset-table thead th{position:sticky;top:0;z-index:2}.asset-table-scroll::-webkit-scrollbar{width:6px;height:6px}.asset-table-scroll::-webkit-scrollbar-thumb{background:#94a3b833;border-radius:6px}.asset-table-scroll::-webkit-scrollbar-thumb:hover{background:#94a3b861}
