@import url('https://fonts.googleapis.com/css2?family=Newsreader:ital,opsz,wght@0,6..72,400;0,6..72,500;1,6..72,400&family=IBM+Plex+Mono:wght@400;500&display=swap');

:root{
  --fm-bg:#191B1D;
  --fm-panel:#202326;
  --fm-panel-2:#25292B;
  --fm-ink:#F3EFE5;
  --fm-muted:#B6B5AE;
  --fm-dim:#8A8C88;
  --fm-rule:#383C3F;
  --fm-amber:#F2B654;
  --fm-serif:'Newsreader','Iowan Old Style',Georgia,serif;
  --fm-mono:'IBM Plex Mono',ui-monospace,'SF Mono',Menlo,monospace;
}

/* Shared portfolio breadcrumb. It deliberately participates in layout instead
   of floating over controls, including the full-screen benches. */
.fm-breadcrumb-bar{
  min-height:38px;
  flex:0 0 auto;
  display:flex;
  align-items:center;
  gap:9px;
  padding:0 18px;
  border-bottom:1px solid var(--fm-rule);
  background:var(--fm-bg);
  color:var(--fm-dim);
  font:500 11px/1 var(--fm-mono);
  letter-spacing:.015em;
  position:relative;
  z-index:10000;
}
.fm-breadcrumb-bar a{
  color:var(--fm-amber);
  text-decoration:none;
}
.fm-breadcrumb-bar a:hover{text-decoration:underline;text-underline-offset:4px}
.fm-breadcrumb-bar .fm-sep{color:#5f625f}
.fm-breadcrumb-bar .fm-project{color:var(--fm-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.fm-footer-links{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:8px 16px;
  margin-top:14px;
  padding-top:12px;
  border-top:1px solid var(--fm-rule);
  color:var(--fm-dim);
  font:500 11px/1.45 var(--fm-mono);
  font-style:normal;
}
.fm-footer-links a{color:var(--fm-amber);text-decoration:none}
.fm-footer-links a:hover{text-decoration:underline;text-underline-offset:4px}
.fm-footer-links .fm-name{color:var(--fm-muted);margin-right:auto}

/* Compact version for instrument status bars that cannot grow vertically. */
.fm-footer-links.fm-inline{
  margin:0 0 0 auto;
  padding:0 0 0 14px;
  border-top:0;
  border-left:1px solid var(--fm-rule);
  flex-wrap:nowrap;
  white-space:nowrap;
  min-height:18px;
}

/* ---------- Shared portfolio surface palette ---------- */
body[data-fm-project]{background:var(--fm-bg);color:var(--fm-ink)}

body[data-fm-project="bus_protocols"]{
  --paper:var(--fm-bg);--figure:var(--fm-panel);--band:var(--fm-panel-2);
  --rule:var(--fm-rule);--ink:var(--fm-ink);--ink-2:var(--fm-muted);--ink-3:var(--fm-dim);
  --man:#92BED8;--event:#9BD5B4;--clock:#A8AAA5;
}
body[data-fm-project="scope"]{
  --panel:var(--fm-panel);--panel-hi:#2A2E30;--panel-lo:var(--fm-bg);--groove:var(--fm-rule);
  --ink:var(--fm-ink);--ink-2:var(--fm-muted);--ink-3:var(--fm-dim);--ch-a:var(--fm-amber);
}
body[data-fm-project="em-fields"]{
  --ink:var(--fm-bg);--panel:var(--fm-panel);--panel-2:var(--fm-panel-2);
  --line:rgba(182,181,174,.16);--line-strong:rgba(242,182,84,.42);
  --text:var(--fm-ink);--muted:var(--fm-muted);--accent:var(--fm-amber);--amber:var(--fm-amber);
}
body[data-fm-project="fft"]{
  --ink:var(--fm-bg);--ink-2:#17191B;--panel:var(--fm-panel);--panel-hi:var(--fm-panel-2);
  --rule:var(--fm-rule);--rule-soft:#303436;--text:var(--fm-ink);--dim:var(--fm-muted);--dimmer:var(--fm-dim);--iir:var(--fm-amber);
}
body[data-fm-project="high_speed_pcb"]{
  --bg:var(--fm-bg);--bg-2:#1C1F21;--panel:var(--fm-panel);--panel-2:#232729;--panel-3:#272B2D;--panel-4:#2B3032;
  --line:var(--fm-rule);--line-2:#4A4E50;--line-soft:#303436;--text:var(--fm-ink);--text-2:#D5D1C8;
  --muted:var(--fm-muted);--muted-2:var(--fm-dim);--amber:var(--fm-amber);
}
body[data-fm-project="optics"]{
  --ink:var(--fm-bg);--panel:var(--fm-panel);--panel2:var(--fm-panel-2);--rule:var(--fm-rule);
  --txt:var(--fm-ink);--dim:var(--fm-muted);--teal:#92BED8;--amber:var(--fm-amber);
}
body[data-fm-project="rf-filters"]{
  --chassis:var(--fm-bg);--panel:var(--fm-panel);--panel-2:var(--fm-panel-2);--rail:var(--fm-rule);--rail-hi:#4A4E50;
  --screen:#111416;--ink:#E9E5DC;--ink-dim:var(--fm-muted);--ink-faint:var(--fm-dim);--amber:var(--fm-amber);--ch1:var(--fm-amber);
}
body[data-fm-project="smith-charts"]{
  --bg:var(--fm-bg);--bg2:#1C1F21;--panel:var(--fm-panel);--panel2:var(--fm-panel-2);
  --line:var(--fm-rule);--line2:#4A4E50;--ink:var(--fm-ink);--ink2:var(--fm-muted);--ink3:var(--fm-dim);--mark:var(--fm-amber);
}
body[data-fm-project="fpga-timing"]{
  --paper:var(--fm-bg);--panel:var(--fm-panel);--plot:#111416;--ink:var(--fm-ink);--muted:var(--fm-muted);--faint:var(--fm-dim);
  --rule:var(--fm-rule);--grid:#303436;--clk:var(--fm-amber);
}

body[data-fm-project="quantum"]{
  --paper:var(--fm-bg);--plate:var(--fm-panel);--ink:var(--fm-ink);--muted:var(--fm-muted);--faint:var(--fm-rule);--grid:#303436;
  --accent:var(--fm-amber);--pot:#52575A;--detector:#0B0E10;
  --t1:#F2B654;--t2:#92BED8;--t3:#9BD5B4;
  background:radial-gradient(1050px 520px at 78% -12%,rgba(242,182,84,.055),transparent 64%),var(--fm-bg);
}
body[data-fm-project="turbulence"]{
  --bg:var(--fm-bg);--bg2:#17191B;--panel:var(--fm-panel);--panel2:var(--fm-panel-2);
  --rule:var(--fm-rule);--rule2:#4A4E50;--text:var(--fm-ink);--dim:var(--fm-muted);--faint:var(--fm-dim);--beam:var(--fm-amber);
}

/* Keep the compact UI typography, but use the same display face as the CV for
   the project identity and major section titles. */
body[data-fm-project] .wordmark,
body[data-fm-project] .brand h1,
body[data-fm-project] .brand-name,
body[data-fm-project] .hero h1,
body[data-fm-project] .lab-heading h1,
body[data-fm-project] header h1,
body[data-fm-project] .bezel h1{
  font-family:var(--fm-serif);
  font-weight:400;
  letter-spacing:-.015em;
}

/* Full-screen instrument pages need to give the breadcrumb its 38 px. */
body[data-fm-project="rf-filters"] .app{height:calc(100vh - 38px)}
body[data-fm-project="high_speed_pcb"] .app-shell{min-height:calc(100vh - 38px)}

/* Project-specific status/footer integration. */
body[data-fm-project="optics"] footer{gap:16px}
body[data-fm-project="optics"] footer .fm-footer-links{font-size:10px}
body[data-fm-project="optics"] #readout{flex:1;min-width:0}
body[data-fm-project="rf-filters"] .fm-links-card{min-width:285px;display:flex;align-items:center;padding:7px 12px;gap:14px;font:500 10px var(--fm-mono)}
body[data-fm-project="rf-filters"] .fm-links-card a{color:var(--fm-amber);text-decoration:none;white-space:nowrap}
body[data-fm-project="rf-filters"] .fm-links-card a:hover{text-decoration:underline;text-underline-offset:3px}

/* New simple footer used by the EM bench. */
.fm-standalone-footer{margin:28px 20px 0;padding:18px 0 30px;border-top:1px solid var(--fm-rule)}
.fm-standalone-footer .fm-footer-links{margin:0;padding:0;border:0}

@media(max-width:700px){
  .fm-breadcrumb-bar{padding:0 12px;font-size:10px}
  .fm-footer-links{gap:8px 12px}
  body[data-fm-project="rf-filters"] .fm-links-card{min-width:220px}
}

/* Bring each application's chrome onto the same charcoal/amber portfolio shell
   while leaving plot/trace semantics untouched. */
body[data-fm-project="em-fields"]{
  background:radial-gradient(900px 420px at 12% -8%,rgba(242,182,84,.055),transparent 70%),var(--fm-bg);
}
body[data-fm-project="fft"] .topbar{background:rgba(25,27,29,.92);border-bottom-color:var(--fm-rule)}
body[data-fm-project="fft"] .brand b,
body[data-fm-project="fft"] .navlinks a.on{color:var(--fm-amber)}
body[data-fm-project="fft"] .navlinks a.on{background:rgba(242,182,84,.09)}

body[data-fm-project="high_speed_pcb"] .sidebar{
  inset:38px auto 0 0;
  background:linear-gradient(180deg,var(--fm-panel),var(--fm-bg));
  border-right-color:var(--fm-rule);
}
body[data-fm-project="high_speed_pcb"] .workspace-bar{background:rgba(25,27,29,.92);border-bottom-color:var(--fm-rule)}
body[data-fm-project="high_speed_pcb"] .brand-block{border-bottom-color:var(--fm-rule)}
body[data-fm-project="high_speed_pcb"] footer{height:auto;min-height:50px;background:var(--fm-bg);gap:18px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}
body[data-fm-project="high_speed_pcb"] footer .fm-footer-links{margin:0 0 0 auto;padding:0 0 0 16px;border-top:0;border-left:1px solid var(--fm-rule);flex-wrap:nowrap}

body[data-fm-project="optics"] .bar{background:linear-gradient(180deg,var(--fm-panel),var(--fm-bg));border-bottom-color:var(--fm-rule);box-shadow:none}
body[data-fm-project="optics"] footer{background:var(--fm-bg);border-top-color:var(--fm-rule)}

body[data-fm-project="rf-filters"] .masthead{background:linear-gradient(180deg,var(--fm-panel),var(--fm-bg));border-bottom-color:var(--fm-rule);box-shadow:none}
body[data-fm-project="rf-filters"] .meas{background:var(--fm-bg);border-top-color:var(--fm-rule)}

body[data-fm-project="smith-charts"]{background:radial-gradient(1000px 500px at 70% -10%,rgba(242,182,84,.045),transparent 60%),var(--fm-bg)}
body[data-fm-project="smith-charts"] .bezel{background:linear-gradient(180deg,var(--fm-panel),var(--fm-bg));border-bottom-color:var(--fm-rule)}

body[data-fm-project="turbulence"] header{background:linear-gradient(180deg,var(--fm-panel),var(--fm-bg));border-bottom-color:var(--fm-rule)}
