/* Partner Ledger — Coinbase shell (baizhi Design Prompt)
   Source: https://baizhi.cloud/landing/design-prompt/detail/coinbase
   Soft UI structure kept; colors locked to Coinbase Blue.
   Load after app.css.
*/

:root{
  --coinbase-blue:#0052ff;
  --coinbase-blue-active:#003ecc;
  --on-primary:#ffffff;
  --canvas:#ffffff;
  --surface-soft:#f7f7f7;
  --surface-strong:#eef0f3;
  --surface-dark:#0a0b0d;
  --surface-dark-elevated:#16181c;
  --ink:#0a0b0d;
  --body:#5b616e;
  --hairline:#dee1e6;
  /* Darker than #05b169 so money-up clears 4.5:1 on white. */
  --semantic-up:#037847;
  --semantic-down:#cf202f;

  --fx-blue:var(--coinbase-blue);
  --fx-blue-deep:var(--coinbase-blue-active);
  --fx-blue-soft:rgba(0,82,255,.10);
  --fx-blue-softer:rgba(0,82,255,.06);
  --fx-up:var(--semantic-up);
  --fx-up-soft:rgba(3,120,71,.12);
  --fx-down:var(--semantic-down);
  --fx-down-soft:rgba(207,32,47,.10);
  --fx-bg:var(--surface-soft);
  --fx-canvas:var(--canvas);
  --fx-ink:var(--ink);
  --fx-body:var(--body);
  --fx-muted:#6b7178;
  --fx-line:var(--hairline);
  /* Layered elevation (contact + ambient) — flat white + 1px rule reads as a table */
  --fx-edge:1px solid rgba(10,11,13,.055);
  --fx-lift:0 1px 2px rgba(10,11,13,.05),0 10px 26px rgba(10,11,13,.055);
  --fx-lift-hi:0 1px 2px rgba(10,11,13,.06),0 16px 36px rgba(10,11,13,.09);
  --fx-inset-hi:inset 0 1px 0 rgba(255,255,255,.8);
  --fx-tile:linear-gradient(160deg,#fbfbfc 0%,#f3f4f6 100%);
  --fx-shadow:var(--fx-lift);
  --fx-shadow-sm:0 1px 2px rgba(10,11,13,.05),0 6px 18px rgba(10,11,13,.05);
  --fx-radius:22px;
  --fx-radius-sm:14px;
  --fx-sidebar:260px;

  --primary:var(--coinbase-blue);
  --primary-active:var(--coinbase-blue-active);
  --primary-disabled:#a8b8cc;
  --bg:var(--surface-soft);
  --bg-elevated:var(--canvas);
  --grouped:var(--canvas);
  --label:var(--ink);
  --secondary-label:var(--body);
  --tertiary-label:var(--fx-muted);
  --text:var(--ink);
  --accent:var(--coinbase-blue);
  --accent2:var(--coinbase-blue);
  --accent-soft:var(--fx-blue-soft);
  --accent-focus:var(--coinbase-blue);
  --blue:var(--coinbase-blue);
  --money-up:var(--semantic-up);
  --money-down:var(--semantic-down);
  --money-move:var(--ink);
  --danger:var(--semantic-down);
  --success:var(--semantic-up);
  --sidebar-w:var(--fx-sidebar);
  --sidebar-bg:var(--canvas);
  --radius-card:var(--fx-radius);
  --radius-inner:var(--fx-radius-sm);
  --radius-lg:18px;
  --radius-xl:var(--fx-radius);
  --radius-pill:100px;
  --shadow-soft:var(--fx-shadow-sm);
  --shadow-card:var(--fx-shadow);
  --pad-card:20px;
  --gap-page:16px;
  --app-max:1480px;
  --content-max-readable:1180px;
}

body.fx-shell{
  background:var(--fx-bg);
  color:var(--fx-ink);
  font-family:var(--font),"DM Sans",-apple-system,system-ui,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
}
body.fx-shell .staging-banner{
  background:var(--surface-dark);
  color:#fff;
  border-bottom:0;
  font-weight:600;
  padding:8px 16px;
  font-size:12px;
  line-height:1.4;
}

/* ===== Permanent labeled sidebar (textured finance panel) ===== */
body.fx-shell .app-frame{
  width:100%;
  max-width:var(--app-max);
  margin:0 auto;
  background:var(--fx-bg);
  gap:0;
}
body.fx-shell .sidebar,
body.fx-shell .fx-nav{
  --nav-pad-x:14px;
  position:sticky;top:0;align-self:flex-start;
  width:var(--fx-sidebar);height:100vh;
  display:flex;flex-direction:column;gap:14px;
  padding:18px 14px 14px;margin:0;
  background:
    radial-gradient(120% 70% at 0% 0%, rgba(0,82,255,.08) 0%, transparent 55%),
    linear-gradient(180deg,#fcfcfd 0%,#f4f6f9 48%,#eef1f5 100%);
  border-right:1px solid rgba(10,11,13,.08);
  border-radius:0;
  box-shadow:inset -1px 0 0 rgba(255,255,255,.65), 8px 0 28px rgba(10,11,13,.035);
  overflow:auto;z-index:20;
}
body.fx-shell .sidebar::-webkit-scrollbar{width:8px}
body.fx-shell .sidebar::-webkit-scrollbar-thumb{
  background:rgba(10,11,13,.12);border-radius:999px;border:2px solid transparent;background-clip:padding-box;
}

.fx-brand{
  display:flex;align-items:center;gap:12px;
  padding:4px 8px 2px;flex:0 0 auto;
}
.fx-brand-mark{
  width:38px;height:38px;border-radius:12px;flex:0 0 38px;
  display:grid;place-items:center;
  background:linear-gradient(145deg,#2f6bff 0%,#0052ff 55%,#003ecc 100%);
  color:#fff;font-size:15px;font-weight:700;letter-spacing:-.04em;
  box-shadow:0 8px 18px rgba(0,82,255,.22), inset 0 1px 0 rgba(255,255,255,.28);
}
.fx-brand strong{
  display:block;font-size:15px;font-weight:700;letter-spacing:-.03em;color:var(--fx-ink);line-height:1.15;
}
.fx-brand small{
  display:block;margin-top:3px;font-size:11px;font-weight:600;color:var(--fx-muted);letter-spacing:.02em;
}

.fx-user{
  display:flex;align-items:center;gap:11px;
  margin:0 2px;padding:10px 11px;flex:0 0 auto;
  border-radius:16px;
  background:rgba(255,255,255,.72);
  border:1px solid rgba(10,11,13,.06);
  box-shadow:0 1px 0 rgba(255,255,255,.9), 0 8px 20px rgba(10,11,13,.04);
  backdrop-filter:blur(10px);
}
.fx-avatar{
  width:40px;height:40px;border-radius:13px;flex:0 0 40px;
  display:grid;place-items:center;
  background:linear-gradient(160deg,#eef3ff 0%,#d9e4ff 100%);
  color:var(--fx-blue-deep);font-weight:700;font-size:15px;
  box-shadow:inset 0 0 0 1px rgba(0,82,255,.14);
}
.fx-user-copy{min-width:0}
.fx-user strong{display:block;font-size:14px;font-weight:600;color:var(--fx-ink);letter-spacing:-.015em}
.fx-user small{display:block;margin-top:2px;color:var(--fx-muted);font-size:11px;font-weight:500}

.fx-panel-nav{display:flex;flex-direction:column;gap:14px;flex:1;min-height:0;padding:2px 0 4px}
body.fx-shell .fx-nav .nav-group{display:flex;flex-direction:column;gap:2px}
body.fx-shell .fx-nav .nav-label{
  padding:10px 12px 5px;color:#8a919b;
  font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;
}
.fx-panel-nav a,
body.fx-shell .fx-nav .sidebar-nav a{
  position:relative;
  display:flex;align-items:center;gap:10px;
  min-height:42px;padding:8px 12px 8px 11px;border-radius:12px;
  color:#4b5563;font-size:13.5px;font-weight:500;letter-spacing:-.01em;
  transition:background .16s ease,color .16s ease,box-shadow .16s ease,transform .16s ease;
}
.fx-panel-nav a::before,
body.fx-shell .fx-nav .sidebar-nav a::before{
  content:"";
  width:28px;height:28px;flex:0 0 28px;order:-1;
  border-radius:9px;
  background:rgba(10,11,13,.035);
  box-shadow:inset 0 0 0 1px rgba(10,11,13,.05);
}
.fx-panel-nav a::after,
body.fx-shell .fx-nav .sidebar-nav a::after{
  content:"";
  position:absolute;left:18px;top:50%;
  width:14px;height:14px;margin-top:-7px;
  background-color:currentColor;
  -webkit-mask:var(--nav-ico) center/14px 14px no-repeat;
  mask:var(--nav-ico) center/14px 14px no-repeat;
  opacity:.78;pointer-events:none;
}
.fx-panel-nav a[data-nav="home"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 10.5 12 4l8 6.5V20a1 1 0 0 1-1 1h-5v-6H10v6H5a1 1 0 0 1-1-1z'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="entry"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 5v14M5 12h14'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="ledger"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 6h12M8 12h12M8 18h12M4 6h.01M4 12h.01M4 18h.01'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="close"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 11l3 3L22 4'/%3E%3Cpath d='M21 12v7a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="shop"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 9h18l-1.5 11h-15z'/%3E%3Cpath d='M8 9V7a4 4 0 0 1 8 0v2'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="in"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v12'/%3E%3Cpath d='m7 10 5 5 5-5'/%3E%3Cpath d='M5 21h14'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="out"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 21V9'/%3E%3Cpath d='m7 14 5-5 5 5'/%3E%3Cpath d='M5 3h14'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="stock"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z'/%3E%3Cpath d='M3.3 7 12 12l8.7-5M12 22V12'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="bot"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='8' width='14' height='11' rx='3'/%3E%3Cpath d='M12 8V5M9 13h.01M15 13h.01M9 17h6'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="log"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 3H7a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V8z'/%3E%3Cpath d='M14 3v5h5M9 13h6M9 17h4'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="memo"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 4h8a2 2 0 0 1 2 2v14l-4-2-4 2-4-2-4 2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="settings"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3Cpath d='M19.4 15a1.7 1.7 0 0 0 .3 1.8l.1.1a2 2 0 1 1-2.8 2.8l-.1-.1a1.7 1.7 0 0 0-1.8-.3 1.7 1.7 0 0 0-1 1.5V21a2 2 0 1 1-4 0v-.1a1.7 1.7 0 0 0-1-1.5 1.7 1.7 0 0 0-1.8.3l-.1.1a2 2 0 1 1-2.8-2.8l.1-.1a1.7 1.7 0 0 0 .3-1.8 1.7 1.7 0 0 0-1.5-1H3a2 2 0 1 1 0-4h.1a1.7 1.7 0 0 0 1.5-1 1.7 1.7 0 0 0-.3-1.8l-.1-.1a2 2 0 1 1 2.8-2.8l.1.1a1.7 1.7 0 0 0 1.8.3h.1a1.7 1.7 0 0 0 1-1.5V3a2 2 0 1 1 4 0v.1a1.7 1.7 0 0 0 1 1.5 1.7 1.7 0 0 0 1.8-.3l.1-.1a2 2 0 1 1 2.8 2.8l-.1.1a1.7 1.7 0 0 0-.3 1.8v.1a1.7 1.7 0 0 0 1.5 1H21a2 2 0 1 1 0 4h-.1a1.7 1.7 0 0 0-1.5 1z'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="bill"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='5' width='18' height='14' rx='2'/%3E%3Cpath d='M3 10h18M8 15h3'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="docs"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 3h6l5 5v13a1 1 0 0 1-1 1H8a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z'/%3E%3Cpath d='M14 3v5h5'/%3E%3C/svg%3E")}
.fx-panel-nav a[data-nav="bug"]{--nav-ico:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 7h8v4a4 4 0 0 1-8 0z'/%3E%3Cpath d='M9 7V5M15 7V5M5 10h3M16 10h3M6 15l2.5-1.5M18 15l-2.5-1.5M10 15v4M14 15v4'/%3E%3C/svg%3E")}
.bug-hub-page .stock-hub-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:720px){
  .bug-hub-page .stock-hub-grid{grid-template-columns:1fr}
}

.fx-panel-nav a:hover,
body.fx-shell .fx-nav .sidebar-nav a:hover{
  background:rgba(255,255,255,.78);color:var(--fx-ink);
  box-shadow:0 1px 0 rgba(255,255,255,.9), 0 6px 14px rgba(10,11,13,.05);
}
.fx-panel-nav a:focus-visible,
body.fx-shell .fx-nav .sidebar-nav a:focus-visible{
  outline:2px solid var(--fx-blue);outline-offset:2px;
}
.fx-panel-nav a:active,
body.fx-shell .fx-nav .sidebar-nav a:active{transform:translateY(1px)}
.fx-panel-nav a.active,
body.fx-shell .fx-nav .sidebar-nav a.active{
  background:linear-gradient(180deg,#ffffff 0%,#f3f6ff 100%);
  color:var(--fx-blue-deep);font-weight:600;
  box-shadow:
    inset 3px 0 0 var(--fx-blue),
    0 1px 0 rgba(255,255,255,.95),
    0 10px 22px rgba(0,82,255,.08);
}
.fx-panel-nav a.active::before,
body.fx-shell .fx-nav .sidebar-nav a.active::before{
  display:block;
  background:rgba(0,82,255,.1);
  box-shadow:inset 0 0 0 1px rgba(0,82,255,.16);
}
.fx-panel-nav a.active::after,
body.fx-shell .fx-nav .sidebar-nav a.active::after{
  background-color:var(--fx-blue);
  opacity:1;
}
body.fx-shell .fx-nav .nav-badge{
  margin-left:auto;min-width:20px;height:20px;padding:0 6px;border-radius:999px;
  background:var(--fx-blue);color:#fff;font-size:11px;font-weight:700;
  display:inline-flex;align-items:center;justify-content:center;
  box-shadow:0 4px 10px rgba(0,82,255,.22);
}

.fx-widget{
  position:relative;overflow:hidden;
  margin-top:auto;padding:16px;border-radius:18px;flex:0 0 auto;
  background:
    radial-gradient(120% 90% at 100% 0%, rgba(0,82,255,.18) 0%, transparent 55%),
    linear-gradient(165deg,#163057 0%,#0d1b2e 58%,#111827 100%);
  border:1px solid rgba(255,255,255,.08);
  box-shadow:0 14px 30px rgba(10,11,13,.16), inset 0 1px 0 rgba(255,255,255,.12);
  color:#fff;
}
.fx-widget span{
  display:block;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:rgba(255,255,255,.55);
}
.fx-widget strong{
  display:block;margin-top:8px;font-size:20px;font-weight:700;
  letter-spacing:-.03em;color:#fff;font-variant-numeric:tabular-nums;
}
.fx-widget p{
  margin:6px 0 0;font-size:12px;line-height:1.45;color:rgba(255,255,255,.62);
}
.fx-bars{display:flex;align-items:flex-end;gap:4px;height:42px;margin-top:14px}
.fx-bars i{
  flex:1;border-radius:6px 6px 3px 3px;background:linear-gradient(180deg,#7aa7ff,#0052ff);
  opacity:.4;min-height:8px;
}
.fx-bars i:nth-child(2){opacity:.55;height:60%}
.fx-bars i:nth-child(3){opacity:.75;height:85%}
.fx-bars i:nth-child(4){opacity:1;height:100%}
.fx-bars i:nth-child(5){opacity:.65;height:70%}
.fx-bars i:nth-child(6){opacity:.45;height:45%}
.fx-widget a{
  display:inline-flex;align-items:center;margin-top:12px;
  font-size:13px;font-weight:600;color:#fff;
  padding:8px 0;border-bottom:1px solid rgba(255,255,255,.18);
}
.fx-widget a:hover{color:#dce8ff;border-bottom-color:rgba(220,232,255,.5)}
.fx-widget a:focus-visible{outline:2px solid #fff;outline-offset:3px}

.fx-panel-foot{
  margin-top:auto;padding:12px 14px;border-radius:14px;
  background:rgba(255,255,255,.7);border:1px solid rgba(10,11,13,.06);flex:0 0 auto;
}
.fx-panel-foot .user-name{font-size:13px;font-weight:600;color:var(--fx-ink)}
.fx-panel-foot .user-meta{margin-top:2px;font-size:11px;color:var(--fx-muted)}

/* Period control: lock future */
body.fx-shell .global-date-nav:disabled,
body.fx-shell .global-date-nav[disabled]{
  opacity:.35;cursor:not-allowed;pointer-events:none;
}

/* Settlement history */
body.fx-shell .history-page{
  display:grid;gap:var(--gap-page,16px);align-content:start;
}
body.fx-shell .history-filter-band{
  display:flex;flex-wrap:wrap;align-items:end;gap:12px 16px;
  padding:var(--pad-card,20px)!important;margin:0!important;
  background:var(--fx-canvas)!important;border:var(--fx-edge)!important;
  border-radius:var(--fx-radius)!important;box-shadow:var(--fx-lift)!important;
}
body.fx-shell .history-month-form label{
  display:grid;gap:6px;font-size:12px;font-weight:600;color:var(--fx-muted);
}
body.fx-shell .history-month-form input[type="month"]{
  min-height:40px;padding:0 12px;border-radius:12px;
  border:1px solid rgba(10,11,13,.1);background:#fff;color:var(--fx-ink);
}
body.fx-shell .history-filter-chips{display:flex;flex-wrap:wrap;gap:8px;flex:1}
body.fx-shell .history-filter-chip{
  display:inline-flex;align-items:center;gap:6px;
  min-height:36px;padding:0 12px;border-radius:999px;
  background:rgba(10,11,13,.04);color:var(--fx-body);
  font-size:13px;font-weight:600;text-decoration:none;
}
body.fx-shell .history-filter-chip span{
  min-width:18px;padding:0 6px;border-radius:999px;
  background:rgba(10,11,13,.06);font-size:11px;font-weight:700;
}
body.fx-shell .history-filter-chip.is-active{
  background:var(--fx-blue-soft);color:var(--fx-blue-deep);
}
body.fx-shell .history-filter-chip.is-active span{
  background:rgba(0,82,255,.14);color:var(--fx-blue-deep);
}
body.fx-shell .history-filter-total{
  display:grid;justify-items:end;gap:2px;margin-left:auto;
}
body.fx-shell .history-filter-total strong{
  font-size:22px;font-weight:700;letter-spacing:-.03em;color:var(--fx-ink);
}
body.fx-shell .history-filter-total span{font-size:12px;color:var(--fx-muted)}
body.fx-shell .history-archive-section{
  background:transparent!important;border:0!important;box-shadow:none!important;
  padding:0!important;display:grid;gap:12px;
}
body.fx-shell .history-card-list{display:grid;gap:12px}
body.fx-shell .history-card{
  display:grid;gap:12px;padding:var(--pad-card,20px);
  background:var(--fx-canvas);border:var(--fx-edge);
  border-radius:var(--fx-radius);box-shadow:var(--fx-lift);
}
body.fx-shell .history-card.is-open{box-shadow:inset 3px 0 0 #d97706, var(--fx-lift)}
body.fx-shell .history-card.has-unpaid{box-shadow:inset 3px 0 0 #b45309, var(--fx-lift)}
body.fx-shell .history-card-top{
  display:flex;justify-content:space-between;gap:12px;align-items:flex-start;
}
body.fx-shell .history-card-date strong{
  display:block;font-size:18px;font-weight:700;letter-spacing:-.02em;color:var(--fx-ink);
}
body.fx-shell .history-card-date small{display:block;margin-top:3px;font-size:12px;color:var(--fx-muted)}
body.fx-shell .history-card-badge{
  display:inline-flex;align-items:center;min-height:28px;padding:0 10px;border-radius:999px;
  background:rgba(3,120,71,.1);color:#037847;font-size:12px;font-weight:700;
}
body.fx-shell .history-card.is-open .history-card-badge{
  background:rgba(217,119,6,.12);color:#b45309;
}
body.fx-shell .history-card-metrics{
  display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;
}
body.fx-shell .history-card-metrics > div{
  display:grid;gap:4px;padding:12px;border-radius:14px;
  background:rgba(10,11,13,.03);border:1px solid rgba(10,11,13,.05);
}
body.fx-shell .history-card-metrics span{font-size:11px;font-weight:700;color:var(--fx-muted)}
body.fx-shell .history-card-metrics strong{
  font-size:18px;font-weight:700;letter-spacing:-.02em;font-variant-numeric:tabular-nums;
}
body.fx-shell .history-card-metrics .negative{color:#b42318}
body.fx-shell .history-card-metrics .positive{color:#037847}
body.fx-shell .history-card-members{
  display:grid;gap:8px;padding-top:2px;
}
body.fx-shell .history-members-label{
  font-size:11px;font-weight:700;letter-spacing:.02em;color:var(--fx-muted);
}
body.fx-shell .history-members-grid{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;
}
body.fx-shell .history-member-cell{
  display:grid;gap:2px;padding:10px 12px;border-radius:12px;
  background:rgba(10,11,13,.03);border:1px solid rgba(10,11,13,.05);
}
body.fx-shell .history-member-cell.is-me{
  background:rgba(0,82,255,.05);border-color:rgba(0,82,255,.12);
}
body.fx-shell .history-member-cell span{
  font-size:12px;font-weight:600;color:var(--fx-muted);
}
body.fx-shell .history-member-cell b{
  font-size:15px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;
}
body.fx-shell .history-card-members .negative{color:#b42318}
body.fx-shell .history-card-members .positive{color:#037847}
body.fx-shell .history-detail-block{display:grid;gap:8px}
body.fx-shell .history-detail-block h3{
  margin:0;font-size:12px;font-weight:700;color:var(--fx-muted);letter-spacing:.02em;
}
body.fx-shell .history-detail-dl{display:grid;gap:6px;margin:0}
body.fx-shell .history-detail-dl > div{
  display:grid;grid-template-columns:3rem minmax(0,1fr);gap:10px;align-items:start;
}
body.fx-shell .history-detail-dl dt{margin:0;font-size:12px;font-weight:700;color:var(--fx-muted)}
body.fx-shell .history-detail-dl dd{margin:0;font-size:13px;color:var(--fx-body);line-height:1.45}
body.fx-shell .history-detail-muted{color:var(--fx-muted)!important}
body.fx-shell .history-unpaid-flag{
  margin:0;font-size:12px;font-weight:600;color:#b45309;
}
body.fx-shell .history-card-actions{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;
}
body.fx-shell .history-card-detail{flex:1;min-width:220px}
body.fx-shell .history-card-detail > summary{
  cursor:pointer;color:var(--fx-blue);font-size:13px;font-weight:600;
}
body.fx-shell .history-card-detail-body{
  display:grid;gap:14px;margin-top:12px;padding-top:12px;
  border-top:1px solid rgba(10,11,13,.08);
}
body.fx-shell .history-snapshot-breakdown p{margin:0 0 4px;font-size:13px;color:var(--fx-body)}
body.fx-shell .history-snapshot-partners{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;
}
body.fx-shell .history-snapshot-partners article{
  display:grid;gap:6px;padding:12px;border-radius:14px;
  background:rgba(10,11,13,.03);border:1px solid rgba(10,11,13,.06);
}
body.fx-shell .history-partner-head{
  display:flex;justify-content:space-between;gap:8px;align-items:baseline;
}
body.fx-shell .history-partner-head span{font-size:13px;font-weight:700;color:var(--fx-blue-deep)}
body.fx-shell .history-snapshot-partners small{font-size:12px;color:var(--fx-muted);line-height:1.4}
body.fx-shell .history-snapshot-partners p{
  margin:0;font-size:12px;line-height:1.5;color:var(--fx-body);white-space:pre-line;
}
body.fx-shell .history-snapshot-transfers{
  display:grid;gap:6px;font-size:13px;
}
body.fx-shell .history-snapshot-transfers p{margin:0}
body.fx-shell .history-snapshot-confirmations{
  display:flex;flex-wrap:wrap;gap:8px;
}
body.fx-shell .history-snapshot-confirmations span{
  font-size:12px;color:var(--fx-muted);
  padding:4px 8px;border-radius:999px;background:rgba(10,11,13,.04);
}
body.fx-shell .history-empty,
body.fx-shell .history-pagination{
  margin:0;
}
body.fx-shell .history-pagination{
  display:flex;align-items:center;justify-content:center;gap:12px;
  font-size:13px;color:var(--fx-muted);
}
@media (max-width:900px){
  body.fx-shell .history-card-metrics{grid-template-columns:1fr 1fr}
  body.fx-shell .history-members-grid,
  body.fx-shell .history-snapshot-partners{grid-template-columns:1fr}
}
@media (max-width:640px){
  body.fx-shell .history-filter-total{margin-left:0;justify-items:start}
  body.fx-shell .history-card-metrics{grid-template-columns:1fr 1fr}
}

/* Stock hub */
.stock-hub-page .page-head{margin-bottom:var(--gap-page,16px)}
.stock-hub-grid{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-page,16px);
}
.stock-hub-card{
  display:flex;flex-direction:column;gap:6px;
  padding:var(--pad-card,20px);border-radius:16px;
  background:linear-gradient(180deg,#fff 0%,#f7f9fc 100%);
  border:1px solid rgba(10,11,13,.08);
  box-shadow:0 1px 0 rgba(255,255,255,.9),0 10px 24px rgba(10,11,13,.04);
  color:var(--fx-ink);text-decoration:none;
  transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;
}
.stock-hub-card strong{font-size:16px;font-weight:600;letter-spacing:-.02em}
.stock-hub-card span{font-size:13px;line-height:1.45;color:var(--fx-muted)}
.stock-hub-card:hover{
  transform:translateY(-1px);
  border-color:rgba(0,82,255,.18);
  box-shadow:0 1px 0 rgba(255,255,255,.95),0 14px 28px rgba(0,82,255,.08);
  color:var(--fx-ink);
}
.stock-hub-card:focus-visible{outline:2px solid var(--fx-blue);outline-offset:2px}
@media (max-width:720px){
  .stock-hub-grid{grid-template-columns:1fr}
}

/* Hide legacy brand block when fx shell present */
body.fx-shell .sidebar-brand{display:none}
body.fx-shell .sidebar-foot{display:none}

body.fx-shell .app-column{background:var(--fx-bg);min-width:0}
body.fx-shell main.content{
  padding:24px 24px calc(48px + env(safe-area-inset-bottom,0px));
  max-width:none;
  margin:0;
  width:100%;
}
body.fx-shell .daily-close-banner{
  display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;
  min-height:48px;border-radius:12px;margin:16px 24px 0;padding:8px 16px 8px 14px;
  background:var(--fx-blue-softer)!important;
  border:1px solid rgba(0,82,255,.14);
  box-shadow:inset 3px 0 0 var(--fx-blue);
  color:var(--fx-ink);
}
/* fx 的 display:flex 比 app.css 的 [hidden]{display:none} 更具体，必须再压回去，
   否则结清后条仍挂着「账单还没结清」（空 date_label）吓人。 */
body.fx-shell .daily-close-banner[hidden]{display:none!important}
body.fx-shell .daily-close-banner-text{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px}
body.fx-shell .daily-close-banner-text strong{font-size:14px;color:var(--fx-ink)}
body.fx-shell .daily-close-banner-text span{font-size:12px;color:var(--fx-body);opacity:1}
body.fx-shell .daily-close-banner-actions{display:flex;gap:8px;align-items:center}
body.fx-shell .daily-close-banner-actions .button-link,
body.fx-shell .daily-close-banner-actions .small-link{
  min-height:44px;display:inline-flex;align-items:center;padding:0 14px;
}
body.fx-shell .fx-nav .nav-group-split{
  margin-top:8px;padding-top:8px;border-top:1px solid var(--fx-line);
}
body.fx-shell .fx-nav .nav-label{display:block}
body.fx-shell .topbar{
  background:rgba(255,255,255,.86);border-bottom:1px solid var(--fx-line);
}

/* ===== Global surface polish ===== */
body.fx-shell .surface,
body.fx-shell .group,
body.fx-shell .home-ops,
body.fx-shell .home-todos,
body.fx-shell .today-ledger,
body.fx-shell .settle-cards-section,
body.fx-shell .statement-ledger,
body.fx-shell .bookkeeping-panel,
body.fx-shell .bookkeeping-side,
body.fx-shell .settings-group,
body.fx-shell .audit-feed,
body.fx-shell .catalog-create,
body.fx-shell .catalog-list-section,
body.fx-shell .resource-entry-section,
body.fx-shell .resource-list-section,
body.fx-shell .cardnet-products-section,
body.fx-shell .cardnet-tasks-section,
body.fx-shell .cardnet-payouts,
body.fx-shell .cardnet-overview,
body.fx-shell .sync-panel,
body.fx-shell .telegram-inventory-summary,
body.fx-shell .daily-close-result-card,
body.fx-shell .daily-close-mine-card,
body.fx-shell .daily-close-transfer-card,
body.fx-shell .daily-close-people-card,
body.fx-shell .daily-close-confirm-card,
body.fx-shell .daily-close-activity-card,
body.fx-shell .daily-close-wait-card,
body.fx-shell .correction-blockers,
body.fx-shell .correction-add-section,
body.fx-shell .login{
  background:var(--fx-canvas)!important;
  border:var(--fx-edge)!important;
  border-radius:var(--fx-radius)!important;
  box-shadow:var(--fx-lift)!important;
}

body.fx-shell button:not(.secondary):not(.small):not(.login-toggle):not(.bookkeeping-type):not(.bookkeeping-side-btn):not(.period-chip):not(.global-date-nav):not(.danger-button):not(.statement-chip):not(.entry-chip):not(.entry-side-btn):not(.history-filter-chip),
body.fx-shell .button-link:not(.secondary):not(.small),
body.fx-shell .allocation-button{
  background:var(--fx-blue);
  color:#fff;
  border-radius:999px;
  font-weight:600;
  box-shadow:0 4px 12px rgba(0,82,255,.16);
}
body.fx-shell button:not(.secondary):not(.small):not(.login-toggle):not(.bookkeeping-type):not(.bookkeeping-side-btn):not(.period-chip):not(.global-date-nav):not(.danger-button):not(.statement-chip):not(.entry-chip):not(.entry-side-btn):not(.history-filter-chip):hover,
body.fx-shell .button-link:not(.secondary):not(.small):hover{background:var(--fx-blue);filter:brightness(1.03)}
body.fx-shell button:not(.secondary):not(.small):not(.login-toggle):not(.bookkeeping-type):not(.bookkeeping-side-btn):not(.period-chip):not(.global-date-nav):not(.danger-button):not(.statement-chip):not(.entry-chip):not(.entry-side-btn):not(.history-filter-chip):active,
body.fx-shell .button-link:not(.secondary):not(.small):active{background:var(--fx-blue-deep)}
/* Segmented tabs must never inherit the primary blue pill fill. */
body.fx-shell .detail-tabs button,
body.fx-shell .detail-tabs button:hover,
body.fx-shell .detail-tabs button:active{
  background:transparent!important;
  color:var(--fx-body)!important;
  box-shadow:none!important;
  border-radius:var(--radius-inner)!important;
}
body.fx-shell .detail-tabs button[aria-selected="true"],
body.fx-shell .detail-tabs button[aria-selected="true"]:hover,
body.fx-shell .detail-tabs button[aria-selected="true"]:active{
  background:#fff!important;
  color:var(--fx-blue-deep)!important;
  box-shadow:0 1px 3px rgba(10,11,13,.12),0 1px 1px rgba(10,11,13,.04)!important;
}
body.fx-shell .detail-tabs button .detail-tab-count{
  background:var(--surface-strong)!important;
  color:var(--fx-muted)!important;
}
body.fx-shell .detail-tabs button[aria-selected="true"] .detail-tab-count{
  background:var(--fx-blue-soft)!important;
  color:var(--fx-blue-deep)!important;
}
body.fx-shell button.secondary,
body.fx-shell .button-link.secondary,
body.fx-shell .secondary-link{
  background:var(--fx-blue-soft)!important;
  color:var(--fx-blue-deep)!important;
  box-shadow:none!important;
}
body.fx-shell button.danger-button,
body.fx-shell .danger-button{
  background:transparent!important;
  color:var(--fx-down)!important;
  box-shadow:inset 0 0 0 1px rgba(255,107,138,.45)!important;
}
/* Segmented / chip controls — quiet until active */
body.fx-shell .bookkeeping-side-btn,
body.fx-shell .bookkeeping-type,
body.fx-shell .period-chip,
body.fx-shell .statement-chip,
body.fx-shell .entry-chip,
body.fx-shell .entry-side-btn,
body.fx-shell .global-date-nav,
body.fx-shell .history-filter-chip{
  background:var(--fx-bg)!important;
  color:var(--fx-body)!important;
  box-shadow:none!important;
  border:1px solid var(--fx-line)!important;
}
body.fx-shell .bookkeeping-side-btn.is-active,
body.fx-shell .bookkeeping-type.is-active,
body.fx-shell .period-chip.is-active,
body.fx-shell .statement-chip.is-active,
body.fx-shell .entry-chip.is-active,
body.fx-shell .entry-side-btn.is-active,
body.fx-shell .history-filter-chip.is-active{
  background:var(--fx-blue-soft)!important;
  color:var(--fx-blue-deep)!important;
  border-color:transparent!important;
  box-shadow:none!important;
}
body.fx-shell .bookkeeping-type.is-paused.is-active{
  background:var(--fx-bg)!important;
  color:var(--fx-muted)!important;
}
body.fx-shell input:focus,
body.fx-shell select:focus,
body.fx-shell textarea:focus{
  border-color:var(--fx-blue)!important;
  box-shadow:0 0 0 3px var(--fx-blue-soft)!important;
}
body.fx-shell .notice.success{background:var(--fx-blue-soft);color:var(--fx-blue-deep)}
body.fx-shell .notice.error{background:var(--fx-down-soft);color:#cf202f}
body.fx-shell .notice.warn,
body.fx-shell .page-lock-note.warn,
body.fx-shell .dash-date-context.warn,
body.fx-shell .bookkeeping-lock-hint,
body.fx-shell .daily-close-gap-strip,
body.fx-shell .dash-gap-strip{
  background:var(--fx-blue-softer)!important;
  border:1px solid rgba(0,82,255,.14)!important;
  box-shadow:inset 3px 0 0 var(--fx-blue);
  color:var(--fx-ink)!important;
}
body.fx-shell .notice.warn span,
body.fx-shell .page-lock-note.warn span,
body.fx-shell .dash-date-context.warn span,
body.fx-shell .daily-close-gap-strip span{
  color:var(--fx-body)!important;
}
body.fx-shell .bookkeeping-lock-bar.notice.warn{
  padding-left:14px;
}
body.fx-shell .table-wrap,
body.fx-shell .table-panel{
  border-radius:var(--fx-radius)!important;
  border:1px solid var(--fx-line)!important;
  box-shadow:var(--fx-shadow-sm)!important;
  overflow:hidden;
}
body.fx-shell th{background:#f7f7f7!important}
body.fx-shell tbody tr:hover{background:var(--fx-blue-softer)!important}
body.fx-shell .page-head h1{font-weight:600;letter-spacing:-.03em}
body.fx-shell .section-head h2{font-weight:600}

/* ===== Home ===== */
/* One rhythm: every home block / column gap uses the same token. */
.fx-home{
  --fx-stack:16px;
  --fx-card-pad:20px 22px;
  --fx-card-r:18px;
  display:grid;
  gap:var(--fx-stack);
  align-content:start;
}
.fx-home > *{margin:0;min-width:0}
.fx-structure-duo{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:var(--fx-stack);align-items:stretch;
}
.fx-structure-duo > .fx-card{min-height:100%;margin:0}
.fx-home-grid{
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:var(--fx-stack);align-items:stretch;
}
.fx-home-grid > .fx-me,
.fx-home-grid > .fx-todo-card{min-height:100%;margin:0}
.fx-welcome{
  display:flex;align-items:flex-end;justify-content:space-between;gap:16px;
  padding:0 0 4px;
}
.fx-welcome h1{
  margin:0;font-size:clamp(1.3rem,1.7vw,1.55rem);font-weight:600;
  letter-spacing:-.025em;color:var(--fx-ink);line-height:1.2;text-wrap:balance;
}
.fx-card-head h2,.fx-me strong{text-wrap:pretty}
.fx-welcome p{
  margin:4px 0 0;max-width:40rem;color:var(--fx-body);
  font-size:13px;line-height:1.4;
}
.fx-welcome-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:flex-end}

.fx-kpi-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--fx-stack)}
.fx-kpi{
  position:relative;overflow:hidden;
  padding:var(--fx-card-pad);border-radius:var(--fx-card-r);
  background:var(--fx-canvas);border:var(--fx-edge);
  box-shadow:var(--fx-lift);display:grid;gap:6px;align-content:start;
  text-align:left;
}
/* Corner bloom — gives the tile a light source instead of a flat fill */
.fx-kpi::after{
  content:"";position:absolute;right:-26px;top:-34px;width:104px;height:104px;
  border-radius:50%;background:rgba(10,11,13,.045);pointer-events:none;
}
.fx-kpi.income::after{background:radial-gradient(circle,rgba(0,82,255,.11),rgba(0,82,255,0) 70%)}
.fx-kpi.cost::after{background:radial-gradient(circle,rgba(207,32,47,.10),rgba(207,32,47,0) 70%)}
.fx-kpi.profit::after{background:radial-gradient(circle,rgba(5,177,105,.13),rgba(5,177,105,0) 70%)}
.fx-kpi.profit.is-down::after{background:radial-gradient(circle,rgba(207,32,47,.11),rgba(207,32,47,0) 70%)}
.fx-kpi > *{position:relative;z-index:1;margin:0}
.fx-kpi span{font-size:12px;font-weight:600;color:var(--fx-muted);line-height:1.2}
.fx-kpi strong{
  font-size:clamp(1.5rem,2vw,1.85rem);font-weight:600;letter-spacing:-.035em;
  font-variant-numeric:tabular-nums;font-family:var(--font),var(--font-mono),monospace;color:var(--fx-ink);
  line-height:1.15;
}
.fx-kpi small{font-size:11px;color:var(--fx-muted);line-height:1.3}
.fx-kpi.is-up strong{color:var(--money-up)}
.fx-kpi.is-down strong{color:var(--money-down)}
.fx-kpi.profit.is-up strong{font-size:clamp(1.5rem,2vw,1.85rem)}
.fx-kpi.income,.fx-kpi.cost,.fx-kpi.profit{background:var(--fx-canvas)}

.fx-card{
  padding:var(--fx-card-pad);border-radius:var(--fx-card-r);
  background:var(--fx-canvas);border:var(--fx-edge);
  box-shadow:var(--fx-lift);
}
.fx-card-head{
  display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
  margin:0 0 14px;
}
.fx-card-head h2{margin:0;font-size:15px;font-weight:600;letter-spacing:-.02em;line-height:1.25}
.fx-card-head p{margin:2px 0 0;font-size:12px;color:var(--fx-muted);font-weight:500;line-height:1.3}
.fx-card-head > span{font-size:12px;color:var(--fx-muted);font-weight:500;padding-top:1px}
.fx-basis{
  display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:999px;
  background:var(--fx-blue-soft);color:var(--fx-blue-deep);font-size:11px;font-weight:600;
}

.fx-list{list-style:none;margin:0;padding:0;display:grid;gap:0}
.fx-list-row{
  display:flex;align-items:center;gap:12px;
  min-height:0;padding:11px 10px;border-radius:13px;color:inherit;text-decoration:none;
  transition:background .15s ease-out;
}
.fx-list-row:hover{background:var(--fx-bg)}
.fx-list-row:focus-visible{outline:2px solid var(--fx-blue);outline-offset:2px}
.fx-ico{
  width:38px;height:38px;border-radius:12px;flex:0 0 38px;
  display:grid;place-items:center;font-size:13px;font-weight:600;
  background:var(--fx-blue-soft);color:var(--fx-blue-deep);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6),inset 0 0 0 1px rgba(10,11,13,.03);
}
.fx-ico.is-cost{background:var(--fx-down-soft);color:var(--fx-down)}
.fx-ico.is-mint{background:var(--fx-up-soft);color:var(--fx-up)}
.fx-list-row .fx-list-copy{min-width:0;flex:1}
.fx-list-row .fx-list-copy strong{display:block;font-size:13px;font-weight:600;color:var(--fx-ink);margin:0}
.fx-list-row .fx-amt{
  font-family:var(--font),var(--font-mono),monospace;font-weight:600;font-size:14px;
  font-variant-numeric:tabular-nums;color:var(--fx-ink);white-space:nowrap;letter-spacing:-.02em;
}

/* Share bar: a real proportion track, not a stray hairline */
.fx-share{
  display:block;margin-top:7px;height:7px;border-radius:999px;
  background:rgba(10,11,13,.05);overflow:hidden;
}
.fx-share i{
  display:block;height:100%;border-radius:999px;opacity:1;
  background:linear-gradient(90deg,var(--fx-blue),#3d7bff);
}
.fx-share.is-cost i{background:linear-gradient(90deg,var(--fx-down),#e8606d);opacity:1}

/* Anchor card — the one dark surface on the page, so the eye has a starting point */
.fx-me{
  position:relative;overflow:hidden;
  display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:var(--fx-card-pad);border-radius:var(--fx-card-r);text-decoration:none;color:#fff;
  background:linear-gradient(140deg,#20242c 0%,#0d0f13 58%,#0a0b0d 100%);
  border:1px solid rgba(255,255,255,.06);
  box-shadow:0 2px 4px rgba(10,11,13,.12),0 18px 40px rgba(10,11,13,.22);
  transition:box-shadow .18s ease-out,transform .18s ease-out;
}
.fx-me::after{
  content:"";position:absolute;right:-40px;top:-56px;width:180px;height:180px;border-radius:50%;
  background:radial-gradient(circle,rgba(5,177,105,.20),rgba(5,177,105,0) 68%);pointer-events:none;
}
.fx-me > *{position:relative;z-index:1}
.fx-me:hover{box-shadow:0 2px 4px rgba(10,11,13,.14),0 24px 52px rgba(10,11,13,.28);transform:translateY(-1px)}
.fx-me:focus-visible{outline:2px solid var(--fx-blue);outline-offset:3px}
.fx-me-copy{min-width:0;flex:1}
.fx-me-copy > span:first-child{display:block;font-size:12px;font-weight:600;color:rgba(255,255,255,.6);margin:0}
.fx-me strong{
  display:block;margin:6px 0 0;font-size:clamp(1.35rem,1.75vw,1.6rem);font-weight:700;
  font-variant-numeric:tabular-nums;letter-spacing:-.03em;color:#fff;line-height:1.15;
}
.fx-me-move{
  display:block;margin:7px 0 0;font-size:12px;font-weight:500;color:rgba(255,255,255,.62);
  font-variant-numeric:tabular-nums;
}
.fx-me-basis{
  display:block;margin:6px 0 0;font-size:11.5px;font-weight:500;line-height:1.35;
  color:rgba(255,255,255,.52);
}
body.fx-shell .fx-me .fx-me-basis{color:rgba(255,255,255,.52)!important}
.fx-me-go{
  flex:0 0 auto;align-self:center;font-size:13px;font-weight:600;color:#fff;
  padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.10);
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.14);
}
.fx-me:hover .fx-me-go{background:rgba(255,255,255,.16)}
body.fx-shell .fx-me{color:#fff}
body.fx-shell .fx-me-copy > span:first-child{color:rgba(255,255,255,.6)!important}
/* Semantic greens/reds lifted for the dark surface */
body.fx-shell .fx-me strong.money-up{color:#35d99a!important}
body.fx-shell .fx-me strong.loss-muted{color:#ff8b95!important}
body.fx-shell .fx-me strong:not(.money-up):not(.loss-muted){color:#fff!important}
body.fx-shell .fx-me .fx-me-move,
body.fx-shell .fx-me .money-move{color:rgba(255,255,255,.62)!important;font-size:12px!important;font-weight:500!important}
body.fx-shell .fx-me:has(strong.loss-muted)::after{
  background:radial-gradient(circle,rgba(207,32,47,.22),rgba(207,32,47,0) 68%);
}
body.fx-shell .fx-welcome h1{font-weight:600}
.fx-member-results .fx-card-head{margin-bottom:10px}
.fx-basis-note{
  margin:0 0 12px;padding:8px 12px;border-radius:10px;
  background:var(--fx-surface-strong,#eef0f3);
  color:var(--fx-body,#5b616e);font-size:12px;line-height:1.4;font-weight:500;
}
.fx-member-results .fx-member-card{
  padding:14px 16px;gap:5px;border-radius:14px;
}
.fx-member-results .fx-member-card b{font-size:clamp(1.15rem,1.4vw,1.3rem);letter-spacing:-.03em}

.fx-todo-card{padding:var(--fx-card-pad)}
.fx-todo-card .fx-card-head{margin-bottom:8px}
.fx-todo{
  display:flex;align-items:center;gap:12px;padding:12px 13px;
  border-radius:13px;margin:0 0 8px;min-height:0;
  background:linear-gradient(160deg,#fbfbfc 0%,#f3f4f6 100%);
  border:1px solid rgba(10,11,13,.05);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
}
.fx-todo:last-child{margin-bottom:0}
.fx-todo .fx-ico{width:32px;height:32px;flex-basis:32px;border-radius:10px;font-size:14px}
.fx-todo-copy{flex:1;min-width:0}
.fx-todo strong{display:block;margin:0;font-size:13px;font-weight:600;line-height:1.3}
.fx-todo small{margin:2px 0 0;font-size:12px;color:var(--fx-muted);line-height:1.3}
.fx-todo .small-link{flex:0 0 auto;font-size:13px}
.fx-empty{padding:20px 12px;text-align:center;color:var(--fx-muted);font-size:13px}
.fx-empty-compact{padding:4px 0}
.fx-empty a{display:inline-block;margin-top:6px;font-weight:600;color:var(--fx-blue)}
.fx-empty a:focus-visible{outline:2px solid var(--fx-blue);outline-offset:2px}

/* Foldable three-person detail + recent settled */
.fx-fold{padding:0;overflow:hidden}
.fx-fold>summary{
  list-style:none;cursor:pointer;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 12px;
  padding:15px 20px;font-weight:600;border-radius:inherit;
}
.fx-fold>summary:hover{background:var(--fx-bg)}
.fx-fold>summary::-webkit-details-marker{display:none}
.fx-fold>summary span{font-size:13px;color:var(--fx-ink)}
.fx-fold>summary small{font-size:12px;color:var(--fx-muted);font-weight:500}
.fx-fold>summary::after{content:"展开";margin-left:auto;font-size:12px;font-weight:600;color:var(--fx-blue)}
.fx-fold[open]>summary::after{content:"收起"}
.fx-fold-grid{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;
  padding:0 20px 16px;border-top:1px solid var(--fx-line);
}
.fx-fold-grid h3{margin:12px 0 6px;font-size:12px;font-weight:600;color:var(--fx-muted)}
.fx-fold-row{
  display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
  padding:7px 0;border-bottom:1px solid var(--fx-line);
}
.fx-fold-row:last-child{border-bottom:0}
.fx-fold-row strong{display:block;font-size:13px}
.fx-fold-row small{display:block;margin-top:2px;font-size:11px;color:var(--fx-muted);line-height:1.35}
.fx-fold-row b{font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}
.fx-member-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--fx-stack,12px)}
.fx-member-card{
  padding:14px 16px;border-radius:14px;
  background:linear-gradient(160deg,#fbfbfc 0%,#f3f4f6 100%);
  border:1px solid rgba(10,11,13,.05);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
  display:grid;gap:5px;
}
.fx-member-card>div{display:flex;align-items:center;justify-content:space-between;gap:8px}
.fx-member-card strong{font-size:13px;font-weight:600}
.fx-member-card span{font-size:11px;font-weight:600;color:var(--fx-muted)}
.fx-member-card small{font-size:11px;color:var(--fx-muted)}
.fx-member-card b{font-size:1.25rem;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.03em}
.fx-member-card.is-earn{
  background:linear-gradient(160deg,rgba(5,177,105,.10) 0%,rgba(5,177,105,.04) 100%);
  border-color:rgba(5,177,105,.20);
}
.fx-member-card.is-loss{
  background:linear-gradient(160deg,rgba(207,32,47,.07) 0%,rgba(207,32,47,.03) 100%);
  border-color:rgba(207,32,47,.16);
}
.fx-settled-list{display:grid;gap:0}
.fx-settled-cols,
.fx-settled-row>summary{
  display:grid;
  grid-template-columns:7.5rem minmax(5.5rem,1fr) minmax(5.5rem,1fr) minmax(5.5rem,1fr) minmax(14rem,1.6fr) 2.75rem;
  gap:10px 12px;align-items:center;
}
.fx-settled-cols{
  padding:0 4px 8px;border-bottom:1px solid var(--fx-line);
  font-size:11px;font-weight:700;letter-spacing:.02em;color:var(--fx-muted);
}
.fx-settled-cols > span:nth-child(2),
.fx-settled-cols > span:nth-child(3),
.fx-settled-cols > span:nth-child(4){text-align:right}
.fx-settled-row>summary{min-height:64px}
.fx-settled-row{border-top:1px solid var(--fx-line);content-visibility:auto;contain-intrinsic-size:auto 88px}
.fx-settled-row:first-of-type{border-top:0}
.fx-settled-row>summary{
  list-style:none;cursor:pointer;padding:14px 4px;
}
.fx-settled-row>summary::-webkit-details-marker{display:none}
.fx-settled-row>summary:hover{background:rgba(10,11,13,.015)}
.fx-settled-date strong{display:block;font-size:14px;font-weight:700;letter-spacing:-.02em;color:var(--fx-ink)}
.fx-settled-date small{display:block;margin-top:3px;font-size:11px;color:var(--fx-muted);font-weight:500}
.fx-settled-cell{min-width:0}
.fx-settled-cell b{
  display:block;font-size:14px;font-weight:700;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;color:var(--fx-ink);text-align:right;
}
.fx-settled-cell b.is-up{color:#037847}
.fx-settled-cell b.is-down{color:#b42318}
.fx-settled-members{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;min-width:0;
}
.fx-settled-member{
  display:grid;gap:1px;padding:6px 8px;border-radius:10px;
  background:rgba(10,11,13,.03);border:1px solid rgba(10,11,13,.04);min-width:0;
}
.fx-settled-member.is-me{
  background:rgba(0,82,255,.05);border-color:rgba(0,82,255,.12);
}
.fx-settled-member span{
  font-size:11px;font-weight:600;color:var(--fx-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.fx-settled-member b{
  font-size:12px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--fx-ink);
}
.fx-settled-member b.is-up{color:#037847}
.fx-settled-member b.is-down{color:#b42318}
.fx-settled-more{
  justify-self:end;font-size:12px;font-weight:600;color:var(--fx-blue);white-space:nowrap;
}
.fx-settled-row[open]>summary .fx-settled-more{color:var(--fx-muted)}
.fx-settled-detail{
  padding:4px 4px 16px;display:grid;gap:14px;font-size:13px;color:var(--fx-body);
  border-top:1px dashed var(--fx-line);padding-top:14px;
}
.fx-settled-block{display:grid;gap:8px}
.fx-settled-block h3{
  margin:0;font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--fx-muted);
}
.fx-settled-dl{display:grid;gap:6px;margin:0}
.fx-settled-dl > div{display:grid;grid-template-columns:3rem minmax(0,1fr);gap:10px}
.fx-settled-dl dt{margin:0;font-size:12px;font-weight:700;color:var(--fx-muted)}
.fx-settled-dl dd{margin:0;font-size:13px;line-height:1.45;color:var(--fx-body)}
.fx-settled-partners{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.fx-settled-partners article{
  padding:12px 14px;border-radius:13px;
  background:linear-gradient(160deg,#fbfbfc 0%,#f3f4f6 100%);
  border:1px solid rgba(10,11,13,.05);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8);
  display:grid;gap:4px;
}
.fx-settled-partners header{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.fx-settled-partners small{color:var(--fx-muted);font-size:11px;line-height:1.4}
.fx-settled-partners span{font-weight:600;color:var(--fx-ink);font-size:13px;white-space:nowrap}
.fx-settled-partners p{margin:4px 0 0;font-size:12px;color:var(--fx-muted);white-space:pre-line}
.fx-settled-transfers p{margin:2px 0}
.fx-settled-muted{color:var(--fx-muted)}
.fx-settled-confirms{display:flex;flex-wrap:wrap;gap:8px}
.fx-settled-confirms span{
  font-size:11px;font-weight:600;color:var(--fx-muted);
  padding:4px 8px;border-radius:999px;background:var(--fx-bg);
}

.fx-actions{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;
}
.fx-action{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:40px;padding:0 16px;border-radius:999px;text-decoration:none;
  background:var(--fx-bg);color:var(--fx-ink);font-weight:600;font-size:14px;
  border:1px solid var(--fx-line);transition:background .15s ease-out,border-color .15s ease-out;
}
.fx-action:hover{background:var(--fx-blue-softer);border-color:transparent;color:var(--fx-blue-deep)}
.fx-action:active{transform:none}
.fx-action:focus-visible{outline:2px solid var(--fx-blue);outline-offset:2px}
.fx-action.is-primary{
  background:var(--fx-blue);color:#fff;border-color:transparent;
  box-shadow:0 4px 12px rgba(0,82,255,.18);
}
.fx-action.is-primary:hover{background:var(--fx-blue-deep);color:#fff;filter:none}

.fx-tabs{display:flex;gap:4px;padding:4px;border-radius:12px;background:var(--fx-bg);margin-bottom:12px}
.fx-tabs span{
  flex:1;text-align:center;padding:8px 10px;border-radius:10px;
  font-size:13px;font-weight:600;color:var(--fx-muted);
}
.fx-tabs span.is-on{background:var(--fx-canvas);color:var(--fx-ink);box-shadow:var(--fx-shadow-sm)}

/* Login — same Coinbase tokens, scarce blue (only submit CTA) */
body.fx-shell.is-auth{
  background:
    radial-gradient(ellipse 70% 50% at 50% 0%, rgba(10,11,13,.04), transparent 60%),
    var(--fx-bg);
}
body.fx-shell .login{
  padding:36px 32px!important;
  box-shadow:var(--fx-shadow)!important;
}
body.fx-shell .login h1{font-weight:600;letter-spacing:-.03em;font-family:var(--font-display),var(--font)}
body.fx-shell .login-lead{color:var(--fx-body);margin:8px 0 22px}
body.fx-shell .login-toggle{color:var(--fx-blue)!important;background:transparent!important;box-shadow:none!important}
body.fx-shell .login-form > button[type="submit"]{
  background:var(--fx-blue)!important;color:#fff!important;
  box-shadow:0 4px 12px rgba(0,82,255,.16)!important;
}

/* Mobile */
@media(max-width:980px){
  body.fx-shell .fx-nav,
  body.fx-shell .sidebar{display:none!important}
  body.fx-shell .topbar{display:flex!important}
  body.fx-shell .tabbar{display:flex!important}
  body.fx-shell main.content{padding:16px 16px calc(96px + env(safe-area-inset-bottom,0px));max-width:none}
  .fx-home-grid{grid-template-columns:1fr}
  .fx-kpi-row{grid-template-columns:1fr}
  body.fx-shell .daily-close-banner{margin:16px 16px 0}
}
body.fx-shell .tabbar{
  background:rgba(255,255,255,.94)!important;
  border-top:1px solid var(--fx-line)!important;
}
body.fx-shell .tabbar a.active{color:var(--fx-blue)!important}
body.fx-shell .tabbar a.active .tab-ico{background:var(--fx-blue-soft)!important;color:var(--fx-blue)!important}
body.fx-shell .tabbar a[href*="bookkeeping"] .tab-ico{
  background:var(--fx-blue)!important;color:#fff!important;
  box-shadow:0 4px 12px rgba(0,82,255,.2);
}
body.fx-shell .more-sheet-panel{
  background:var(--fx-bg)!important;border-radius:24px 24px 0 0!important;
}
body.fx-shell .more-sheet .nav-group{
  background:var(--fx-canvas)!important;border-radius:16px!important;
  box-shadow:var(--fx-shadow-sm);
}

/* Metric tiles elsewhere */
body.fx-shell .metrics article,
body.fx-shell .statement-team-metrics article,
body.fx-shell .source-cards article,
body.fx-shell .bug-metric-grid article,
body.fx-shell .today-core-metrics article,
body.fx-shell .settle-cards-grid article,
body.fx-shell .member-result-grid article{
  position:relative;overflow:hidden;
  border-radius:16px!important;
  box-shadow:var(--fx-lift)!important;
  border:var(--fx-edge)!important;
  background:var(--fx-canvas)!important;
}
/* Popover cards must not clip; open state must stack above sibling metric numbers */
body.fx-shell .metrics article:has(.metric-detail-wrap),
body.fx-shell .source-cards article:has(.metric-detail-wrap),
body.fx-shell .today-core-metrics article:has(.metric-detail-wrap),
body.fx-shell .bug-metric-grid article:has(.metric-detail-wrap){
  overflow:visible;
}
body.fx-shell .metrics article:has(.metric-detail-wrap:hover),
body.fx-shell .metrics article:has(.metric-detail-wrap:focus-within),
body.fx-shell .source-cards article:has(.metric-detail-wrap:hover),
body.fx-shell .source-cards article:has(.metric-detail-wrap:focus-within),
body.fx-shell .today-core-metrics article:has(.metric-detail-wrap:hover),
body.fx-shell .today-core-metrics article:has(.metric-detail-wrap:focus-within),
body.fx-shell .bug-metric-grid article:has(.metric-detail-wrap:hover),
body.fx-shell .bug-metric-grid article:has(.metric-detail-wrap:focus-within){
  z-index:80;
}
body.fx-shell .metrics article:has(.metric-detail-wrap:hover) > .metric-topline,
body.fx-shell .metrics article:has(.metric-detail-wrap:focus-within) > .metric-topline,
body.fx-shell .source-cards article:has(.metric-detail-wrap:hover) > .metric-topline,
body.fx-shell .source-cards article:has(.metric-detail-wrap:focus-within) > .metric-topline,
body.fx-shell .today-core-metrics article:has(.metric-detail-wrap:hover) > .metric-topline,
body.fx-shell .today-core-metrics article:has(.metric-detail-wrap:focus-within) > .metric-topline{
  z-index:5;
}
/* Corner bloom — same light source the home KPIs use */
body.fx-shell .metrics article::after,
body.fx-shell .statement-team-metrics article::after,
body.fx-shell .source-cards article::after,
body.fx-shell .bug-metric-grid article::after,
body.fx-shell .today-core-metrics article::after{
  content:"";position:absolute;right:-26px;top:-34px;width:104px;height:104px;border-radius:50%;
  background:radial-gradient(circle,rgba(0,82,255,.07),rgba(0,82,255,0) 70%);pointer-events:none;z-index:0;
}
body.fx-shell .metrics article > *,
body.fx-shell .statement-team-metrics article > *,
body.fx-shell .source-cards article > *,
body.fx-shell .bug-metric-grid article > *,
body.fx-shell .today-core-metrics article > *{position:relative;z-index:1}
/* "My number" is the protagonist card; the team total stays a plain surface */
body.fx-shell .daily-close-mine-card{
  background:linear-gradient(155deg,rgba(0,82,255,.07) 0%,rgba(0,82,255,.02) 100%)!important;
  border-color:rgba(0,82,255,.18)!important;
}
/* Accounting detail reads as a footnote, not a card */
body.fx-shell .daily-close-details-card{
  background:transparent!important;border:0!important;
  border-top:1px solid var(--fx-line)!important;
  border-radius:0!important;box-shadow:none!important;
}
/* Daily close inner tiles — same lit-surface treatment as the home page tiles */
body.fx-shell .daily-close-transfer-simple,
body.fx-shell .daily-close-member-simple,
body.fx-shell .daily-close-detail-grid>div{
  background:var(--fx-tile)!important;
  border:1px solid rgba(10,11,13,.05)!important;
  box-shadow:var(--fx-inset-hi);
}
body.fx-shell .daily-close-member-simple.is-me{
  background:linear-gradient(160deg,rgba(0,82,255,.10) 0%,rgba(0,82,255,.04) 100%)!important;
  border-color:rgba(0,82,255,.18)!important;
}
body.fx-shell .daily-close-transfer-simple.is-paid{
  background:linear-gradient(160deg,rgba(5,177,105,.08) 0%,rgba(5,177,105,.03) 100%)!important;
  border-color:rgba(5,177,105,.18)!important;
}
body.fx-shell .period-chip.is-active{
  color:var(--fx-blue)!important;
  border-color:var(--fx-blue)!important;
  box-shadow:inset 0 0 0 1px var(--fx-blue)!important;
}
body.fx-shell .status.done,
body.fx-shell .workflow-tabs a.active,
body.fx-shell .statement-chip.is-active{
  color:var(--fx-blue-deep)!important;
}
body.fx-shell a{color:var(--fx-blue)}
body.fx-shell a:active{color:var(--coinbase-blue)}
body.fx-shell .fx-panel-nav a,
body.fx-shell .fx-nav .sidebar-nav a{color:var(--fx-body)}
body.fx-shell .fx-panel-nav a:hover,
body.fx-shell .fx-nav .sidebar-nav a:hover{color:var(--fx-ink)}
body.fx-shell .fx-panel-nav a.active,
body.fx-shell .fx-nav .sidebar-nav a.active{color:var(--fx-blue-deep)!important}

/* Home mobile: period row should wrap cleanly */
@media(max-width:980px){
  .fx-settled-cols{display:none}
  .fx-settled-row>summary{
    grid-template-columns:1fr 1fr 1fr auto;
    gap:10px;
  }
  .fx-settled-date{grid-column:1 / 3}
  .fx-settled-more{grid-column:4;align-self:start;justify-self:end}
  .fx-settled-cell::before{
    content:attr(data-label);display:block;margin-bottom:2px;
    font-size:11px;font-weight:700;color:var(--fx-muted);
  }
  .fx-settled-cell b,.fx-settled-net b{text-align:left}
  .fx-settled-members{grid-column:1 / -1}
  .fx-settled-partners{grid-template-columns:1fr}
}
@media(max-width:720px){
  .fx-welcome{flex-direction:column;align-items:stretch}
  .fx-welcome-actions{justify-content:flex-start}
  .fx-welcome-actions .period-control{width:100%;flex-wrap:wrap}
  .fx-kpi-row{grid-template-columns:1fr}
  .fx-fold-grid,.fx-member-grid{grid-template-columns:1fr}
  .fx-settled-members{grid-template-columns:1fr}
}

/* ===== Sitewide page rhythm (safe sheet; app.css has a brace trap near EOF) =====
   Standard: --gap-page 16px between major blocks; parent gap owns spacing. */
body.fx-shell main.content{
  display:grid;
  gap:var(--gap-page);
  align-content:start;
}
body.fx-shell main.content > *{
  margin-top:0!important;
  margin-bottom:0!important;
}
/* Soft-UI leftover utilities used to double up on section margins. */
body.fx-shell main.content .mb-1,
body.fx-shell main.content .mb-2,
body.fx-shell main.content .mb-3,
body.fx-shell main.content .mb-4,
body.fx-shell main.content .my-3,
body.fx-shell main.content .my-4{margin-bottom:0!important}
body.fx-shell main.content .mt-1,
body.fx-shell main.content .mt-2,
body.fx-shell main.content .mt-3,
body.fx-shell main.content .mt-4,
body.fx-shell main.content .my-3,
body.fx-shell main.content .my-4{margin-top:0!important}

.audit-page,
.history-archive-section,
.settings-page,
.inventory-page,
.sales-page,
.resources-page,
.products-page,
.correction-page,
.settlement-history-page{
  display:grid;
  gap:var(--gap-page);
  align-content:start;
}
.audit-page > *,
.history-archive-section > *,
.settings-page > *,
.inventory-page > *,
.sales-page > *,
.resources-page > *,
.products-page > *,
.correction-page > *,
.settlement-history-page > *{
  margin-top:0!important;
  margin-bottom:0!important;
}

/* Settings: density sheet zeroed card padding; restore inner blocks + spacing */
body.fx-shell .settings-page{
  display:grid;
  gap:var(--gap-page,16px);
  align-content:start;
  max-width:560px;
}
body.fx-shell .settings-group{
  padding:0!important;
  overflow:hidden;
}
body.fx-shell .settings-block{
  padding:var(--pad-card,20px);
}
body.fx-shell .settings-block h2{
  margin:0 0 12px;
  font-size:16px;
  font-weight:600;
  letter-spacing:-.02em;
  color:var(--fx-ink);
}
body.fx-shell .settings-block form{
  display:grid;
  gap:12px;
  justify-items:start;
  width:100%;
}
body.fx-shell .settings-block label{
  display:grid;
  gap:6px;
  margin:0;
  width:100%;
  font-size:13px;
  font-weight:600;
  color:var(--fx-body);
}
body.fx-shell .settings-block input{
  width:100%;
  min-width:0;
}
body.fx-shell .settings-block .form-tip{
  margin:0;
  width:100%;
  color:var(--fx-muted);
  font-size:12px;
  line-height:1.45;
}
body.fx-shell .settings-block button{
  width:auto;
  margin:0;
  justify-self:start;
}
body.fx-shell .settings-block-logout form{margin:0;width:auto}
body.fx-shell .settings-block-logout button{width:auto}

/* Filled pill links: the generic `body.fx-shell a` color paints blue text on a blue
   fill, which made labels such as 「打开每日结算」 invisible. */
body.fx-shell a.button-link:not(.secondary),
body.fx-shell a.button-link:not(.secondary):hover,
body.fx-shell a.button-link:not(.secondary):active,
body.fx-shell a.allocation-button,
body.fx-shell a.skip-link,
body.fx-shell a.skip-link:active{color:var(--on-primary)}
