/* ===================================================================
   finchaya.css -- one stylesheet for every page.
   ===================================================================

   WHY THIS FILE EXISTS
       Seven pages each carried their own copy of the tokens. Changing a
       colour meant editing seven files and finding out later which one
       was missed. Everything visual lives here now.

   THE AUDIENCE
       Investors in their twenties and thirties, mostly on a phone. That
       leads somewhere less obvious than it sounds: not dark mode and
       neon, which is the default costume for this audience and reads as
       a product with something to sell. The apps that actually won this
       market in India are light, fast and plain. Scepticism about being
       sold to is the defining trait, and a quiet interface where the
       numbers are the loudest thing is what answers it.

   THE RULES
       Colour carries meaning, never decoration. Green is a positive
       figure or an action; red is a negative one; amber marks the single
       thing worth noticing on a page. Nothing is tinted for looks.

       Numbers are set larger than the words describing them. On every
       page the data is the design.

       Mobile is the layout, not the fallback. Below 640px table rows
       become stacked cards -- a table that needs sideways scrolling on
       a phone is a table nobody reads.

       The proportion bar is the signature. It is the one thing here no
       competitor has, so it is big and it comes first.
   =================================================================== */

:root{
  /* The page is grey-green; cards are white and lift off it. White on
     white gave every block the same depth, which is why the page read as
     a stylesheet rather than a composition. */
  --bg:#f2f6f4;
  --card:#ffffff;
  --surface:#f4f8f6;
  --surface-2:#e8f0ec;
  --line:#e6ecea;
  --line-firm:#cbd8d3;
  --shadow:0 1px 2px rgba(16,40,34,.05),0 6px 20px rgba(16,40,34,.06);
  --shadow-lg:0 2px 4px rgba(16,40,34,.06),0 14px 40px rgba(16,40,34,.10);

  --ink:#0e1b17;          /* near-black with green in it, not pure black */
  --ink-2:#3d4f49;
  --muted:#6b7d77;

  --brand:#0f7a56;        /* actions, and anything positive */
  --brand-deep:#0b4f39;   /* headers and the dark strip */
  --brand-dark:#0c6244;
  --brand-wash:#e3f3ec;
  --neg:#d64545;
  --neg-wash:#fdeeee;
  --note:#e0952b;         /* the one thing worth noticing */
  --note-wash:#fdf4e5;

  /* Proportion-bar palette. Fixed, because the same colour must mean the
     same thing on every page a reader sees. */
  --c-large:#00875a; --c-mid:#e0952b; --c-small:#d64545;
  --c-debt:#5b7f75;  --c-gold:#c9a227; --c-intl:#4a7fb5;
  --c-none:#dfe5e2;

  --r-card:16px;
  --r:10px;
  --r-sm:6px;
  --s1:6px; --s2:12px; --s3:20px; --s4:32px; --s5:48px;

  --font:"Inter","Inter var",-apple-system,BlinkMacSystemFont,"Segoe UI",
         Roboto,"Helvetica Neue",Arial,sans-serif;
}


/* -------------------------------------------------------------------
   Names the older pages already use.
   
   Seven pages were built before this file existed, each with its own
   token block. Rather than rewrite seven stylesheets by hand -- and get
   one of them subtly wrong -- their names are mapped onto these values.
   Every page changes appearance together, and nothing has to be found
   and edited twice.
   
   This file is linked AFTER each page's own <style>, so where both
   define a rule this one wins, and a page keeps only what is genuinely
   unique to it.
   ------------------------------------------------------------------- */
:root{
  --ground:var(--bg);
  --ink-soft:var(--muted);
  --rule:var(--line);
  --bench:var(--note);
  --up:var(--brand);
  --down:var(--neg);
}

/* Paper is not a screen. Cards, shadows and rounded corners are devices
   for separating things that scroll; on a printed page the paper edge
   already does that, and shadows just make the ink dirty. */
