/* limna.io design system — shared by the apex page and /notes/ pages.
   Brand: Space Grotesk + JetBrains Mono, paper/ink, single red accent. */

:root,[data-theme="light"]{
  --paper:#dee0df; --surface:#e7e9e8; --rule:#c8cac9; --faint:#a0a3a2;
  --muted:#5e615f; --ink:#181a19; --accent:#e2351a;
}
[data-theme="dark"]{
  --paper:#0e1014; --surface:#16191e; --rule:#2a2d31; --faint:#54585b;
  --muted:#8a8e8d; --ink:#dee0df; --accent:#ff4a23;
}
:root{
  --sans:'Space Grotesk',system-ui,-apple-system,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,monospace;
  --track:0.22em; --gutter:48px;
}
*{box-sizing:border-box;margin:0;padding:0;}
html,body{background:var(--paper);color:var(--ink);font-family:var(--sans);
  font-size:15px;line-height:1.65;-webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;transition:background .3s ease,color .3s ease;}
a{color:inherit;text-decoration:none;}
::selection{background:var(--ink);color:var(--paper);}

.label{font-family:var(--mono);font-size:10px;letter-spacing:var(--track);
  text-transform:uppercase;font-weight:500;color:var(--muted);}
.label .n{color:var(--accent);}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums;}
.lw{stroke:var(--accent);fill:none;} .nd{fill:var(--accent);}
.wrap{max-width:1080px;margin:0 auto;padding:0 var(--gutter);}

/* live dot */
.dot{width:7px;height:7px;background:var(--accent);display:inline-block;
  border-radius:50%;animation:blip 2.4s ease-in-out infinite;}
@keyframes blip{0%,100%{opacity:1}50%{opacity:.25}}

/* masthead */
.mast{position:sticky;top:0;z-index:50;background:var(--paper);
  border-bottom:1px solid var(--rule);transition:background .3s ease;}
.mast .wrap{display:flex;align-items:center;justify-content:space-between;height:64px;}
.brand{display:inline-flex;align-items:center;gap:11px;}
.brand svg{width:24px;height:24px;}
.brand .wm{font-weight:500;font-size:21px;letter-spacing:-0.045em;}
.mast-r{display:flex;align-items:center;gap:24px;}
.mast-r a{font-family:var(--mono);font-size:10px;letter-spacing:var(--track);
  text-transform:uppercase;color:var(--muted);}
.mast-r a:hover{color:var(--ink);}
.toggle{font-family:var(--mono);font-size:10px;letter-spacing:0.14em;
  text-transform:uppercase;color:var(--muted);border:1px solid var(--rule);
  padding:6px 11px;cursor:pointer;background:transparent;}
.toggle:hover{color:var(--ink);border-color:var(--ink);}

/* hero */
.hero{padding:100px 0 64px;text-align:center;position:relative;overflow:hidden;}
.hero3d{position:absolute;inset:0;z-index:0;opacity:0;transition:opacity 1.4s ease;}
.hero.has3d .hero3d{opacity:1;}
.hero-scrim{position:absolute;inset:0;z-index:1;pointer-events:none;opacity:0;
  transition:opacity 1.4s ease;
  background:radial-gradient(ellipse 54% 68% at 50% 42%,
    var(--paper) 6%,
    color-mix(in srgb, var(--paper) 74%, transparent) 40%,
    transparent 70%);}
.hero.has3d .hero-scrim{opacity:1;}
.hero .wrap{position:relative;z-index:2;}
.hero.has3d{min-height:660px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;}
.hero.has3d .wrap{pointer-events:none;}
.hero.has3d .wrap a{pointer-events:auto;}
.hero.has3d .hero-mark{display:none;}
.hero-hud{position:absolute;left:0;right:0;bottom:16px;z-index:2;
  display:flex;justify-content:space-between;align-items:center;
  gap:16px;padding:0 var(--gutter);pointer-events:none;}
.hero-hud .label{text-align:right;margin-left:auto;}
.hero-chip{display:none;pointer-events:auto;align-items:baseline;gap:6px;
  font-family:var(--mono);font-size:10px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--ink);border:1px solid var(--accent);
  background:var(--paper);padding:7px 11px;max-width:60%;}
.hero-chip b{color:var(--accent);font-weight:500;}
.hero-chip button{font-family:var(--mono);font-size:10px;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--accent);background:transparent;border:0;
  cursor:pointer;padding:0 0 0 8px;}
