@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 400 500; font-display: swap; src: url('./fonts/dm-sans-regular.ttf') format('truetype'); }
@font-face { font-family: 'DM Sans'; font-style: normal; font-weight: 550 750; font-display: swap; src: url('./fonts/dm-sans-semibold.ttf') format('truetype'); }
.sidebar { background: #fff; border-right: 1px solid var(--line); padding-top: 28px; color: var(--muted); }
.brand { color: var(--ink); text-decoration: none; }
.brand:hover { text-decoration: none; }
.brand-icon { background: none; box-shadow: none; width: 38px; height: 38px; }
.brand-icon img { width: 100%; height: 100%; }
.brand-name { font-size: 24px; letter-spacing: -.9px; line-height: 1.1; font-weight: 700; }
.brand-name em { color: #378678; font-style: normal; }
.brand-tag { font-size: 8px; color: #7a9087; letter-spacing: 1.1px; margin-top: 6px; }
.workspace { margin: 28px 4px 20px; padding: 12px 10px; background: #fafbf9; border-color: var(--line); }
.workspace strong { color: #385248; overflow-wrap: anywhere; }
.workspace small { color: #7b8e84; }
.workspace-avatar, .avatar { background: #e7f1eb; color: #276d56; }
.nav-label { color: #8c9c93; font-size: 9px; letter-spacing: 1.5px; }
.nav-button { color: #64766d; min-height: 43px; }
.nav-button:hover, .guide-nav-link:hover { background: #f3f6f2; color: var(--green); }
.nav-button.active, .guide-nav-link.active { background: #e9f3ec; color: var(--green); box-shadow: none; }
.nav-button .nav-dot, .guide-nav-link.active .guide-nav-dot { background: var(--green); }
.guide-subnav { border-color: #deebe1; }
.guide-nav-link { color: #7b8c82; }
.guide-nav-dot { background: #9ab9a6; }
.sidebar-bottom { padding: 25px 6px 0; }
.connection, .logout { color: #7c9186; }
.logout:hover { color: var(--green); }
.role { background: #edf4ee; color: #5d856c; }
.topbar-left { display: flex; align-items: center; font-size: 12px; }
.topbar-left .product-switch { flex-shrink: 0; }
.admin-product-switch { max-width: 100%; flex-wrap: wrap; }
.admin-product-filters { flex-wrap: wrap; }
.admin-product-filters .filter { max-width: 100%; }
.admin-product-summary { margin-bottom: 20px; }
.admin-product-summary .stats { margin-bottom: 16px; }
.admin-product-stats { grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); }
.admin-product-statuses { display: flex; flex-wrap: wrap; gap: 8px; }
.admin-product-table .table-sub { overflow-wrap: anywhere; }
.admin-product-pagination { flex-wrap: wrap; margin-top: 16px; }
@media (max-width: 680px) {
  .topbar:has(.admin-product-switch) { height: auto; min-height: 72px; align-items: flex-start; padding-top: 10px; padding-bottom: 10px; }
  .topbar:has(.admin-product-switch) .topbar-left { min-width: 0; flex: 1; }
  .topbar-left .admin-product-switch { flex-shrink: 1; gap: 2px; }
  .admin-product-switch a { padding: 0 8px; font-size: 11px; }
  .login-product-nav:has(.admin-product-switch) { max-width: calc(100% - 44px); }
  .admin-product-filters { width: 100%; }
  .admin-product-filters .filter { width: 100%; }
}
.eyebrow { color: #648a76; letter-spacing: 1.7px; }
.button { border-radius: 8px; }
.button:not(.secondary):not(.ghost):not(.danger):hover { background: var(--green-dark); }
.notice:not(.error):not(.warning) { background: #edf5ee; color: #52795e; border-color: #d8e7db; }
.stat-icon:not(.orange):not(.blue), .provider-symbol, .empty-icon { background: #edf5ee; color: #3d886a; }
.secret-box { background: #edf5ee; border-color: #d8e7db; color: #326d52; }
.tab.active { background: var(--green); color: white; }
.vendor-tab:has(input:checked), .vendor-all.active { border-color: #94c1a8; background: #edf5ee; color: #2a7155; }
.vendor-tab input { accent-color: var(--green); }
.integration-tabs { background: #e9f1e9; border-color: #cedfce; }
.integration-tabs .tab { color: #52745e; border-color: #d8e6d8; }
.integration-tabs .tab:hover { color: #256849; }
.integration-tabs .tab.active { background: var(--green); border-color: var(--green); color: white; box-shadow: 0 3px 8px #28623e1a; }
.key-edit { color: #5c9277; }
.key-edit:hover { background: #e9f3ec; color: var(--green); }
.chart-bar { background: linear-gradient(180deg, #7ec3a6, #278065); }
.login-shell { background: #f8faf7; padding: 22px; gap: 22px; grid-template-columns: 1.05fr 1fr; }
.login-art { border: 1px solid #dce7d7; border-radius: 22px; background: radial-gradient(ellipse at 80% 80%, #d2e7d8, transparent 65%), #ecf2e5; color: var(--ink); padding: 40px 48px; }
.login-art::before { content: ''; position: absolute; inset: 0; background-image: linear-gradient(#5d846612 1px, transparent 1px), linear-gradient(90deg, #5d846612 1px, transparent 1px); background-size: 42px 42px; mask-image: linear-gradient(160deg, transparent 20%, #000); pointer-events: none; }
.login-art .brand-name { font-size: 26px; }
.login-art .brand-tag { font-size: 8px; }
.login-art .brand { padding: 0; z-index: 1; }
.login-pitch { padding: 54px 0 35px; margin: auto 0; }
.login-pitch .eyebrow { color: #6b8b68; font-size: 10px; }
.login-pitch h1 { font-size: clamp(36px, 3.6vw, 54px); font-weight: 550; line-height: 1.4; letter-spacing: -1.5px; }
.login-pitch h1 em { color: #39875f; font-style: normal; }
.login-pitch p { color: #6e8574; font-size: 13px; line-height: 1.9; margin-top: 20px; }
.login-art-footer { color: #77927d; position: relative; font-size: 10px; letter-spacing: 1px; }
.login-right { position: relative; padding: 85px 35px 45px; }
.login-product-nav { position: absolute; top: 18px; right: 24px; }
.login-box { width: 100%; max-width: 365px; }
.login-box h2 { font-weight: 600; font-size: 27px; letter-spacing: -.7px; }
.login-box > p { color: #859087; line-height: 1.8; }
.login-box label { color: #415d4e; font-size: 12px; }
.login-box input { background: #fff; border-color: #dce6dc; padding: 13px 14px; }
.login-box .button { min-height: 46px; }
.login-help { border-color: #e0e8dc; color: #839483; }
.login-help strong { color: #5e7b64; }
.orbit { display: none; }
.gateway-map { display: flex; align-items: center; gap: 20px; position: relative; margin-top: 34px; padding: 25px 0; }
.gateway-source { padding: 18px; background: #ffffffd6; border: 1px solid #caddc9; border-radius: 14px; box-shadow: 0 8px 25px #3a704a08; }
.gateway-source b { display: block; font-size: 18px; font-weight: 600; color: #286248; }
.gateway-source small { display: block; margin-top: 5px; font-size: 9px; color: #8aa08a; letter-spacing: 1px; }
.gateway-link { height: 1px; width: 35px; background: #8cba9b; position: relative; }
.gateway-link::after { content: ''; width: 6px; height: 6px; border-radius: 50%; background: #4d9968; position: absolute; right: 0; top: -3px; }
.gateway-models { display: grid; gap: 9px; }
.gateway-models span { border: 1px solid #c7dcca; background: #f9fcf4bb; border-radius: 8px; padding: 10px 16px; font-size: 11px; color: #678669; }
.gateway-models span::before { content: ''; display: inline-block; width: 5px; height: 5px; border-radius: 50%; background: #7baf83; margin-right: 9px; }
@media (max-width: 1100px) { .login-art { padding: 32px; } .gateway-map { gap: 12px; } .gateway-link { width: 20px; } .login-right { padding-left: 22px; padding-right: 22px; } }
@media (max-width: 760px) { .login-shell { padding: 12px; gap: 0; grid-template-columns: 1fr; display: flex; flex-direction: column; } .login-art { padding: 25px; border-radius: 16px; min-height: auto; } .login-pitch { padding: 32px 0 10px; } .login-pitch h1 { font-size: 33px; } .login-pitch p, .gateway-map, .login-art-footer { display: none; } .login-right { padding: 87px 22px 35px; } .login-product-nav { top: 23px; right: auto; left: 22px; } .login-box h2 { font-size: 24px; } }
@media (max-width: 680px) { .topbar { padding: 0 16px; gap: 8px; } .topbar-right { gap: 10px; } .topbar-right > .avatar { display: none; } }

/* Administrator user billing: full-history totals stay separate from paged rows. */
.user-billing-actions { flex-wrap: wrap; min-width: 240px; }
.user-billing-dialog { width: min(1440px, calc(100vw - 36px)); max-width: none; max-height: calc(100dvh - 36px); padding: 0; }
.user-billing-dialog > .dialog-header { align-items: flex-start; gap: 18px; }
.user-billing-dialog > .dialog-header h2 { overflow-wrap: anywhere; }
.user-billing-dialog > .dialog-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; padding: 22px 24px 26px; }
/* Keep wide charts/tables inside their own scroll containers, not the dialog grid. */
.user-billing-dialog > .dialog-body > *, .user-status-panel > *, .user-daily-status-content, .user-lifetime-status-content { min-width: 0; max-width: 100%; }
.user-billing-dialog .table-wrap { min-width: 0; max-width: 100%; overflow-x: auto; }
.user-billing-dialog .notice { margin: 0; }
.user-billing-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.user-billing-stat { padding: 18px; border: 1px solid var(--line); border-radius: 12px; display: grid; gap: 9px; background: var(--panel, #fff); }
.user-billing-stat strong { font-size: 23px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.user-billing-stat small { color: var(--muted); line-height: 1.6; }
.user-billing-tabs { display: flex; gap: 10px; flex-wrap: wrap; }
.user-billing-tabs .active { color: var(--accent, #087c67); border-color: currentColor; background: #eaf4ef; }
.user-billing-filters { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; }
.user-billing-filters label { display: grid; grid-template-columns: minmax(0, 1fr); gap: 7px; min-width: 145px; max-width: 320px; margin: 0; }
.user-billing-filters [hidden] { display: none !important; }
.user-billing-filters input, .user-billing-filters select { min-height: 39px; min-width: 0; max-width: 100%; width: 100%; }
.user-billing-filter-total { padding: 16px 0 12px; color: var(--muted); font-size: 12px; line-height: 1.8; }
.user-billing-table { border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.user-billing-table .table { min-width: 1080px; }
.user-billing-table .table td { max-width: 330px; overflow-wrap: anywhere; }
.user-billing-pagination { padding-top: 16px; justify-content: flex-end; flex-wrap: wrap; }
.user-billing-pagination > .muted { margin-right: auto; }
@media (max-width: 900px) { .user-billing-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 600px) {
  .user-billing-dialog { width: calc(100vw - 16px); max-height: calc(100dvh - 16px); }
  .user-billing-dialog > .dialog-header, .user-billing-dialog > .dialog-body { padding: 16px; }
  .user-billing-stat { padding: 12px; }.user-billing-stat strong { font-size: 18px; }
  .user-billing-filters label { min-width: 0; width: calc(50% - 6px); max-width: none; }
  .user-billing-filters > .actions { width: 100%; }.user-billing-pagination > .muted { width: 100%; }
}

/* Four mutually exclusive lifetime request statuses, on one shared linear scale. */
.user-status-chart { margin-top: 20px; padding: 18px 20px 16px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.user-status-chart-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.user-status-chart-heading h3 { margin: 0; font-size: 14px; font-weight: 600; }
.user-status-chart-heading > span { font-size: 12px; font-variant-numeric: tabular-nums; }
.user-status-chart-scope, .user-status-chart-note { margin: 8px 0 0; font-size: 12px; line-height: 1.7; color: var(--muted); }
.user-status-columns { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(8px, 3vw, 40px); padding: 32px 10px 12px; }
.user-status-column { min-width: 0; text-align: center; }
.user-status-track { height: 138px; position: relative; display: flex; align-items: flex-end; justify-content: center; border-bottom: 1px solid #dce6e0; background: repeating-linear-gradient(to top, transparent 0, transparent 45px, #eef3ef 45px, #eef3ef 46px); }
.user-status-bar { width: min(52%, 76px); height: var(--status-height); border-radius: 5px 5px 0 0; }
.user-status-bar.settled { background: #188974; }.user-status-bar.pending_review { background: #c99a46; }
.user-status-bar.reserved { background: #7d83b9; }.user-status-bar.released { background: #8b9d99; }
.user-status-count { position: absolute; bottom: calc(var(--status-height) + 6px); left: 0; right: 0; color: var(--ink); font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.user-status-label { display: block; padding-top: 10px; font-size: 12px; color: var(--ink); }
.user-status-chart > .notice { margin-top: 14px; }.user-status-chart > .button { margin-top: 12px; }
@media (max-width: 600px) {
  .user-status-chart { padding: 14px 12px; }.user-status-columns { padding-left: 0; padding-right: 0; gap: 8px; }
  .user-status-track { height: 112px; background-size: auto 100%; }.user-status-count { font-size: 12px; }
  .user-status-bar { width: 58%; }.user-status-label { font-size: 11px; }
}

/* Daily status dates are independent from the request/ledger filters below. */
.user-status-panel { min-width: 0; display: grid; grid-template-columns: minmax(0, 1fr); gap: 14px; }
.user-status-panel [hidden] { display: none !important; }
.user-status-panel .user-status-chart { margin-top: 0; }
.user-daily-status-area { min-width: 0; }.user-daily-filters { margin-top: 2px; }
.user-daily-window-hint { margin: 8px 0 14px; line-height: 1.7; }
.user-daily-legend { display: flex; gap: 18px; flex-wrap: wrap; margin-top: 16px; font-size: 12px; }
.user-daily-legend > span { display: inline-flex; align-items: center; gap: 6px; }
.user-status-swatch { width: 10px; height: 10px; display: inline-block; border-radius: 2px; }
.user-status-swatch.settled { background: #188974; }.user-status-swatch.pending_review { background: #c99a46; }
.user-status-swatch.reserved { background: #7d83b9; }.user-status-swatch.released { background: #8b9d99; }
.user-daily-scroll { min-width: 0; max-width: 100%; overflow-x: auto; margin-top: 16px; padding-bottom: 8px; overscroll-behavior-inline: contain; }
.user-daily-scroll:focus-visible { outline: 2px solid #188974; outline-offset: 3px; }
.user-daily-columns { display: flex; gap: 16px; width: 100%; min-width: 100%; }
.user-daily-day { flex: 1 0 88px; min-width: 88px; text-align: center; }
.user-daily-day-total { display: block; margin-bottom: 8px; font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; }
.user-daily-plot { display: flex; align-items: flex-end; gap: 5px; height: 144px; border-bottom: 1px solid #dce6e0; background: repeating-linear-gradient(to top, transparent 0, transparent 47px, #eef3ef 47px, #eef3ef 48px); }
.user-daily-bar-slot { height: 100%; min-width: 0; flex: 1; display: flex; align-items: flex-end; justify-content: center; }
.user-daily-bar-slot .user-status-bar { width: 100%; max-width: 28px; border-radius: 3px 3px 0 0; }
.user-daily-date { display: block; margin-top: 9px; font-size: 12px; font-variant-numeric: tabular-nums; }
.user-daily-table { margin-top: 16px; border-top: 1px solid var(--line); padding-top: 12px; }
.user-daily-table > summary { cursor: pointer; color: var(--ink); font-size: 12px; padding: 4px 0; }
.user-daily-table .table { min-width: 610px; margin-top: 10px; }
@media (max-width: 600px) {
  .user-daily-columns { gap: 12px; }.user-daily-day { flex-basis: 84px; min-width: 84px; }
  .user-daily-plot { height: 120px; }.user-daily-legend { gap: 12px; }
}