@media print{
  body{background:#fff}
  .panel,.tile,.card{box-shadow:none;border-radius:0;padding:0;
    background:#fff}
  .tabs{display:none !important}
  /* The site's own chrome is not part of anybody's report. The nav, the
     More menu, the signed-in address and the Sign out button were all
     printing at the top of page one -- a client's portfolio report
     opening with somebody else's email address on it. */
  .fc-head{display:none !important}
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;background:var(--bg);color:var(--ink);
  font:16px/1.55 var(--font);
  -webkit-font-smoothing:antialiased;
  font-feature-settings:"cv05" 1,"ss01" 1;
}
.wrap{max-width:1080px;margin:0 auto;padding:24px 20px 90px}
@media (max-width:640px){.wrap{padding:16px 16px 80px}}

/* ---------- type ------------------------------------------------- */
h1{font-size:34px;line-height:1.12;font-weight:700;letter-spacing:-.025em;
  margin:0 0 var(--s1)}
h2{font-size:22px;line-height:1.2;font-weight:650;letter-spacing:-.015em;
  margin:0 0 var(--s1)}
h3{font-size:17px;font-weight:650;letter-spacing:-.005em;
  margin:var(--s4) 0 var(--s1)}
@media (max-width:640px){h1{font-size:27px} h2{font-size:19px}}

.lede{color:var(--ink-2);font-size:17px;max-width:58ch;margin:0 0 var(--s3)}
.note{color:var(--muted);font-size:15px;max-width:62ch;margin:0 0 var(--s3)}
.foot{color:var(--muted);font-size:13.5px;line-height:1.6;max-width:68ch;
  margin:var(--s3) 0 0}
.sub{font-size:13px;color:var(--muted)}
.eyebrow{font-size:14px;font-weight:600;color:var(--brand);margin:0 0 4px}
.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}
.pos{color:var(--brand)} .neg{color:var(--neg)}
.empty{color:var(--muted);padding:var(--s2) 0}

/* ---------- surfaces --------------------------------------------- */
/* Fill and rules, not a border plus a shadow on every block. Identical
   shadowed cards are the commonest way a page stops having a hierarchy. */
.panel{background:var(--card);border-radius:var(--r-card);
  box-shadow:var(--shadow);padding:26px 28px;margin:0 0 var(--s3)}
.panel:first-of-type{padding-top:26px}
@media (max-width:640px){.panel{padding:20px 18px;border-radius:14px}}
.card{background:var(--surface);border-radius:var(--r);padding:var(--s3);
  margin:var(--s2) 0}

/* A row of figures, each in its own tile. The device that makes a
   dashboard look like one: big number, quiet label, room around it. */
.tiles{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));
  margin:0 0 var(--s3)}
.tile{background:var(--card);border-radius:var(--r-card);padding:18px 20px;
  box-shadow:var(--shadow)}
.tile .k{font-size:13.5px;color:var(--muted);margin-bottom:7px;
  display:flex;align-items:center;gap:7px}
.tile .v{font-size:27px;font-weight:700;letter-spacing:-.03em;line-height:1;
  font-variant-numeric:tabular-nums}
.tile .d{font-size:13px;margin-top:6px;color:var(--muted)}

/* Circular badge carrying a fund's initials. Colour is derived from the
   name, so the same fund is the same colour everywhere -- recognisable
   without being meaningful, which is what a logo does. */