.hero .eyebrow{display:inline-flex;align-items:center;gap:8px;margin-bottom:34px;}
.hero-mark{width:104px;height:104px;margin:0 auto 32px;}
.hero-mark .plex{animation:breathe 7s ease-in-out infinite;}
@keyframes breathe{0%,100%{opacity:.82}50%{opacity:1}}
.hero h1{font-size:clamp(36px,5.6vw,64px);font-weight:500;letter-spacing:-0.038em;
  line-height:1.02;}
.hero .strap{margin:26px auto 0;max-width:580px;font-size:16px;color:var(--muted);
  line-height:1.6;}
.cta{display:inline-flex;align-items:center;gap:9px;margin-top:34px;
  font-family:var(--mono);font-size:12px;letter-spacing:0.06em;text-transform:uppercase;
  color:var(--ink);border:1px solid var(--ink);padding:13px 22px;}
.cta:hover{background:var(--ink);color:var(--paper);}

/* live readout */
.readout{border-top:1px solid var(--rule);padding:60px 0 64px;background:var(--surface);}
.readout-head{display:flex;align-items:center;justify-content:space-between;
  margin-bottom:36px;flex-wrap:wrap;gap:12px;}
.stats{display:grid;grid-template-columns:repeat(4,1fr);
  border:1px solid var(--rule);}
.stat{padding:30px 26px;border-right:1px solid var(--rule);}
.stat:last-child{border-right:0;}
.stat .v{font-family:var(--mono);font-size:42px;font-weight:500;letter-spacing:-0.03em;
  color:var(--ink);line-height:1;white-space:nowrap;}
.stat .v .pl{color:var(--accent);}
.stat .k{margin-top:14px;font-family:var(--mono);font-size:10px;
  letter-spacing:var(--track);text-transform:uppercase;color:var(--muted);}
.activity{margin-top:26px;display:flex;align-items:flex-end;justify-content:space-between;
  gap:5px;height:46px;}
.activity i{flex:1;background:var(--rule);display:block;}
.activity i.hot{background:var(--accent);}
.activity-cap{margin-top:10px;font-family:var(--mono);font-size:9px;
  letter-spacing:0.14em;text-transform:uppercase;color:var(--faint);}

/* generic section */
section.block{border-top:1px solid var(--rule);padding:92px 0;}
.block-head{display:flex;gap:14px;align-items:baseline;margin-bottom:30px;}
.block-head .bn{font-family:var(--mono);font-size:11px;font-weight:500;color:var(--accent);}
.block h2{font-size:clamp(26px,3.3vw,34px);font-weight:500;letter-spacing:-0.03em;
  line-height:1.13;max-width:640px;}
.block .lede{margin-top:18px;max-width:580px;font-size:16px;color:var(--muted);line-height:1.7;}
.block .lede b{color:var(--ink);font-weight:500;}

/* flow */
.flow{margin-top:42px;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
  background:var(--rule);border:1px solid var(--rule);}
.flow.four{grid-template-columns:repeat(2,1fr);}
@media(min-width:900px){.flow.four{grid-template-columns:repeat(4,1fr);}}
.stage{background:var(--paper);padding:28px 24px;}
.stage .sn{display:flex;align-items:baseline;gap:10px;}
.stage .si{font-family:var(--mono);font-size:11px;color:var(--accent);}
.stage .st{font-family:var(--mono);font-size:11px;letter-spacing:var(--track);
  text-transform:uppercase;font-weight:500;color:var(--ink);}
.stage .sd{margin-top:14px;font-size:13.5px;color:var(--muted);line-height:1.6;}

/* work list */
.worklist{margin-top:40px;border-top:1px solid var(--rule);}
.witem{display:grid;grid-template-columns:150px 1fr auto;gap:20px 30px;
  padding:24px 0;border-bottom:1px solid var(--rule);align-items:center;}
.badge{font-family:var(--mono);font-size:9px;letter-spacing:0.14em;text-transform:uppercase;
  padding:5px 9px;border:1px solid var(--rule);color:var(--muted);justify-self:start;
  white-space:nowrap;}
