*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } :root { --color-bg: #f5f5f5; --color-surface: #ffffff; --color-text: #1a1a1a; --color-text-secondary: #666; --color-primary: #1976d2; --color-positive: #2e7d32; --color-negative: #c62828; --border-radius: 8px; --shadow: 0 1px 3px rgba(0, 0, 0, 0.12); } .pnl-cell { text-align: right; } .positive { color: var(--color-positive); } .negative { color: var(--color-negative); } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--color-bg); color: var(--color-text); line-height: 1.6; } a { color: var(--color-primary); text-decoration: none; } @keyframes shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } .skeleton { background: linear-gradient(90deg, var(--color-bg) 25%, #f0f0f0 50%, var(--color-bg) 75%); background-size: 200% 100%; animation: shimmer 1.5s ease-in-out infinite; border-radius: 4px; } @keyframes loading-spin { to { transform: rotate(360deg); } } .loading-spinner { width: 20px; height: 20px; border: 2px solid var(--color-bg); border-top-color: var(--color-primary); border-radius: 50%; animation: loading-spin 0.8s linear infinite; } .table-container { position: relative; } .table-loading-overlay { position: absolute; inset: 0; background: rgba(255, 255, 255, 0.65); display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 12px; transition: opacity 0.2s ease; z-index: 1; } .broker-account__workspace { display: grid; grid-template-columns: minmax(150px, 190px) minmax(0, 1fr); gap: 24px; } .broker-account__navigation { display: flex; flex-direction: column; gap: 4px; } .broker-account__link { padding: 10px 12px; border-radius: var(--border-radius); color: var(--color-text-secondary); } .broker-account__link.is-active, .broker-account__link[aria-current='page'] { background: color-mix(in srgb, var(--color-primary) 10%, transparent); color: var(--color-primary); font-weight: 700; } .broker-account__link:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 2px; } .broker-account__content { min-width: 0; } .broker-overview { display: grid; gap: 24px; } .broker-overview__summary, .broker-overview__assets { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .broker-overview__card, .broker-allocation { padding: 16px; border: 1px solid #e0e0e0; border-radius: var(--border-radius); background: var(--color-surface); } .broker-overview__card { display: grid; align-content: start; gap: 8px; } .broker-overview__label, .broker-overview__card > span { color: var(--color-text-secondary); } .broker-overview__total { font-size: 24px; } .broker-overview__cash, .broker-allocation ul { list-style: none; display: grid; gap: 8px; } .broker-overview__cash li { display: flex; justify-content: space-between; gap: 12px; } .broker-overview__asset-link { color: var(--color-text); } .broker-overview__asset-title { color: var(--color-primary); font-size: 18px; } .broker-overview__asset-link:focus-visible { outline: 3px solid color-mix(in srgb, var(--color-primary) 35%, transparent); outline-offset: 2px; } .broker-allocation { display: flex; align-items: center; gap: 20px; } .broker-allocation svg { width: 160px; max-width: 40%; flex: 0 0 auto; } .broker-allocation figcaption { display: grid; gap: 12px; } .broker-allocation li { display: flex; align-items: center; gap: 8px; } .broker-allocation__swatch { width: 12px; height: 12px; border: 1px solid color-mix(in srgb, var(--color-text) 20%, transparent); border-radius: 2px; flex: 0 0 auto; } .broker-allocation__negative { color: var(--color-negative); } @media (max-width: 720px) { .broker-account__header { padding: 0 0 8px; } .broker-account__workspace { gap: 16px; grid-template-columns: minmax(0, 1fr); } .broker-account__navigation { flex-direction: row; overflow-x: auto; scrollbar-width: thin; } .broker-account__link { flex: none; white-space: nowrap; } .broker-overview__summary, .broker-overview__assets { grid-template-columns: 1fr; } .broker-allocation { align-items: stretch; flex-direction: column; } .broker-allocation svg { max-width: 180px; width: 100%; align-self: center; } } .broker-operations__toolbar { display: flex; align-items: end; justify-content: space-between; gap: 16px; margin-bottom: 20px; } .broker-operations__toolbar label { display: grid; gap: 6px; color: var(--color-text-secondary); font-size: 13px; } .broker-operations__toolbar select { min-width: 240px; padding: 8px 10px; border: 1px solid #d8d8d8; border-radius: var(--border-radius); background: var(--color-surface); color: var(--color-text); } .broker-operations__toolbar select:focus-visible { outline: 3px solid color-mix(in srgb, var(--color-primary) 35%, transparent); outline-offset: 2px; } @media (max-width: 720px) { .broker-operations__toolbar { align-items: stretch; flex-direction: column; } .broker-operations__toolbar select { width: 100%; min-width: 0; } }