.badge{width:38px;height:38px;border-radius:11px;flex:none;display:flex;
  align-items:center;justify-content:center;font-size:13px;font-weight:700;
  color:#fff;letter-spacing:-.02em}

.ico{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;
  stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.ico-lg{width:22px;height:22px}

/* ---------- the header on every page ---------------------------- */
.fc-head{display:flex;align-items:center;gap:var(--s4);flex-wrap:wrap;
  padding:14px 20px;background:var(--card);border-bottom:1px solid var(--line);
  margin-bottom:var(--s3)}
.fc-brand{font-size:19px;font-weight:750;letter-spacing:-.02em;
  text-decoration:none;color:var(--ink)}
.fc-brand span{color:var(--brand)}
.fc-nav{display:flex;gap:4px;flex-wrap:wrap}
.fc-nav a{font-size:15px;font-weight:550;color:var(--muted);
  text-decoration:none;padding:8px 13px;border-radius:var(--r-sm)}
.fc-nav a:hover{color:var(--ink);background:var(--surface)}
.fc-nav a[aria-current=page]{color:var(--brand);background:var(--brand-wash)}
.fc-right{display:flex;align-items:center;gap:var(--s2);margin-left:auto}
.fc-more{position:relative}
/* Borderless and grey, this read as a label rather than a button and
   people did not find it. It carries every page that is not one of the
   three across the top, so it has to look pressable. */
.fc-moreb{display:flex;align-items:center;gap:7px;background:var(--card);
  border:1.5px solid var(--line-firm);
  font:inherit;font-size:15px;font-weight:600;color:var(--ink-2);cursor:pointer;
  padding:8px 14px;border-radius:var(--r-sm)}
.fc-moreb:hover{color:var(--ink);background:var(--surface);
  border-color:var(--muted)}
.fc-moreb[aria-expanded=true]{color:var(--brand);background:var(--brand-wash);
  border-color:var(--brand)}
.fc-moreb .ico{width:15px;height:15px;transition:transform .15s ease}
.fc-moreb[aria-expanded=true] .ico{transform:rotate(180deg)}
.fc-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:50;
  background:var(--card);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--shadow-lg);min-width:225px;padding:6px;display:flex;
  flex-direction:column}
.fc-menu a{font-size:15px;color:var(--ink-2);text-decoration:none;
  padding:10px 12px;border-radius:var(--r-sm);white-space:nowrap}
.fc-menu a:hover{background:var(--surface);color:var(--ink)}
.fc-menu a[aria-current=page]{color:var(--brand);background:var(--brand-wash)}
/* MUST come after .fc-menu. A class rule carrying display:flex beats the
   browser's own [hidden]{display:none}, so without this line the menu is
   open from page load and the button appears to do nothing. Exactly the
   same trap as .modal on the plan page. */
.fc-menu[hidden]{display:none}

/* ---------- the menu on a phone ---------------------------------------
   On a phone the four links and the "More" list wrapped onto two rows and the rest of the pages hid behind a small "More" button. Under
   761px the whole header is: the brand, Sign in (when signed out) and a "Menu" button that opens ONE list with every page and the
   account entries. Wider screens are untouched. */