.badge.live{border-color:var(--accent);color:var(--accent);}
.witem .wn{font-size:18px;font-weight:500;letter-spacing:-0.02em;}
.witem .wd{margin-top:4px;font-size:13.5px;color:var(--muted);}
.witem .wdom{font-family:var(--mono);font-size:11px;letter-spacing:0.06em;color:var(--faint);}
a.wdom:hover{color:var(--accent);}
.scopeline{padding:22px 0;font-family:var(--mono);font-size:12px;
  letter-spacing:0.08em;text-transform:uppercase;color:var(--muted);}
.scopeline b{color:var(--accent);font-weight:500;}

/* field notes list */
.notelist{margin-top:40px;border-top:1px solid var(--rule);}
.nitem{display:grid;grid-template-columns:150px 1fr auto;gap:20px 30px;
  padding:24px 0;border-bottom:1px solid var(--rule);align-items:baseline;}
.nitem .ndate{font-family:var(--mono);font-size:11px;letter-spacing:0.06em;color:var(--faint);}
.nitem .nt{font-size:18px;font-weight:500;letter-spacing:-0.02em;}
.nitem:hover .nt{color:var(--accent);}
.nitem .ns{margin-top:4px;font-size:13.5px;color:var(--muted);}
.nitem .ngo{font-family:var(--mono);font-size:14px;color:var(--accent);}

/* note article pages */
.article{max-width:720px;margin:0 auto;padding:72px var(--gutter) 56px;}
.article .ameta{font-family:var(--mono);font-size:11px;letter-spacing:0.14em;
  text-transform:uppercase;color:var(--muted);margin-bottom:22px;}
.article .ameta b{color:var(--accent);font-weight:500;}
.article h1{font-size:clamp(30px,4.4vw,44px);font-weight:500;letter-spacing:-0.035em;
  line-height:1.08;margin-bottom:30px;}
.article h2{font-size:22px;font-weight:500;letter-spacing:-0.02em;margin:44px 0 14px;}
.article h3{font-size:17px;font-weight:500;margin:34px 0 10px;}
.article p{margin:0 0 18px;font-size:16px;line-height:1.75;color:var(--ink);}
.article ul,.article ol{margin:0 0 18px 22px;font-size:16px;line-height:1.75;}
.article li{margin-bottom:8px;}
.article blockquote{border-left:2px solid var(--accent);padding:4px 0 4px 20px;
  margin:26px 0;color:var(--muted);}
.article code{font-family:var(--mono);font-size:13.5px;background:var(--surface);
  border:1px solid var(--rule);padding:1px 5px;}
.article hr{border:0;border-top:1px solid var(--rule);margin:36px 0;}
.article strong{font-weight:500;}
.article a{border-bottom:2px solid var(--accent);padding-bottom:1px;}
.backline{max-width:720px;margin:0 auto;padding:0 var(--gutter) 96px;}
.backline a{font-family:var(--mono);font-size:11px;letter-spacing:0.14em;
  text-transform:uppercase;color:var(--muted);}
.backline a:hover{color:var(--ink);}

/* "what the engine sees" visualisations */
.viz-block{margin-top:64px;}
.viz-block:first-of-type{margin-top:48px;}
.viz-head{display:flex;gap:14px;align-items:baseline;margin-bottom:14px;}
.viz-head .bn{font-family:var(--mono);font-size:11px;font-weight:500;color:var(--accent);}
.viz-block .lede{margin-top:0;margin-bottom:22px;font-size:14.5px;}
.vizhost{position:relative;}
.vizscroll{overflow-x:auto;}
.vizscroll svg{min-width:760px;width:100%;display:block;}
.vtip{display:none;position:absolute;z-index:30;pointer-events:none;
  max-width:270px;background:var(--paper);border:1px solid var(--ink);
  padding:10px 12px;font-size:12px;line-height:1.55;color:var(--muted);}
.vtip b{color:var(--ink);font-weight:500;}
.vtip i{color:var(--accent);font-style:normal;}
.vtip .vnum{color:var(--ink);}
.vtxt{font-family:var(--mono);font-size:11px;fill:var(--muted);}
.vtxt.vsm{font-size:9.5px;fill:var(--faint);}
.vtxt.vmid{text-anchor:middle;}
.vtxt.vaccent{fill:var(--accent);}
.vnum{font-family:var(--mono);font-variant-numeric:tabular-nums;}

/* atlas */
.atlas-svg .az{fill:var(--ink);stroke:var(--paper);stroke-width:1;cursor:pointer;
  transition:fill-opacity .15s ease;}
