*, *::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); --broker-overview-bg: linear-gradient(180deg, #f1f5ef 0%, #f7f2e8 100%); --broker-overview-panel: rgba(15, 51, 36, 0.93); --broker-overview-panel-soft: rgba(255, 255, 255, 0.09); --broker-overview-border: rgba(21, 61, 43, 0.12); --broker-overview-accent: #98c484; --broker-overview-gold: #d7b268; } .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); } .broker-accounts-page { display: grid; gap: 24px; } .broker-accounts-page__header { display: flex; justify-content: space-between; align-items: end; gap: 16px; } .broker-accounts-page__eyebrow, .broker-account-card__eyebrow, .broker-accounts-summary__eyebrow { font-size: 12px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--color-text-secondary); } .broker-accounts-page__title, .broker-account-card__title, .broker-accounts-summary__title { font-family: 'Iowan Old Style', 'Palatino Linotype', 'Book Antiqua', Georgia, serif; line-height: 1.05; } .broker-accounts-page__title { font-size: clamp(2.2rem, 3vw, 3rem); } .broker-accounts-page__caption { color: var(--color-text-secondary); } .broker-accounts-summary { padding: 28px; border-radius: 28px; background: var(--broker-overview-bg); box-shadow: 0 24px 60px rgba(15, 52, 35, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.55); border: 1px solid rgba(255, 255, 255, 0.7); display: grid; gap: 20px; } .broker-accounts-summary__hero { display: grid; gap: 12px; padding: 24px; border-radius: 22px; background: radial-gradient(circle at top right, rgba(152, 196, 132, 0.3), transparent 28%), linear-gradient(135deg, var(--broker-overview-panel) 0%, #173f2d 100%); color: #f8f5ec; } .broker-accounts-summary__hero .broker-accounts-summary__eyebrow { color: rgba(248, 245, 236, 0.72); } .broker-accounts-summary__title { font-size: clamp(1.9rem, 2.4vw, 2.6rem); } .broker-accounts-summary__status { display: flex; flex-wrap: wrap; gap: 10px; color: rgba(248, 245, 236, 0.78); } .broker-accounts-summary__status span { padding: 6px 10px; border-radius: 999px; background: var(--broker-overview-panel-soft); } .broker-accounts-summary__currency-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 16px; } .broker-accounts-summary__currency-card, .broker-account-card, .broker-accounts-empty { border-radius: 24px; border: 1px solid var(--broker-overview-border); background: rgba(255, 255, 255, 0.92); box-shadow: 0 20px 45px rgba(31, 48, 39, 0.08); } .broker-accounts-summary__currency-card { padding: 22px; display: grid; gap: 16px; } .broker-accounts-summary__currency-header { display: grid; gap: 6px; } .broker-accounts-summary__currency { font-size: 13px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--color-text-secondary); } .broker-accounts-summary__total { font-family: 'Iowan Old Style', 'Palatino Linotype', 'Book Antiqua', Georgia, serif; font-size: clamp(1.8rem, 2vw, 2.4rem); } .broker-accounts-summary__metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .broker-accounts-summary__metric { display: grid; gap: 8px; padding: 14px; border-radius: 18px; background: rgba(255, 255, 255, 0.7); } .broker-accounts-summary__metric dt, .broker-account-card__stat span { font-size: 13px; color: var(--color-text-secondary); } .broker-accounts-summary__metric dd, .broker-account-card__stat strong { font-size: 1.05rem; font-weight: 700; } .broker-allocation-bar { display: grid; gap: 12px; } .broker-allocation-bar__track { min-height: 12px; border-radius: 999px; overflow: hidden; display: flex; background: rgba(19, 54, 38, 0.08); } .broker-allocation-bar__segment { min-width: 8px; } .broker-allocation-bar__legend { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 12px; } .broker-allocation-bar__legend-item { display: inline-flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 999px; background: rgba(19, 54, 38, 0.05); } .broker-allocation-bar__swatch { width: 9px; height: 9px; border-radius: 999px; } .broker-allocation-bar__empty { color: var(--color-text-secondary); } .broker-accounts-page__cards { display: grid; gap: 16px; } .broker-account-card { padding: 22px; } .broker-account-card--link { display: grid; gap: 18px; color: inherit; text-decoration: none; transition: transform 0.22s ease, box-shadow 0.22s ease, border-color 0.22s ease; } .broker-account-card--link:hover { transform: translateY(-2px); box-shadow: 0 26px 50px rgba(31, 48, 39, 0.11); border-color: rgba(38, 92, 55, 0.22); } .broker-account-card--link:focus-visible { outline: 3px solid rgba(59, 128, 74, 0.3); outline-offset: 3px; } .broker-account-card__header { display: flex; justify-content: space-between; gap: 12px; align-items: start; } .broker-account-card__title { font-size: clamp(1.4rem, 2vw, 1.8rem); } .broker-account-card__opened { color: var(--color-text-secondary); text-align: right; } .broker-account-card__grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; } .broker-account-card__stat { display: grid; gap: 8px; padding: 14px; border-radius: 18px; background: linear-gradient(135deg, rgba(255, 255, 255, 0.92), rgba(241, 245, 239, 0.88)); border: 1px solid rgba(31, 48, 39, 0.08); } .broker-account-card__stat--wide { grid-column: span 2; } .broker-account-card__alert { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 16px 18px; border-radius: 18px; background: rgba(198, 40, 40, 0.08); color: #8e2525; } .broker-account-card__retry { border: none; border-radius: 999px; background: #163f2c; color: #fff; padding: 10px 16px; font: inherit; cursor: pointer; } .broker-account-card__retry:focus-visible { outline: 3px solid rgba(59, 128, 74, 0.3); outline-offset: 3px; } .broker-accounts-empty { padding: 28px; display: grid; gap: 10px; } @media (prefers-reduced-motion: reduce) { .broker-account-card--link, .loading-spinner, .skeleton { transition: none; animation: none; } } @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-accounts-page__header, .broker-account-card__header { grid-template-columns: minmax(0, 1fr); display: grid; } .broker-accounts-summary, .broker-account-card, .broker-accounts-empty { padding: 18px; border-radius: 20px; } .broker-accounts-summary__hero, .broker-accounts-summary__metrics, .broker-account-card__grid { grid-template-columns: 1fr; } .broker-account-card__stat--wide { grid-column: auto; } .broker-account-card__opened { text-align: left; } .broker-account-card__alert { align-items: stretch; flex-direction: column; } } .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; } }