.fc-head{position:relative;z-index:60}
.fc-burger,.fc-drawer{display:none}
@media (max-width:760px){
  .fc-head{flex-wrap:nowrap;gap:var(--s2)}
  .fc-nav,.fc-more,.fc-auth .fc-who,.fc-auth .fc-authb.quiet{display:none}
  .fc-authb.fc-trialpill{padding:8px 11px;font-size:13px}
  .fc-burger{display:inline-flex;align-items:center;gap:9px;height:42px;padding:0 13px;flex:none;
    font:inherit;font-size:15px;font-weight:650;color:var(--ink);cursor:pointer;
    background:var(--card);border:1.5px solid var(--line-firm);border-radius:var(--r-sm)}
  .fc-burger:hover,.fc-head.fc-open .fc-burger{background:var(--brand-wash);border-color:var(--brand);color:var(--brand)}
  .fc-burger .bars{position:relative;display:block;width:18px;height:12px}
  .fc-burger .bars i{position:absolute;left:0;right:0;height:2px;border-radius:2px;background:currentColor;
    transition:transform .18s ease,opacity .12s ease,top .18s ease}
  .fc-burger .bars i:nth-child(1){top:0}
  .fc-burger .bars i:nth-child(2){top:5px}
  .fc-burger .bars i:nth-child(3){top:10px}
  .fc-head.fc-open .fc-burger .bars i:nth-child(1){top:5px;transform:rotate(45deg)}
  .fc-head.fc-open .fc-burger .bars i:nth-child(2){opacity:0}
  .fc-head.fc-open .fc-burger .bars i:nth-child(3){top:5px;transform:rotate(-45deg)}
  .fc-drawer:not([hidden]){display:flex;flex-direction:column;position:absolute;left:0;right:0;top:100%;
    background:var(--card);border-bottom:1px solid var(--line);box-shadow:var(--shadow-lg);
    max-height:calc(100vh - 66px);max-height:calc(100dvh - 66px);overflow-y:auto;overscroll-behavior:contain;padding:4px 0 0}
  .fc-drawer a{display:block;padding:12px 18px;font-size:16.5px;font-weight:600;color:var(--ink);text-decoration:none;
    border-bottom:1px solid var(--line)}
  .fc-drawer a:active,.fc-drawer a:hover{background:var(--surface)}
  .fc-drawer a[aria-current=page]{color:var(--brand);background:var(--brand-wash)}
  .fc-dlabel{padding:14px 18px 6px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
  /* the account entries are a bar at the bottom of the menu that stays in view however long the list above it is */
  .fc-dacct{position:sticky;bottom:0;display:flex;flex-wrap:wrap;gap:8px;margin-top:6px;padding:10px 18px 14px;
    background:var(--card);border-top:1px solid var(--line-firm)}
  .fc-dwho{flex:1 0 100%;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .fc-dacct button{flex:1 1 auto;font:inherit;font-size:15px;font-weight:600;padding:11px 14px;border-radius:var(--r-sm);cursor:pointer;
    background:var(--card);border:1.5px solid var(--line-firm);color:var(--ink-2);text-align:center}
  .fc-dacct button.fc-dprimary{background:var(--brand);border-color:var(--brand);color:#fff}
}

/* ---------- portfolio overlap, on three pages -------------------- */
/* Two funds, one identity encoding. The pair plus the lens was validated
   against this surface: worst normal-vision separation 25.4, worst CVD
   9.5 (protan). An earlier blue sat at 14.1 against the brand green --
   below the floor, and two fund names nobody could tell apart. Identity
   never rests on colour alone here: every region carries its own name
   and count on the tab beside its dot. */
.fc-ov,.fc-venn-wrap{--ov-a:#1d4ed8; --ov-b:#e8a33d; --ov-both:#5b2c83}
.fc-ov-top{display:flex;gap:var(--s4);align-items:center;flex-wrap:wrap}
.fc-ov-venn{flex:none}
.fc-ov-venn circle,.fc-ov-venn path{cursor:pointer}
.fc-ov-said{flex:1;min-width:240px}
.fc-ov-head{font-size:20px;font-weight:650;line-height:1.35;margin:0 0 8px;
  letter-spacing:-.01em}
.fc-ov-sub{color:var(--ink-2);font-size:15px;margin:0 0 6px;max-width:52ch}
.fc-ov-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:var(--s3) 0 0}
.fc-ov-tab{display:inline-flex;align-items:center;gap:8px;font:inherit;
  font-size:14px;cursor:pointer;padding:9px 14px;border-radius:var(--r-sm);
  border:1.5px solid var(--line-firm);background:var(--card);color:var(--ink-2)}
.fc-ov-tab:hover{background:var(--surface)}
.fc-ov-tab[aria-selected=true]{border-color:var(--ink);color:var(--ink);
  font-weight:600;background:var(--surface)}
.fc-ov-dot{width:11px;height:11px;border-radius:3px;flex:none}
.fc-ov-list{margin-top:var(--s3);border-top:1px solid var(--line);
  padding-top:var(--s2);
  display:grid;grid-template-columns:1fr 1fr;gap:0 var(--s4)}
.fc-ov-row{display:flex;gap:10px;align-items:baseline;padding:9px 2px;
  border-bottom:1px solid var(--line);font-size:15px}
.fc-ov-n{color:var(--muted);font-size:13px;min-width:22px;
  font-variant-numeric:tabular-nums}
.fc-ov-nm{flex:1;min-width:0}
.fc-ov-pc{font-variant-numeric:tabular-nums;white-space:nowrap;
  color:var(--ink-2)}
.fc-ov-empty{padding:var(--s3) 2px;color:var(--muted);grid-column:1/-1}
.fc-ov-foot{margin-top:var(--s3);font-size:13px;color:var(--muted);
  line-height:1.55}
.fc-ov-foot b{color:var(--ink-2)}
.fc-ov-warn{background:var(--note-wash);border:1px solid #f0dcb4;
  border-radius:var(--r-sm);padding:10px 13px;font-size:14px;
  color:var(--ink-2);margin-top:var(--s2)}
@media (max-width:700px){
  .fc-ov-list{grid-template-columns:1fr}
  .fc-ov-top{gap:var(--s3)}
}

/* ---------- the subscription notice ------------------------------ */
/* Shown where a paid feature would be. It replaces the RESULT, never the
   controls: the goal, the amounts and the fund choices stay usable, so
   what is behind the gate is legible rather than merely absent. */
.fc-lock{background:var(--surface);border:1.5px solid var(--line-firm);
  border-radius:var(--r-card);padding:var(--s3) var(--s4);margin:var(--s3) 0}
.fc-lock h3{margin:0 0 6px;font-size:18px}
.fc-lock p{color:var(--ink-2);font-size:15px;margin:0 0 var(--s2);
  max-width:58ch}
.fc-lock .fc-lock-act{margin:var(--s3) 0 0;display:flex;gap:10px;
  flex-wrap:wrap;align-items:center;
  /* `.fc-lock p` above caps paragraphs at 58ch for reading. This is a
     paragraph element only by accident: it holds the comparison table and the
     price, which size themselves (680px at most), so the cap would only
     squeeze them. */
  max-width:none}
.fc-lock .sub{font-size:13px;color:var(--muted)}

/* ---------- what changed since last month ------------------------ */
.fc-ch{--ch-buy:#0f7a56; --ch-sell:#b4472f; --ch-flat:#6b7c76}
.fc-ch-head{font-size:17px;font-weight:650;margin:0 0 4px}
.fc-ch-sub{color:var(--ink-2);font-size:15px;margin:0 0 var(--s2);max-width:60ch}
.fc-ch-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:var(--s2) 0 0}
.fc-ch-tab{font:inherit;font-size:14px;cursor:pointer;padding:8px 13px;
  border-radius:var(--r-sm);border:1.5px solid var(--line-firm);
  background:var(--card);color:var(--ink-2)}
.fc-ch-tab:hover{background:var(--surface)}
.fc-ch-tab[aria-selected=true]{border-color:var(--ink);color:var(--ink);
  font-weight:600;background:var(--surface)}
.fc-ch-list{margin-top:var(--s2);border-top:1px solid var(--line)}
.fc-ch-row{display:flex;gap:12px;align-items:baseline;padding:9px 2px;
  border-bottom:1px solid var(--line);font-size:15px}
.fc-ch-nm{flex:1;min-width:0}
.fc-ch-w{font-variant-numeric:tabular-nums;white-space:nowrap;
  color:var(--ink-2);min-width:104px;text-align:right}
.fc-ch-q{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:13px;
  min-width:96px;text-align:right}
.fc-ch-q.buy{color:var(--ch-buy)} .fc-ch-q.sell{color:var(--ch-sell)}
.fc-ch-q.flat{color:var(--ch-flat)}
.fc-ch-foot{margin-top:var(--s2);font-size:13px;color:var(--muted);
  line-height:1.55}
.fc-ch-empty{padding:var(--s3) 2px;color:var(--muted)}
@media (max-width:640px){
  .fc-ch-row{flex-wrap:wrap;gap:4px 10px}
  .fc-ch-nm{flex:1 0 100%}
  .fc-ch-w,.fc-ch-q{min-width:0;text-align:left}
}

/* ---------- the account, in the header --------------------------- */
.fc-auth{display:flex;align-items:center;gap:10px}
.fc-who{font-size:13px;color:var(--muted);max-width:170px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.fc-authb{font:inherit;font-size:15px;font-weight:600;cursor:pointer;
  padding:8px 16px;border-radius:var(--r-sm);
  background:var(--brand);border:1.5px solid var(--brand);color:#fff}
.fc-authb:hover{filter:brightness(1.07)}
.fc-authb.quiet{background:var(--card);border-color:var(--line-firm);
  color:var(--ink-2);font-weight:550}
.fc-authb.quiet:hover{background:var(--surface);color:var(--ink);filter:none}
/* "Trial: 5 days left" beside the account buttons while a free trial runs; it opens the plans */
.fc-authb.fc-trialpill{background:#e0a33c;border-color:#e0a33c;color:#123027;font-weight:700}

/* Prefixed throughout: pages define their own .modal, and two rules of
   that name on one screen is how a dialogue ends up half-styled. */
.fc-modal{position:fixed;inset:0;background:rgba(11,31,25,.55);z-index:80;
  display:flex;align-items:center;justify-content:center;padding:20px}
.fc-modal[hidden]{display:none}
.fc-modalbox{background:var(--card);border-radius:var(--r-card);
  padding:26px 28px;max-width:400px;width:100%;text-align:center;
  box-shadow:var(--shadow-lg)}
.fc-modalbox h3{margin:0 0 6px}
.fc-authsub{color:var(--ink-2);font-size:15px;margin:0 0 var(--s3)}
.fc-gslot{display:flex;justify-content:center;min-height:44px}
.fc-authmsg{font-size:14px;color:var(--muted);margin:var(--s2) 0 0;
  min-height:1.2em}
.fc-authmsg.bad{color:var(--neg)}
.fc-authfoot{margin:var(--s3) 0 0}

@media (max-width:640px){
  .fc-head{gap:var(--s2);padding:12px 16px}
  .fc-nav{gap:2px}
  .fc-nav a{padding:7px 10px;font-size:14px}
  .fc-right{gap:8px}
  /* The address is the first thing to go: the buttons have to stay
     reachable, and the account is not in doubt once you are signed in. */
  .fc-who{display:none}
  .fc-authb{padding:8px 13px;font-size:14px}
}

/* ---------- the sticky strip ------------------------------------- */
.tabs{position:sticky;top:0;z-index:30;display:flex;gap:3px;
  background:var(--card);padding:7px;margin:0 0 var(--s3);
  border-radius:var(--r-card);box-shadow:var(--shadow);
  overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{background:none;border:none;color:var(--muted);font:inherit;
  font-size:15px;font-weight:550;padding:9px 14px;border-radius:var(--r-sm);
  cursor:pointer;white-space:nowrap}
.tabs button:hover:not(:disabled){color:var(--ink);background:var(--surface)}
.tabs button[aria-selected=true]{background:var(--brand-deep);color:#fff}
.tabs button:disabled{opacity:.35;cursor:default}
.tabs .step{opacity:.6;margin-right:6px;font-variant-numeric:tabular-nums}
/* ON A PHONE the strip WRAPS (every step or section in view, two or three to a row) and stops being sticky: a strip that scrolls sideways hides its last
   tabs and nobody knows to push it, and a sticky one of three rows would take a fifth of a small screen. */
@media (max-width:640px){
  .tabs{position:static;flex-wrap:wrap;overflow:visible;gap:4px;padding:6px}
  .tabs button{flex:1 1 auto;text-align:center;padding:10px 12px;font-size:14.5px}
}
/* Text fields at 16px on a phone: below that, iPhone browsers zoom the page when one is tapped. */
@media (max-width:700px){
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]):not([type=color]),select,textarea{font-size:16px !important}
  .fc-brand{display:inline-block;padding:10px 0}                /* the logo is the way home: a bigger target */
}

/* ---------- controls --------------------------------------------- */
label{display:block;font-size:14px;font-weight:550;color:var(--ink-2);
  margin-bottom:var(--s1)}
input,button,select,textarea{font:inherit}
input[type=text],input[type=number],input[type=date],select,textarea{
  width:100%;padding:12px 14px;border:1.5px solid var(--line-firm);
  border-radius:var(--r);background:var(--card);color:var(--ink);
  font-size:16px}          /* 16px stops iOS zooming on focus */
input::placeholder{color:#9aa8a3}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--brand);
  box-shadow:0 0 0 3px var(--brand-wash)}
:focus-visible{outline:2px solid var(--brand);outline-offset:2px}

.opts{display:flex;gap:var(--s1);flex-wrap:wrap}
.opts button{padding:11px 16px;border:1.5px solid var(--line-firm);
  border-radius:var(--r);background:var(--card);color:var(--ink-2);
  cursor:pointer;font-size:15px;font-weight:550;display:flex;
  align-items:center;gap:8px}
.opts button:hover{border-color:var(--brand);color:var(--ink)}
.opts button[aria-pressed=true]{background:var(--brand);color:#fff;
  border-color:var(--brand)}

.go{background:var(--brand);color:#fff;border:none;padding:14px 24px;
  border-radius:var(--r);cursor:pointer;font-size:16px;font-weight:600}
.go:hover:not(:disabled){background:var(--brand-dark)}
.go:disabled{opacity:.4;cursor:default}
.ghost{background:var(--card);border:1.5px solid var(--line-firm);
  color:var(--ink);padding:14px 20px;border-radius:var(--r);cursor:pointer;
  font-size:16px;font-weight:550}
.ghost:hover{border-color:var(--brand)}
.link{background:none;border:none;color:var(--neg);cursor:pointer;
  font-size:15px;font-weight:550;padding:4px}

.grid2{display:grid;gap:var(--s3);grid-template-columns:1fr 1fr}
@media (max-width:640px){.grid2{grid-template-columns:1fr}}

/* ---------- search ------------------------------------------------ */
.search{position:relative}
.results{position:absolute;z-index:40;left:0;right:0;top:calc(100% + 6px);
  background:var(--card);border:1px solid var(--line);
  border-radius:var(--r);max-height:300px;overflow:auto;
  box-shadow:var(--shadow-lg)}
.results div{padding:13px 15px;cursor:pointer;font-size:16px}
.results div:hover{background:var(--surface)}
.results small{color:var(--muted);display:block;font-size:13px;margin-top:2px}

/* ---------- the proportion bar: the signature -------------------- */
.pbar{display:flex;height:34px;border-radius:var(--r-sm);overflow:hidden;
  background:var(--c-none)}
.pbar i{display:block;height:100%;position:relative;min-width:2px}
.pbar em{position:absolute;inset:0;display:flex;align-items:center;
  justify-content:center;font-style:normal;font-size:13px;font-weight:650;
  color:#fff}
.pbar.sm{height:10px;border-radius:3px}
.pkeys{display:flex;gap:var(--s3);flex-wrap:wrap;margin-top:var(--s2);
  font-size:14px}
.pkeys span{display:flex;align-items:center;gap:7px;color:var(--ink-2)}
.pkeys i{width:10px;height:10px;border-radius:3px;display:inline-block}

/* ---------- numbers first ---------------------------------------- */
.stats{display:flex;gap:var(--s5);flex-wrap:wrap;margin:var(--s3) 0 0}
.stats b{display:block;font-size:32px;line-height:1;font-weight:700;
  letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.stats span{display:block;font-size:14px;color:var(--muted);margin-top:5px}
@media (max-width:640px){
  .stats{gap:var(--s4) var(--s3)}
  .stats b{font-size:26px}
}

/* ---------- tables, and what they become on a phone -------------- */
table{width:100%;border-collapse:collapse}
.scroller{overflow-x:auto;-webkit-overflow-scrolling:touch}
th{font-size:13px;font-weight:600;color:var(--muted);text-align:right;
  padding:0 10px 10px;border-bottom:1px solid var(--line-firm);
  white-space:nowrap}
th:first-child,td:first-child{text-align:left;padding-left:0}
td{padding:14px 10px;border-bottom:1px solid var(--line);text-align:right;
  font-size:15px}
tbody tr:last-child td{border-bottom:none}

/* Below 640px a wide table becomes one card per row: the label moves in
   front of each value, and nothing scrolls sideways. */
@media (max-width:640px){
  table.stack thead{display:none}
  table.stack tr{display:block;background:var(--surface);
    border-radius:var(--r-card);padding:var(--s2) var(--s3);
    margin-bottom:var(--s2)}
  table.stack td{display:flex;justify-content:space-between;align-items:baseline;
    gap:var(--s3);border:none;padding:7px 0;text-align:right}
  table.stack td::before{content:attr(data-label);font-size:13.5px;
    color:var(--muted);text-align:left;font-weight:550}
  table.stack td:first-child{display:block;font-size:17px;font-weight:650;
    padding-bottom:var(--s2);border-bottom:1px solid var(--line);
    margin-bottom:var(--s1)}
  table.stack td:first-child::before{content:none}
}

/* ---------- verdict marks ---------------------------------------- */
.yes{color:var(--brand);font-weight:700}
.no{color:var(--neg);font-weight:700}
.none-mark{color:#b9c4c0}

/* ---------- findings --------------------------------------------- */
.find{border-left:3px solid var(--line-firm);padding:2px 0 2px 16px;
  margin:var(--s3) 0 0}
.find.gap{border-left-color:var(--neg)}
.find.watch{border-left-color:var(--note)}
.find.good{border-left-color:var(--brand)}
.find b{display:block;font-size:17px;font-weight:650;margin-bottom:3px}
.find p{margin:0;font-size:16px;line-height:1.55;max-width:62ch}

.err{background:var(--neg-wash);border:1px solid #f2c9c9;color:#a83232;
  padding:13px 15px;border-radius:var(--r-sm);margin-top:var(--s2);
  font-size:15px}
.flag{background:var(--note-wash);border:1px solid #f0dcb4;
  padding:13px 15px;border-radius:var(--r-sm);margin-top:var(--s2);
  font-size:15px}

ul.means{margin:var(--s2) 0 0;padding-left:var(--s3)}
ul.means li{margin-bottom:13px;font-size:16px;line-height:1.6;max-width:64ch}
ul.means li::marker{color:var(--line-firm)}

@media (prefers-reduced-motion:reduce){
  *{scroll-behavior:auto !important;transition:none !important;
    animation:none !important}
}

/* The three colours are declared on BOTH wrappers above. They used to
   sit on .fc-ov alone, so the same Venn rendered outside that panel got
   no values at all and SVG fell back to black on black -- a picture of
   two circles with nothing to tell them apart.
   Blue and amber are far apart for every common colour-vision type. The
   shared lens is a deep violet -- a third colour, not a darker blue, so
   "both" cannot be read as "more of A".
   It also carries a white outline. Violet against blue is only a 1.5:1
   luminance ratio, which is thin for anyone with reduced colour vision,
   and an edge does the work a fill contrast cannot. */
/* The Venn re-used outside the compare panel -- the plan page shows the
   same picture beside its overlap finding. Words for a number like this
   are read past; two circles that genuinely intersect by that area are
   not. */
.fc-venn-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;
  margin:14px 0 4px}
.fc-venn-key{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;
  font-size:13px;align-items:center}
.fc-venn-key span{display:inline-flex;align-items:center;gap:6px}
.fc-venn-key i{width:11px;height:11px;border-radius:2px;display:inline-block}
@media (max-width:520px){ .fc-venn-key{gap:10px;font-size:12px} }