.atlas-svg .az0{fill-opacity:.34;} .atlas-svg .az1{fill-opacity:.22;}
.atlas-svg .az2{fill-opacity:.13;} .atlas-svg .az3{fill-opacity:.07;}
.atlas-svg .az:hover{fill:var(--accent);fill-opacity:.55;}
.atlas-svg text{pointer-events:none;}
.atlas-svg .vtxt{fill:var(--ink);}
.atlas-svg .vtxt.vnum{fill:var(--muted);font-size:9.5px;}
.crumbs{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;margin-bottom:10px;}
.crumb{font-family:var(--mono);font-size:10px;letter-spacing:0.1em;text-transform:uppercase;
  color:var(--muted);background:transparent;border:0;cursor:pointer;padding:2px 0;}
.crumb:hover{color:var(--accent);}
.crumb.on{color:var(--ink);border-bottom:2px solid var(--accent);}
.crumb-sep{font-family:var(--mono);font-size:10px;color:var(--faint);}
.crumb-hint{margin-left:auto;font-family:var(--mono);font-size:9px;
  letter-spacing:0.14em;text-transform:uppercase;color:var(--faint);}

/* feed chart */
.feed-svg .b-hf{fill:var(--ink);fill-opacity:.28;}
.feed-svg .b-mcp{fill:var(--ink);fill-opacity:.6;}
.feed-svg .b-or{fill:var(--accent);}
.feed-svg .b-flag{fill-opacity:.14;}
.feed-svg .vdash{stroke:var(--muted);stroke-width:1;stroke-dasharray:4 4;}
.feed-svg .cumline{stroke:var(--accent);stroke-width:1.8;fill:none;}
.feed-svg .cumdot{fill:var(--accent);}
.feed-svg .stepline{stroke:var(--ink);stroke-width:1.4;fill:none;opacity:.7;}
.feed-svg .hit{fill:transparent;}
.feed-svg .hit:hover{fill:var(--ink);fill-opacity:.05;}

/* 3-D job graph */
.g3wrap{border:1px solid var(--rule);background:var(--surface);overflow:hidden;}
.g3poster{min-height:320px;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:4px;padding:40px 20px;text-align:center;}
.g3poster .lede{margin:0;}
button.cta{background:transparent;cursor:pointer;}
button.cta:disabled{opacity:.6;cursor:default;}
.g3host{width:100%;}
.g3host canvas{display:block;}
.scene-tooltip,.float-tooltip-kap{font-family:var(--mono)!important;font-size:11px!important;}
.scene-nav-info{display:none!important;}
.g3tipin{font-family:var(--mono);font-size:11px;letter-spacing:0.04em;
  background:var(--ink);color:var(--paper);border:1px solid var(--ink);padding:6px 10px;}
.g3labels{position:absolute;inset:0;pointer-events:none;overflow:hidden;}
.g3label{position:absolute;transform:translate(-50%,-150%);font-family:var(--mono);
  font-size:9.5px;letter-spacing:0.05em;color:var(--ink);white-space:nowrap;
  background:color-mix(in srgb, var(--paper) 72%, transparent);padding:1px 5px;}

/* shift log */
.fchips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px;}
.fchip{font-family:var(--mono);font-size:9.5px;letter-spacing:0.12em;text-transform:uppercase;
  color:var(--muted);background:transparent;border:1px solid var(--rule);
  padding:5px 10px;cursor:pointer;}
.fchip:hover{color:var(--ink);border-color:var(--ink);}
.fchip.on{color:var(--accent);border-color:var(--accent);}
.slog{border-top:1px solid var(--rule);}
.sdate{padding:18px 0 6px;}
.sitem{display:grid;grid-template-columns:110px 1fr;gap:8px 18px;
  padding:13px 0;border-bottom:1px solid var(--rule);align-items:baseline;}
.sitem,.sdate{opacity:0;transform:translateY(7px);
  transition:opacity .45s ease,transform .45s ease;}
.sitem.in,.sdate.in{opacity:1;transform:none;}
.schip{font-family:var(--mono);font-size:8.5px;letter-spacing:0.13em;text-transform:uppercase;
  padding:4px 8px;border:1px solid var(--rule);color:var(--muted);
  justify-self:start;white-space:nowrap;}
.schip.hotchip{border-color:var(--accent);color:var(--accent);}
.stitle{font-size:15px;font-weight:500;letter-spacing:-0.01em;}
.sdetail{margin-top:3px;font-size:12.5px;color:var(--muted);line-height:1.55;}
@media(max-width:680px){
  .sitem{grid-template-columns:1fr;gap:6px;}
  .crumb-hint{display:none;}
}

/* portfolio case-study pages */
.case{max-width:880px;margin:0 auto;padding:72px var(--gutter) 0;}
.case .ameta{font-family:var(--mono);font-size:11px;letter-spacing:0.14em;
  text-transform:uppercase;color:var(--muted);margin-bottom:22px;}
.case .ameta b{color:var(--accent);font-weight:500;}
.case h1{font-size:clamp(32px,5vw,52px);font-weight:500;letter-spacing:-0.035em;
  line-height:1.05;}
.case .strap{margin:20px 0 0;max-width:640px;font-size:17px;color:var(--muted);line-height:1.65;}
.browserframe{margin:44px 0 0;border:1px solid var(--rule);background:var(--surface);
  display:block;transition:border-color .2s ease;}
a.browserframe:hover{border-color:var(--accent);}
.bf-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;
  border-bottom:1px solid var(--rule);}
.bf-dots{display:flex;gap:5px;}
.bf-dots i{width:8px;height:8px;border-radius:50%;border:1px solid var(--faint);display:block;}
.bf-url{font-family:var(--mono);font-size:10.5px;letter-spacing:0.06em;color:var(--muted);}
.bf-bar .bf-live{margin-left:auto;font-family:var(--mono);font-size:9px;
  letter-spacing:0.14em;text-transform:uppercase;color:var(--accent);}
.browserframe img{display:block;width:100%;height:auto;}
.bf-placeholder{aspect-ratio:16/10;display:flex;align-items:center;justify-content:center;}
.bf-placeholder svg{width:96px;height:96px;opacity:.8;}
.pfacts{margin:44px 0 0;display:grid;grid-template-columns:repeat(4,1fr);
  border:1px solid var(--rule);}
.pfact{padding:22px 20px;border-right:1px solid var(--rule);}
.pfact:last-child{border-right:0;}
.pfact .v{font-family:var(--mono);font-size:24px;font-weight:500;letter-spacing:-0.02em;}
.pfact .k{margin-top:8px;font-family:var(--mono);font-size:9.5px;
  letter-spacing:0.16em;text-transform:uppercase;color:var(--muted);}
.case-body{max-width:880px;margin:0 auto;padding:30px var(--gutter) 40px;}
.case-body p{max-width:680px;margin:0 0 18px;font-size:16px;line-height:1.75;}
.case-cta{max-width:880px;margin:0 auto;padding:0 var(--gutter) 80px;}
@media(max-width:680px){
  .pfacts{grid-template-columns:repeat(2,1fr);}
  .pfact:nth-child(2){border-right:0;}
  .pfact:nth-child(1),.pfact:nth-child(2){border-bottom:1px solid var(--rule);}
}

/* contact */
.mailto{margin-top:26px;display:inline-block;font-family:var(--mono);font-size:14px;
  letter-spacing:0.03em;color:var(--ink);border-bottom:2px solid var(--accent);
  padding-bottom:3px;}

footer{border-top:1px solid var(--rule);padding:38px 0;}
footer .wrap{display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:14px;}
footer .brand svg{width:18px;height:18px;}
footer .brand .wm{font-size:16px;}
footer .meta{font-family:var(--mono);font-size:10px;letter-spacing:var(--track);
  text-transform:uppercase;color:var(--faint);}

@media(max-width:680px){
  :root{--gutter:24px;}
  .mast .wrap{gap:10px;}
  .brand{gap:8px;}
  .brand svg{width:20px;height:20px;}
  .brand .wm{font-size:18px;}
  .mast-r{gap:13px;}
  .mast-r a{font-size:9px;letter-spacing:0.12em;}
  .toggle{padding:5px 8px;font-size:9px;white-space:nowrap;}
  .stats{grid-template-columns:repeat(2,1fr);}
  .stat:nth-child(2){border-right:0;}
  .stat:nth-child(1),.stat:nth-child(2){border-bottom:1px solid var(--rule);}
  .stat .v{font-size:32px;}
  .flow,.flow.four{grid-template-columns:1fr;}
  .witem,.nitem{grid-template-columns:1fr;gap:8px;}
  .nitem .ngo{display:none;}
}
